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