může sloužit jako levné spojení dvou aplikací PROMOTIC přes sériový port počítače. Někteří výrobci hardware tento protokol implementovali do svých zařízení a v tom případě lze s těmito zařízeními komunikovat velmi snadno a levně (viz například
- pro komunikaci přes sériový port počítače mezi počítači PC, na kterých jsou provozovány aplikace PROMOTIC. Tento způsob není zcela běžný, protože je jednodušší a obecnější spojit jednotlivé počítače v síti.
Popis protokolu NET0
Tvar zprávy protokolu NET0:
STX: (=02H) kód začátku zprávy
DST: číslo cílového počítače
SRC: číslo zdrojového počítače
CMD: vlastnosti zprávy v podobě bitové masky hodnot:
08H: je použita síťová komunikace
20H: odpověď na požadavek pro zaslání dat
40H: požadavek pro zaslání dat
80H: zpráva vyžadující potvrzení (ACK)
NCO: číslo spoje (pro rozlišení jednotlivých druhů zpráv)
data: vlastní přenášené hodnoty
ETX: (=03H) kód konce zprávy
SUM: kontrolní součet, tzn. matematické xor bajtů od DST (včetně) po poslední bajt "data" (včetně). Xor se dělá nad hodnotama která ještě nejsou zakódovaná pomocí znaku DLE (viz Poznámka 1)
Poznámka 1:
Hodnoty
DST,
SRC,
CMD,
NCO,
data a
SUM mohou být jakékoli hodnoty kromě hodnot:
STX = 02H: kód začátku zprávy
ETX = 03H: kód konce zprávy
ACK = 06H: kladné potvrzení
DLE = 10H: změnový prefix
NAK = 15H: záporné potvrzení
Pokud se v přenášených datech vyskytne některý z výše uvedených znaků, pak se tento znak do protokolu zakóduje do dvou znaků:
(DLE) a (X+80H)
To znamená, že protokol má proměnnou celkovou délku zprávy závislou na hodnotách zprávy!
Příklad:
V datech chceme přenést 1 bajt hodnoty
02H. Místo toho pošleme v datech 2 bajty:
DLE a pak
82H. Tímto kódováním pomocí znaku
DLE dosáhneme, že hodnoty
STX,
ETX,
ACK,
DLE a
NAK se vyskytují pouze na těch místech zprávy, kde je jejich pravá funkce.
Poznámka 2:
Protokol je obecně síťový, to znamená, že ve zprávě je číslo počítače, který má zprávu přijmout (
DST=destination) a počítače, který zprávu vyslal (
SRC=source). Hodnoty
DST a
SRC mohou nabývat hodnot od 1 do 253. Pokud
DST a
SRC je 0, pak se jedná o nesíťový protokol, který se liší od síťového pouze tím, že bajty
DST a
SRC se vůbec v protokolu nevyskytují. Pokud
DST má hodnotu
254, pak je to zpráva typu
"broadcast", to znamená, že je zaslána všem počítačům v síti.
Poznámka 3:
Formát oblasti
"data" je totožný s formátem datových typů na počítači. To znamená, že například
Integer se přenáší na 2 bajtech (nejprve
LOW a pak
HIGH bajt).
Boolean se přenáší na 1 bajtu (hodnota 0 a 1). Hodnoty jsou v oblasti
"data" v takovém pořadí, v jakém byli specifikovány proměnné zprávy v systému PROMOTIC.
Poznámka 4:
Po příjmu dat má přijímající stanice za povinnost udělat následující:
- pokud zpráva byla přijata špatně (např. špatný kontrolní součet nebo špatný obsah dat) a vyžaduje se potvrzení (v CMD nahozen bit 80H), pak vyslat jeden znak NAK (=15H) jako záporné potvrzení.
- pokud zpráva byla přijata dobře a:
- a) je typu "odpověď na zaslání dat" (v CMD nahozen bit 20H), pak neodpovídat
- b) není typu "požadavek pro zaslání dat" (v CMD nenahozen bit 40H) a vyžaduje se potvrzení (v CMD nahozen bit 80H), pak vyslat jeden znak ACK (=06H).
- c) je typu "požadavek pro zaslání dat" (v CMD nahozen bit 40H), pak vyslat odpověď ve stejném (výše popsaném) formátu.
V jiných situacích se na příjem neodpovídá.
Příklad:
Vysíláme dvě hodnoty:
Integer s hodnotou 258 (=
0102H) a
bajt s hodnotou 3 (=
03H). Zpráva má být potvrzována, číslo spoje
NCO = 0 a je nesíťový protokol (tzn. budou chybět znaky
DST a
SRC).
Přijímající stanice přijme bajty v následujícím pořadí:
02H: znak STX = začátek zprávy
80H: znak CMD = požadavek potvrzení zprávy
00H: číslo spoje NCO
10H: znak DLE = spodní bajt 1. hodnoty je stejný jako STX
82H: spodní bajt 1. hodnoty + 80H
01H: horní bajt 1. hodnoty
10H: znak DLE = 2. hodnota je stejná jako ETX
83H: 2. hodnota + 80H
03H: znak ETX = konec zprávy
80H: SUM = kontrolní součet (80H = 80H xor 00H xor 02H xor 01H xor 03H)