Modbus
Modbus je otevřený protokol pro vzájemnou komunikaci různých zařízení (PLC, dotykové displeje, I/O rozhraní apod.), který umožňuje přenášet data po různých sítích a sběrnicích. Komunikace funguje na principu předávání datových zpráv mezi klientem a serverem (master a slave).
Popis protokolu
[editovat | editovat zdroj]Na sběrnici je jedno „master“ zařízení (v případě verze Modbus TCP jich může být více) posílající dotazy, ostatní zařízení jsou „slave“. „Slave“ zařízení odpovídá na dotazy, které jsou mu adresovány. V pozici mastera je tedy řídící prvek (např. PLC nebo průmyslové PC), v roli slave zařízení jsou ovládané nebo sledované prvky (např. čidla, měřící přístroje, PLC, prvky výrobních linek atp.).
Struktura rámce
[editovat | editovat zdroj]Protokol Modbus definuje strukturu zprávy na úrovni protokolu (PDU – Protocol Data Unit) nezávisle na typu komunikační vrstvy. V závislosti na typu sítě, na které je protokol použit, je PDU rozšířena o další části a tvoří tak zprávu na aplikační úrovni (ADU – Application Data Unit).
Kód funkce udává, jaký druh operace slave (též server – podřízený) má provést. Rozsah kódů je 1 až 255, přičemž kódy 128 až 255 jsou vyhrazeny pro oznámení záporné odpovědi (chyby). Některé kódy funkcí obsahují i kód podfunkce upřesňující blíže požadovanou operaci. Obsah datové části zprávy poslané masterem slouží klientovi k uskutečnění operace určené kódem funkce. Obsahem může být například adresa a počet vstupů, které má klient přečíst nebo hodnota registrů, které má klient zapsat. U některých funkcí nejsou pro provedení operace zapotřebí další data a v tom případě může datová část ve zprávě úplně chybět. Zabezpečení je CRC pro RTU Mode a LRC (kontrolní součet) pro ASCII Mode.
Přenosová media, verze protokolu
[editovat | editovat zdroj]- Ethernet přes TCP/IP
- sériový přenos (RS-232C, RS-422, RS-485, optické vlákno, radiový přenos)
- MODBUS PLUS vysokorychlostní síť
Modbus po sériové lince
[editovat | editovat zdroj]Modbus preferuje sériovou komunikační sběrnici standardu RS485, preferovaný režim sériové linky je 19200 baudů, 8 datových bitů a sudá parita.
Protokol Modbus definuje dva sériové vysílací režimy, Modbus RTU a Modbus ASCII. Režim určuje, v jakém formátu jsou data vysílána. Každá jednotka musí podporovat režim RTU, režim ASCII je nepovinný. Všechny jednotky na jedné sběrnici musejí pracovat ve stejném vysílacím režimu.
- MODBUS RTU – V režimu RTU se 8bitový byte vysílá jako jeden znak, integrita zpráv je zajištěna pomocí kontrolního součtu typu CRC a pomocí paritního bitu. Vysílání zprávy musí být souvislé, mezery mezi znaky nesmějí být delší než 1,5 znaku. Začátek a konec zprávy je identifikován podle pomlky na sběrnici delší než 3,5 znaku. Časování a definice protokolu zajišťuje rychlou komunikaci a spolehlivou komunikaci po sběrnici RS485, aniž by byly kladeny přehnané nároky na připojená zařízení. Díky svým dobrým vlastnostem a otevřenosti patří MODBUS RTU k nejrozšířenějším komunikačním standardům pro průmyslovou automatizaci.
- MODBUS ASCII – V režimu ASCII je každý 8bitový byte posílán jako dvojice ASCII znaků. Oproti režimu RTU je tedy pomalejší, ale umožňuje vysílat znaky s mezerami až 1 s. Začátek a konec zprávy je totiž určen odlišně od RTU módu. Začátek zprávy je indikován znakem „:“ a konec zprávy dvojicí řídicích znaků CR, LF. Tato verze protokolu je tak „lidsky čitelnější“, ale proti RTU verzi je málo využívaná.
Adresace
[editovat | editovat zdroj]- adresa 0 – broadcast – zpráva je určena všem zařízením, ale žádné na ní neodpovídá
- adresy 1 až 247 – unicast – po přijetí a zpracování požadavku vyšle slave odpověď
- adresy 248 až 255 jsou v rezervě
Typ přenášených dat
[editovat | editovat zdroj]Označení | Význam |
---|---|
Discrete Input | Jeden bit určený pouze ke čtení. Např. binární vstup. |
Coil | Jeden bit, který lze číst i zapisovat. Např. cívka relé, lze ji ovládat i zjišťovat její stav. |
Input Register | 16bitový registr určený pouze ke čtení. Např. analogový vstup. |
Holding Register | 16bitový registr, který lze číst i zapisovat. Např. čítač, lze jej nastavit i číst jeho hodnotu. |
Kódy základních funkcí
[editovat | editovat zdroj]Kód | Název funkce | Popis |
---|---|---|
01 | Read Coils | Čtení jednoho nebo více bitů |
02 | Read Discrete Inputs | Čtení jednoho nebo více bitů |
03 | Read Holding Registers | Čtení jednoho nebo více 16bitových registrů |
04 | Read Input Registers | Čtení jednoho nebo více 16bitových registrů |
05 | Write Single Coil | Zápis jednoho bitu |
06 | Write Single Register | Zápis jednoho 16bitového registru |
15 | Write Multiple Coils | Zápis více bitů |
16 | Write Multiple Registers | Zápis více 16bitových registrů |
V praxi někdy splývají pojmy Coils a Discrete Inputs (respektive Holding Registers a Input Registers), záleží pouze na výrobci zařízení, jak interpretuje tyto pojmy, respektive jak namapuje modbusové adresy registrů na své vlastní adresy (registrů/vstupů/výstupů…). V některých případech lze v případě čtení zaměnit funkce 01 a 02 (respektive 03 a 04).
Externí odkazy
[editovat | editovat zdroj]- Obrázky, zvuky či videa k tématu Modbus na Wikimedia Commons
- Oficiální stránky protokolu MODBUS: www.modbus.org
- Modbus.org: Definice protokolu MODBUS (anglicky)
- Modbus.org: Návod na implementaci MODBUSu po sériové lince (anglicky)
- Přehled protokolu MODBUS (pdf): http://home.zcu.cz/~ronesova/… (stejný článek v html: 1., 2.)
- MODBUS ovladač: http://www.promotic.eu/...