DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦51331fc70⟧ TextFileVerbose

    Length: 10752 (0x2a00)
    Types: TextFileVerbose
    Names: »alcfd«

Derivation

└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
    └─⟦72244f0ef⟧ 
        └─⟦this⟧ »alcfd« 

TextFileVerbose

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