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

⟦7d54a875f⟧ TextFileVerbose

    Length: 13824 (0x3600)
    Types: TextFileVerbose
    Names: »alchd«

Derivation

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

TextFileVerbose

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