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 asběrnicích. Komunikace funguje na principu předávání datových zpráv meziklientem a serverem (master a slave).
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.).
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í jeCRC pro RTU Mode a LRC (kontrolní součet) pro ASCII Mode.
Modbus preferuje sériovou komunikační sběrnici standarduRS485, preferovaný režim sériové linky je 19200baudů, 8 datových bitů a sudá parita.
Protokol Modbus definuje dva sériové vysílací režimy, Modbus RTU a ModbusASCII. 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.
| Označení | Význam |
|---|---|
| Discrete Input | Jedenbit 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ó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í pojmyCoils aDiscrete Inputs (respektiveHolding Registers aInput 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).