Promotic

PmNET0 - Ovladač pro komunikaci protokolem NET0

Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné shlédnout "PROMOTIC video kurz 4 - Komunikační ovladače".

Základní vlastnosti ovladače:
- Komunikace je pro sériovou linku (COM1, COM2 ...).
- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmaComm.
Ovladač podporuje použití objektu PmaCommMsg. Objekt PmaCommGroup nelze použít.
Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace ve skupině "NET0"
- Je k dispozici jako obchodní položka, která je zdarma.


Protokol NET0 může sloužit jako levné spojení dvou aplikací PROMOTIC přes sériový port počítače. Někteří výrobci HW 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 převodník LonWorks-NET0 od firmy SAMO).

Protokol NET0 je síťový protokol typu 1Master x nSlave, maximální počet Slave stanic je 253.
Protokol NET0 může sloužit například k následujícím účelům:
- 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.
- pro komunikaci mezi PC stanicí, na které běží aplikace PROMOTIC, a jiným HW zařízením, na kterém byl implementován protokol NET0. Tento způsob je asi nejčastější a právě pro ty, kdo chtějí tento protokol implementovat, je určen Popis protokolu NET0.


Doporučené hodnoty parametrů objektu PmaComm:

Popis a doporučené hodnoty pro Parametry protokolu:
Číslo tohoto počítače (ncp)Číslo tohoto počítače
0 - znamená, že se nejedná o síťovou komunikaci, je pouze komunikace bod-bod.
1 .. 253 - Identifikuje tento počítač v komunikační síti.
Typ zprávMohou být tyto typy:
Master Only - Ovladač bude typu Master, to znamená, že tato aplikace PROMOTIC bude vysílat požadavky a protější počítače budou jen odpovídat.
Slave Only - Ovladač bude typu Slave, to znamená, že jeden z protějších počítačů bude vysílat požadavky, a pokud požadavek bude určen tomuto počítači, pak jen odpoví.
Max. délka přijímaných dat v bajtechDélka nejdelší možné přijímané zprávy.
Timeout potvrzení příjmuČas (v milisekundách) po který bude ovladač čekat na potvrzení zprávy (u zpráv na které se nemá datově odpovídat ale jen potvrdit)
Timeout příjmu odpovědiČas (v milisekundách) po který bude ovladač čekat na odpověď při vyslání zprávy.
Pokud do této doby nepřijde vyžádaná odpověď, pak se přenos zprávy ukončí (je vyvolána událost onEndOfTransfer s chybou 24 nebo 66).
Popis konfigurátoru "PmaCommMsg > Parametry > Parametry zprávy":
Číslo protějšího počítače (ncp)Číslo protějšího počítače
0 - znamená, že se nejedná o síťovou komunikaci, je pouze komunikace bod-bod.
1 .. 253 - identifikuje protější počítač v komunikační síti.
254 - (broadcast) znamená, že zpráva je určena všem počítačům v síti.
Číslo spoje zprávy (nco)Identifikátor zprávy. Hodnota v rozsahu od 0 do 255.
Potvrzovat zprávuPouze pro Master zprávy. Pro zprávy které data zasílají ale nepožadují datovou odpověď. Určuje, zda protější strana má potvrdit příjem dat.

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 na zaslání dat
40H: požadavek na 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í jen 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 na 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 na 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)
© MICROSYS, spol. s r.o.