DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

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

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦51331fc70⟧ TextFile

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

Derivation

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

TextFile

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