Obecný popis
Popis komunikačního protokolu pro zařízení IOFireBug Engine Community FirmWare verze:
Ver. 1.x
Komunikační protokol je binární ve formátu 8 datových bitů, 1 stop bit, bez parity. Komunikace funguje na principu dotaz odpověď. Zařízení master (např. počítač) pošle příkaz a zařízení slave (deska Engine) na něj odpoví. Pokud slave zařízení příkazu nerozumí, nebo je neplatný, neposílá nic.
Komunikace přes rozhraní USB:
Jednotka IOFireBug Engine může komunikovat s PC pomocí USB rozhraní. Jednotka je vybavena převodníkem USB – Seriál od FTDI. V PC je po nainstalování ovladače vytvořen virtuální sériový port (COM Port).
Pokud by systém nenašel ovladače sám, lze je stáhnou na této adrese: http://www.ftdichip.com/Drivers/VCP.htm
Komunikace po sériovém rozhraní RS-485 / RS-422:
Jednotka je vybavena galvanicky oddělenou linkou RS-485 nebo RS-422 (nastavení režimu se provádí propojkou). V případě použití komunikační linky RS-485 se vyhněte zapínání funkcí periodického nebo on-change odesílání zpráv jednotkou. V tomto režimu je sběrnice pouze HALF-DUPLEX. Pokud je to možné, doporučuji vždy použít raději režim RS-422, tedy FULL-DUPLEX linku.
Jednotky Engine je možné propojovat v rámci jedné sériové komunikační linky. První jednotka může být připojena pomocí USB rozhraní k PC, další se propojí pomocí linky RS-485 / RS-422. Jednotky je potřeba rozlišit adresou pomocí přepínače DIP.
Obecný formát komunikační zprávy:
Bajt | Název | Význam | Hodnota |
0 | PRE | Startovací znaky | 0x2A |
1 | PRE | ||
2 | LEN_HI | Délka zprávy 2B | 0x0007 až 0xFFFF |
3 | LEN_LO | ||
4 | ADDR | Adresa zařízení | 0x01 až 0x0E |
5 | SIG | Číslo zprávy | 0x00 až 0xFF |
6 | INSTR | Kód instrukce | Viz přehled použitých kódů |
7 | ACK | Potvrzení | Viz přehled použitých kódů |
8 | DATAn | Data zprávy | |
8+n | CRC_HI | Kontrolní součet CRC16 – 2B | 0x0000 až 0xFFFF |
9+n | CRC_LO | ||
10+n | CR | Ukončovací znak | 0x0D |
LEN – délka zprávy od bajtu ADDR včetně až do konce zprávy.
ADDR – adresa zařízení je 4bitů, tedy v rozsahu 0x01 až 0x0E. Adresa s hodnotou 0x0F je rezervována pro broadcast. Tím je možné poslat příkaz všem zařízením najednou. Adresa 0x00 je neplatná, pokud nastavíme zařízení takovou adresu, nebude reagovat na žádné zprávy.
SIG – tento bajt slouží pro číslování zpráv. Zařízení master nastaví příkazu libovolnou hodnotu a zařízení slave odpoví se stejným číslem zprávy. Dvě po sobě jdoucí zprávy by měli mít různé číslo, neboli SIG.
INSTR – instrukční kód, podrobnější popis je v tabulce.
Hodnota | Název | Význam |
Příkazy pro identifikaci zařízení | ||
0xF0 | INSTR_GET_DEV_NAME | Dotaz na název zařízení |
0xF1 | INSTR_GET_FW_VER | Dotaz na verzi FW zařízení |
0xF2 | INSTR_GET_DEV_ID | Dotaz na ID zařízení |
0xF3 | INSTR_GET_SERIAL | Dotaz na sériové číslo zařízení |
Příkazy pro binární vstupy | ||
0xA0 | INSTR_GET_INPUTS | Dotaz na stav binárních vstupů |
0xA1 | INSTR_GET_INPUTS_CNT | Dotaz na stav čítačů binárních vstupů |
0xA2 | INSTR_GET_INPUTS_CNT_RM | Dotaz na stav čítačů binárních vstupů včetně jejich nulování |
0xA3 | INSTR_SET_INPUTS_FNC | Nastavení funkce binárních vstupů |
0xA4 | INSTR_GET_ROTARY_CNT | Dotaz na stav čítačů rotačních kodérů |
0xA5 | INSTR_GET_ROTARY_CNT_RM | Dotaz na stav čítačů rotačních kodérů včetně jejich nulování |
Příkazy pro binární výstupy | ||
0xB0 | INSTR_SET_OUTPUTS | Nastavení výstupů |
0xB1 | INSTR_SET_OUTPUTS_PWM | Nastavení PWM výstupů |
0xB2 | INSTR_GET_OUTPUTS | Dotaz na stav výstupů |
0xB3 | INSTR_GET_OUTPUTS_PWM | Dotaz na stav PWM výstupů |
Příkazy pro analogové vstupy | ||
0xC0 | INSTR_GET_ANALOG | Dotaz na stav analogových vstupů |
0xC1 | INSTR_SET_ANALOG_FNC | Nastavení funkce analogových vstupů |
Příkazy pro konfiguraci zařízení | ||
0xE0 | INSTR_STORE_CFG | Uložení aktuální konfigurace zařízení do EEPROM |
0xE1 | INSTR_SET_CFG_ADC | Konfigurace AD převodníků |
0xE2 | INSTR_SET_CFG_PWM1234 | Konfigurace PWM pro výstupy 1, 2, 3, 4 |
0xE3 | INSTR_SET_CFG_PWM56 | Konfigurace PWM pro výstupy 5, 6 |
0xE4 | INSTR_SET_CFG_PWM78 | Konfigurace PWM pro výstupy 7, 8 |
0xE5 | INSTR_SET_CFG_INPUTS | Konfigurace zpracování binárních vstupů |
0xE6 | INSTR_SET_CFG_FTDI | Nastavení přenosové rychlosti převodníku FTDI – USB |
0xE7 | INSTR_SET_CFG_RS4XX | Nastavení přenosové rychlosti rozhraní RS-485 / RS-422 |
0xE8 | INSTR_SET_CFG_EXP | Nastavení rozšiřujících modulů (expanderů) |
0xE9 | INSTR_SET_ADC_OFFSETS | Spustí kalibraci ofsetů analogových vstupů. Tento proces stačí provést pouze jednou při oživavání zařízení a uložení kalibračních hodnot se provede pomocí istrukce 0xE0 (INSTR_STORE_CFG). Při kalibraci musí být analogové vstupy nezapojeny! |
0xEA | INSTR_SET_OUTPUTS_DEFAULT | Nastavení aktuálního stavu výstupů jako výchozí stav po zapnutí jednotky |
0xEE | INSTR_RESET | Provede se restart zařízení, načtení poslední uložené konfigurace z EEPROM |
0xEF | INSTR_CLEAR_EEPROM | Smaže obsah konfigurační paměti zařízení EEPROM |
Příkazy pro vyčtení konfigurace zařízení | ||
0xD1 | INSTR_GET_CFG_ADC | Dotaz na konfiguraci AD převodníků |
0xD2 | INSTR_GET_CFG_PWM1234 | Dotaz na konfiguraci PWM pro výstupy 1, 2, 3, 4 |
0xD3 | INSTR_GET_CFG_PWM56 | Dotaz na konfiguraci PWM pro výstupy 5, 6 |
0xD4 | INSTR_GET_CFG_PWM78 | Dotaz na konfiguraci PWM pro výstupy 7, 8 |
0xD5 | INSTR_GET_CFG_INPUTS | Dotaz na konfiguraci zpracování binárních vstupů |
0xD6 | INSTR_GET_CFG_FTDI | Dotaz na konfiguraci přenosové rychlosti převodníku FTDI – USB |
0xD7 | INSTR_GET_CFG_RS4XX | Dotaz na konfiguraci přenosové rychlosti rozhraní RS-485 / RS-422 |
0xD8 | INSTR_GET_CFG_EXP | Dotaz na konfiguraci rozšiřujících modulů (expanderů) |
ACK – potvrzovací bajt
Hodnota | Název | Význam |
0x00 | ACK_OK | Vše v pořádku |
0x01 | ACK_ERR | Jiná chyba |
0x02 | ACK_BAD_INSTR | Neznámá instrukce |
0x03 | ACK_NODATA | Nejsou požadovaná data |
0x04 | ACK_DEV_ERR | Zařízení v poruše |
CRC – kontrolní součet zprávy CRC16. Počítá se ze všech bajtů zprávy kromě posledního bajtu CR. Jako inicializační hodnota se používá 0xFFFF.
Dotazovací zprávy
Dotazovací zprávy jsou zprávy, které nemají žádná data. Těmito zprávami se může nadřazený systém dotazovat na konfigurační parametry nebo stavy jednotky (vstupy apod.). Na tyto zprávy odpovídá jednotka zprávou s příslušným datovým obsahem, který je podrobně popsán dále. V dokumentaci jsou tyto zprávy označovány slovem INSTR_GET_xxxxxx.
Bajt | Název | Význam | Hodnota |
0 | PRE | Startovací znaky | 0x2A |
1 | PRE | ||
2 | LEN_HI | Délka zprávy 2B | 0x00 |
3 | LEN_LO | 0x07 | |
4 | ADDR | Adresa zařízení | 0x01 až 0x0E |
5 | SIG | Číslo zprávy | 0x00 až 0xFF |
6 | INSTR | Kód instrukce | Viz přehled použitých kódů |
7 | ACK | 0x00 | |
8 | CRC_HI | Kontrolní součet CRC16 – 2B | 0x0000 až 0xFFFF |
9 | CRC_LO | ||
10 | CR | Ukončovací znak | 0x0D |
Příkazové zprávy
Příkazovými zprávami lze jednotce udělovat některé příkazy, jako je uložení/smazání vnitřní paměti EEPROM, reset jednotky apod. Na tyto zprávy odpovídá jednotka potvrzovací zprávou.
Bajt | Název | Význam | Hodnota |
0 | PRE | Startovací znaky | 0x2A |
1 | PRE | ||
2 | LEN_HI | Délka zprávy 2B | 0x00 |
3 | LEN_LO | 0x07 | |
4 | ADDR | Adresa zařízení | 0x01 až 0x0E |
5 | SIG | Číslo zprávy | 0x00 až 0xFF |
6 | INSTR | Kód instrukce | Viz přehled použitých kódů |
7 | ACK | 0x00 | |
8 | CRC_HI | Kontrolní součet CRC16 – 2B | 0x0000 až 0xFFFF |
9 | CRC_LO | ||
10 | CR | Ukončovací znak | 0x0D |
Nastavovací zprávy
Nastavovacími zprávami lze jednotce nastavit konfigurační parametry nebo například stavy výstupů apod. V dokumentaci jsou tyto zprávy označovány slovem INSTR_SET_xxxxxx. Na tyto zprávy odpovídá jednotka potvrzovací zprávou, která nemá žádný datový obsah.
Bajt | Název | Význam | Hodnota |
0 | PRE | Startovací znaky | 0x2A |
1 | PRE | ||
2 | LEN_HI | Délka zprávy 2B | Počet bajtů zprávy: 7 + počet datových bajtů |
3 | LEN_LO | ||
4 | ADDR | Adresa zařízení | 0x01 až 0x0E |
5 | SIG | Číslo zprávy | 0x00 až 0xFF |
6 | INSTR | Kód instrukce | Viz přehled použitých kódů |
7 | ACK | 0x00 | |
8 | DATAn | Data zprávy | 0xXX (viz podrobný popis jednotlivých zpráv) |
8+n | CRC_HI | Kontrolní součet CRC16 – 2B | 0x0000 až 0xFFFF |
9+n | CRC_LO | ||
10+n | CR | Ukončovací znak | 0x0D |
Potvrzovací zprávy
Bajt | Název | Význam | Hodnota |
0 | PRE | Startovací znaky | 0x2A |
1 | PRE | ||
2 | LEN_HI | Délka zprávy 2B | 0x00 |
3 | LEN_LO | 0x07 | |
4 | ADDR | Adresa zařízení | Stejná jako v nastavovací, nebo příkazové zprávě |
5 | SIG | Číslo zprávy | Stejná jako v nastavovací, nebo příkazové zprávě |
6 | INSTR | Kód instrukce | Stejná jako v nastavovací, nebo příkazové zprávě |
7 | ACK | Potvrzení | Viz přehled použitých kódů |
8 | CRC_HI | Kontrolní součet CRC16 – 2B | 0x0000 až 0xFFFF |
9 | CRC_LO | ||
10 | CR | Ukončovací znak | 0x0D |
Zprávy identifikace zařízení
0xf0 – Vyčtení názvu zařízení – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | DEVICE_NAME | Text ve formátu ASCII, délka textu je daná délkou zprávy |
n |
Pozn.:
Zařízení IOFireBug Engine vrací název: „IOFB-ENGINE“
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][01][F0][00][52][E8][0D] instr: [0xF0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][12][01][01][F0][00][49][4F][46][42][2D][45][4E][47][49][4E][45][2C][6D][0D] instr: [0xF0]
[Debug] – IOFB Engine[COM20][0x01]: Read device name: IOFB-ENGINE
0xf1 – Vyčtení verze FW zařízení – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | FW_MAJOR | Číslo ve formátu uint8 |
1 | FW_MINOR | Číslo ve formátu uint8 |
Pozn.:
Verze zařízení vypadá následovně: FW_MAJOR.FW_MINOR, např.: 1.0
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][02][F1][00][C2][19][0D] instr: [0xF1]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][09][01][02][F1][00][02][01][61][A5][0D] instr: [0xF1]
[Debug] – IOFB Engine[COM20][0x01]: Read device FW version: 2.1
0xf2 – Vyčtení ID zařízení – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | DEVICE_ID | Jednoznačný identifikátor zařízení, ve formátu uint16 |
1 |
Pozn.:
Zařízení IOFireBug Engine vrací identifikátor 0x1003 (rok 18 = 0x12, měsíc 12 = 0x0C)
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][03][F2][00][F2][48][0D] instr: [0xF2]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][09][01][03][F2][00][12][0C][E0][54][0D] instr: [0xF2]
[Debug] – IOFB Engine[COM20][0x01]: Read device ID: 0x120C
0xf3 – Vyčtení sérového čísla zařízení – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | DEVICE_SERIAL | Jednoznačné sériové číslo zařízení (11 bajtů) |
.. | ||
10 |
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][04][F3][00][A3][F8][0D] instr: [0xF3]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][12][01][04][F3][00][36][59][33][32][30][33][18][07][00][0B][00][2D][F2][0D] instr: [0xF3]
[Debug] – IOFB Engine[COM20][0x01]: Read device SERIAL number: [36][59][33][32][30][33][18][07][00][0B][00]
Zprávy binárních vstupů zařízení
0xa0 – Čtení stavu binárních vstupů – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | INPUTS | Hodnota je ve formátu uint8, MSB je vstup 8, LSB je vstup 1. Log1 znamená sepnutý vstup. |
1 | EXP_BIN_INPUTS_1 | Hodnota je ve formátu uint16, MSB je vstup 16, LSB je vstup 1. Log1 znamená sepnutý vstup. |
2 | ||
3 | EXP_BIN_INPUTS_2 | Hodnota je ve formátu uint16, MSB je vstup 16, LSB je vstup 1. Log1 znamená sepnutý vstup. |
4 | ||
n |
Pozn.:
Počet bajtů binárních vstupů je závislý na použití rozšiřujících vstupních karet. Pokud je jednotka používaná samostatně, pak se vrací jeden bajt (8x binární vstup). Pokud např. použijeme rozšiřující kartu binárních vstupů (16x binární vstup), bude jednotka vracet celkem tři datové bajty.
Příklad zpráv – IOFireBug Engine:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][13][A0][00][57][74][0D] instr: [0xA0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][08][01][13][A0][00][00][D8][57][0D] instr: [0xA0]
[Debug] – IOFB Engine[COM20][0x01]: Read device binary inputs: [00]
Příklad zpráv – IOFireBug Engine + jeden wagon 16I:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][13][A0][00][57][74][0D] instr: [0xA0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][0A][01][13][A0][00][00][00][00][B3][BF][0D] instr: [0xA0]
[Debug] – IOFB Engine[COM20][0x01]: Read device binary inputs: [00][00][00]
0xa1 – Čtení stavu čítačů binárních vstupů – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | INPUT_CNT0 | Stav čítače vstupu 1, formát uint16 |
1 | ||
2 | INPUT_CNT1 | Stav čítače vstupu 2, formát uint16 |
3 | ||
14 | INPUT_CNT7 | Stav čítače vstupu 8, formát uint16 |
15 | ||
16 | EXP_INPUT_CNT8-31 | Formát jednotlivých čítačů uint16 |
… | ||
47 | ||
… |
0xa2 – Čtení stavu čítačů binárních vstupů + nulování – struktura dat odpovědi je stejná jako u příkazu 0xa1.
Pozn.:
Počet bajtů čítačů binárních vstupů je závislý na použití rozšiřujících vstupních karet. Pokud je jednotka používaná samostatně, pak se vrací 16 bajtů (8x binární vstup). Pokud např. použijeme rozšiřující kartu binárních vstupů (16x binární vstup), bude jednotka vracet celkem 48 datových bajtů.
0xa3 – Funkce binárních vstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | INPUTS_FNC | 0x00 – výchozí hodnota, žádná funkce
0xff – automatické odeslání stavu vstupů (zpráva 0xa1) při jejich změně 0x01 – 0xfe – periodické odesílání stavu vstupů (zpráva 0xa0) v jednotkách [ms] (tedy 1ms až 254ms) |
1 | INPUT_COUNTERS_FNC | 0x00 – výchozí hodnota, žádná funkce
0xff – automatické odeslání stavu čítačů vstupů (zpráva 0xa1) při jejich změně 0x01 – 0xfe – periodické odesílání stavu čítačů vstupů (zpráva 0xa1) v jednotkách [ms] (tedy 1ms až 254ms) |
2 | ROTARY_COUNTERS_FNC | 0x00 – výchozí hodnota, žádná funkce
0xff – automatické odeslání stavu čítačů rotačních kodérů (zpráva 0xa1) při jejich změně 0x01 – 0xfe – periodické odesílání stavu čítačů rot. kodérů (zpráva 0xa4) v jednotkách [ms] (tedy 1ms až 254ms) |
Note:
Nepoužívejte funkci automatického odesílání data pokud používáte komunikační rozhraní RS485 (half-duplex). Tato funkce je použitelná pouze při provozu po komunikačním rozhraní USB nebo RS422 (full-duplex).
0xa4 – Čtení stavu čítačů rotačních kodérů – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | ROT_CNT0 | Stav čítače rot. kodéru 1, formát uint16 |
1 | ||
2 | ROT_CNT1 | Stav čítače rot. kodéru 2, formát uint16 |
3 | ||
… | ||
6 | ROT_CNT3 | Stav čítače rot. kodéru 3, formát uint16 |
7 | ||
8 | EXP_ROT_CNT4-11 | Formát jednotlivých čítačů uint16 |
… | ||
23 | ||
… |
Každý rotační kodér využívá dva binární vstupy. Hodnota čítače je dvou bajtová (16bit).
Počet dat ve zprávě je závislý na počtu připojených vstupních Wagonů. Pokud je jednotka používaná samostatně, pak posílá osm bajtů (4x encoder * 2bajty). ¨
Pokud např. použijeme jednu rozšiřující kartu binárních vstupů (16x binární vstup), jednotka posílá celkem 8bajtů (základ) + 16bajtů (rozšiřující vagón) = 24bajtů.
0xa5 – Čtení stavu čítačů rotačních kodérů + nulování – struktura dat odpovědi je stejná jako u příkazu 0xa4.
Pozn.:
Počet bajtů čítačů rotačních kodérů je závislý na použití rozšiřujících vstupních karet. Pokud je jednotka používaná samostatně, pak se vrací 8 bajtů (8x vstup = 4x rotační kodér – každý potřebuje dva vstupy). Pokud např. použijeme rozšiřující kartu binárních vstupů (16x binární vstup = 8x rotační kodér) bude jednotka vracet celkem 24 datových bajtů.
Zprávy binárních / PWM výstupu zařízení
0xb0 – Nastavení binárních výstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | OUTPUTS | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
1 | EXP_OUTPUTS_1 | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
2 | EXP_OUTPUTS_2 | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
… |
Pozn.:
Počet bajtů binárních výstupů je závislý na počtu použitých rozšiřujících výstupních karet (Wagonů). Pokud je jednotka používaná samostatně, pak posílá jeden bajt (8x binární výstup). Pokud např. použijeme jednu rozšiřující kartu binárních výstupů (8x binární výstup), odesíláme do jednotky celkem 2 datové bajty.
Příklad zpráv – IOFireBug Engine:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][08][01][14][B0][00][01][A9][96][0D] instr: [0xB0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][14][B0][00][56][C8][0D] instr: [0xB0]
[Debug] – IOFB Engine[COM20][0x01]: Device set binary outputs [01].
Příklad zpráv – IOFireBug Engine + one wagon 8O:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][09][01][47][B0][00][01][02][63][3C][0D] instr: [0xB0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][47][B0][00][47][38][0D] instr: [0xB0]
[Debug] – IOFB Engine[COM20][0x01]: Device set binary outputs [01][02].
0xb1 – Nastavení PWM generátorů výstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | OUTPUT_PWM0 | PWM hodnota výstupu 1. hodnota je ve formátu uint8. 0 – výstup trvale vypnut, 255 – výstup trvale sepnut. |
1 | OUTPUT_PWM1 | PWM hodnota výstupu 2 |
… | ||
7 | OUTPUT_PWM7 | PWM hodnota výstupu 8 |
Pozn.:
Pro funkčnost regulace PWM výstupů, je nutné pro požadované výstupy funkci zapnout. To se provádí konfiguračními zprávami pro PWM.
Funkce PWM generátoru je k dispzici pouze na výstupe jednotky IOFireBug engine.
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][0F][01][7F][B1][00][90][00][00][00][00][00][00][00][37][A7][0D] instr: [0xB1]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][7F][B1][00][1A][B8][0D] instr: [0xB1]
[Debug] – IOFB Engine[COM20][0x01]: Device set PWM outputs [90][00][00][00][00][00][00][00].
0xb2 – Čtení stavu binárních výstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | OUTPUTS | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
1 | EXP_OUTPUTS_1 | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
2 | EXP_OUTPUTS_2 | Hodnota je ve formátu uint8, MSB je výstup 8, LSB je výstup 1. Log1 znamená sepnutý výstup. |
… |
0xb3 – Čtení stavu PWM generátorů výstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | OUTPUT_PWM0 | PWM hodnota výstupu 1. Hodnota je ve formátu uint8. 0 – výstup trvale vypnut, 255 – výstup trvale sepnut. |
1 | OUTPUT_PWM1 | PWM hodnota výstupu 2 |
… | ||
7 | OUTPUT_PWM7 | PWM hodnota výstupu 8 |
Zprávy analogových vstupů zařízení
0xc0 – Čtení stavu analogových vstupů – struktura dat odpovědi
Bajt dat | Název | Význam |
0 | INPUT_ADC0 | Hodnota analogového vstupu 1, formát uint16 |
1 | ||
2 | INPUT_ADC1 | Hodnota analogového vstupu 2, formát uint16 |
3 | ||
… | ||
14 | INPUT_ADC7 | Hodnota analogového vstupu 8, formát uint16 |
15 |
Pozn.:
Hodnota ADC je v mili-voltech pokud je ADC_MULTIPLIER nastaven na výchozí hodnotu 2.774.
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][07][01][F0][C0][00][A1][AD][0D] instr: [0xC0]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][17][01][F0][C0][00][00][00][00][00][00][00][00][02][00][00][00][00][00][00][00][02][A5][57][0D] instr: [0xC0]
[Debug] – IOFB Engine[COM20][0x01]: Read device analog inputs: [00][00][00][00][00][00][00][02][00][00][00][00][00][00][00][02]
0xc1 – Funkce analogových vstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | ADC_FNC | 0x00 – výchozí hodnota, žádná funkce
0x01 – 0xff – periodické odesílání stavu analogových vstupů (zpráva 0xa1) v jednotkách [ms] (tedy 1ms až 255ms) |
Note:
Nepoužívejte funkci automatického odesílání data pokud používáte komunikační rozhraní RS485 (half-duplex). Tato funkce je použitelná pouze při provozu po komunikačním rozhraní USB nebo RS422 (full-duplex).
Konfigurační zprávy zařízení
0xe1 – Konfigurace analogových vstupů a AD převodníku – struktura dat zprávy
Bajt dat | Název | Význam |
0 | ADC_ENABLE | 0x00 – převodník vypnut
0x01 – převodník zapnut |
1 | ADC_RESOLUTION | 0x08 – 8bit rozsah převodníku
0x0c – 12bit rozsah převodníku |
2 | ADC_INPUT_FROM | Index prvního vzorkovaného analogového vstupu – 0 až 7 |
3 | ADC_INPUT_TO | Index posledního vzorkovaného analogového vstupu – 0 až 7 |
4 | ADZ_HZ | Kmitočet AD převodníku [Hz] hodnota typu uint32 |
5 | ||
6 | ||
7 | ||
8 | ADC_AVERAGES | Nastavení průměrování vzorků
0 – neplatná hodnota 1 – bez průměrování 2,4,8,16,32 – povolené hodnoty průměrování |
9 | ADC_RIGHT_ZEROS | Nastavení počtu nulových bitů zprava hodnoty vzorku (0, 1, 2, 3, 4) |
10 | ADC_MULTIPLIER | Násobek měřené hodnoty AD převodníku, Hodnota typu float (4B), Minimum 1.0, Maximum 10.0, Výchozí hodnota 2.774 (0x40318E8A) – První bajt je nejnižší byte (LSbyte) |
11 | ||
12 | ||
13 |
Pozn.:
Parametry ADC_INPUT_FORM / TO je možné nastavit požadované zpracovávané analogové vstupy.
Konfigurace ADC se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
0xe2 – Konfigurace PWM generátoru pro výstupy 1 až 4 – struktura dat zprávy
Bajt dat | Název | Význam |
0 | PWM_ENABLE | 0x00 – generátor vypnut
0x01 – generátor zapnut |
1 | PWM_HZ | Kmitočet generátoru PWM [Hz], hodnota typu uint16 |
2 |
Pozn.:
Pokud je na zvolených výstupech zapnut PWM generátor, je pro tyto výstupy ignorována funkce binárních výstupů.
Konfigurace ADC se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
0xe3 – Konfigurace PWM generátoru pro výstupy 5 a 6 – struktura dat zprávy
Bajt dat | Název | Význam |
0 | PWM_ENABLE | 0x00 – generátor vypnut
0x01 – generátor zapnut |
1 | PWM_HZ | Kmitočet generátoru PWM [Hz], hodnota typu uint16 |
2 |
Pozn.:
Pokud je na zvolených výstupech zapnut PWM generátor, je pro tyto výstupy ignorována funkce binárních výstupů.
Konfigurace ADC se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
0xe4 – Konfigurace PWM generátoru pro výstupy 7 až 8 – struktura dat zprávy
Bajt dat | Název | Význam |
0 | PWM_ENABLE | 0x00 – generátor vypnut
0x01 – generátor zapnut |
1 | PWM_HZ | Kmitočet generátoru PWM [Hz], hodnota typu uint16 |
2 |
Pozn.:
Pokud je na zvolených výstupech zapnut PWM generátor, je pro tyto výstupy ignorována funkce binárních výstupů.
Konfigurace ADC se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
0xe5 – Konfigurace binárních vstupů – struktura dat zprávy
Bajt dat | Název | Význam |
0 | SAMPLE_PERIOD | Nastavení násobku vzorkovací rychlosti binárních vstupů. Základní krok je 1ms. Hodnota může být v rozsahu 1 až 65535 (tedy 1ms až 65535ms). |
1 | ||
2 | FILTER_LENGTH | Nastavení délky filtru binárních vstupů. Hodnota udává, kolik vzorků za sebou musí být stejné úrovně. Hodnota může být v rozsahu 0 až 15 (tedy 1 až 16 vzorků). |
Pozn.:
Změna parametrů nastává v zařízení ihned, není nutno zařízení restartovat.
0xe6 – Konfigurace přenosové rychlosti převodníku FTDI – USB – struktura dat zprávy
Bajt dat | Název | Význam |
0 | FTDI_BAUDRATE | Hodnota je ve formátu uint32 |
1 | ||
2 | ||
3 |
Použitelné komunikační rychlosti [bps]:
9600, 19200, 57600, 115200, 250000, 500000, 1000000
Pozn.:
Konfigurace FTDI převodníku se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][0B][01][16][E6][00][00][03][D0][90][2A][09][0D] instr: [0xE6]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][16][E6][00][36][56][0D] instr: [0xE6]
[Debug] – IOFB Engine[COM20][0x01]: Device set FTDI config [00][03][D0][90] (250000bps).
0xe7 – Konfigurace přenosové rychlosti rozhraní RS4XX – struktura dat zprávy
Bajt dat | Název | Význam |
0 | RS4XX_BAUDRATE | Hodnota je ve formátu uint32 |
1 | ||
2 | ||
3 |
Použitelné komunikační rychlosti [bps]:
9600, 19200, 57600, 115200, 250000, 500000, 1000000
Pozn.:
Konfigurace FTDI převodníku se projeví až po restartu zařízení. To lze provést buď odpojením a připojením od zdroje, nebo reset příkazem.
Příklad zpráv:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][0B][01][17][E7][00][00][01][C2][00][37][B5][0D] instr: [0xE7]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][17][E7][00][66][06][0D] instr: [0xE7]
[Debug] – IOFB Engine[COM20][0x01]: Device set RS4XX config [00][01][C2][00] (115200bps).
0xe8 – Konfigurace rozšiřujících modulů (expandérů) – struktura dat zprávy
Bajt dat | Název | Význam |
0 | EXP_TYPE | Typ 1. rozšiřujícího modulu |
1 | EXP_TYPE | Typ 2. rozšiřujícího modulu |
2 | EXP_TYPE | Typ 3. rozšiřujícího modulu |
3 | EXP_TYPE | Typ 4. rozšiřujícího modulu |
4 | EXP_TYPE | Typ 5. rozšiřujícího modulu |
5 | EXP_TYPE | Typ 6. rozšiřujícího modulu |
6 | EXP_TYPE | Typ 7. rozšiřujícího modulu |
7 | EXP_TYPE | Typ 8. rozšiřujícího modulu |
Typy rozšiřujících modulů (expandérů):
EXP_TYPE | Popis | |
0x00 | WAGON_NONE | Nepoužit |
0x01 | WAGON_16 | Modul binárních vstupů (16xInput) |
0x02 | WAGON_8O | Modul binárních výstupů (8xOutput) |
0x03 | WAGON_8RELAY | Modul relé kontaktů (8xRelé) |
0x04 | WAGON_16IO | Modul TTL IO (16xInput/Output) |
Pozn.:
Rozšiřující karty (expandery) musí být zapojeny v pořadí odpovídající konfiguraci zařízení. Poslední karta musí mít osazenou propojku nazvanou END, čímž se zakončuje sériová sběrnice SPI. Počet připojitelných karet je omezen na osm. Propojení se provádí pomocí přímého plochého kabelu.
Příklad zpráv – IOFirebug Engine + Wagon 16I + Wagon 8O:
[Debug] – IOFB Engine[COM20][0x01]: Write packet: [2A][2A][00][0F][01][F8][E8][00][01][02][00][00][00][00][00][00][8F][2C][0D] instr: [0xE8]
[Debug] – IOFB Engine[COM20][0x01]: Read packet: [2A][2A][00][07][01][F8][E8][00][63][32][0D] instr: [0xE8]
[Debug] – IOFB Engine[COM20][0x01]: Device set EXPANDERS config [01][02][00][00][00][00][00][00].