Špecifikácia protokolu NOWP (Network Object World Protocol)

Vymedzenie pojmov

  1. 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.

  2. 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.

  3. 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.

  4. 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í.

  5. 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ť.

    Hodnota je reťazec.
  6. 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.
  7. 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
  8. 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

  9. 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.

    Platí vztah 1 EAN = 1 PN.
  10. 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)
  11. Packet
    Je “balík“ dát o veľkosti a štruktúre špecifikovanej použitým protokolom.

  12. 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.

  13. Udalosť (Event)
    Je udalosť vyslaná HW prvkom. 

  14. 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.

  15. 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
  1. 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.
  2. GetDescription
    zařízení na tento dotaz odpovídá zasláním svého popisu

    Formá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
  3. 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ů.
  4. 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.

  5. 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.

  6. Ping

    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.

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

  8. 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.

  9. 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é

  • UpdateSW

    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.

  • SetProgrammingMemory

    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

  • WriteNextData

    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.

  • VerifiData

    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.

  • SetDeviceActiveElements

    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.

  • GetDeviceActiveElements

    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.

  • SetTime

    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.

  • SetEventRoutingTab

    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

  • GetEventRoutingTab

    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).

  • EraseEventRoutingTab

    Vymaze vsetky tabulky sietovania.

    Parametre datovej casti: ziadne

    Odpoved: potvrdenie