|
|
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: 13824 (0x3600)
Types: TextFileVerbose
Names: »alchd«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »alchd«
>fo @~AL.RC.21/1~@
>a1 INDLEDNING
I det f|lgende beskrives Asynchronous Line Control Protocol til
>ul
halv duplex
dataoverf|rsel (ALC/HD).
ALC/HC-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
halv duplex
kommunikation, idet det betragtes som een kanal, hvorp} der enten
kan overf|res data den ene vej eller den anden vej, men ikke
begge veje samtidig.
Kanalen forbinder en
>ul
prim{r station
med en
>ul
sekund{r station.
Den
>ul
prim{re station
kontrollerer kanalen og sender
>ul
kommandoer
til den sekund{re station i den anden ende. Den
>ul
sekund{re station
m} vende transmissionsretningen ved modtagelse af en kommando,
og sende en
>ul
kvittering
til den prim{re station.
Information kan flyde dels ved hj{lp af kommandoer fra prim{r station
til sekund{r station og dels ved hj{lp af kvitteringer fra sekund{r
station til prim{r station.
>ne 14
>sp 12
>fg Ubalanceret konfiguration.
>ne10
ALC/HD-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.
Ved passende valg af fejlcheckmekanisme, kan sandsynligheden
for at en station
>ul
ikke
opdager en transmissionsfejl, g|res vilk}rlig lille.
I denne beskrivelse af ALC/HD-protokollen, antages det derfor,
at der
>ul
ikke
forekommer uopdagede transmissionsfejl.
Telegramformater er specificeret i AL.RC.22.
>a1 KOMMANDOER
Kommandoer er de telegrammer, den prim{re station kan sende til den
sekund{re station i den anden ende af kommunikationsmediet.
F|lgende
>ul
operationskoder
anvendes til kommandoer:
POLL_0 (v{rdi lig med ASCII 17)
POLL_1 (v{rdi lig med ASCII 18)
DATA_0 (v{rdi lig med 128)
DATA_1 (v{rdi lig med 129)
ENQ (v{rdi lig med ASCII 5)
POLL_0 og POLL_1 benyttes af den prim{re station til pollning og
afhentning af information fra den sekund{re station (0 og 1 kaldes
>ul
sekvensnumre).
DATA_0 og DATA_1 benyttes af den prim{re station til afsendelse af
information til den sekund{re station (0 og 1 kaldes 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 den sekund{re station kan sende til den
prim{re station i den anden ende af kommunikationsmediet.
F|lgende
>ul
operationskoder
anvendes til kvitteringer:
DATA_0 (v{rdi lig med 130)
DATA_1 (v{rdi lig med 131)
ACK_0 (v{rdi lig med ASCII 19)
ACK_1 (v{rdi lig med ASCII 20)
RESET (v{rdi lig med ASCII 21)
DATA_0 anvendes dels til accept af et modtaget POLL_0-telegram
eller DATA_0-telegram dels til afsendelse af information fra den
sekund{re station til den prim{re station.
DATA_1 anvendes dels til accept af et modtaget POLL_1-telegram eller
DATA_1-telegram dels til afsendelse af information fra den sekund{re
station til den prim{re station.
ACK_0 anvendes til accept af et modtaget POLL_0-telegram eller
DATA_0-telegram, n}r den sekund{re station ikke har information at
afsende.
ACK_1 anvendes til accept af et modtaget POLL_1-telegram eller
DATA_1-telegram, n}r den sekund{re station ikke har information at
afsende.
RESET benyttes som svar p} et ENQ-telegram, n}r den sidste
DATA-kvittering eller ACK-kvittering er blevet resat, fx p} grund af
timeout eller 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 22
>sp 20
>fg Mulige kvitteringer p} ENQ-kommando.
>ne 16
>sp 14
>fg Mulige kvitteringer p} POLL-kommando.
>ne 16
>sp 14
>fg Mulige kvitteringer p} DATA-kommandoer.
>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 POLL-timeout sekunders
mellemrum et POLL-telegram til sekund{r station.
N}r den prim{re station modtager en kvittering med enten RESET, DATA
eller ACK
er forbindelsen oprettet.
>ne 20
>sp 18
>fg Opstart af prim{r station.
Under normal dataoverf|rsel fra prim{r station til sekund{r station
sender den prim{re station et DATA-telegram indeholdende en brugermeddelelse
og et sekvensnummer.
Derefter modtager den en kvittering for at telegrammet blev korrekt
modtaget hos den sekund{re station.
Herefter sender den prim{re station et nyt DATA-telegram med en ny
brugermeddelelse og et nyt sekvensnummer.
>ne 24
>sp 22
>fg Normal dataoverf|rsel fra prim{r til sekund{r.
Under normal dataoverf|rsel fra sekund{r station til prim{r station
sender den prim{re station et POLL-telegram indeholdende et
sekvensnummer.
N}r prim{r station modtager DATA-kvittering sender
den prim{re station et POLL-telegram med n{ste sekvensnummer.
N}r prim{r station modtager ACK-kvittering, og den prim{re
station ikke har data som skal overf|res, venter den prim{re station
POLL-delay sekunder inden den sender en POLL-kommando med n{ste
sekvensnummer.
(Hvis der kommer brugerdata i mellemtiden, sender prim{r station en
DATA-kommando med n{ste sekvensnummer).
Under normal dataoverf|rsel i begge retninger ser
kommando-kvitterings-flowet ud som p} f|lgende figur.
>ne 16
>sp 14
>fg Normal dataoverf|rsel fra sekund{r til prim{r.
>ne 20
>sp 18
>fg Normal dataoverf|rsel i begge retninger.
Imidlertid opst}r der af og til transmissionsfejl.
Dette betyder, at den prim{re station g}r
i timeout.
I dette tilf{lde sender den prim{re station
et ENQ-telegram.
Ved modtagelse af en forvansket kvittering, g|r den prim{re
station intet.
Et forvansket telegram er et telegram, hvor mindst eet af f|lgende
er opfyldt:
- operationskoden er ukendt
- checksummen viser transmissionsfejl
- telegrammets l{ngde er ukorrekt
Timeoutperioden efter afsendelse af en DATA-kommando s{ttes til
(max telegraml{ngde + kvitteringsl{ngde) bits
divideret med
transmissionshastighed m}lt i bps
plus
processtid i den sekund{re station
Ved en maximal 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} 100 bps
og en processtid i den sekund{re station p} 200 millisekunder
f}s en timeoutperiode p} 32 sekunder.
>ne 47
>sp 47
>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.
N}r UO ikke er angivet, s{ttes det i k|, n}r det ankommer.
NB ! Prim{r station afsender kun en kommando til sekund{r n}r den
>ul
har
en tom UI-buffer klar.
>np
Den reducerede TILSTANDS-HANDLINGS-TABEL for prim{r station er
angivet p} f|lgende figur.
Under opstart udf|res f|lgende:
1: sekvensnummer s{ttes til 1
2: tilstand s{ttes til "disconnected"
3: udf|r handling 2 (se nedenfor)
>ne 20
>sp 18
>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
s{ttes til 1.
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 resultatet i aktuel UO-buffer s{ttes
til "afsendelse ok".
4: s{t UO-buffer i k| til overf|rsel.
5: hvis sekvensnummeret i ACK-kvittering
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}
start POLL-delay-timeoutperiode
og g} i tilstand 2 ellers tag
UO-buffer fra k|, udf|r 3 og
g} i tilstand 3.
6: 6.1 resultatet 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
>ne12
8: hvis antal transmissionsfors|g er st|rre
end eller lig med max. antal transmissions-
fors|g, s} udf|r 8.1, 8.2 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
resultatet "afsendelse m}ske ok"
8.2 send alle UO-buffere i k|en tilbage
med resultatet "ingen forbindelse"
9: s{t sekvensnummer til samme v{rdi som
i ACK-kvitteringen
>ne3
10: 10.1 t{l sekvensnummer op (modulo 2)
10.2 send POLL-kommando med sekvensnummer
10.3 start POLL-timeoutperiode
11: 11.1 s{t sekvensnummer lig med sekvensnum-
mer i DATA-kvitteringen
11.2 frigiv data til UI-buffer
12: hvis sekvensnummer i DATA-kvitteringen
er lig med sekvensnummeret i den afsendte
DATA-kommando, s} udf|r 11.2, 5.1 og 5.2
ellers udf|r 6.2, 6.3 og 6.4 og g} i
tilstand 3.
13: hvis sekvensnummer i ACK-kvitteringen er
lig med sekvensnummeret i den afsendte
POLL-kommando, s} udf|r 5.2 ellers udf|res intet.
14: enq-tilstand s{ttes til DATA og 8 udf|res
15: enq-tilstand s{ttes til POLL og 8 udf|res
16: hvis enq-tilstand er lig med DATA, s} udf|r 6,
ellers udf|r 5.2
17: hvis enq-tilstand er lig med DATA, s} udf|r 7,
ellers udf|r 13
18: hvis enq-tilstand er lig med DATA, s} udf|r 12,
ellers udf|r 19
19: hvis sekvensnummer i DATA-kvitteringen
er lig med sekvensnummeret i den af-
sendte POLL-kommando, s} udf|r 11.2
og 5.2, ellers udf|r intet
>a1 SEKUND[R STATION
Under normal dataoverf|rsel fra den prim{re station til den
sekund{re station kvitterer den sekund{re station for en
DATA-kommando med et ACK-telegram.
Ved modtagelse af en forvansket kommando, kvitterer den sekund{re
station
>ul
ikke.
Hvis ikke der findes en brugerbuffer til de l{ste data, kvitterer
den sekund{re station
>ul
ikke.
Ved modtagelse af en ENQ-kommando, svarer den sekund{re station med
sidste kvittering, dvs. RESET, hvis stationen netop er startet op og
ellers ACK_0, ACK_1, DATA_0 eller DATA_1.
Hvis der sekund{re station har data der skal overf|res, g|res dette
i en DATA-kvittering med samme sekvensnummer som en modtagen
POLL-kommando eller DATA-kommando.
Den sekund{re station kan alts} kun afsende data, n}r den modtager
enten en POLL-kommando eller en DATA-kommando.
Den f|rst efterf|lgende POLL-kommando eller DATA-kommando som den
sekund{re station modtager, opfattes som en kvittering for de
afsendte data, dvs. den sekund{re station frigiver outputbufferen
til brugeren.
Den sekund{re station holder styr p} en kommando-timeoutperiode,
s}ledes at den ved overskridelse af denne regner forbindelsen
for "disconnected".
>ne 47
>sp 47
>fg Tilstandsdiagram for sekund{r station.
Den reducerede TILSTANDS-HANDLINGS-TABEL for sekund{r station
er angivet p} f|lgende figur.
Under opstart udf|res f|lgende:
1. tilstand s{ttes til "disconnected"
>ne 16
>sp 14
>fg Tilstands-handlingsdiagram for sekund{r station.
>ul
HANDLINGER
0: g|r intet
1: send UO-buffer tilbage med
resultat "ingen forbindelse"
2: send RESET-kvittering
3: s{t UO-buffer i k|
4: send alle UO-buffere i k|en
tilbage med resultat
"ingen forbindelse"
5: send aktuel UO-buffer tilbage
med resultatet "afsendelse
m}ske ok" og udf|r 4
6: 6.0 start kommando-timeout,
hvis UI-buffer findes,
udf|res 6.1, 6.2 og 6.3,
ellers udf|res intet
6.1 input kopieres ind i UI-buffer,
der sendes tilbage til bruger
6.2 hvis UO-buffer k| er tom, s}
send ACK-kvittering med samme
sekvensnummer som i kommandoen
og g} i tilstand 2, ellers
udf|r 6.3, 6.4 og g} i tilstand 3
6.3 tag UO-buffer fra k| og g|r den
til aktuel UO-buffer
6.4 send DATA-kvittering med samme
sekvensnummer som i kommando
7: udf|r 6.0 og send sidste kvittering
8: udf|r 6.0, udf|r 6.2
9: 9.1 aktuel UO-buffer sendes tilbage til
bruger med resultat "afsendelse ok",
udf|r 6
10: udf|r 9.1, udf|r 6.2
>a1 VERIFIKATION AF ALC/HD-PROTOKOLLEN
( f|lger senere )
«eof»