|
|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 10752 (0x2a00)
Types: TextFileVerbose
Names: »alcfd«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »alcfd«
>fo @~AL.RC.20/1~@
>a1 INDLEDNING
I det f|lgende beskrives Asynchronous Line Control Protocol til
>ul
fuld duplex
dataoverf|rsel (ALC/FD).
ALC/FC-protokol er designet til dataoverf|rsel via et kommunikationsmedie,
der typisk vil v{re et direkte
>ul
point-to-point
link.
Kommunikationsmediet antages at kunne k|re
>ul
fuld duplex
kommunikation, idet det betragtes som v{rende 2
simplex kanaler, hvor hver kanal forbinder en
>ul
prim{r station
med en
>ul
sekund{r station.
Den prim{re station kontrollerer kanalen og sender
>ul
kommandoer
som den sekund{re station i den anden ende sender
>ul
kvittering
for.
Hver ende af link'et best}r alts} af 2 stationer, en prim{r station
og en sekund{r station, med 2 uafh{ngige kanaler.
>ne 14
>sp 12
>fg Balanceret konfiguration.
Information kan kun flyde ved hj{lp af kommandoer fra prim{r station
til sekund{r station.
>ne10
ALC/FD-protokollen sikrer dels at information kan f|res gennem
kommunikationsmediet
- uden at {ndres
- uden at forsvinde
- uden at blive dubleret
dels at informationsoverf|rslen opgives indenfor endelig tid (t), hvis
kommunikationsmediet er fejlbeh{ftet i hele denne periode.
Det er et grundl{ggende tr{k i ALC/FD-protokollen at et
>ul
skift i sekvensnummeret
(DATA_0 til DATA_1 eller omvendt; ACK_0 til ACK_1 eller omvendt) indikerer
>ul
fremskridt,
mens
>ul
fejltilstande
resulterer i u{ndret sekvensnummer.
Ved et passende valg af fejlcheck mekanisme kan sandsynligheden
for at en station
>ul
ikke
opdager en transmissionsfejl g|res vilk}rlig lille.
I denne beskrivelse af ALC/FD-protokollen antages det derfor, at der
>ul
ikke
forekommer uopdagede transmissionsfejl.
>a1 KOMMANDOER
Kommandoer er de telegrammer en prim{r station kan sende til en
sekund{r station i den anden ende af kommunikationsmediet (dvs.
kommandoer flyder i
>ul
prim{rretning).
F|lgende
>ul
operationskoder
anvendes til kommandoer:
DATA_0 (v{rdi lig med 128)
DATA_1 (v{rdi lig med 129)
ENQ (v{rdi lig med ASCII 5)
DATA_0 og DATA_1 benyttes af den prim{re station til afsendelse
af information (0 og 1 kaldes
>ul
sekvensnumre).
ENQ benyttes af den prim{re station til afhentning af sidst afgivne
kvittering fra den sekund{re station i den anden ende.
>a1 KVITTERINGER
Kvitteringer er de telegrammer en sekund{r station kan sende til
en prim{r station i den anden ende af kommunikationsmediet (dvs.
kvitteringer flyder i
>ul
sekund{rretning).
F|lgende
>ul
operationskoder
anvendes til kvitteringer:
ACK_0 (v{rdi lig med ASCII 19)
ACK_1 (v{rdi lig med ASCII 20)
RESET (v{rdi lig med ASCII 21)
ACK_0 benyttes som accept af et modtaget DATA_0 telegram.
ACK_1 benyttes som accept af et modtaget DATA_1 telegram.
(0 og 1 kaldes
>ul
sekvensnumre).
RESET benyttes som svar p} et ENQ-telegram, n}r den sidste
ACK-kvittering er blevet resat, fx p} grund af en restart af maskinen.
>a1 MULIGE PROTOKOLSEKVENSER
I det f|lgende beskrives de mulige protokolsekvenser, dvs. de
>ul
kvitteringer
den sekund{re station kan sende p} grundlag af en modtaget
>ul
kommando.
>ne 20
>sp 18
>fg Mulige kvitteringer p} ENQ-kommando.
>ne 16
>sp 14
>fg Mulige kvitteringer p} DATA-kommando.
>a1 PRIM[R STATION
I det f|lgende beskrives hvordan den prim{re station fungerer under
opstart, normal dataoverf|rsel og i fejlsituationer.
Under opstart sender den prim{re station med j{vne mellemrum en
ENQ-kommando til den sekund{re station i den anden ende.
>ne 24
>sp 22
>fg Opstart af kommunikation.
N}r den prim{re station modtager enten en RESET-kvittering eller en
ACK-kvittering er forbindelsen etableret.
Under normal dataoverf|rsel sender den prim{re station et DATA-telegram
indeholdende en brugermeddelelse og et sekvensnummer.
Derefter modtager den en kvittering, der indikerer, at telegrammet
blev korrekt modtaget hos den sekund{re station, hvorefter den sender
et nyt DATA-telegram med en ny brugermeddelelse og et nyt sekvensnummer.
>ne 18
>sp 16
>fg Normal dataoverf|rsel.
Imidlertid opst}r der af og til transmissionsfejl.
Dette betyder, at den prim{re station enten modtager et forvansket
telegram eller den g}r i timeout p} modtagelse af kvittering.
Ved modtagelse af en forvansket kvittering, g|r den prim{re station
>ul
intet.
En forvansket kvittering er en kvittering, hvor mindst eet af
f|lgende er opfyldt:
- operationskoden er ukendt
- checksummen viser transmissionsfejl
- telegrammets l{ngde er ukorrekt
Ved timeout p} modtagelse af kvittering sender den prim{re station
en ENQ-kommando.
Hvis den prim{re station derefter modtager en ACK-kvittering,
retransmitterer den DATA-telegrammet,
hvis sekvensnummeret i ACK-kvitteringen er forskellig fra
sekvensnummeret i DATA-telegrammet,
ellers frigives brugerbufferen.
Ved timeout sender den prim{re station en ny ENQ-kommando.
>ne 20
>sp 18
>fg Timeout p} modtagelse af kvittering.
Timeoutperioden efter afsendelse af DATA-kommando s{ttes til
2 * (max. telegraml{ngde + kvitteringsl{ngde) bits
divideret med
transmissionshastighed m}lt i bps
plus
procestid i den anden ende
>ne6
Ved en maksimal telegraml{ngde p} 261 bytes a 12 bits,
dvs. 3132 bits, en kvitteringsl{ngde p} 4 bytes a 12 bits,
dvs. 48 bits, en transmissionshastighed p} 1200 bps
og en procestid i den anden ende p} 700 millisekunder
f}s en timeoutperiode p} 6 sekunder.
>ne10
Timeoutperioden efter afsendelse af ENQ-kommando s{ttes til
(max. telegraml{ngde + ENQ telegraml{ngde+
2 * kvitteringsl{ngde) bits
divideret med
transmissionshastighed m}lt i bps
plus
procestid i den anden ende
>ne4
Ved ENQ-telegraml{ngde p} 4 bytes a 12 bits, dvs. 48 bits og samme
st|rrelser som ovenfor f}s en timeoutperiode p} 3 sekunder plus
430 millisekunder.
>ne 47
>sp47
>fg Tilstandsdiagram for prim{r station.
I ventepunkterne (m{rket *) er modtagelse af nonsens eller UO ikke angivet, hvis det ikke har betydning for tilstandsovergangen.
Stationen reagerer
>ul
ikke
p} nonsens.
Hvor UO ikke er angivet, s{ttes det i k|, n}r det ankommer.
Sekvensen 3-4-5-6-7-8-9-10 afspejler normal dataoverf|rsel af 2 databuffere.
>np
Den reducerede TILSTANDS-HANDLING-TABEL for prim{r station
er angivet p} f|lgende figur.
I indgangene er brugt f|lgende notation : handling/n{ste tilstand.
Under opstart udf|res f|lgende :
1: sekvensnummer s{ttes til 1
2: tilstand s{ttes til "disconnected"
3: handling 2 udf|res (se nedenfor under handlinger)
4: antal transmissionsfors|g s{ttes til 0
>ne 16
>sp 14
>fg Tilstands-handlingstabel for prim{r station.
>ul
HANDLINGER:
0: g|r intet
1: send UO-buffer tilbage med
resultat "ingen forbindelse"
2: 2.1 send ENQ-telegram
2.2 start ENQ-timeoutperiode
2.3 antal transmissionsfors|g t{lles een op
3: 3.1 t{l sekvensnummer op (modulo 2)
3.2 send DATA-kommando med sekvensnummer
3.3 gem UO-buffer som aktuel UO-buffer
3.4 start DATA-timeoutperiode
3.5 antal transmissionsfors|g s{ttes til 0
3.6 resultat i aktuel UO-buffer s{ttes til
"afsendelse ok"
4: s{t UO-buffer i k| til overf|rsel
5: hvis sekvensnummeret i ACK-kvitteringen er
lig med sekvensnummeret i den afsendte DATA-
kommando, s} udf|r 5.1 og 5.2, ellers udf|res
intet.
5.1 send aktuel UO-buffer tilbage til bruger
5.2 hvis UO-buffer k| er tom, s} stop DATA-
timeoutperiode og g} i tilstand 2,
ellers tag UO-buffer fra k|, udf|r 3 og g}
i tilstand 3.
6: 6.1 resultat i aktuel UO-buffer s{ttes til
"m}ske dubleret"
6.2 retransmitter sidste DATA-kommando
6.3 t{l antal transmissionsfors|g een op
6.4 start DATA-timeoutperiode
7: hvis sekvensnummeret i ACK-kvitteringen er
lig med sekvensnummeret i den afsendte
DATA-kommando, s} udf|r 5.1 og 5.2,
ellers udf|r 6.2, 6.3 og 6.4 og g} i tilstand 3.
8: hvis antal transmissionsfors|g er
st|rre end eller lig med
max antal transmissionsfors|g, s}
udf|r 8.1 , 8.2, 3.5 og 2 og g} i tilstand 1, ellers
udf|r 2.1, 2.2 og 6.3 og g} i tilstand 4.
8.1 send aktuel UO-buffer tilbage med
resultat "m}ske dubleret"
8.2 send alle UO-buffere i k|en tilbage
med resultat "ingen forbindelse"
9: s{t sekvensnummer til samme v{rdi som angivet
i ACK-kvitteringen.
>a1 SEKUND[R STATION
Under normal dataoverf|rsel kvitterer den sekund{re station for en
DATA-kommando med et ACK-telegram med samme sekvensnummer (se fig. 3).
Ved modtagelse af en forvansket kommando kvitterer den sekund{re
station ikke.
Hvis ikke der findes en brugerbuffer til de l{ste data,
kvitterer den sekund{re station ikke.
Ved modtagelse af en ENQ-kommando, svarer den sekund{re station med
sidste kvittering, dvs. RESET, hvis stationen netop er startet op
(se fig. 2), ACK_0 hvis sidst modtagne DATA-kommando var DATA_0 og
ACK_1 hvis sidst modtagne DATA-kommando var DATA_1.
>ne 40
>sp 38
>fg Tilstandsdiagram for sekund{r station.
0: start sekund{r station
1: vent p} input
2: hent tom bruger inputbuffer
3: g} videre
4: hent tom bruger inputbuffer
5: g} videre
6: hent sidste kvittering
Den reducerede TILSTANDS-HANDLING-TABEL for sekund{r station
er angivet p} f|lgende figur.
Under opstart udf|res f|lgende :
1. tilstand s{ttes til "idle"
2. sidste kvittering s{ttes til RESET
>ne 14
>sp 12
>fg Tilstands-handlingstabel for sekund{r station.
>ul
HANDLINGER:
1: send sidste kvittering
2: hvis bruger inputbuffer findes
udf|res 2.1, 2.2 og 2.3, ellers udf|res intet.
2.1 input kopieres ind i bruger
inputbuffer, der sendes tilbage til bruger
2.2 ACK-kvittering med samme
sekvensnummer som i DATA-
kommandoen afsendes
2.3 sidste kvittering s{ttes til operationskode
for afsendt ACK-kvittering
>a1 VERIFIKATION AF ALC/FD-PROTOKOLLEN.
I det f|lgende verificeres hvorledes ALC/FD-protokollen virker, idet
>ul
det totale kommunikationssystem
best}ende af et kommunikationsmedie, en prim{r station i den ene
ende af dette og en sekund{r station i den anden ende af dette
betragtes.
( F|lger senere)
«eof»