Špecifikácia protokolu NOWP (Network Object World Protocol)
Vymedzenie pojmov
-
HW Zariadenie (HW Device)
Je fyzické zariadenie, ktoré dokáže priamo komunikovať protokolom NOWP. Je zároveň aj virtuálne a dá sa na neho pozerať ako na virtuálne zariadenie. Rozdiel je iba v spôsobe inštalácie. HW zariadenia majú normované schémy zapojenia s normovanými prvkami zariadenia a podľa týchto schém sa inštalujú všetky prvky systému, ktoré priamo súvisia s konkrétnym HW zariadením. Bez toho aby bol potrebný na takéto zapojenie projekt. -
HW Prvok (HW Element)
Je každé fyzické zariadenie v systéme, nezávisle na tom či fyzicky komunikuje protokolom NOWP. Ale každý prvok komunikuje v systéme virtuálne protokolom NOWP. Napríklad aj teplotné čidlo pripojené na zariadenie je virtuálne zariadenie a je možné s ním komunikovať virtuálne protokolom NOWP. Prvok môže byť akákoľvek vec na ktorú má nejakým spôsobom dosah elektronika a vytvára pre túto vec virtuálne rozhranie s protokolom NOWP. -
Typové označenie zariadenia (DeviceType)
Kódové označenie virtuálneho elementu zariadenia. Za dvojbodkou je číslo verzie typu zariadenia. Každý prvok reálneho sveta je popísaný typom zariadenia. Môže ale aj nemusí komunikovať protokolom NOWP. Typy zariadenia sú virtuálne a nie sú nutne naviazané na konkrétny hardvér. Tým je docielené, že každý prvok dokáže komunikovať virtuálne protokolom NOWP. Napríklad prvok môže byť žiarovka a protokol umožňuje komunikovať priamo so žiarovkou nezávisle na tom ako je pripojená v systéme. -
Balíček funkcií (Function Pack)
Vyjadruje jednu konkrétnu funkčnosť. Napríklad funkčnosť žiarovky. Obsahuje všetky funkcie, ktoré sa týkajú konkrétnej funkčnosti. Balíčky sú tiež normované. Napríklad každá žiarovka v systéme bude mať presne rovnaké funkcie a je jedno akého je typu a na akom HW zariadení je pripojená. Napríklad typ zariadenia DimmableLight:2 bude mať balíček funkcií Dimming:1. Je pritom úplne jedno na akom hardvéri daná žiarovka je. Bude virtuálne komunikovať protokolom NOWP. Typ zariadenia DimmableLight:2 môže ale mať aj iné balíčky funkcií. Napríklad základný balíček protokolu Basic:1. Tým je docielená štrukturovanosť a škálovateľnosť všetkých typov zariadení normovanými balíčkami zariadení. -
PN Typové výrobné číslo (Part Number)
Identifikuje typovú radu výrobku, charakterizuje vlastnosti výrobku. Je dané pred výrobou a je zobrazené na etikete výrobku spolu s SN. Nedá sa zmeniť. -
SN Sériové výrobné číslo (Serial Number)
SN číslo je „podčíslom“ výrobného čísla a v rámci PN je unikátnym pre každý jeden kus výrobku daného typu. Je dané pri výrobe a je zobrazené na systémovej etikete výrobku spolu s PN.Hodnota je číslo typu Int64 (8 byte).
Platí vzťah 1 PN = n SN. -
Výrobné číslo
Skladá sa z PN a SN a je to jednoznačný identifikátor každého kusu výrobku na celom svete. Je dané výrobou a nedá sa zmeniť.Pre projekty Operchip je SN 8 znakové 16 bitové číslo. Všetko sú ASCII znaky.
Príklad: SC4B-00100002030 UDN unikátne číslo prvku (Unique Device Name)
Ide o jednoznačnú unikátnu identifikáciu HW prvku.
V našom prípade sa skladá z PN, čísla elementu a SN. Číslo elementu vyjadruje poradové číslo virtuálneho elementu na HW zariadení. Jedno HW zariadenie môže mať 255 prvkov. Takáto štruktúra je významná iba pre inštaláciu systému. Kde sa prvky inštalujú na základe normovaných schém HW zariadení, ktoré obsahujú zakreslené pripojenie prvkov na seba.Príklad: SC4B-001.05.00002030
-
EAN (EAN-13)
Je jednoznačný kód pridelovaný združením GS1 pre 1 typ výrobku. Viac vo Wiki. Pre produkty Operchip platí, že na systémovej etikete výrobku uvádzame minimálne výrobné číslo : PN + SN. V prípade že sú výrobky distribuované cez obchodnú siet, tak aj EAN kód. -
DCID Dynamická adresa (Device Component ID)
Jednoznačné označenie HW prvku v rámci jednej sústavy. Toto číslo je pridelené dynamicky každému HW komponentu pri prvom zapojení do sústavy a HW komponent si ho drží aj po vypnutí napájania. Keď dôjde k presunu HW komponentu z jednej sústavy do druhej, je toto číslo pridelené znovu. Funguje to analogicky ako adresácia IP. DCID prideľuje nadradený systém napríklad WEB server - Cloud. DCID je virtuálna dynamická 16 bitová adresa HW prvku v protokole NOWP.DCID je na úrovni serveru zviazané s UDN.
Hodnota typu je 2 byte (Unsigned 16-bit integer) -
Packet
Je “balík“ dát o veľkosti a štruktúre špecifikovanej použitým protokolom. -
Správa (Message)
Správa je jeden ucelený balík dát odoslaný odosieľateľom príjemcovi.
Požiadavka (request) .. je signál, ktorý vyslal HW prvok.
Odpoveď (answer) .. je odpověď na požiadavku.
-
Udalosť (Event)
Je udalosť vyslaná HW prvkom. -
IP Adresa
IP adresa HW zariadenia, ktoré komunikuje po ETH. IP Adresa je zariadeniu prideľovaná automaticky DHCP serverom po pripojení zariadenia do ETH siete. IP adresu v systéme Operchip je možné chápať aj ako nízkoúrovňovú adresu HW zariadenia, nad ktorou beží protokol NOWP a tým prebieha komunikácia vždy protokolom NOWP aj keď idú dáta po ETH sieti. Lebo protokol NOWP je nad všetkými fyzickými komunikačnými linkami. -
CAN Adresa
Je principiálne obdobná IP adrese, ale vyjadruje fyzickú komunikáciu po CAN zbernici. Tiež je pod protokolom NOWP a jej adresáciu s prvkami rieši operačný systém automaticky.
Popis paketu NOWP
Bajt | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Popis |
Sender DCID |
Sender DCID |
Receiver DCID |
Receiver DCID |
Command, Answer, event or error |
Command, Answer, event or error |
Data Length | Data Length |
Veľkosť |
MSB - 8 bits |
LSB - 8 bits |
MSB - 8 bits |
LSB - 8 bits |
MSB - 8 bits |
LSB - 8 bits |
MSB - 8 bits |
LSB - 8 bits |
Bajt | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
Popis |
Data |
Data |
Data |
Data |
Data |
Data |
Data |
Data |
...... |
Veľkosť |
8 bits |
8 bits |
8 bits |
8 bits |
8 bits |
8 bits |
8 bits |
8 bits |
...... |
bits |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
MSB | error flag active = 1 |
event flag active = 1 |
answer flag active = 1 |
ID cmd | ID cmd |
ID cmd |
ID cmd |
ID cmd |
bits | 7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
LSB |
ID cmd |
ID cmd |
ID cmd |
ID cmd |
ID cmd |
ID cmd |
ID cmd |
ID cmd |
Sender DCID: DCID Odosieľateľa. 16bit.
Receiver DCID: DCID Príjemca správy. 16bit.
Command, Answer, event or error: Číselný a jednoznačný identifikátor príkazu alebo
udalosti. 16bit.
-
0 je hodnotené ako chyba
-
1..999 vyhradené pre systémové správy (NONPUBLIC: 400 – 800 internal functions)
-
1000 rezervované100
-
1..3000 vyhradené pre Operchip NOWP
-
3001..8192 voľné
Data Length: Definuje dĺžku rozšírenej dátovej časti. 16 bit.
Data: Dátová časť môže obsahovať čokoľvek – parametre pre príkaz, dáta... Maximálna dĺžka je 65535 bajtov.
Základné príkazy
Základné príkazy musí vedieť obslúžiť každý HW prvok.
ID |
Príkaz |
Zariadenia ktoré podporujú |
Parametre
|
11 |
GetProtocolVersion |
všetky |
detail v popise výrobných dát |
15 |
GetDescription |
všetky |
detail v popise výrobných dát |
17 |
GetHwElementCount |
všetky |
detail v popise výrobných dát |
19 |
GetHwElementDCID |
všetky |
detail v popise výrobných dát |
21 |
SetHwElementDCID |
všetky |
input: ID |
39 |
Ping |
všetky |
nevracia parametre |
43 |
GetLastErrors |
všetky, odporúča sa |
vráti čas a chybové správy |
51 |
Reset |
všetky |
|
101 |
GetBatteryCondition |
s batériou |
-
GetProtocolVersion
Požadavek na zaslání verze komunikačního protokolu zařízení.Formát paramterů odpovědi:
· v1.0“
o (podle které poznáme, ze zařízení komunikuje správným protokolem)
·
Verze protokolu charakterizuje stáří protokolu tj. počet podporovaných funkcí. Momentálně je verze 1. -
GetDescription
zařízení na tento dotaz odpovídá zasláním svého popisuFormát paramterů odpovědi:
· DeviceType: Typové označení zařízení – řetězec // UPnP compatible
· Device name: Názov zariadenia, ktorý je aj na štítku - reťazec
· RevisionOrVersion: Revize nebo verze zařízení – řetězec
· ProductionNumber: Výrobní číslo – řetězec
· UDN: UDN // UPnP compatible
· FirmwareSignature: Označení firmware – řetězec
· FirmwareVersion: Verze firmware – řetězec
· ProductionDate: Datum výroby – řetězec
o formát: 4:YYYY.MM.DD
· Manufacturer: Výrobce – řetězec // UPnP compatible
o default: www.positro.com, nebo „EXPANDER“
· SupportedProtocols: Podporované protokoly
o Seznam protokolů, které zařízení podporuje
· BatterySupport: Chod na baterie
o Vrací „True/False“ podle toho, zda zařízení běží na baterie, tj. je schopno běžet bez el. proudu a zároveň je potřeba aby systém sledoval vyčerpání baterii.
o Viz. také GetBatteryCondition .
· Reserved1: rezervováno – řetězec - Procesor
· Reserved2: rezervováno – řetězec
Reserved3: rezervováno – řetězec -
GetHwElementCount()
Vrátí počet podřízených elementů, které jsou podřízeny přímo.Formát paramterů odpovědi:
Count - UInt16 ( 2 byte) – Počet podřízených elementů. -
GetHwElementDCID(UInt16 aSubElementIndex)
Zařízení na tento dotaz odešle odpověd (DCID a UDN) o svém podřízeném zařízení, které je na daném indexu aSubElementIndex.
Formát paramterů odpovědi:
· DCID - UInt16 ( 2 byte) - Není-li DCID přiděleno, hodnota je 0
UDN– max. 40 bytes. -
SetHwElementDCID (UInt16 aSubElementIndex, UInt16 aNewDCID)
Podřízenému elemetu s indexem aSubElementindex přidělí nové DCID. Zařízení/Komponenta si zapamatuje svůj nový DCID a zároveň změnu oznámí všem připojeným (navázaným) HW komponentám. Po oznámení, své staré DCID zapomene.
Výsledkem je odpověď bez parametrů, nebo Error.
-
Slouží pro udržení spojení, nebo pro zjištění životaschopnosti navázaného spojení. Příjemce reaguje odpovědí s nulovými Daty.
Nemá vstupní parametre.
-
GetLastErrors
Jako odpověď na tento příkaz zařízení zašle seznam posledních chyb. Seznam chyb není nijak limitován délkou, záleží na zařízení, kolik chyb je schopno držet v paměti. Doporučeno je posledních 10, minimálně však 1. Formát je daný formátem příkazu Error a způsobem zapsání dat do kolekce.
-
Reset
Zařízení se musí restartovat, nebo nastavit do defaultních hodnot. Před restartem však odpovídá pomocí StandardReply s nulovými Daty.
-
GetBatteryCondition
Vrací hodnotu 0..100 tj. „%“ o stavu nabití baterie.
Príkazy pre HW zariadenie
ID |
Príkaz |
Zariadenia ktoré podporujú |
Parametre
|
37 |
SetDeviceActiveElements |
všetky |
input: Data |
35 |
GetDeviceActiveElements |
všetky |
|
63 |
UpdateSW |
odporučené keď je možné |
input: Data |
215 |
SetProgrammingMemory |
odporučené keď je možné |
|
217 |
WriteNextData |
odporučené keď je možné |
|
219 |
VerifiData |
odporučené keď je možné |
|
91 |
GetTime |
odporučené keď je možné |
|
93 |
SetTime |
odporučené keď je možné |
input: Date Time |
220 |
SetEventRoutingTab |
odporučené keď je možné |
|
221 |
GetEventRoutingTab |
odporučené keď je možné |
|
222 |
EraseEventRoutingTab |
odporučené keď je možné |
|
-
Používá se pro Update firmware. Nastavi zariadenie do rezimu na upload firmware.
Parametre v datovej casti paketu: ziadne
Výstupem je v případě úspěchu StandardReply s nulovými Daty, jinak Error.
-
Popis: Nastaví ktorá pamäť sa bude programovať, od ktorej adresy, dĺžku programovaných dát
Vstupní parametry: 9 bytes: 1 byte Vyber Pamäte, 4bytes Začiatočná Adresa, 4bytes Dĺžka Programovaných Dát
Kód odpovědi: Request + 1
Parametre odpovědi : bez
Typ pamäte.
FLASH
0000, 0001 pre druhy 64kB offset
EEPROM
00F0
USER ID
0020
CONFIGURE
0030
FLASH MEMORY – pamäť, do ktorej sa uloží užívateľská aplikácia – samotný aplikačný sw projektu.
EEPROM MEMORY – pamäť, v ktorej sú uložené konfiguračné nastavenia projektu( naša konfigurácia, nie konfiguračné bity procesora).
USER ID – výrobné číslo
CONFIGURE – hardvérová konfigurácia procesora - konfiguračné bity procesora
príklad nastavenie programovanie FLASH:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme programovať FLASH od Začiatočnej Adresy 0x0037 (to je ofset v riadku dat), počet preprogramovaných dát 1000 (môžeme si zvoliť po akých blokoch budeme programovať, alebo cela pamäť):
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka Programovaných Dát
Hodnota Parametra
0x01
0x00
0x00
0x00
0x37
0x00
0x00
0x03
0xE8
príklad nastavenie programovanie EEPROM:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme programovať EEPROM od Začiatočnej Adresy 0x0000, počet preprogramovaných dát 256:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka Programovaných Dát
Hodnota Parametra
0x02
0x00
0x00
0x00
0x00
0x00
0x00
0x01
0x00
príklad nastavenie programovanie CONFIGURE:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme programovať CONFIGURE od Začiatočnej Adresy 0x0000, počet preprogramovaných dát 16:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka Programovaných Dát
Hodnota Parametra
0x03
0x00
0x00
0x00
0x00
0x00
0x00
0x00
0x10
príklad nastavenie programovanie USER ID:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme programovať USER ID od Začiatočnej Adresy 0x0000, počet preprogramovaných dát 8:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka Programovaných Dát
Hodnota Parametra
0x04
0x00
0x00
0x00
0x00
0x00
0x00
0x00
0x08
-
Popis: Posiela dáta po paketoch, ktoré sa zapisujú do vybranej oblasti pamäti.
Vstupní parametry: max128 bytes: dáta – dáta sú v binárnej podobe
Kód odpovědi: Request + 1
Parametre odpovědi : bez parametrů
príklad zápisu dát to vybranej oblasti:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
Nazov Parametra
Data
Hodnota Parametra
0x 88
0xAA
0xFF
0x00
0x22
Dáta sa zapisujú do vybranej oblasti pamäti. Pri každom novom zápise dát sa vybraná adresa pamäte projektu automaticky inkrementuje od nastavenej adresy pamäte o dĺžku prijatých dát.
-
Popis: Potvrdí správnosť programovaných dát.
Vstupní parametry: 11 bytes: 1byte Vyber Pamäte, 4bytes Začiatočná Adresa, 4bytes Dĺžka verifikovaných dát, 2bytes Kontrolná Suma. Pre CAN bootloader môžu byt všetky parametre rovné nule.
Kód odpovědi: Request + 1
Parametre odpovědi: 1Byte: 1 –OK Kontrolna Suma, 0 – Error Kontrolna Suma
príklad verifikácie FLASH:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme verifikovať FLASH od Začiatočnej Adresy 0x0037, počet preprogramovaných dát 1000:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
10
11
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka verifikovaných dát
Kontrolna Suma
Hodnota Parametra
0x01
0x00
0x00
0x00
0x37
0x00
0x00
0x00
0x58
0xE2
0x15
príklad verifikácie EEPROM:
Hodnoty sa zapisujú binárne a MSB zľava.
Budeme verifikovať EEPROM od Začiatočnej Adresy 0x0000, počet preprogramovaných dát 256:
-Názorná tabuľka ukazuje dátovú časť protokolu PCP!!!
Cislo Byte
1
2
3
4
5
6
7
8
9
10
11
Nazov Parametra
Vyber Pamäte
Začiatočná Adresa
Dĺžka verifikovaných dát
Kontrolna Suma
Hodnota Parametra
0x02
0x00
0x00
0x00
0x00
0x00
0x00
0x01
0x00
0xE2
0xA1
príklad Kontrolna suma:
Inicializácia = 0 ; Je to súčet všetkých napalovaných BYTES. 16bit čislo. Pretečenie cez 16bit sa ignoruje.
-
Nastavi ktore elementy na zariadeniach maju byt aktivne. Ostatne budu aj nadalej neviditelne.
Parametre v datovej casti paketu: 2 bytes cislo aktivního elementu, 2 bytes cislo druheho aktivního elementu, ….
Parametre v odpovedi: ziadne
V pripade za sa posle nula, jako dlzka dat v datovej casti paketu, vsetky elementy na danom zariadeni sa nastavia jako neaktivne.
-
Zisti ktore elementy na danom zariadeni su nastavene jako aktivne.
Parametre v datovej casti paketu: ziadne
Parametre v odpovedi: 2 bytes cislo aktivního elementu, 2 bytes cislo druheho aktivního elementu, ….
-
GetTime
Tazatel požaduje po zařízení jeho aktuální čas. Datum a čas je vrácen v standardním formátu.
-
Server přikazuje zařízení, nastavit čas podle předaného parametru.
Odpověď je s nulovými Daty, jinak Error.
Při implementaci metody na zařízení je potřeba dávat pozor na to, aby se čas nastavil přednostně a ne až po čekání na dokončení nějaké dlouhotrvající operace, například při stisku a držení tlačítka apod.
-
Nastavení síťování pro autonomní činnost. .
Pre jeden zaznam udalosti plati.
Prvy paket:
Parametre datovej casti: Identifikator Eventu 0x01 (8bit), pocet posielanych prikazov ( 16 bit), Event (16bit), EventLength (16bit), EventData[X] (X*8bit), EventDataMask[X] (X*8bit)
Odpoved: potvrdenie
16bit data sa zadavuju tak, ze MSB je vlavo – prve.
Ostatne pakety:
Parametre datovej casti: Identifikator Commandu 0x00 (8bit), DCID_Sender (16bit), DCID_Receiver (16bit), Command / Event (16bit), Length (16bit), bData[X] (X*8bit), Status (16bit)
Odpoved: potvrdenie
Ak je DCID Sender nulové, reaguje příkaz na všechny události s aktuálním číslem události a různými DCID událostmi.
Status:
0b00111111 - priorita lowest
0b10000000 - event mode active
0b01000000 - spusti funkciu pre command v spracovani eventu
-
Precita vsetky zaznamy sietovania a posiela ich po jednom.
Parametre datovej casti: 2 Bytes, Číslo čteného paketu.
Odpoved:
Prvy paket odpoved:
Identifikator Eventu 0x01 (8bit), pocet posielanych prikazov (16bit), Event (16bit), EventLength (16bit), EventData[X] (X*8bit), EventDataMask[X] (X*8bit),
Druhy paket odpoved:
Identifikator Commandu 0x00 (8bit), DCID_Sender (16bit), DCID_Receiver (16bit), Command / Event (16bit), Length (16bit), bData[X] (X*8bit), Status (16bit)
Treti paket odpoved:
Identifikator Commandu 0x00 (8bit), DCID_Sender (16bit), DCID_Receiver (16bit), Command / Event (16bit), Length (16bit), bData[X] (X*8bit), Status (16bit)
.
.
.
N paket odpoved:
Identifikator Eventu 0x01 (8bit), pocet posielanych prikazov (16bit), Event (16bit), EventLength (16bit), EventData[X] (X*8bit), EventDataMask[X] (X*8bit),
N+1 paket odpoved:
Identifikator Commandu 0x00 (8bit), DCID_Sender (16bit), DCID_Receiver (16bit), Command / Event (16bit), Length (16bit), bData[X] (X*8bit), Status (16bit)
.
.
.
Predposledny paket odpoved:
Identifikator Commandu 0x00 (8bit), DCID_Sender (16bit), DCID_Receiver (16bit), Command / Event (16bit), Length (16bit), bData[X] (X*8bit), Status (16bit)
Posledny paket odpoved:
Potvrdenie - Ziadne data. (Koniec zaznamov v tabulkach sietovania).
-
Vymaze vsetky tabulky sietovania.
Parametre datovej casti: ziadne
Odpoved: potvrdenie