może służyć jako tanie połączenie dwu aplikacji PROMOTIC po łączu szeregowym komputera. Niektórzy producenci sprzętu zaimplementowali ten protokół do swych urządzeń i w tym przypadku można z tymi urządzeniami komunikować się bardzo łatwo i tanio (patrz na przykład
- do komunikacji po łączu szeregowym komputera pomiędzy komputerami PC, na których jest uruchomiona aplikacja PROMOTIC. Sposób ten nie jest często stosowany, ponieważ jest prostsze i uniwerslaniejsze połączenie komputerów w sieci.
Opis protokołu NET0
Wygląd wiadomości protokołu NET0:
STX: (=02H) kod początku wiadomości
DST: numer stacji docelowej
SRC: numer stacji źródłowej
CMD: właściwości wiadomości w formie maski bitowej wartości:
08H: jest zastosowana komunikacja sieciowa
20H: odpowiedź na żądanie do wysłania danych
40H: żądanie do wysłania danych
80H: wiadomość wymagająca potwierdzenie (ACK)
NCO: numer połączenia (do rozróżnienia poszczególnych rodzai wiadomości)
data: własne wartości przenoszone
ETX: (=03H) kod końca wiadomości
SUM: suma kontrolna, tzn. matematyczny xor bajtów od DST (włącznie) po ostatni bajt "data" (włącznie). Xor wykonuje się nad wartościami, które jeszcze nie są zakodowane przy pomocy znaku DLE (patrz Notatka 1)
Notatka 1:
Wartości
DST,
SRC,
CMD,
NCO,
data oraz
SUM mogą mieć jakąkolwiek wartość z wyjątkiem następujących wartości:
STX = 02H: kod początku wiadomości
ETX = 03H: kod końca wiadomości
ACK = 06H: potwierdzenie pozytywne
DLE = 10H: prefiks zmianowy
NAK = 15H: potwierdzenie negatywne
Jeżeli w wysyłanych danych znajduje się dowolny z w/w znaków, wtedy znak ten zostanie do protokołu zakodowany do dwu znaków:
(DLE) oraz (X+80H)
To znaczy, że protokół ma zmienną ogólną długość wiadomości w zależności od wartości transmitowanych w wiadomości!
Przykład:
W danych chcemy przenieść 1 bajt wartości
02H. Zamiast niego zostaną w danych przesłane 2 bajty:
DLE a następnie
82H. Dzięki zakodowaniu przy pomocy znaku
DLE osiągniemy, że wartości
STX,
ETX,
ACK,
DLE oraz
NAK występują wyłącznie w tym miejscu wiadomości, gdzie jest ich właściwa funkcja.
Notatka 2:
Protokół jest ogólnie sieciowy, to znaczy, że w wiadomości znajduje się numer komputera, który przez którą wiadomość ma zostać odebrana (
DST=destination) i komputera, który wiadomość wysłała (
SRC=source). Wartości
DST oraz
SRC mogą mieć wartości w przedziale od 1 do 253. Jeżeli
DST oraz
SRC jest równe 0, wtedy chodzi o protokół niesieciowy, który odróżnia się od sieciowego tylko tym, że bajty
DST oraz
SRC w protokole w ogóle nie występują. Jeżeli
DST posiada wartość
254, wtedy chodzi o wiadomość typu
"broadcast", to znaczy, że jest wysyłana do wszystkich stacji w sieci.
Notatka 3:
Format obszaru
"data" jest zgodny z formatem typów danych na komputerze. To znaczy, że na przykład
Integer jest przenoszony w 2 bajtach (najpierw
LOW a następnie
HIGH bajt).
Boolean jest przenoszony w 1 bajcie (wartość 0 i 1). Wartości w obszarze
"data" występują w takiej kolejności, w jakiej zostały zdefiniowane zmienne wiadomości w systemie PROMOTIC.
Notatka 4:
Po odbiorze danych stacja odbierająca jest zobowiązana wykonać następujące:
- jeżeli wiadomość została błędnie odebrana (np. błędna suma kontrolna lub niewłaściwa zawartość danych) i jest wymagane potwierdzenie (w CMD jest ustawiony bit 80H), wtedy wysłać jeden znak NAK (=15H) jako potwierdzenie negatywne.
- jeżeli wiadomość została poprawnie odebrana i:
- a) jest wiadomością typu "odpowiedź na przesłanie danych" (w CMD ustawiony bit 20H), wtedy nie odpowiada
- b) nie jest wiadomością typu "żądanie do wysłania danych" (w CMD ustawiony bit 40H) i jest wymagane potwierdzenie (w CMD ustawiony bit 80H), wtedy wyśle jeden znak ACK (=06H).
- c) jest wiadomością typu "żądanie do wysłania danych" (w CMD ustawiony bit 40H), wtedy odeśle odpowiedź w takim samym (opisanym wyżej) formacie.
W pozostałych sytuacjach nie odpowiada się na odbiór danych.
Przykład:
Są wysłane dwie wartości:
Integer z wartością 258 (=
0102H) oraz
bajt z wartością 3 (=
03H). Wiadomość ma być potwierdzana, numer połączenia
NCO = 0 i chodzi o niesieciowy protokół (tzn. będą brakować znaki
DST oraz
SRC).
Stacja odbierająca przyjmie bajty w następującej kolejności:
02H: znak STX = początek wiadomości
80H: znak CMD = żądanie potwierdzenia wiadomości
00H: numer połączenia NCO
10H: znak DLE = dolny bajt 1. wartości jest taki sam jak STX
82H: dolny bajt 1. wartości + 80H
01H: górny bajt 1. wartości
10H: znak DLE = 2. wartość jest taka sama jak ETX
83H: 2. wartość + 80H
03H: znak ETX = koniec wiadomości
80H: SUM = suma kontrolna (80H = 80H xor 00H xor 02H xor 01H xor 03H)