Komunikační protokol Spinel v převodnících DA2xxx kompletní popis protokolu 13. března 2018 w w w. p a p o u c h. c o m
Katalogový list Vytvořen: 17.1.2012 Poslední aktualizace: 13.3 2018 12:52 Počet stran: 36 2018 Adresa: Strašnická 3164/1a 102 00 Praha 10 Telefon: +420 267 314 267 Fax: +420 267 314 269 Internet: E-mail: papouch@papouch.com Strana 2
OBSAH Popis... 4 Přehled změn... 4 Komunikační parametry... 4 Rozhraní RS232 a RS485... 4 Rozhraní USB... 4 Rozhraní Ethernet... 4 Spinel Terminál... 5 Kompletní popis komunikačního protokolu Spinel6 Formát 97... 6 Struktura... 6 Vysvětlivky... 6 Formát 66... 8 Struktura... 8 Vysvětlivky... 8 Kompletní přehled instrukcí... 10 Ovládání výstupů... 11 Zápis RAW hodnoty... 11 Čtení RAW hodnoty... 12 Zápis hodnoty v dílcích... 12 Čtení hodnoty v dílcích... 13 Zápis hodnoty s přepočtem... 14 Čtení hodnoty s přepočtem... 14 Konfigurace výstupů... 15 Nastavení výstupních rozsahů... 15 Čtení rozsahů... 16 Nastavení timeoutu... 16 Čtení timeoutu... 17 Nastavení výchozí hodnoty... 18 Čtení výchozí hodnoty... 19 Konfigurace komunikační linky a nastavení adresy... 20 Povolení konfigurace... 20 Nastavení komunikačních parametrů... 21 Čtení komunikačních parametrů... 23 Nastavení adresy sériovým číslem... 24 Doplňkové... 25 Čtení jména a verze... 25 Čtení výrobních údajů... 26 Uložení uživatelských dat... 27 Čtení uložených uživatelských dat... 28 Uložení názvu výstupu... 29 Čtení názvu výstupu... 30 Nastavení statusu... 30 Čtení statusu... 31 Čtení chyb komunikace... 32 Povolení kontrolního součtu... 32 Kontrolní součet čtení nastavení... 33 Reset... 33 Přepnutí protokolů... 34 Spinel MODBUS RTU... 34 Povolení konfigurace... 34 Přepnutí... 34 Strana 3
POPIS Tento dokument popisuje komunikační protokol Spinel v D/A převodnících DA2RS, DA2USB a DA2ETH. P ř e h l e d z m ě n verze 1 První verze. verze 1.1 V DA2RS je nově 16 bit D/A převodník. KOMUNIKAČNÍ PARAMETRY R o z h r a n í R S 2 3 2 a R S 4 8 5 Komunikační rychlost... nastavitelná 300 Bd až 230400 Bd Výchozí komunikační rychlost... 9600 Bd Počet datových bitů... 8 Parita... bez parity Počet stopbitů... 1 R o z h r a n í U S B Komunikační rychlost... 115200 Bd (pevně nastavená) Počet datových bitů... 8 Parita... bez parity Počet stopbitů... 1 R o z h r a n í E t h e r n e t Komunikační rychlost... 115200 Bd (pevně nastavená) Počet datových bitů... 8 Parita... bez parity Počet stopbitů... 1 Strana 4
SPINEL TERMINÁL Pro snadnější ladění zařízení s protokolem Spinel je k dispozici zdarma ke stažení na http://spinel.papouch.com terminálový program Spinel Terminál. Umožňuje komunikaci přes sériové porty i přes Ethernet, binárním protokolem Spinel (Formát 97). Strana 5
KOMPLETNÍ POPIS KOMUNIKAČNÍHO PROTOKOLU SPINEL Do převodníků je implementován standardizovaný protokol Spinel 1, formáty 66 (ASCII) a 97 (binární). (Tímto protokolem komunikuje DA2ETH v případě komunikace na úrovni TCP/IP nebo UDP/IP.) F o r m á t 9 7 Formát 97 používá v komunikaci binární 8bit znaky (dekadicky v rozsahu 0 až 255). Pro snadné ladění komunikace je určen program Spinel Terminál. Instrukce jsou rozděleny na dotaz odpověď: S t r u k t u r a PRE FRM NUM NUM ADR SIG INST DATA SUMA CR PRE FRM NUM NUM ADR SIG ACK DATA SUMA CR PRE Prefix, 2AH (znak * ). FRM NUM ADR SIG INST 2 ACK DATA 2 SUMA CR V y s v ě t l i v k y Číslo formátu 97 (61H). Počet bytů instrukce od následujícího bajtu do konce rámce. Adresa modulu, kterému je posílán dotaz nebo který posílá odpověď. Podpis zprávy - libovolné číslo od 00H do FFH. Stejné číslo, které bylo posláno v dotazu, se vrátí v odpovědi, čímž lze snadno rozpoznat, na který dotaz odpověď přišla. Kód instrukce - Instrukce modulu jsou podrobně popsány v kapitole Kompletní přehled instrukcí na straně 10. Potvrzení dotazu (Acknowledge), zda a jak byl proveden. ACK jsou z intervalu 00H až 0FH. Data. Podrobně popsány v kapitole Kompletní přehled instrukcí (strana 10) pro každou instrukci. Kontrolní součet. Zakončovaní znak (0DH). Příklad 2AH, 61H, 00H, 05H, 01H, 02H, 60H, 0CH, 0DH Zakončovací znak SDATA Délka dat délka SDATA (4 byty) + 0DH (1 byte). Počet je menší než 256, proto je horní byte nulový. Formát Prefix 1 Podrobné informace o protokolu Spinel naleznete na spinel.papouch.com. 2 Instrukce a data jsou v příkladech na následujících stranách zvýrazněny pro přehlednost takto. Strana 6
Délka dat (NUM) Šestnáctibitová hodnota určující počet bytů do konce instrukce; počet všech bytů následujících za NUM, až po CR (včetně). Nabývá hodnot 5 až 65535. Je-li menší než 5, považuje se taková instrukce za chybnou a odpovídá se na ni (je-li určena danému zařízení) instrukcí s ACK neplatná data. Postup tvorby NUM: Sečtěte počet bytů následujících za oběma byty NUM (tzn. počet byte SDATA + 1 byte CR). Výsledný počet uvažujte jako šestnáctibitové číslo. To rozdělte na horní a dolní byte. První byte NUM je horní byte počtu, druhý byte NUM je dolní byte počtu. (Je-li počet bytů menší než 256, první byte NUM je 00H.) Adresa (ADR) Adresa FFH je rezervována pro broadcast. Pokud je v dotazu adresa FFH, zařízení se chová tak, jako by byla uvedena jeho adresa. Na dotazy s touto adresou se nevrací žádná odpověď. Adresa FEH je univerzální adresa. Pokud je v dotazu adresa FEH, zařízení se chová tak, jako by byla uvedena jeho adresa. V odpovědi zařízení uvede skutečnou právě nastavenou adresu. Univerzální adresa se používá jen v případech, kdy je na lince připojené jen jedno zařízení. Potvrzení dotazu (ACK) ACK informuje nadřazené zařízení o způsobu zpracování přijaté instrukce. Kódy potvrzení: 00H... VŠE V POŘÁDKU Instrukce byla v pořádku přijata a kompletně provedena. 01H... JINÁ CHYBA Blíže nespecifikovaná chyba zařízení. 02H... NEPLATNÝ KÓD INSTRUKCE Přijatý kód instrukce není známý. 03H... NEPLATNÁ DATA Data nemají platnou délku nebo obsahují neplatnou hodnotu. 04H... NEPOVOLEN ZÁPIS/PŘÍSTUP ODMÍTNUT - Dotaz nebyl proveden, protože nebyly splněny určité podmínky. - Pokus o zápis dat do nepřístupné paměti. - Snaha o aktivování funkce zařízení, která vyžaduje jiné nastavení (např. vyšší komunikační rychlost). - Snaha o změnu konfigurace, bez bezprostředně předcházejícího povolení nastavení. - Přístup do paměti chráněné heslem. 05H... PORUCHA ZAŘÍZENÍ - Porucha zařízení, vyžadující servisní zásah. - Chyba vnitřní paměti zařízení nebo paměti nastavení. - Chyba některé vnitřní periferie zařízení (běhová chyba nebo chyba při inicializaci). - Jakákoli jiná chyba ovlivňující správnou funkci zařízení. 06H... NEJSOU K DISPOZICI ŽÁDNÁ DATA 0DH... AUTOMATICKY VYSLANÁ INSTRUKCE ZMĚNA STAVU DIGITÁLNÍHO VSTUPU 0EH... AUTOMATICKY VYSLANÁ INSTRUKCE KONTINUÁLNÍ MĚŘENÍ - Periodické odesílání naměřených hodnot. 0FH... AUTOMATICKY VYSLANÁ INSTRUKCE PŘEKROČENÍ MEZÍ NEBO ROZSAHU Kontrolní součet (SUMA) Součet všech bytů instrukce (sčítají se úplně všechna odesílaná data kromě CR) odečtený od 255. Výpočet: SUMA = 255 (PRE + FRM + NUM + ADR + SIG + ACK (INST) + DATA) Na zprávu s chybným kontrolním součtem se neodpovídá. (Na příjem CR se čeká i pokud přijde nesprávný kontrolní součet.) Strana 7
F o r m á t 6 6 Formát 66 používá jen dekadické proměnné nebo znaky, které lze psát na běžné klávesnici. Tento formát je proto vhodný při ladění aplikací se Spinelem. Mezi jednotlivými znaky nesmí být prodleva delší než 5 sec. Instrukce jsou rozděleny na dotaz odpověď: S t r u k t u r a PRE FRM ADR INST DATA CR PRE FRM ADR ACK DATA CR PRE Prefix, 2AH (znak * ). FRM ADR INST 2 ACK DATA 2 CR V y s v ě t l i v k y Příklad jednorázový odměr * B 1 TR <CR> Adresa (ADR) Číslo formátu 66 (znak B ). Adresa modulu, kterému je posílán dotaz nebo který posílá odpověď. Kód instrukce - Kódy instrukce daného zařízení. Jsou jimi ASCII kódy písmen A až Z a a až z a číslice 0 až 9. Instrukce modulu jsou podrobně popsány v kapitole Kompletní přehled instrukcí na straně 10. Potvrzení dotazu (Acknowledge), zda a jak byl proveden. ACK jsou z intervalu 00H až 0FH. Data. ASCII vyjádření přenášených proměnných. Doporučuje se data přenášet v běžném tvaru a jednotkách. Nesmí obsahovat prefix ani CR. Podrobně popsáno v kapitole Kompletní přehled instrukcí (strana 10) pro každou instrukci. Zakončovaní znak (0DH). Zakončovací znak (0DH; ) 3 Kód instrukce Adresa Formát Prefix (2AH) Adresa je jeden znak, který jednoznačně určuje konkrétní zařízení mezi ostatními na jedné komunikační lince. Zařízení toto číslo vždy používá pro svou identifikaci v odpovědích na dotazy z nadřazeného systému. Adresou mohou být tyto ASCII znaky: číslice 0 až 9, malá písmena a až z a velká A až Z. Adresa nesmí být shodná s prefixem nebo CR. Adresa % je rezervována pro broadcast. Pokud je v dotazu adresa %, zařízení se chová tak, jako by byla uvedena jeho adresa. Na dotazy s touto adresou se nevrací žádná odpověď. Adresa $ je univerzální adresa. Pokud je v dotazu adresa $, zařízení se chová tak, jako by byla uvedena jeho adresa. V odpovědi zařízení uvede skutečnou právě nastavenou adresu. Univerzální adresa se používá jen v případech, kdy je na lince připojené pouze jedno zařízení. 3 U příkladů instrukcí v kapitole Kompletní přehled instrukcí není zakončovací znak <CR> vypisován! (Je nahrazen znakem.) Strana 8
Kód instrukce (INST) Kód instrukce příslušného zařízení. Je-li přijata platná instrukce (souhlasí ADR) a je nastaven příznak přijaté zprávy, zařízení na takovou instrukci již musí odpovědět. Potvrzení dotazu (ACK) ACK informuje nadřazené zařízení o způsobu zpracování přijaté instrukce. Kódy potvrzení: 0... VŠE V POŘÁDKU Instrukce byla v pořádku přijata a kompletně provedena. 1... JINÁ CHYBA Blíže nespecifikovaná chyba zařízení. 2... NEPLATNÝ KÓD INSTRUKCE Přijatý kód instrukce není známý. 3... NEPLATNÁ DATA Data nemají platnou délku nebo obsahují neplatnou hodnotu. 4... NEPOVOLEN ZÁPIS/PŘÍSTUP ODMÍTNUT - Dotaz nebyl proveden, protože nebyly splněny určité podmínky. - Pokus o zápis dat do nepřístupné paměti. - Snaha o aktivování funkce zařízení, která vyžaduje jiné nastavení (např. vyšší komunikační rychlost). - Snaha o změnu konfigurace, bez bezprostředně předcházejícího povolení nastavení. - Přístup do paměti chráněné heslem. 5... PORUCHA ZAŘÍZENÍ - Porucha zařízení, vyžadující servisní zásah. - Chyba vnitřní paměti zařízení nebo paměti nastavení. - Chyba některé vnitřní periferie zařízení (běhová chyba nebo chyba při inicializaci). - Jakákoli jiná chyba ovlivňující správnou funkci zařízení. 6... NEJSOU K DISPOZICI ŽÁDNÁ DATA D... AUTOMATICKY VYSLANÁ INSTRUKCE ZMĚNA STAVU DIGITÁLNÍHO VSTUPU E... AUTOMATICKY VYSLANÁ INSTRUKCE KONTINUÁLNÍ MĚŘENÍ - Periodické odesílání naměřených hodnot. F... AUTOMATICKY VYSLANÁ INSTRUKCE PŘEKROČENÍ MEZÍ NEBO ROZSAHU Data (DATA) Data instrukce. Strana 9
KOMPLETNÍ PŘEHLED INSTRUKCÍ Instrukce Kód 97 Kód 66 Strana Ovládání výstupů Zápis RAW hodnoty... 40H... RS... 11 Čtení RAW hodnoty... 41H... RR... 12 Zápis hodnoty v dílcích... 42H... PS... 12 Čtení hodnoty v dílcích... 43H... PR... 13 Zápis hodnoty s přepočtem... 44H...... 14 Čtení hodnoty s přepočtem... 45H...... 14 Konfigurace výstupů Nastavení výstupních rozsahů... C0H... VS... 15 Čtení rozsahů... C1H... VR... 16 Nastavení timeoutu... C2H... TS... 16 Čtení timeoutu... C3H... TR... 17 Nastavení výchozí hodnoty... C4H... BS... 18 Čtení výchozí hodnoty... C5H... BR... 19 Konfigurace komunikační linky a nastavení adresy Povolení konfigurace... E4H... E... 20 Nastavení komunikačních parametrů... E0H... AS a SS... 21 Čtení komunikačních parametrů... F0H... CP... 23 Nastavení adresy sériovým číslem... EBH...... 24 Doplňkové Čtení jména a verze... F3H...?... 25 Čtení výrobních údajů... FAH...... 26 Uložení uživatelských dat... E2H... DW... 27 Čtení uložených uživatelských dat... F2H... DR... 28 Uložení názvu výstupu... 2BH...... 29 Čtení názvu výstupu... 3BH...... 30 Nastavení statusu... E1H... SW... 30 Čtení statusu... F1H... SR... 31 Čtení chyb komunikace... F4H...... 32 Povolení kontrolního součtu... EEH...... 32 Kontrolní součet čtení nastavení... FEH...... 33 Reset... E3H... RE... 33 Strana 10
O v l á d á n í v ý s t u p ů Z á p i s R A W h o d n o t y Tato instrukce umožňuje zapsat hodnotu přímo do výstupního převodníku. Hodnota se zadává bez přepočtu přímo jako 16bit číslo (0 až 65535). Kód instrukce: 40H Parametry: (chann,value) chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota value. Je očekáváno číslo 01H nebo 02H. value RAW hodnota délka: 2 byty Do převodníku se pošle přímo RAW hodnota bez přepočtu. Této hodnotě přímo odpovídá výstupní napětí, resp. proud. Např. hodnota 65535 odpovídá 10V, 0 odpovídá 0V pro defaultní rozsah 0-10V. Je očekáváno 16bit číslo. Byty jsou v pořadí MSB:LSB. 2AH,61H,00H,08H,31H,02H,40H,01H,0FH,FFH,EAH,0DH Nastavení RAW hodnoty prvního kanálu. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Přijetí příkazu potvrzeno. RS (Raw Set) + očíslované dekadické hodnoty jednoho kanálu v rozsahu 0 až 65535 (ACK 0 ) Příklad: *B1RS 1 4095 *B10 Strana 11
Č t e n í R A W h o d n o t y Tato instrukce přečte aktuální hodnoty z D/A převodníků obou výstupů. Jde o hodnoty bez jakéhokoli přepočtu. Kód instrukce: 41H Parametry: {(chann,value)} Význam parametrů je shodný s předchozí instrukcí, jen jde o čtení dat. 2AH,61H,00H,05H,31H,02H,41H,FBH,0DH Příkaz pro čtení RAW hodnot. 2AH,61H,00H,0BH,31H,02H,00H,01H,0FH,FFH,02H,07H,FFH,1FH,0DH Čtení RAW hodnoty obou kanálů (první kanál 10V, druhý kanál 5V pro defaultní rozsah 0-10V) Příklad: RR (Raw Read) ACK 0 + očíslované dekadické hodnoty obou kanálů oddělené mezerou *B1RR Odpověď *B10 1 4095 2 2047 Z á p i s h o d n o t y v d í l c í c h Tato instrukce pracuje s výstupní hodnotou rozdělenou na standardní rozsah 0 až 10 000 dílků. Je očekáváno zadání hodnoty jako celého čísla z tohoto rozsahu převodník zadanou hodnotu přepočítá kalibrační konstantou a zapíše ji do výstupního D/A převodníku. Kód instrukce: 42H Parametry: (chann,value) chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota value. Je očekáváno číslo 01H nebo 02H. value Počet dílků délka: 2 byty Je očekávána hodnota přepočítaná na dílky v rozsahu 0 až 10 000. Nula odpovídá minimální hodnotě rozsahu, 10 000 odpovídá maximální hodnotě rozsahu. Pro rozsah 0-10 V hodnota 0 odpovídá 0 V a hodnota 10 000 odpovídá 10 V. Hodnota se zadává jako dva byty v pořadí MSB:LSB. Strana 12
2AH,61H,00H,08H,31H,02H,42H,01H,27H,10H,BFH,0DH Nastavení hodnoty v dílcích pro první kanál. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Přijetí příkazu potvrzeno. (ACK 0 ) Příklad: PS + očíslované dekadické hodnoty jednoho nebo obou kanálů oddělené mezerou v rozsahu 0 až 10 000 *B1PS 1 10000 Odpověď *B10 Č t e n í h o d n o t y v d í l c í c h Tato instrukce přečte aktuální hodnoty z výstupů přepočítané na dílky v rozsahu 0 až 10 000. Kód instrukce: 43H Parametry: {(chann,value)} Význam parametrů je shodný s předchozí instrukcí, jen jde o čtení dat. 2AH,61H,00H,05H,31H,02H,43H,F9H,0DH Příkaz pro čtení hodnoty v dílkách 2AH,61H,00H,0BH,31H,02H,00H,01H,27H,10H,02H,13H,88H,61H,0DH Čtení hodnoty v dílcích první kanál 10V, druhý kanál 5V (platí pro rozsah 0-10V) PR ACK 0 + očíslované dekadické hodnoty obou kanálů oddělené mezerou Příklad: Dotaz *B1PR Odpověď *B10 1 10000 2 5000 Strana 13
Z á p i s h o d n o t y s p ř e p o č t e m Tato instrukce nastaví hodnotu na výstup převodníku. Žádaná hodnota se nastavuje ve formátu desetinného čísla (32bit float dle IEEE 754). Kód instrukce: 44H Parametry: (chann,value) chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota value. Je očekáváno číslo 01H nebo 02H. value Hodnota výstupu chann délka: 8 byte Hodnoty pro nastavení výstupů ve formátu desetinného čísla (32bit float dle IEEE 754). Pro každý kanál 4 byty v pořadí MSB:LSB. 2AH,61H,00H,0AH,31H,02H,44H,01H,41H,20H,00H,00H,91H,0DH Příkaz k nastavení OUT1 na 10 V. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Č t e n í h o d n o t y s p ř e p o č t e m Tato instrukce přečte hodnoty výstupů s přepočtem ve formátu desetinného čísla (32bit float). Kód instrukce: 45H Parametry: (chann,value) value Hodnota výstupu délka: 4 byty Přečtená hodnota výstupu ve formátu desetinného čísla (32bit float dle IEEE 754). 4 byty v pořadí MSB:LSB. 2AH,61H,00H,05H,31H,02H,45H,F7H,0DH Příkaz k přečtení hodnot s přepočtem. 2AH,61H,00H,0FH,31H,02H,00H,01H,41H,20H,00H,00H,02H,41H,20H,00H,00H,6DH,0DH Na obou výstupech je 10 V (41200000H; platí pro rozsah 0 až 10 V. Strana 14
K o n f i g u r a c e v ý s t u p ů N a s t a v e n í v ý s t u p n í c h r o z s a h ů Tato instrukce nastaví výstupní rozsah jednoho kanálu D/A převodníku. Kód instrukce: C0H Parametry: (chann,range) chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota range. Je očekáváno číslo 01H nebo 02H. range Rozsah délka: 1 byte Nastaví výstupní rozsah převodníku. Je možné vybrat některou z těchto možností: 01H rozsah 0-10 V (výchozí) 02H rozsah 0-5 V 03H rozsah ±10 V 04H rozsah ±5 V 05H rozsah 4-20 ma 06H rozsah 0-20 ma 07H rozsah 0-24 ma Při změně rozsahu se vždy nastaví napětí resp. proud na výchozí hodnotu. 2AH,61H,00H,07H,31H,02H,C0H,01H,01H,78H,0DH Nastavení rozsahu prvního kanálu. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Přijetí příkazu potvrzeno. VS + dekadická hodnota kanálu (ACK 0 ) Příklad: Dotaz (první kanál 0-10V) *B1VS 1 1 Odpověď *B10 Strana 15
Č t e n í r o z s a h ů Tato instrukce přečte výstupní rozsahy převodníku. Kód instrukce: C1H Parametry: {(chann,range)} Význam parametrů je shodný s předchozí instrukcí, jen jde o čtení dat. 2AH,61H,00H,05H,31H,02H,C1H,7BH,0DH Příkaz pro čtení rozsahů 2AH,61H,00H,09H,31H,02H,00H,01H,01H,02H,05H,2FH,0DH Čtení hodnoty rozsahů (první kanál 0-10V, druhý kanál 4-20mA). Příklad: VR ACK 0 + hodnoty rozsahů obou kanálů Dotaz *B1VR Odpověď *B110 1 1 2 5 N a s t a v e n í t i m e o u t u Tato instrukce nastaví timeout výstupu tj. dobu od posledního přijetí příkazu k nastavení výstupu, po kterou se drží výstupní úroveň v zadané výši. Po vypršení timeoutu se výstupní úroveň nastaví na výchozí hodnotu. Z výroby je timeout vypnutý (hodnota 0). Kód instrukce: C2H Parametry: (chann,timeout) chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota range. Je očekáváno číslo 01H nebo 02H. timeout Doba v sekundách délka: 3 byty Minimální doba timeoutu je 1s, maximální 24hodin. Čas se zadává v sekundách pomocí tří bytů v pořadí MSB:LSB. Je-li zadána 0, timeout je vypnutý a nastavená hodnota zůstává na výstupu trvale. Strana 16
2AH,61H,00H,09H,31H,02H,C2H,01H,01H,51H,80H,A3H,0DH Příkaz pro nastavení maximálního timeoutu (24 hod, tj. 86400 sec) pro kanál 1. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Přijetí příkazu potvrzeno. TS + hodnota timeoutu ACK 0 Příklad: Dotaz *B1TS 1 86400 Odpověď *B10 Č t e n í t i m e o u t u Tato instrukce přečte timeout. Kód instrukce: C3H Parametry: {(chann,timeout)} Význam parametrů je shodný s předchozí instrukcí, jen jde o čtení dat. 2AH,61H,00H,05H,31H,02H,C3H,79H,0DH Instrukce pro přečtení timeoutu. 2AH,61H,00H,0DH,31H,02H,00H,01H,01H,51H,80H,02H,00H,00H,00H,5FH,0DH Kanál 1 má timeout 24 hod, kanál 2 nemá nastaven žádný timeout. TR ACK 0 + hodnota timeoutu Příklad: Dotaz *B1TR Odpověď *B10 1 86400 2 0 Strana 17
N a s t a v e n í v ý c h o z í h o d n o t y Tato instrukce nastaví kanálu výchozí hodnotu, která má být nastavena po zapnutí nebo po vypršení timeoutu. Kód instrukce: C4H Parametry: {(chann,hodnota)} chann Číslo kanálu délka: 1 byte Zadejte číslo kanálu, ke kterému se vztahuje následující hodnota. Je očekáváno číslo 01H nebo 02H. hodnota Výchozí hodnota délka: 2 byty Zadejte výchozí hodnotu kanálu jako údaj v rozsahu 0 až 4095. 2AH,61H,00H,08H,31H,02H,C4H,01H,03H,FFH,72H,0DH Instrukce pro nastavení výchozí hodnoty kanálu 1 na 1023. 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH BS + výchozí hodnota ACK 0 Příklad: Dotaz *B1BS 1 1023 Odpověď *B10 Strana 18
Č t e n í v ý c h o z í h o d n o t y Tato instrukce přečte jaká je nastavena výchozí hodnota obou kanálů. Kód instrukce: C5H Parametry: {(chann,hodnota)} 2AH,61H,00H,05H,31H,02H,C5H,77H,0DH Instrukce pro přečtení výchozích hodnot. 2AH,61H,00H,0BH,31H,02H,00H,01H,03H,FFH,02H,00H,00H,31H,0DH Kanál 1 má výchozí hodnotu 2,5 V (1023; 03FFH). Kanál 2 má výchozí hodnotu 0. BR ACK 0 + výchozí hodnoty Příklad: Dotaz *B1TR Odpověď *B10 1 1023 2 0 Strana 19
K o n f i g u r a c e k o m u n i k a č n í l i n k y a n a s t a v e n í a d r e s y P o v o l e n í k o n f i g u r a c e Tato instrukce povoluje provedení konfigurace. Musí předcházet bezprostředně před některými instrukcemi pro nastavení komunikačních parametrů. Po následující instrukci (i neplatné) je konfigurace automaticky zakázána. U této instrukce není možné použít univerzální adresu. Vždy musí být uvedena adresa konkrétního zařízení. Kód instrukce: E4H 2AH,61H,00H,05H,01H,02H,E4H,88H,0DH Povolení konfigurace. 2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Přijetí příkazu potvrzeno. E (Enable) (ACK 0 ) Příklad: Dotaz *B1E Odpověď *B10 Strana 20
N a s t a v e n í k o m u n i k a č n í c h p a r a m e t r ů Tento příkaz nastavuje adresu v protokolu Spinel a komunikační rychlost. U této instrukce není možné použít universální adresu. V případě, že adresa není známa a na lince není připojené žádné další zařízení, lze adresu zjistit instrukcí Čtení komunikačních parametrů. (Jako adresu zařízení použijte univerzální adresu FEH.) Pokud to není možné (na stejné komunikační lince jsou i další zařízení), můžete zařízení přidělit adresu pomocí instrukce Nastavení adresy sériovým číslem. Před nastavením konfiguračních parametrů musí předcházet instrukce Povolení konfigurace. Kód instrukce: E0H Parametry: (adresa)(rychlost) adresa Nová adresa zařízení délka: 1 byte Nová adresa zařízení v protokolu Spinel. Adresa může být z intervalu 00H až FDH. Pokud je pro komunikaci využit i protokol 66, je nutné použít jen adresy, které je možno vyjádřit i jako zobrazitelný ASCII znak (viz odstavec Adresa na straně 8). Výchozí adresa: 31H rychlost Nová komunikační rychlost délka: 1 byte Tento parametr nastavuje novou komunikační rychlost zařízení. Komunikační rychlost je u DA4ETH a DA4USB neměnná a je nastavena na 115 200 Bd. Výchozí komunikační rychlost u DA4RS je 9 600 Bd. Kódy komunikačních rychlostí jsou v tabulce vpravo: Nová adresa a komunikační rychlost se nastaví po odeslání odpovědi. 2AH,61H,00H,07H,01H,02H,E0H,02H,0AH,7EH,0D Nastavení adresy 02H a komunikační rychlosti 115200 Bd. 2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Nová adresa a komunikační rychlost se nastaví po odeslání odpovědi. Rychlost [Bd] Kód pro formát 97 Kód pro formát 66 110 00H 0 300 01H 1 600 02H 2 1 200 03H 3 2 400 04H 4 4 800 05H 5 9 600 06H 6 19 200 07H 7 38 400 08H 8 57 600 09H 9 115 200 0AH A 230 400 0BH B Strana 21
AS (adresa) 4 (Address Set) (ACK 0 ) Legenda: (adresa) Viz odstavec Adresa na straně 8. Příklad: Adresa 4 *B1AS4 Odpověď *B10 SS (kód) 4 (Speed Set) (ACK 0 ) Legenda: (kód) Kód komunikační rychlosti podle tabulky u parametru rychlost na odchozí straně Příklad: Rychlost 19200Bd (kód 7) *B1SS7 Odpověď *B10 4 Adresu a komunikační rychlost je nutné v protokolu 66 nastavit dvěma různými instrukcemi. (U protokolu 97 je to jen jedna instrukce.) Strana 22
Č t e n í k o m u n i k a č n í c h p a r a m e t r ů Tento příkaz přečte adresu a komunikační rychlost zařízení. Použití této instrukce je určeno pro zjištění nastavené adresy v případě, kdy není známa. Dotaz se přitom posílá na univerzální adresu FEH. Pokud není známa ani komunikační rychlost, je třeba vyzkoušet všechny komunikační rychlosti zařízení. Při zjišťování adresy zařízení pomocí univerzální adresy nesmí být na lince připojeno žádné další zařízení. Kód instrukce: F0H Parametry: (adresa) (rychlost) adresa Adresa zařízení délka: 1 byte Adresa zařízení v protokolu Spinel. rychlost Komunikační rychlost délka: 1 byte Kód komunikační rychlosti. Komunikační rychlost u DA4ETH a DA4USB je neměnná a je nastavena na 115200 Bd. Kódy komunikačních rychlostí jsou v tabulce vpravo: Rychlost [Bd] Kód pro formát 97 Kód pro formát 66 110 00H 0 300 01H 1 600 02H 2 1 200 03H 3 2 400 04H 4 4 800 05H 5 9 600 06H 6 19 200 07H 7 38 400 08H 8 57 600 09H 9 115 200 0AH A 230 400 0BH B 2AH,61H,00H,05H,FEH,02H,F0H,7FH,0DH Čtení komunikačních parametrů s univerzální adresou FEH. 2AH,61H,00H,07H,04H,02H,00H,04H,06H,5DH,0DH Adresa 04H, komunikační rychlost 9600 Bd. CP (Comm Parameter) (ACK 0 )(adresa)(rychlost) Legenda: (adresa) Viz odstavec Adresa na straně 8. (rychlost) Kód komunikační rychlosti podle tabulky u parametru rychlost. Příklad: Dotaz s univerzální adresou: *$1CP Odpověď Adresa B, rychlost 9600Bd (kód 6): *B10B6 Strana 23
N a s t a v e n í a d r e s y s é r i o v ý m č í s l e m Instrukce umožňuje nastavit adresu podle unikátního sériového čísla zařízení. Tato instrukce je praktická v případě, že nadřazený systém nebo obsluha ztratí adresu zařízení, které je na stejné komunikační lince s dalšími zařízeními. Sériové číslo je uvedeno na zařízení ve tvaru [číslo-výrobku].[verze-hardwaru].[verzesoftwaru]/[sériové-číslo] například takto: 0227.00.03/0001 Kód instrukce: EBH Parametry: (new_address)(product_number)(serial_number) new_address Nová adresa zařízení délka: 1 byte Nová adresa zařízení v protokolu Spinel. product_number Číslo výrobku délka: 2 byty Číslo výrobku uvedené na štítku na zařízení. U zařízení s číslem 0227.00.03/0001 jde o číslo 227. serial_number Sériové číslo výrobku délka: 2 byty Sériové číslo výrobku uvedené na štítku na zařízení. U zařízení s číslem 0227.00.03/0001 jde o číslo 1. Toto číslo je možné zjistit také instrukcí Čtení výrobních údajů. 2AH,61H,00H,0AH,FEH,02H,EBH,32H,00H,C7H,00H,65H,21H,0DH Nová adresa 32H, číslo výrobku 199 (= 00C7H), sériové číslo produktu 101 (= 0065H). 2AH,61H,00H,05H,32H,02H,00H,3BH,0DH Adresa byla změněna zařízení odpovídá již s novou adresou. Strana 24
D o p l ň k o v é Č t e n í j m é n a a v e r z e Čte jméno přístroje, verzi vnitřního software a seznam možných formátů komunikace. Nastaveno při výrobě. Kód instrukce: F3H Parametry: (řetězec) řetězec Jméno a verze délka: 1 byte Jeden z následujících textů podle konkrétního zařízení: DA2ETH; v0468.01.01; f66 97 DA2USB; v0471.01.01; f66 97 DA2RS; v0469.01.01; f66 97 V řetězci mohou být kromě výše popsaných informací uvedeny také další údaje v sekcích uvozených středníkem, mezerou a malým písmenem určujícím jaká informace následuje. Příklad: DA2ETH; v0468.01.01; f66 97; t1; s358; ddg21 2AH,61H,00H,05H,FEH,02H,F3H,7CH,0DH Příkaz ke čtení jména a verze. 2AH,61H,00H,1FH,31H,02H,00H,44H,41H,32H,52H,53H,3BH,20H,76H,30H,34H,36H,39H,2EH,30H,31H,2EH,30H,31H,3BH,20H,66H,36H,36H,20H,39H,37H,47H,0DH Příklad odpovědi zařízení DA2RS (DA2RS; v0469.01.01; f66 97).? (ACK 0 ) Příklad: Dotaz *B1? Odpověď příklad odpovědi převodníku: *B10 DA2RS; V0469.01.01; F66 97 Poznámka: V instrukci mohou být kromě výše popsaných informací uvedeny také další údaje v sekcích uvozených středníkem, mezerou a malým písmenem určujícím jaká informace následuje. (Příklad: DA2RS; v0469.01.01; f66 97; t1; s358; ddg21) Strana 25
Č t e n í v ý r o b n í c h ú d a j ů Instrukce přečte výrobní údaje ze zařízení. Kód instrukce: FAH Parametry: (product_number)(serial_number)(other) product_number Číslo výrobku. U zařízení s číslem 0227.00.03/0001 jde o číslo 227. serial_number Sériové číslo výrobku. U zařízení s číslem 0227.00.03/0001 jde o číslo 1. délka: 2 byty délka: 2 byty other délka: 4 byty Další výrobní informace. 2AH,61H,00H,05H,FEH,02H,FAH,75H,0DH 2AH,61H,00H,0DH,35H,02H,00H,00H,C7H,00H,65H,20H,05H,09H,23H,B3H,0DH Číslo výrobku je 199 (= 00C7H) a sériové číslo 101 (= 0065H). Strana 26
U l o ž e n í u ž i v a t e l s k ý c h d a t Instrukce uloží uživatelská data. Prostor pro uživatelská data je paměť, do které si může uživatel uložit libovolná data, která si bude zařízení pamatovat i po vypnutí napájení nebo resetu. Tento prostor je vhodný například pro pojmenování umístění přístroje, apod. Kód instrukce: E2H Parametry: (pozice)(data) pozice Adresa paměťového místa, kam se začnou ukládat zadaná data. Je možné zadat číslo z rozsahu 00H až 0FH. délka: 1 byte data délka: 1 až 16 byte Libovolná uživatelská data. Paměť má kapacitu 16 byte, pokud se zapisuje od první pozice. Pokud se zapisuje delší řetězec než je možné, vrátí zařízení chybu a k zápisu nedojde. (V případě že se zapisuje na adresu paměti např. 0CH, lze zapsat max. 4 bajty.) 2AH,61H,00H,0FH,31H,02H,E2H,00H,53H,74H,6FH,72H,61H,67H,65H,20H,41H,1AH,0DH Uložení řetězce Storage A (53H,74H,6FH,72H,61H,67H,65H,20H,41H). 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Řetězec byl uložen. DW (pozice)(data) (Data Write) (ACK 0 ) Legenda: (pozice) Adresa pozice v paměti, na kterou se bude zapisovat. Z intervalu 0-9 nebo A-F. (data) 1 až 16 bytů; Libovolná uživatelská data. Z intervalu 0-9 nebo A-F. Příklad: Dotaz *B1DW0KOTELNA 1 Odpověď *B10 Strana 27
Č t e n í u l o ž e n ý c h u ž i v a t e l s k ý c h d a t Instrukce čte uložená uživatelská data. Prostor pro uživatelská data je paměť, do které si může uživatel uložit libovolná data, která si bude zařízení pamatovat i po vypnutí napájení nebo resetu. Tento prostor je vhodný například pro pojmenování měřícího místa. Kód instrukce: F2H Parametry: (data) data Uživatelská data. délka: 16 byte 2AH,61H,00H,05H,31H,02H,F2H,4AH,0DH 2AH,61H,00H,15H,31H,02H,00H,53H,74H,6FH,72H,61H,67H,65H,20H,41H,20H,20H,20H,20H,20H,20H,20H,16H,0DH V uživatelských datech je uložen řetězec Storage A. DR (Data Read) (ACK 0 )(data) Legenda: (data) 1 až 16 bytů; Uživatelská data. Příklad: Dotaz *B1DR Odpověď *B10KOTELNA 1 Strana 28
U l o ž e n í n á z v u v ý s t u p u Umožňuje pro každý vstup uložit jedinečný řetězec znaků. Tato funkce se hodí pro pojmenování vstupů. Toto paměťové místo využívá ovládací software a také je využito v převodníku pro uložení názvů vstupů. Z těchto důvodů nedoporučujeme s tímto paměťovým místem manipulovat. Kód instrukce: 2AH Parametry: (vstup)(data) vstup Číslo vstupu z intervalu 01H až 02H. data Libovolná uživatelská data. délka: 1 byte délka: 21 byte Uložení názvu "0Kotelna" ke vstupu 1 (nevyužité bajty jsou vyplněny nulami). 2AH,61H,00H,05H,31H,02H,00H,3CH,0DH Řetězec byl uložen. Strana 29
Č t e n í n á z v u v ý s t u p u Přečte název vstupu. Kód instrukce: 3AH Parametry: (vstup) vstup Číslo vstupu z intervalu 01H až 02H. délka: 1 byte Parametry: (data) data Data uložená pro uvedený vstup. délka: 21 byte 2AH,61H,00H,06H,31H,02H,3BH,01H,FFH,0DH 2AH,61H,00H,1AH,31H,02H,00H,30H,4BH,6FH,74H,65H,6CH,6EH,61H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,29H,0DH Uložený řetězec je "0Kotelna" (nevyužité bajty jsou vyplněny nulami). N a s t a v e n í s t a t u s u Nastaví status přístroje. Uživatelsky definovaný byte, který lze využít k zjištění stavu přístroje. Tento byte je možné libovolně uživatelsky zapisovat. Slouží paměťové místo vhodné například pro uživatelské označení stavu zařízení. (Po resetu nebo zapnutí napájení se nuluje.) Kód instrukce: E1H Parametry: (status) status délka: 1 byte Status přístroje. Po zapnutí přístroje, nebo po resetu (i softwarovém) je automaticky nastaven status 00H. Pokud je instrukcí Nastavení statusu přestaven na jinou hodnotu, lze později snadno identifikovat, v jakém stavu se přístroj nachází. 2AH,61H,00H,06H,01H,02H,E1H,12H,78H,0DH Nastavení statusu 12H. 2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Potvrzení. Strana 30
SW (status) (Status Write) (ACK 0 ) Legenda: (status) znak z intervalu mezera až ~ (32 126) Příklad: Dotaz znak A *B1SWA Odpověď *B10 Č t e n í s t a t u s u Čte status přístroje. To je uživatelsky definovaný byte, který lze využít k zjištění stavu přístroje. Kód instrukce: F1H Parametry: (status) status délka: 1 byte Status přístroje. Po zapnutí přístroje, nebo po resetu (i softwarovém) je automaticky nastaven status 00H. 2AH,61H,00H,05H,01H,02H,F1H,7BH,0DH 2AH,61H,00H,06H,01H,02H,00H,12H,59H,0DH Status zařízení je nastaven na 12H. SR (Status Read) (ACK 0 )(znak) Legenda: (znak) znak z intervalu mezera až ~ (32 126) Příklad: Dotaz *B1SR Odpověď *B10A Strana 31
Č t e n í c h y b k o m u n i k a c e Instrukce vrací počet chyb komunikace, které se vyskytly od zapnutí přístroje, nebo od posledního čtení chyb komunikace. Kód instrukce: F4H Parametry: (chyby) chyby délka: 1 byte Počet chyb komunikace, které se vyskytly od zapnutí přístroje, nebo od posledního čtení. Za chyby komunikace jsou považovány následující události: Je očekáván prefix a přijde jiný byte. Nesouhlasí kontrolní součet SUMA. Zpráva není kompletní. 2AH,61H,00H,05H,01H,02H,F4H,78H,0DH 2AH,61H,00H,06H,01H,02H,00H,05H,66H,0DH Od zapnutí napájení se vyskytlo 5 chyb v komunikaci. P o v o l e n í k o n t r o l n í h o s o u č t u Umožňuje zrušit kontrolu správnosti kontrolního součtu (angl. checksum). Tato instrukce je praktická pro ladění aplikací. Při ručním zadávání instrukcí prostřednictvím terminálu není nutné správně zadávat kontrolní součet (předposlední byte). Nedoporučujeme kontrolu vypínat v jiných případech, než je testovací provoz zařízení. Kontrolní součet je ochranou proti poškození dat při přenosu po komunikační lince. Kontrola je z výroby zapnuta. Kód instrukce: EEH Parametry: (stav) stav 00H pro vypnutí kontroly kontrolního součtu. 01H pro zapnutí kontroly kontrolního součtu. 2AH,61H,00H,06H,01H,02H,EEH,01H,7CH,0DH Zapnutí kontroly. délka: 1 byte Strana 32
2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Potvrzení příkazu. K o n t r o l n í s o u č e t č t e n í n a s t a v e n í Zjišťuje aktuální nastavení kontroly checksumu. (Viz popis k předchozí instrukci Povolení kontrolního součtu.) Kód instrukce: FEH Parametry: (stav) stav 00H kontrola kontrolního součtu vypnuta. 01H kontrola kontrolního součtu zapnuta. délka: 1 byte 2AH,61H,00H,05H,01H,02H,FEH,6EH,0DH 2AH,61H,00H,06H,01H,02H,00H,01H,6AH,0DH Kontrola checksumu je zapnuta. R e s e t Provede reset přístroje. Modul se dostane do shodného stavu jako po zapnutí napájení. Kód instrukce: E3H 2AH,61H,00H,05H,01H,02H,E3H,89H,0DH 2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Reset se provede až po odeslání této odpovědi. RE (REset) (ACK 0 ) Příklad: *B1RE *B10 Poznámka: Reset se provede až po odeslání odpovědi. Strana 33
PŘEPNUTÍ PROTOKOLŮ Výchozím protokolem v zařízení je Spinel. Pro přepnutí do jiného protokolu slouží následující instrukce z protokolu Spinel. (Lze použít například software SpinelTerminál.) Pro přepínání protokolů doporučujeme používat software Modbus Configurator, který je zdarma ke stažení na. S p i n e l M O D B U S R T U P o v o l e n í k o n f i g u r a c e Povoluje provedení servisní instrukce. Musí předcházet bezprostředně instrukci Přepnutí. Instrukci nelze použít s universální adresou nebo s adresou broadcast. Kód instrukce: E4H 2AH,61H,00H,05H,01H,02H,E4H,88H,0DH Povolení konfigurace. 2AH,61H,00H,05H,01H,02H,00H,6CH,0DH Přijetí příkazu potvrzeno. P ř e p n u t í Přepnutí protokolu se provádí speciální instrukcí protokolu Spinel, formátu 97. Jako adresa musí být použita adresa konkrétního modulu (nelze použít tzv. broadcast ani universální adresu). Instrukci musí bezprostředně předcházet instrukce Povolení konfigurace. Kód instrukce: EDH Parametry: (pid) pid Identifikační číslo protokolu. Může být uvedeno některé z těchto čísel: 01H Spinel 02H MODBUS RTU Pokud některý z uvedených protokolů zařízení neumí, k přepnutí nedojde. délka: 1 byte Strana 34
2AH,61H,00H,06H,66H,02H,EDH,02H,17H,0DH Příkaz k přepnutí protokolu ze Spinel do MODBUS RTU. 2AH,61H,00H,05H,66H,02H,00H,07H,0DH Přijetí příkazu potvrzeno. Po odeslání této odpovědi již komunikuje zařízení protokolem Modbus RTU. Strana 35
Přenosy dat v průmyslu, převodníky linek a protokolů, RS232/485/422/USB/Ethernet/GPRS/ WiFi, měřicí moduly, inteligentní teplotní čidla, I/O moduly, elektronické aplikace dle požadavků. Adresa: Strašnická 3164/1a 102 00 Praha 10 Telefon: +420 267 314 267 Fax: +420 267 314 269 Internet: E-mail: papouch@papouch.com w w w. p a p o u c h. c o m