Modbus RTU: Technický prehľad protokolu, štruktúry dát a príkladov komunikácie

1. Architektúra a komunikačné rozhrania

Modbus je postavený na architektúre master–slave (resp. client–server). Jeden master riadi komunikáciu a môže komunikovať s až 247 slave zariadeniami.

Protokol môže fungovať na viacerých fyzických vrstvách:

  • RS-485 – najčastejšie používané rozhranie pre Modbus RTU

  • RS-422

  • RS-232

  • Ethernet (Modbus TCP) – varianta využívajúca TCP/IP

V rámci Modbus RTU sú telegramy prenášané v binárnej forme ako séria bajtov.


2. Štruktúra Modbus RTU správy

Typická Modbus RTU správa pozostáva z nasledujúcich častí:

Pole Popis
Slave ID Adresa zariadenia (0 – 247)
Function Code Určuje typ operácie (čítanie, zápis…)
Data Parametre požiadavky alebo odpovede
CRC16 16-bitová kontrolná suma

PDU – Protocol Data Unit

Ak z rámca odstránime Slave ID a CRC, ostáva tzv. PDU, ktorá sa používa aj v Modbus TCP.


3. Register map a adresovanie

Modbus rozdeľuje dáta do štyroch tabuľiek, každá s vlastným rozsahom a offsetom:

Rozsah Offset Typ Prístup
00001–09999 1 DO – Discrete Outputs (Coils) Read/Write
10001–19999 10001 DI – Discrete Inputs Read
30001–39999 30001 AI – Analog Inputs Read
40001–49999 40001 AO – Holding Registers Read/Write

Fyzická adresa sa počíta ako:

Register_adresa = Register_číslo – Offset

Príklad:
AO register 40108 → adresa 40108 − 40001 = 107 = 0x006B


4. Príklad Modbus RTU požiadavky (funkcia 03 – Read Holding Registers)

Požiadavka číta hodnoty registrov 40108 až 40110 zo zariadenia s adresou 17:

11 03 00 6B 00 03 76 87

Význam bajtov:

  • 11 – Slave ID (17)

  • 03 – Funkčný kód

  • 00 6B – Začiatok adresy registra (107)

  • 00 03 – Počet registrov

  • 76 87 – CRC

Odpoveď:

11 03 06 AE41 5652 4340 49AD

Výsledné 16-bitové hodnoty registrov:

Register HEX Hodnota (decimál)
40108 AE41 44609
40109 5652 22098
40110 4340 17216

Pri kombinácii dvoch registrov je možné interpretovať ich aj ako:

  • 32-bitové číslo

  • IEEE 754 float

  • ASCII text

Interpretácia závisí od aplikácie a zariadenia.


5. Funkčné kódy Modbus RTU

Najpoužívanejšie funkcie:

Kód Operácia Typ dát Prístup
01 Read Coils (DO) diskrétne Read
02 Read Discrete Inputs (DI) diskrétne Read
03 Read Holding Registers (AO) 16-bit Read
04 Read Input Registers (AI) 16-bit Read
05 Write Single Coil diskrétne Write
06 Write Single Register 16-bit Write
0F Write Multiple Coils diskrétne Write
10 Write Multiple Registers 16-bit Write

Modbus je striktne deterministický – odpoveď je definovaná na úrovni bitov.


6. Príklady použitia vybraných funkcií

6.1 Čítanie digitálnych výstupov – FC 01

Zápis požiadavky aj odpovede je bitovo orientovaný.
Bity sa prenášajú od najmenej významného (LSB).

Typický príklad zahŕňa čítanie viacerých výstupov naraz, pričom odpoveď skupinuje 8 výstupov do jedného bajtu.


6.2 Zápis digitálneho výstupu – FC 05

Pri zápise DO sa používajú iba dve hodnoty:

  • FF 00 → zapnúť výstup

  • 00 00 → vypnúť výstup

Slave vracia presný echo rámec.


6.3 Zápis analógového výstupu – FC 06

Zapisuje jeden 16-bitový register (napr. hodnota DAC).


6.4 Zápis viacerých registrov – FC 10

Umožňuje naraz ukladať viac 16-bitových hodnôt – napr. pri zápise 32-bitových parametrov.


7. Chybové odpovede a výnimky

Ak slave nevie požiadavku spracovať, odošle exception response, kde:

  • funkčný kód má nastavený najvyšší bit (napr. 03 → 83)

  • ďalší bajt je chybový kód

Kód Význam
01 Funkcia podporovaná, ale nevykonateľná
02 Neplatná alebo neexistujúca adresa
03 Neplatná hodnota v dátach
04 Porucha pri spracovaní na slave
05 Slave je zaneprázdnený (potrebuje čas)
06 Slave spracováva predchádzajúci príkaz
07 Chyba programovej funkcie
08 Paritná chyba v pamäti

8. Prečo sa Modbus RTU stále používa

Hoci vznikol v roku 1979, jeho výhody sú dodnes aktuálne:

  • jednoduchá implementácia

  • nízka dátová réžia

  • veľmi spoľahlivý na priemyselnom RS-485

  • otvorený bez licenčných poplatkov

  • široká podpora v PLC, snímačoch, pohonoch a HMI

Modbus sa stal základným jazykom priemyselnej automatizácie.


Záver

Modbus RTU je robustný a konzistentný protokol s jasne definovanou štruktúrou. Jeho práca s 16-bitovými registrami, pevne určené funkčné kódy a deterministické spracovanie z neho robia nástroj, ktorý sa výborne hodí do prostredí, kde je spoľahlivosť dôležitejšia než veľká prenosová rýchlosť.

Instagram widget

%s ...
%s
%image %title %code %s
%s