Protokol MODBUS Server
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Parametre protokolu linky
Konfigurácia meraných bodov
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol realizuje serverovskú (slave) komunikáciu s ľubovoľnými zariadeniami podporujúcimi štandard MODBUS RTU vo verziách sériovej komunikácie a MODBUS TCP.
Konfigurácia komunikačnej linky
- Kategória linky Serial (sériová komunikácia).
- Kategória linky SerialOverUDP Device Redundant(sériová komunikácia).
- Kategória linky TCP/IP-TCP (MODBUS TCP). Použite symbolickú adresu ALL, KOM proces počúva na zvolenom TCP porte na všetkých existujúcich sieťových rozhraniach. Bežne sa používa rezervovaný TCP port číslo 502, ale je možné použiť akýkoľvek iný. Číslo linky je nepoužité, nastavte napríklad hodnotu 1. KOM proces funguje ako multitaskový TCP server a preto vie obsluhovať naraz viacero klientov.
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 1
Parameter | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|
Silent Interval | Oneskorenie vkladané pred začiatkom vysielania každého dátového paketu. | ms | 50 |
No Request Timeout | Ak po uplynutí tohto timeoutu nepríde žiadna platná výzva, prejdú všetky stanice na linke do stavu komunikačnej chyby. Hodnoty výstupných meraných bodov sa však nikdy nestanú neplatnými (serverovský protokol). | mi:ss | 1:00 |
Single Server | Ak je hodnota parametra nastavená na YES, KOM proces odpovie chybou SLAVE_DEVICE_FAILURE na každú dátovú výzvu na stanicu, ktorú nemá nakonfigurovanú. Ak je hodnota parametra nastavená na NO, KOM proces takúto výzvu ignoruje a nijako na ňu neodpovedá. | YES/NO | YES |
Moxa Timeout | Perióda prepínania redundantných zariadení Moxa v prípade komunikačnej chyby alebo problémov. Keďže toto je serverovský protokol, kde sú očakávané žiadosti z externých zariadení, za chybu je považovaný aj výpadok komunikačných žiadostí na dobu dlhšiu ako je hodnota tohto parametra. Aplikuje sa iba v prípade použitia linky kategórie SerialOverUDP Device Redundant. | sec | 10 sec |
Konfigurácia stanice
- Komunikačný protokol "Modbus Server".
- Adresa stanice je dekadické číslo v rozsahu 1 až 247. Adresa 0 je rezervovaná ako broadcast.
Je možné nakonfigurovať viacero staníc s rôznymi adresami na jednej linke, KOM proces bude odpovedať príslušnej stanici. Viď tiež parameter protokolu linky Single Server.
Parametre protokolu stanice
Dialóg konfigurácia stanice - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 2
Parameter | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|
Addressing model | Nastavenie adresného modelu protokolu MODBUS: "MODBUS PDU" dáta sú adresované od 0 do 65535. "MODBUS data Model" dáta sú adresované od 1 do 65536. Poznámka: Implicitná hodnota je MODBUS PDU, v prípade nastavenia MODBUS data Model je objekt s adresou X adresovaný v MODBUS PDU ako X-1. | "MODBUS PDU" "MODBUS data Model" | "MODBUS PDU" |
Konfigurácia meraných bodov
Možné typy hodnôt bodov: Ai, Ao, Di, Do, Ci, Co.
Adresa meraného bodu:
V protokole MODBUS je základný adresný priestor rozdelený na registre typov Coils (čítanie/zápis), Discrete Inputs (čítanie), Holding Registers (čítanie/zápis) a Input Registers (čítanie).
V každom adresnom priestore daného typu registra je nezávislá adresácia s veľkosťou adresy 2 bajty, to znamená fyzicky adresy od 0 do 65535.
Tvar adresy meraného bodu:
Tvar adresy je [I|U|L|Ll|S|Sl|f|F|C|D]Fn.Address[.BitNr] kde:
- Prvé nepovinné písmeno/písmená udáva typ meraného bodu:
- I - Integer 16 bit
- U - Unsigned 16 bit (default)
- L - Unsigned long (4 byty = 2 registre) - čítajú sa 2 registre s adresou Address a Address+1, neznamienkovo, prenášané v big-endian poradí (viď Poznámku).
- Ll - Unsigned long (4 byty = 2 registre) -čítajú sa 2 registre s adresou Address a Address+1, neznamienkovo, prenášané v little-endian poradí (viď Poznámku).
- S - Signed long (4 byty = 2 registre) - čítajú sa 2 registre s adresou Address a Address+1, znamienkovo, prenášané v big-endian poradí (viď Poznámku).
- Sl - Signed long (4 byty = 2 registre) - čítajú sa 2 registre s adresou Address a Address+1, znamienkovo, prenášané v little-endian poradí (viď Poznámku).
- f - Float 32 bit (dva registre) vo formáte big endian (budú poslané bajty B4, B3, B2, B1, kde B4 je najvyšší a B1 najnižší bajt floatu)
- F - Float 32 bit (dva registre) vo formáte little endian (budú poslané bajty B2, B1, B4, B3, kde B4 je najvyšší a B1 najnižší bajt floatu)
- C - Request counter up (16 bit unsigned, ktorý sa pri každom dotaze inkrementuje). Funguje iba pre Fn=3 a Fn=4
- D - Request counter down (16 bit unsigned, ktorý sa pri každom dotaze dekrementuje). Funguje iba pre Fn=3 a Fn=4
Pozn: Request counter up/down sú použiteľné na nakonfigurovanie "watchdogových" meraných bodov na sledovanie funkčnosti a rýchlosti Modbus komunikácie.
- Parameter Fn je funkcia Modbus protokolu pre čítanie údaja, ktorá zaradí meraný bod do príslušného adresného priestoru:
- 1 - Coils: binárne stavy
- 2 - Discrete Inputs: binárne vstupy
- 3 - Holding Registers: stavové registre
- 4 - Input Registers: vstupné registre
- Parameter Address je dvojbajtová adresa registra v rozsahu 0 až 65535.
- Parameter BitNr voliteľne špecifikuje konkrétny bit v rámci registra a je v rozsahu 0 až 15.
Implementácia protokolu podporuje nasledovné funkcie:
- 1 - Read Coils: čítanie binárnych stavov - KOM proces odosiela hodnoty mer. bodov typu Do.
- 2 - Read Discrete Inputs: čítanie binárnych vstupov - KOM proces odosiela hodnoty mer. bodov typu Do.
- 3 - Read Holding Registers: čítanie stavových registrov - KOM proces odosiela hodnoty mer. bodov typu Co, Ao (signed/unsigned).
- 4 - Read Input Registers: čítanie vstupných registrov - KOM proces odosiela hodnoty mer. bodov typu Co, Ao (signed/unsigned).
- 5 - Write Single Coil: zápis binárnych stavov - KOM proces zapíše do systému prijatú binárnu hodnotu do mer. bodu typu Di, Do.
- 15 - Write Multiple Coils - KOM proces zapíše do systému všetky prijaté binárne hodnoty mer. bodov typu Di, Do.
- 6 - Write Single Register: zápis stavových registrov - KOM proces zapíše do systému prijatú hodnotu do mer. bodu typu Ai, Ao, Ci, Co.
- 16 - Write Multiple registers: zápis viacerých registrov - KOM proces zapíše do systému všetky prijaté hodnoty do mer. bodov typu Ai, Ao, Ci, Co.
Poznámka: Je treba si uvedomiť že toto je serverovský typ protokolu, primárne určený na odosielanie hodnôt mimo systém D2000. Preto by mali byť merané body konfigurované ako výstupné (Ao,Co,Do) tak, aby sa im dali, buď priamo alebo prostredníctvom riadiacich objektov, ovládať hodnoty. Ak je meraný bod nakonfigurovaný ako vstupný (Ai,Ci,Di), nevie KOM proces odoslať platnú hodnotu pri čítaní funkciami 1 až 4 až do okamihu, kým nie je zapísaná zvonka funkciami 5, 15, 6 alebo 16.
Ak KOM proces nemá platnú hodnotu meraného bodu alebo je prijatá žiadosť na čítanie neexistujúceho meraného bodu, je pri výzve na čítanie odoslaná implicitná hodnota False alebo 0 (protokol MODBUS nepodporuje prenos kvality hodnoty).
Literatúra
- MODBUS APPLICATION PROTOCOL SPECIFICATION V1.1b, December 28, 2006. http://www.modbus.org.
Blog
O protokole Modbus si môžete prečítať aj blogy
Zmeny a úpravy
-
Revízie dokumentu
- Ver. 1.0 - 24. apríl 2009 - Vytvorenie dokumentu.
- Ver. 1.1 - 21. november 2010 - Aktualizácia dokumentu.
- Ver. 1.2 - 11. november 2011 - Aktualizácia dokumentu.
- Ver. 1.3 - 22. júl 2019 - Implementácia signed/unsigned long hodnôt (L, Ll, S, Sl)
Súvisiace stránky: