|
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»