Popis protokolu Modbus. Len o Modbus RTU s podrobným popisom a príkladmi

  • 01.09.2019

Tento článok popisuje základy práce s protokolom Modbus. V článku nájdete:

  • Popis Modbus
  • Príklad aplikácie
  • Popis Onitex Modbus terminálu

Základné princípy Modbus

Modbus je komunikačný protokol založený na architektúre klient-server. V tomto článku sa pozrieme na základy protokolu a základné princípy fungovania. Okrem toho sa môžete zoznámiť s konkrétnymi príkladmi fungovania protokolu Modbus preštudovaním popisov ovládačov používajúcich tento protokol, napríklad OSM-17RA, ako aj stiahnutím programu Modbus Terminal, ktorý vám umožní pohodlne pracovať s rôzne registre Modbus.

Protokol Modbus je navrhnutý na použitie v programovateľných logických ovládačoch, ako je riadenie motorového pohonu. V súčasnosti je to veľmi bežný protokol používaný v rôznych priemyselných systémoch. Tento protokol sa napríklad používa v ovládačoch krokových motorov Onitex. Široko používaný na prenos dát po sériových komunikačných linkách založených na rozhraniach RS-485, RS-422, RS-232. Na začiatku vývoja bolo rozhranie RS-232 používané ako jedno z najjednoduchších priemyselných rozhraní na sériový prenos dát. V súčasnosti sa protokol často používa cez rozhranie RS-485, čo umožňuje dosiahnuť vysokú prenosovú rýchlosť, veľké vzdialenosti a integráciu viacerých zariadení do jednej siete, najmä preto, že protokol Modbus podporuje adresovanie. Široké používanie protokolu Modbus vďaka jeho jednoduchosti a spoľahlivosti uľahčuje integráciu zariadení, ktoré podporujú Modbus, do jednej siete.

Hlavnou črtou protokolu je prítomnosť jedného hlavného zariadenia v sieti - master. Iba hlavné zariadenie môže vyzvať ostatné zariadenia v sieti, ktoré sú podriadené. Podriadené zariadenie nemôže samostatne iniciovať prenos dát ani si vyžiadať dáta od iných zariadení, sieťová prevádzka je založená len na princípe „žiadosť-odpoveď“. Master môže tiež vydať požiadavku na vysielanie adresovanú všetkým zariadeniam v sieti, v takom prípade sa neodošle žiadna správa s odpoveďou.

Existujú tri typy protokolu Modbus: Modbus ASCII, Modbus RTU a Modbus TCP. Zariadenia Onitex podporujú protokol Modbus RTU, preto budeme mať na pamäti predovšetkým tento protokol.

Dátový paket Modbus vyzerá takto:

Adresa | Kód funkcie | Údaje | Kontrolná suma.

Adresa je pole obsahujúce číslo zariadenia, ktorému je požiadavka adresovaná. Každé zariadenie v sieti musí mať jedinečnú adresu. Zariadenie odpovedá len na tie požiadavky, ktoré prídu na jeho adresu, aby sa predišlo konfliktom. V tomto prípade podriadené zariadenie vo svojej odpovedi tiež odošle pole Adresa, s výnimkou požiadavky na vysielanie (keď by od podriadeného zariadenia nemala byť žiadna odpoveď).

Kód funkcie obsahuje číslo funkcie modbus (funkcie budú popísané nižšie). Funkcia môže vyžiadať údaje alebo zadať príkaz na určité akcie. Kódy funkcií sú čísla v rozsahu 1 až 127. Funkcie 128 až 128 sú vyhradené na odosielanie chybových informácií v správe s odpoveďou.

V teréne Údaje obsahuje informácie, ktoré master posiela podriadenému alebo naopak v prípade správy s odpoveďou. Dĺžka tohto poľa závisí od typu prenášaných údajov.

Lúka Kontrolná suma je dôležitým prvkom protokolu: obsahuje informácie potrebné na kontrolu integrity správy a absenciu chýb prenosu.

Maximálna veľkosť paketu pre siete RS232/RS485 je 256 bajtov, pre siete TCP je to 260 bajtov.

Existujú tri typy funkcií:

  1. Štandardné. Popis týchto funkcií je publikovaný a schválený Modbus-IDA. Táto kategória zahŕňa publikované aj aktuálne bezplatné kódy.
  2. Vlastné. Dva rozsahy kódov (65 až 72 a 100 až 110), pre ktoré môže používateľ vytvoriť ľubovoľnú funkciu.
  3. Rezervované. Táto kategória zahŕňa kódy funkcií, ktoré nie sú štandardné, ale už sa používajú v zariadeniach vyrábaných rôznymi spoločnosťami. Tieto kódy zahŕňajú 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 a 127.

Modbus RTU

Pri použití režimu Modbus RTU správa začína takzvaným intervalom ticha, ktorý sa rovná času prenosu 3,5 znaku pri danej prenosovej rýchlosti. Prvé pole je adresa zariadenia. Za posledným vyslaným znakom tiež nasleduje interval ticha minimálne 3,5 znaku. Po tomto intervale sa môže začať nová správa. Rámec správy sa prenáša nepretržite. Ak počas prenosu rámca nastane interval ticha 1,5, prijímacie zariadenie MUSÍ rámec ignorovať ako neúplný. Ak nová správa začne pred 3,5 znakovým intervalom, prijímacie zariadenie ju bude interpretovať ako pokračovanie predchádzajúcej správy. V tomto prípade je nastavená chyba CRC (nesúlad kontrolného súčtu).

Dátové typy a štandardné funkcie Modbus

Typy údajov protokolu Modbus sú uvedené v tabuľke:

Na čítanie hodnôt z týchto údajových tabuliek vyššie použite funkcie s kódmi 1-4 (0x01-0x04):
1 (0x01)- čítanie hodnôt z niekoľkých vlajkových registrov (Read Coil Status)
2 (0x02)- čítanie hodnôt z niekoľkých diskrétnych vstupov (Read Discrete Inputs)
3 (0x03)- čítanie hodnôt z niekoľkých uchovávacích registrov (Read Holding Registers)
4 (0x04)- čítanie hodnôt z niekoľkých vstupných registrov (Read Input Registers)

Dotaz pozostáva z adresy prvého prvku tabuľky, ktorého hodnota sa má prečítať, a počtu prvkov, ktoré sa majú prečítať. Adresa a množstvo dát sú uvedené ako 16-bitové čísla, pričom najvýznamnejší bajt každého z nich sa prenáša ako prvý.
Požadované údaje sa odošlú v odpovedi. Počet bajtov údajov závisí od počtu požadovaných položiek. Pred dátami sa prenesie jeden bajt, ktorého hodnota sa rovná počtu bajtov dát.

Jedna hodnota sa zapíše pomocou nasledujúcich funkcií:
5 (0x05)- zaznamenávanie hodnoty jedného príznaku (Force Single Coil)
6 (0x06)- zápis hodnoty do jedného ukladacieho registra (Preset Single Register)

Príkaz pozostáva z adresy prvku (2 bajty) a nastavenej hodnoty (2 bajty). Ak je príkaz úspešný, slave vráti kópiu požiadavky.

Zaznamenávanie viacerých hodnôt je dané funkciami:
15 (0x0F)- zápis hodnôt do niekoľkých registrov príznakov (Force Multiple Coils)
16 (0x10)- zápis hodnôt do niekoľkých úložných registrov (Preset Multiple Registers)

Príkaz pozostáva z adresy prvku, počtu prvkov, ktoré sa majú zmeniť, počtu bajtov nastavených hodnôt, ktoré sa majú preniesť, a samotných nastavených hodnôt. V odpovedi slave pošle počiatočnú adresu a počet zmenených prvkov.

Príklad zariadenia Modbus

Zvážte fungovanie protokolu na príklade regulátora krokového motora. Dokumentácia k regulátoru popisuje účel registrov Modbus, ktoré sa v ňom používajú. Pre ovládanie motora je potrebné nastaviť parametre regulátora, parametre otáčania a samotný príkaz. Všetka práca s kontrolérom pri použití protokolu Modbus spočíva v práci s registrami, teda čítanie a zápis. Náš kontrolór má len jeden typ registrov: Holding Registry. Tento typ registra je určený na čítanie aj zápis parametrov. Radič používa tri typy registrov: 8, 16 a 32 bitov. Na prácu s ním teda potrebujeme použiť len niekoľko funkcií: Read Holding Registers na čítanie, Preset Single Register pre zápis registrov s veľkosťou 8 a 16 bitov a Preset Multiple Registers pre zápis hodnôt do registrov s dĺžka 32 bitov.

Pre začatie práce s ovládačom je potrebné nastaviť parametre ovládača a rotáciu. Robí sa to postupným zapisovaním potrebných parametrov do registrov podľa dokumentácie pomocou potrebných funkcií. V tomto prípade každý vstup parametra vyvolá príslušný handler v ovládači, ktorý v prípade potreby skontroluje rozsahy hodnôt alebo vykoná iné potrebné akcie. V skutočnosti regulátor vytvára prerušenie pri zmene hodnoty v registri. Táto vlastnosť výrazne rozširuje možnosti využitia protokolu Modbus.

Po zapísaní všetkých parametrov sa samotný príkaz zapíše do príslušného registra. Táto organizácia práce s protokolom Modbus je pre praktické využitie veľmi výhodná, pretože vám umožňuje vystačiť si len s tromi štandardnými funkciami. Počas vykonávania príkazu je zachovaný prístup ku všetkým registrom, najmä môžeme čítať hodnotu počítadla polohy, v prípade potreby ho vynulovať, zmeniť rýchlosť alebo nastaviť nový príkaz bez čakania na vykonanie starého . Ďalšou vlastnosťou použitia protokolu Modbus je, že všetky registre si uchovávajú svoje hodnoty, kým nie sú prepísané, takže ak potrebujeme zopakovať pohyb s rovnakými parametrami, jednoducho zapíšeme príkaz pohybu do príkazového registra a engine zopakuje predchádzajúci úloha. To nielen zjednodušuje ovládanie, ale tiež znižuje premávku medzi ovládačom motora a riadiacou jednotkou.

Využitie protokolu Modbus teda umožnilo veľmi jednoduché, kvalitné a spoľahlivé ovládanie krokového motora.

Na ladenie zariadení s protokolom Modbus sme vyvinuli program OSM Modbus Terminal. Tento program umožňuje rýchlo zvládnuť základné princípy ovládania zariadení OSM MB pomocou protokolu Modbus RTU, skontrolovať správnu činnosť zariadenia a rýchlo napísať vlastný softvér. Program si môžete stiahnuť v sekcii Softvér na našej webovej stránke.

Program je mapa registrov, z ktorých každý môže mať adresu, typ hodnoty a názov. Každý register má schopnosť čítať a zapisovať hodnotu. V okne „LogOut“ môžete vidieť výstup protokolu na základe výsledkov každej akcie vrátane chýb, ktoré sa vyskytli.

Ak chcete začať pracovať s programom, musíte nastaviť adresu portu počítača a adresu zariadenia a kliknúť na tlačidlo „Pripojiť“. Potom môžete čítať a zapisovať do požadovaných registrov. V prípade potreby môžete uložiť názvy a adresy použitých registrov tlačidlom „Uložiť“. Program je napísaný pomocou OsmModbusDriver_SDK a môže slúžiť ako príklad použitia SDK.

Všetky práva vyhradené. Dotlač materiálov zo stránky je možná len so súhlasom správy


Štruktúra správy Modbus je nasledovná:

  1. slave adresa je adresa zariadenia, ktorému je adresovaná táto Modbus správa. Zariadenia odpovedajú iba na tie správy, ktoré sú im adresované. Odpoveď začína adresou podriadeného zariadenia. Adresa sa zmení o 1…247. Adresa 0 v správe protokolu Modbus je vyhradená pre správy vysielania, 248..255 sú vyhradené adresy.
  2. číslo funkcie - 1 bajt dát.
  3. údaje - toto pole obsahuje informácie o funkcii, ktorá sa má vykonať, alebo údaje, ktoré podriadené zariadenie posiela master protokolu Modbus.
  4. Blok detekcie chýb (CRC) je kontrolný súčet, ktorý sa vypočítava zo všetkých predchádzajúcich bajtov pomocou algoritmu eliminácie po jednotlivých bitoch.

Treba poznamenať, že pri čítaní cez protokol Modbus v jednej správe môžete prečítať hodnotu diskrétnych alebo analógových vstupov a výstupov umiestnených v rade, to znamená nastaviť adresu prvej hodnoty a ich počet.

Zvážte hlavné štandardné funkcie podľa ich kódov (v desiatkovom a hexadecimálnom formáte):
1 (0х01) – čítanie viacerých digitálnych výstupov
2 (0x02) - čítanie niekoľkých digitálnych vstupov
3 (0x03) - čítanie niekoľkých pomocných registrov alebo analógových výstupov
4 (0х04) – čítanie niekoľkých analógových vstupov
Ak napríklad počet diskrétnych vstupov, ktoré sa vygenerujú v požiadavke, nie je násobkom ôsmich, potom sa počet bajtov hodnôt zaokrúhli nahor a podľa toho sa získajú napríklad hodnoty 15 diskrétnych vstupov, toto číslo sa bude rovnať dvom bajtom.
Dátam správy Modbus predchádza jeden bajt, ktorého hodnota je počet bajtov údajov.
5 (0x05) - zapíšte hodnotu jedného diskrétneho výstupu
6 (0x06) - zapíše hodnotu jedného analógového výstupu alebo registra
Príkaz Modbus pozostáva z adresy a hodnoty (2 bajty). Normálna odpoveď je zopakovať požiadavku protokolu Modbus.
15 (0x0F) - zápis hodnôt do niekoľkých digitálnych výstupov
16 (0x10) - zápis hodnôt niekoľkých analógových výstupov alebo registrov
Odpoveď pozostáva zo začiatočnej adresy registra a počtu zmenených hodnôt.
Príklad požiadavky/odpovede Modbus:

Chyby prenosu sa delia na 2 typy - skreslenie prenosu a logické. Skreslenie je sledované časom „ticha“. Normálny čas medzi správami je čas potrebný na odoslanie 3,5 znaku. Ak sa počas prenosu správy Modbus vyskytne pauza dlhšia ako 1,5 znaku, paket sa zahodí.

Logické chyby protokolu Modbus sa vyskytujú, ak podriadená jednotka nemôže vôbec prijať správu alebo ju prijme, ale vydá chybu. V tomto prípade je chyba diagnostikovaná časovým limitom. Podriadený prijme požiadavku, ale nemôže ju spracovať (napríklad prístup na neexistujúcu adresu) – v tomto prípade sa odošle chybové hlásenie.

Príklad chybového hlásenia Modbus na požiadavku:

Štandardné chybové kódy Modbus:
01 - Funkciu nemožno spracovať na podriadenom zariadení.
02 - Neexistujúca adresa údajov.
03 - Hodnota v dátovom poli pre požiadavku je neplatná pre uloženie.
04 - Počas pokusu podriadeného zariadenia o vykonanie akcie sa vyskytla neodstrániteľná chyba.
05 - Slave prijal žiadosť a začal ju spracovávať, ale bude to chvíľu trvať. Tento kód zabraňuje hlavnému zariadeniu, aby vyvolal chybu časového limitu.
06 - Slave je zaneprázdnený spracovaním príkazu. Master musí správu znova odoslať neskôr, keď bude slave voľný.
07 -Slave nemôže vykonať funkciu z požiadavky. Master musí odoslať požiadavku na diagnostické informácie alebo prijať informácie o chybe od podriadeného zariadenia.
08 - Slave sa pokúša čítať pamäťovú oblasť, ale bola zistená chyba parity. Majster môže požiadavku zopakovať, ale zvyčajne sú v takýchto prípadoch potrebné opravy.

Štruktúra rámca Modbus TCP:

Kde:
ID transakcie – dva bajty
ID protokolu – dva bajty (štyri nuly)
dĺžka paketu - dva bajty, veľkosť nasledujúcich polí správy
slave adresa - adresa slave, ktorému je adresovaná požiadavka protokolu Modbus.
Charakteristickým znakom protokolu Modbus TCP je absencia kontrolného súčtu, pretože CRC sa kontroluje na transportnej úrovni protokolu TCP. Preto kontrola kontrolného súčtu vo formáte RTU nemá zmysel.

V tomto článku sa pokúsim vysvetliť, ako protokol funguje Modbus, aké údaje môže uchovávať, v akej forme je možné ich uchovávať, ako ich možno čítať. Tento článok vám poskytne predstavu o tom, čo je Modbus protokol a ako ho možno použiť.

Adresovanie dát v Modbuseprotokol

Na ukladanie informácií v podriadených zariadeniach ( otrokárske zariadenie) Používajú sa 4 tabuľky (alebo polia). Každá tabuľka ukladá informácie o podobných premenných v registroch. Každý register má svoju veľkosť a adresu. Registre môžu byť len na čítanie alebo na čítanie a zápis. Pozrime sa na tieto 4 typy údajov, ktoré môžu byť uložené v registroch:

COILS

Ide o digitálne výstupy ( Digitálne výstupy). Každú cievku je možné zapisovať alebo čítať. Jeho veľkosť je 1 bit (t.j. 0 alebo 1). Historicky sú tieto registre spojené so skutočnými digitálnymi výstupmi na snímačoch alebo koncových zariadeniach. Digitálne výstupy sa používajú na ovládanie napríklad LED diód, relé alebo motorov. Tie. zápisom 1 do takéhoto registra môžeme rozsvietiť LED a zápisom 0 ju môžeme vypnúť (to je podmienené, v skutočnosti ju 0 môže zapnúť a 1 zhasnúť).

Pri čítaní tohto registra môžeme zistiť stav výstupu (teda či je zapnutý alebo vypnutý). Výsledkom čítania je tiež 1 bit, t.j. 1 alebo 0.

KONTAKTY

Ide o digitálne vstupy ( Digitálne vstupy). Digitálny vstup je možné iba čítať, t.j. načítaním tohto registra zistíme stav skutočného digitálneho vstupu na snímači alebo zariadení. Digitálne vstupy sa používajú na ovládanie stavu - napríklad svieti alebo nesvieti svetlo, kvapalina dosiahla požadovanú úroveň alebo nie, relé je alebo nie je zapnuté atď.

ANALOGOVÉ VSTUPNÉ REGISTRE

Toto sa zvyčajne vzťahuje na analógové vstupy ( analógové vstupy). Analógové vstupy je možné iba čítať, t.j. nemožno ich zapisovať, ale aktuálny stav daňového vstupu je možné iba čítať. Analógové vstupy sa zvyčajne používajú na snímačoch na meranie nejakej hodnoty: vstupného prúdu alebo vstupného napätia. Potom sa získaná hodnota môže premeniť na nejakú skutočnú hodnotu, napríklad na teplotu, vlhkosť vzduchu, tlak alebo niečo iné. Na tento účel sa používajú špeciálne vzorce, ktoré sa dodávajú so snímačom. Ale častejšie snímač okamžite vráti skutočnú hodnotu. Napríklad snímač teploty môže vrátiť nameranú hodnotu ako stupne Celzia krát 10. 253 znamená 25,3 °C. Tento trik sa často používa, keď chcete vrátiť zlomkové hodnoty cez celočíselný register.

REGISTERY DRŽIACEHO ANALOGOVÉHO VÝSTUPU

Zvyčajne sa to týka analógových výstupov ( analógové výstupy), ale rovnako často len registre, ktoré uchovávajú nejakú hodnotu, ktorú možno zapisovať aj čítať. Tie. tieto registre je možné čítať aj zapisovať. Najčastejšie sa používa na písanie DAC zariadenia (digital to Analog Converter) alebo jednoducho ako registre, ktoré uchovávajú nejaké hodnoty. DACčasto používané na ovládanie niečoho, napríklad jasu LED alebo hlasitosti sirény alebo rýchlosti motora.

Tieto registre sú 16 bitové, t.j. každý register môže uložiť iba 2 bajty.

Tieto štyri typy registrov sú v štandarde podporované Modbus. A len pomocou nich musíte vybudovať systém. Ak sa pozriete z pohľadu konečného zariadenia (podriadeného zariadenia), potom sa registre najlogickejšie používajú na tieto potreby:

Cievky– na ovládanie zariadení prostredníctvom digitálnych výstupných portov alebo booleovských príznakov, ako sú zapnuté / vypnuté, otvorené / zatvorené atď.

Kontakty– na ukladanie hodnôt booleovských príznakov alebo na zobrazenie informácií z digitálnych vstupov.

Vstupy– pre hodnoty, ktoré je potrebné prečítať iba na hlavnej strane a ktoré možno reprezentovať ako 16-bitové celé čísla. Napríklad vstupy ADC alebo aké systémom generované hodnoty je potrebné prečítať (napríklad počet spustených procesov alebo vnútornú teplotu zariadenia možno prečítať prostredníctvom niektorého vstupného registra)

Holding– tieto registre možno použiť na uloženie konfigurácie zariadenia, na ovládanie DAC zariadenia na ukladanie niektorých servisných informácií. V zásade sa tieto registre dajú použiť na čokoľvek, na čo má projektant systému dostatok fantázie.

Okrem toho každý register v obvode Modbus môže mať jedinečnú adresu, ktorá je určená typom registra. Pozrite si tabuľku nižšie:

názov Typ prístupu Adresy Dostupné registre
Cievky Čítaj píš 1 – 9999 9999
Kontakty Čítanie 10001 – 19999 9999
Vstupy Čítanie 30001 – 39999 9999
držby Čítaj píš 40001 – 49999 9999

Ako môžete vidieť z tabuľky, každý typ registra môže obsahovať maximálne 9999 registrov. Ale všetky začínajú nejakým posunom: 0, 10 000, 30 000, 40 000.

V skutočnosti vo vnútri príkazov protokolu Modbus, nepoužije sa celá adresa, ale iba jej offset vzhľadom na základnú adresu. Tie. pre všetky typy registrov bude skutočná adresa v inštrukcii 0-9998. A príkaz určuje, ktorá základná adresa sa môže použiť.

Najjednoduchšie je si predstaviť, že v zariadení sú uložené 4 polia prvkov s 9999 prvkami. Index vo vnútri poľa je adresa, ktorá je zadaná v príkaze. A príkaz určí, ktoré pole sa má použiť.

Ak sa pozriete pozorne na tabuľku, môžete vidieť, že ak chcete, môžete použiť viac adries Holding registre: 40001 - 105537, t.j. spolu 65535 registrov. To isté pre Kontakty: 10001 - 29999, t.j. spolu 19999. Ide o takzvané rozšírené registre. Nie sú štandardne podporované Modbus zariadení. Ak teda chcete, aby vaše zariadenie dokázalo pracovať so štandardnými klientmi, nemusíte používať rozšírené registre.

Ale ak ste si istí, že vaše zariadenie bude spolupracovať s vaším majstrom, ktorý vie pracovať s rozšírenými registrami, alebo s istotou viete, že hlavné zariadenie, ktoré bude použité pre váš produkt, vie o rozšírených registroch, tak ich použite.

Vyššie sme zistili, ako sú registre adresované vo vnútri zariadenia. Teraz sa pozrime, ako sú riešené samotné zariadenia.

Modbus adresovaniezariadení

Na adresovanie zariadení sa používa špeciálny identifikátor, ktorý je tzv ID otroka. Ide o jednobajtovú hodnotu, ktorá definuje jedinečnú adresu zariadenia v celej sieti. Modbus. Podľa normy Modbus môže to byť číslo od 1 do 247. T.j. celkovo môže byť v sieti 247 koncových zariadení (slave zariadení) s unikátnymi adresami.

Keď master pošle príkaz do siete, prvý bajt je ID otroka. To umožňuje zariadeniam určiť po prvom byte, či majú príkaz spracovať alebo či ho môžu ignorovať. Toto platí pre Modbus RTU. Pre Modbus TCP použitý protokol ID jednotky význam. Hoci ak sa pozriete, je to len iné meno ID otroka. ID jednotky je tiež jednobajtová adresa zariadenia, od 1 do 247.

To značne obmedzuje počet zariadení, ktoré môžu byť súčasne online. Preto existuje možnosť, keď sa na adresovanie zariadení použijú 2 bajty. V tomto prípade sa počet zariadení zvýši na 65535. To je viac než dosť. Ale je tu jedna podmienka. Hlavné a koncové zariadenie musia používať 2 bajty na adresovanie. Tie. musia byť nakonfigurované tak, aby používali rovnakú schému adresovania zariadenia: 1 alebo 2 bajty. Všetky zariadenia v sieti musia tiež používať rovnakú schému adresovania - 1 alebo 2 bajty. V sieti nemôžu byť zariadenia s rôznymi schémami adresovania.

Funkcie Modbus

Aby bolo možné vyžiadať dáta alebo ich zapísať, musí master špecifikovať funkciu, ktorú chce na koncovom zariadení vykonať. Všetky dostupné funkcie v štandarde Modbus protokol sú uvedené nižšie:

Kód funkcie Typ akcie Popis
01 (01 hex) Čítanie Číta hodnotu registra cievky
02 (02 hex) Čítanie Číta hodnotu registra kontaktov
03 (03 hex) Čítanie Číta hodnotu registra Holding
04 (04 hex) Čítanie Číta hodnotu vstupného registra
05 (05 hex) Jediný záznam v registri Zapíše hodnotu do registra cievky
06 (06 hex) Jediný záznam v registri Zapíše hodnotu do registra Holding
15 (0F hex) Napíšte viacero registrov Zapíše hodnotu do viacerých registrov cievok
16 (10 hex) Napíšte viacero registrov Zapíše hodnotu do viacerých holdingových registrov

Každá funkcia bude diskutovaná neskôr, podrobne a s príkladmi.

CRC16 ako spôsob, ako sa vyhnúť chybám

Každý tím v Modbus RTU Protokol končí dvoma bajtmi, ktoré obsahujú hodnotu CRC16 všetkých príkazových bajtov. Pridanie CRC16 vám umožní nájsť poškodené požiadavky a ignorovať ich. Keďže každý bajt v inštrukcii sa používa na výpočet kontrolného súčtu, aj zmena jedného bitu v ktoromkoľvek byte spôsobí nesúlad medzi prenášaným kontrolným súčtom a tým, ktorý je vypočítaný na základe prijatých bajtov. Ide o pomerne spoľahlivý spôsob ochrany prenášaných údajov pred poškodením (to znamená nájsť poškodené údaje). Klient, rovnako ako master, musí skontrolovať CRC16 z prijatého príkazu s CRC16 vygenerovaným z prijatých bajtov. Ak sa kontrolné súčty nezhodujú, prijatá požiadavka obsahuje poškodené bajty, čo skresľuje význam odoslaného príkazu. Takýto príkaz by sa mal ignorovať.

Je potrebné poznamenať, že CRC16 sa nepoužíva v Modbus TCP protokol. Keďže pakety TCP už majú svoj vstavaný kontrolný súčet a kontroluje sa integrita údajov, nie je potrebné počítať CRC16.

Ďalšia odroda Modbus Protokol Modbus ASC II, použitý LRC(Longitudinal Redundancy Check) namiesto CRC16. LRC je oveľa jednoduchší ako CRC16 a výsledkom je 1 bajt. LRC je menej spoľahlivé na zisťovanie chýb poškodenia údajov, ale historicky Modbus ASC II používa túto metódu.

Ako vypočítať CRC16 pre Modbus RTU protokol a LRC pre Modbus ASC II protokol, napíšem samostatne.

Dátové typy, ktoré sú uložené v registroch.

Povedzme si, aké údaje môžu byť uložené v registroch. Najjednoduchší prípad je Cievka a kontakt registrov. Tieto registre môžu uchovávať 1 bit informácie – 0 alebo 1. Keď master číta tieto registre, dostane ako výsledok 0 alebo 1. Na zápis registrov sa používajú špeciálne konštanty:

0xFF00- znamená logickú 1

0x0000– znamená logickú 0

Ak sa príkaz použije na zápis viacerých registrov, potom sa každý register zapíše pomocou 1 bitu: 0 alebo 1.

Všetky ostatné registre sú 16-bitové dáta (2 bajty)

A tu je to najzaujímavejšie.

Interpretácia údajov musí byť špecifikovaná v popise Modbus registre (tzv Modbusová mapa dokument). Tento dokument musí presne špecifikovať, ktorý register uchováva aké údaje a aké hodnoty sú preň prijateľné.

Začnime jednoduchými prípadmi.

Ak čítame 1 Vstup alebo Holding registra, potom dostaneme 16 bitov dát. Toto môže byť napríklad hodnota 0x8D05- dva bajty 0x8D a 0x05.

V najjednoduchšom prípade to môže byť celé číslo bez znamienka: 36101

Ale môže to byť celé číslo so znamienkom: -29435

Ďalší príklad. Prečítali sme si význam 0x4D4F

Môže to byť celé číslo bez znamienka, celé číslo so znamienkom alebo 2 znaky ASCII:

0x4D = M

0x4F = O

Teraz je prípad zaujímavejší. Kombináciou viacerých registrov dohromady môžeme ukladať dátové typy, ktoré sú väčšie ako 16 bitov.

Napríklad sme čítali 2 registre a dostali nasledujúce údaje: 0xAE53 0x544D

To môže byť:

32-bitové celé číslo bez znamienka

0xAE53 0x544D = 2924696653

32-bitové celé číslo so znamienkom

0xAE53 0x544D = -1370270643

32 bit float - číslo s pohyblivou rádovou čiarkou

0xAE53 0x544D = -4,80507e-11

Alebo uložte 4 znaky ASCII

0xAE53 0x544D = 0xAE 0x53 0x54 0x4D= ®STM

Ak budete pokračovať, kombináciou viacerých registrov môžete uložiť 64 bitové hodnoty, 128 bitové hodnoty, reťazce a v zásade akýkoľvek typ údajov.

Kombináciou registrov však máme nasledujúcu otázku:

Bajt a slovosled

Bohužiaľ protokol Modbus nešpecifikuje, ako sa majú bajty ukladať v registri. Tie. rôzne zariadenia od rôznych výrobcov môžu ukladať bajty v náhodnom poradí.

Napríklad čítaním registra sme dostali hodnotu 0xA543

V závislosti od poradia, v ktorom boli bajty uložené v pôvodnom registri, to môžu byť dve úplne odlišné hodnoty:

Ak sa používa Veľký Endian formát (najskôr vysoký bajt), potom budeme mať hodnotu 42307

Ale ak sa používa Malý Endian formát (najskôr nízky bajt), potom budeme mať hodnotu 17317

Je to ešte zaujímavejšie, keď z dvoch registrov vytvoríme 32 bitovú hodnotu.

Pre kombináciu bajtov sú 4 možnosti, napríklad 32-bitové číslo 4014323619 (0xEF45B7A3) je možné preniesť pomocou nasledujúcich 4 bajtových sekvencií:

0xEF45 0xB7A3

0x45EF 0xA3B7

0xB7A3 0xEF45

0xA3B7 0x45EF

Nezáleží na tom, aké poradie bajtov/slov je implementované na koncovom zariadení. Hlavná vec je, že majster musí poznať toto poradie a byť schopný vytvoriť správne hodnoty z prijatých bajtov. Pri znalosti presného formátu údajov na koncovom zariadení master vždy správne vytvorí hodnoty registrov. A na to ten koncept slúži. Modbusová mapa (Modbus karta).

ModbusMapa

Modbusová mapa je dokumentácia, ktorá plne popisuje všetko možné Modbus registre na zariadení, ich adresy, účel, dostupné hodnoty, predvolené hodnoty, spôsob prístupu.

Niektoré zariadenia sa dodávajú s pevným popisom registra. Tie. zoznam registrov, ich adresy, uložené údaje a pod. pevne nastavené výrobcom a popísané v dokumentácii.

A existuje vlastná konfigurácia. Tie. na zariadení nie sú žiadne pevné adresy pre registre. Užívateľ môže konfigurovať Modbusová mapa spôsobom, ktorý potrebuje (napríklad spojením niektorých registrov do súvislého sledu adries, aby ich bolo možné prečítať jedným príkazom).

pevný príklad Modbusová mapa, ktorý má zmysel používať pre vaše zariadenia, môže vyzerať ako v tabuľke nižšie.

Adresa Popis Prístup Predvolená hodnota Dostupné hodnoty
40001 kód produktu Čítanie 1 1
40002 Príkazový register na zapisovanie príkazov Nahrávanie 0 - reset zariadenia
1 - Odomknite kartu uSD na nahrávanie
2 - Zablokujte kartu uSD na nahrávanie
3 - Uložte konfiguráciu na kartu uSD
40003 Doba chodu v sekundách
juniorské slovo
Čítanie 0 0..0xFFFF
40004 Doba chodu v sekundách
staršie slovo
Čítanie 0 0..0xFFFF
40005 Systémová chyba Čítaj píš 0 Chybové kódy nájdete v prílohe.
Napíšte 0, aby ste odstránili chybu a zhasli LED ERROR

Čo Modbus nedokáže

Modbus veľmi jednoduchý protokol, takže nepodporuje všetko, čo sa môže vyžadovať.

Modbus nepodporuje správy (udalosti). Tie. koncové zariadenie nemôže poslať správu nadriadenému. Koncové zariadenie môže vyzvať iba master.

Modbus nepodporuje čítanie historických údajov (nahromadených za určité časové obdobie). Aj keď toto obmedzenie sa dá ľahko obísť vytvorením príkazových registrov, registrov adries a preťažených registrov. O tom bude reč v jednom z nasledujúcich článkov.

Štandardné Modbus nemôže ukladať zložité štruktúrované dáta (aspoň to nie je také ľahké implementovať).

okrem toho Modbus nepodporuje autentifikáciu a šifrovanie. To znamená, že všetka komunikácia prebieha v nechránenom režime. Aj keď s určitou túžbou môžete implementovať určité zdanie identifikácie Modbus TCP vo väčšine prípadov to nie je možné. Existuje niekoľko možností, ako chrániť údaje pred neoprávneným prístupom a modifikáciou, ale nie sú príliš spoľahlivé (aj keď sa dajú použiť). Opíšem ich v ďalších článkoch.

A zdá sa, že toto všetko sú jasné nevýhody tohto protokolu. Inak je veľmi jednoduchý a je výborný pre jednoduché monitorovacie systémy, ktoré potrebujú sledovať niektoré indikátory systému a poskytovať k nim prístup cez čítacie registre.

V ďalšom článku sa pozrieme na všetky hlavné funkcie, ktoré protokol podporuje. Modbus.

Modbus je otvorený sériový komunikačný protokol. Navrhnutý v roku 1979 na použitie so zariadeniami s programovateľným logickým radičom (PLC) je teraz široko používaný na pripojenie mnohých typov priemyselných elektronických zariadení pripojených k rôznym typom sietí.

Najpoužívanejší protokol v priemyselnej automatizácii (s výnimkou miestnych podnikov). Modbus je veľmi populárny. Ide o pomerne jednoduché a ľahko použiteľné zariadenie so štandardnou sériovou komunikáciou. V sieti Modbus sa každé zariadenie pozerá do siete ako súbor cievok (bitov) a registrov. Master číta a zapisuje tieto cievky a registre pomocou veľmi jednoduchej a stručnej inštrukčnej sady. Komunikácia prebieha súčasne iba jedným smerom.

Implementácia protokolu Modbus zavedeného v praxi je veľmi krátka. Hoci existuje dvadsať základných príkazov, v skutočnosti je implementovaných len niekoľko z nich. Najbežnejšie príkazy sú read coils, write coils, read register, set registers. Malý súbor príkazov je ďalším dôvodom popularity protokolu.

Modbus - Extended Application Protocol

Prevodník protokolov je široko používaný z niekoľkých dôvodov:

  • Modbus je protokol s otvoreným zdrojom. To znamená, že ho možno zahrnúť do širokej škály typov zariadení od akéhokoľvek dodávateľa hardvéru.
  • Používa jednoduchú štruktúru správy, vďaka čomu je jej nasadenie menej náročné. Implementácia môže trvať len niekoľko dní. Ide o jasnú konkurenčnú výhodu oproti iným protokolom, ktorých naučenie a nasadenie môže trvať mesiace.
  • Podporuje sériové alebo ethernetové pripojenie.
  • Používa sa s dvoma typmi sériových pripojení: RS-232 a RS-485. Niektoré verzie protokolu Modbus tcp môžu byť odoslané aj cez Ethernet alebo TCP/IP. Tieto správy Modbus sú zabalené ako 1-bitové alebo 16-bitové pakety slov.

Modbus nie je súčasťou fyzickej vrstvy v sieti. Komunikácia sa prenáša cez fyzické vrstvy, čo umožňuje jej použitie v mnohých rôznych typoch sietí. Táto vlastnosť nefyzickej vrstvy robí z Modbusu aplikačný protokol.

Komunikačný protokol Modbus je bežný spôsob zhromažďovania údajov z rôznych zdrojov na prezeranie operácií, archiváciu a riešenie problémov z centrálneho vzdialeného miesta. Je široko používaná a ide o pomerne jednoduchú technológiu. V závislosti od aplikácie môže mať novší protokol viac výhod.

Počítač je zvyčajne nakonfigurovaný tak, aby spúšťal programy ako Wonderware, Intellution alebo LabVIEW na jednom mieste a zbieral údaje z rôznych procesov v rámci podniku. Ďalšou aplikáciou je nastavenie vzdialených procesných regulátorov (PLC, Allen-Bradley, Siemens, PLCDirect a iné). Reagovať na rôzne úrovne alebo režimy, ktoré sú prenášané zo zariadenia.

Dve možnosti protokolu

Existujú dve možnosti protokolu, ktoré prechádzajú sériovým pripojením. Jedným z nich je protokol Modbus RTU. Popis tohto variantu: Je kompaktnejší, využíva binárny vzťah. V tomto formáte je prenos dát vždy sprevádzaný kontrolným súčtom cyklickej redundancie, ktorý sa používa na detekciu problémov s prenosom.

Druhou možnosťou je Modbus ASCII. Táto verzia je podrobnejšia a používa hexadecimálne kódovanie ASCII, ktoré môžu čítať operátori. Modbus ASCII je menej bezpečný protokol. Keďže je menej efektívny ako Modbus RTU, operátori by mali používať iba ASCII na prenos údajov do zariadení, ktoré nepodporujú formát RTU. ASCII môže byť užitočné aj vtedy, ak nie je možné správne použiť správu RTU.

Protokol Modbus pre figuríny

Modbus je sériový komunikačný protokol používaný na prenos informácií cez sériové linky medzi elektronickými zariadeniami. Ten, ktorý požaduje informácie, sa nazýva master a informácie o dodávke zariadení sa nazývajú slave. V štandardnej sieti Modbus je jeden Master a až 247 Slave, každý s jedinečnou adresou Slave od 1 do 247. Master môže tiež zapisovať informácie do Slave.

Načo sa to používa?

Modbus je otvorený protokol. To znamená, že výrobcovia ho môžu bezplatne zabudovať do svojich zariadení. Stal sa priemyselným štandardným komunikačným protokolom a v súčasnosti je najbežnejším prostriedkom na pripojenie priemyselných elektronických zariadení. Je široko používaný mnohými výrobcami v mnohých priemyselných odvetviach.

Modbus sa zvyčajne používa na odosielanie signálov z prístrojov a ovládacích prvkov späť do hlavného ovládača alebo systému zberu údajov, ako je systém, ktorý meria teplotu a vlhkosť a výsledky hlási do počítača. Modbus sa často používa na pripojenie riadiaceho počítača vzdialenej koncovej jednotky (RTU) v systémoch dohľadu a zberu údajov (SCADA). Verzie protokolu Modbus existujú pre sériové linky (RTU a ASCII) a pre Ethernet (TCP).

Ako to funguje?

Modbus sa prenáša cez sériové linky medzi zariadeniami. Najjednoduchším nastavením by bol jeden sériový kábel spájajúci sériové porty na dvoch zariadeniach: Master a Slave.

Dáta sa odosielajú ako séria jednotiek a núl nazývaných bity. Každý bit sa prenáša ako napätie, nuly sú kladné a jednotky sú záporné napätia. Bity sa odosielajú veľmi rýchlo. Typická prenosová rýchlosť je 9600 baudov (bitov za sekundu).

Master/slave protokol

Pri popise protokolu Modbus RTU prebieha komunikácia medzi centralizovaným hlavným zariadením, 247 pripojenými elektronickými zariadeniami v rovnakej sieti. Návrh sa bežne označuje ako protokol master/slave, pretože systém Master požaduje informácie od pripojených zariadení, ktoré sa označujú ako „slave“. Slave posielajú informácie nadriadenému iba ako odpoveď na tieto požiadavky, nefungujú autonómne. Master môže tiež zapisovať informácie do slave zariadení, ale slave zariadenia nemôžu zapisovať informácie do master.

Keď podriadené zariadenie odošle správu Modbus, začne vytvárať správu s jedinečným identifikátorom adresy. Toto je číslo medzi 1 a 247, ktoré umožňuje sprievodcovi určiť, ktoré konkrétne zariadenie zodpovedá požadovaným informáciám.

Komunikácie a zariadenia

Každému zariadeniu určenému na komunikáciu pomocou Modbus je priradená jedinečná adresa. V sériových sieťach môže príkaz spustiť iba uzol označený ako hlavný. Na Ethernete môže akékoľvek zariadenie odoslať príkaz Modbus, hoci zvyčajne to robí iba jeden master. Príkaz obsahuje adresu zariadenia, pre ktoré je určený (od 1 do 247). Všetky príkazy obsahujú informácie o kontrolnom súčte, ktoré umožňujú prijímaču zistiť chyby prenosu. Základné príkazy Modbus oznamujú RTU, aby zmenila hodnotu v jednom zo svojich registrov, ovládala alebo čítala I/O port, prikázala zariadeniu poslať späť jednu alebo viacero hodnôt obsiahnutých v jeho registroch.

Existuje veľa modemov a brán, ktoré podporujú Modbus, pretože je to veľmi jednoduchý protokol a často sa kopíruje. Niektoré z nich boli navrhnuté špeciálne pre neho. Rôzne implementácie využívajú káblové, bezdrôtové, napr. ISM, a dokonca službu krátkych správ (SMS) a všeobecnú paketovú rádiovú službu (GPRS). Typické problémy, s ktorými sa dizajnéri musia vysporiadať, zahŕňajú problémy s vysokou latenciou a časom.

Prehľad typov registrov Modbus

Typy registrov, na ktoré odkazujú zariadenia, zahŕňajú:

Cievka (diskrétny výstup); . diskrétny vstup; . vstupný register; . drží registráciu.

Funkčné kódy

  • Kódy všeobecných funkcií – 1 až 127, s výnimkou vlastných kódov overených komunitou Modbus, sú verejne zdokumentované a zaručené, že sú jedinečné.
  • Kódy užívateľských funkcií - sú v dvoch rozsahoch od 65 do 72, od 100 do 110.
  • Vyhradené kódy funkcií – používané niektorými spoločnosťami pre staršie produkty, nie sú dostupné na všeobecné použitie.

Výhody

Niektoré výhody používania protokolu Modbus:

  • Ak je ovládač už nainštalovaný a používateľ je oboznámený so zásuvkami Ethernet a TCP/IP, ovládač môže fungovať a komunikovať s počítačom v priebehu niekoľkých hodín. Náklady na vývoj sa považujú za nízke. Vyžaduje minimálny počet zariadení. Ovládač je kompatibilný s akýmkoľvek operačným systémom.
  • Nie sú potrebné žiadne „exotické“ čipsety, takže systém dokáže na komunikáciu s novo implementovaným zariadením využiť štandardné ethernetové PC karty. S klesajúcimi cenami Ethernetu klesajú aj náklady na hardvér. Používatelia nie sú viazaní na jedného poskytovateľa služieb na podporu, ale môžu využiť aktuálny vývoj.
  • Špecifikácia je k dispozícii na stiahnutie zadarmo, na používanie protokolov Modbus nie sú potrebné žiadne ďalšie licenčné poplatky.
  • Interoperabilita medzi zariadeniami od rôznych výrobcov a kompatibilita s nainštalovanou základňou kompatibilných zariadení.

Konvertory protokolu Modbus sú drahé. Cena priemyselných brán je 1000 dolárov.

Obmedzenia

Keďže Modbus bol vyvinutý koncom 70-tych rokov 20. storočia na komunikáciu, počet dátových typov bol obmedzený na tie, ktorým v tom čase PLC rozumeli. Objekty BLOB nie sú podporované.

Neexistuje štandardný spôsob, ako by uzol mohol nájsť popis dátového objektu, napríklad určiť, či hodnota registra predstavuje hodnotu teploty medzi 30 a 175 stupňami.

Pretože Modbus je protokol master/slave, neexistuje spôsob, ako by zariadenie mohlo „nahlásiť výnimku“ (iné ako Ethernet TCP/IP nazývané open-mbus). Hlavný uzol musí pravidelne prijímať údaje z podriadených zariadení, ako aj hľadať zmeny v údajoch. To spôsobuje tlak na šírku pásma, čím sa zvyšuje čas pripojenia k sieti v aplikáciách, kde môže byť šírka pásma drahá, ako sú napríklad spojenia s nízkou rýchlosťou prenosu dát.

Modbus je obmedzený na adresovanie 254 zariadení na jednom dátovom spoji, čo obmedzuje počet zariadení, ktoré môžu byť pripojené k hlavnej stanici (Ethernet TCP/IP je výnimkou). Prenosy musia byť nepretržité, čo obmedzuje typy zariadení na vzdialenú komunikáciu na tie, ktoré dokážu ukladať údaje do vyrovnávacej pamäte, aby sa predišlo medzerám v prenose. Samotný protokol Modbus neposkytuje ochranu pred neoprávnenými príkazmi alebo odpočúvaním údajov. Je dôležité pochopiť, že v procese prenosu informácií sa vyskytujú logické chyby, ako aj tie, ktoré sú spojené so skreslením počas výmeny.

Modbus- komunikačný protokol založený na architektúre master-slave. Na prenos dát využíva rozhrania RS-485, RS-422, RS-232, ako aj siete Ethernet TCP/IP (protokol Modbus TCP).

Správa Modbus RTU pozostáva z adresy zariadenia SlaveID, kódu funkcie, špeciálnych údajov v závislosti od kódu funkcie a kontrolného súčtu CRC.

Ak zahodíte adresu SlaveID a kontrolný súčet CRC, získate PDU, dátovú jednotku protokolu.

SlaveID je adresa zariadenia, môže mať hodnotu od 0 do 247, adresy od 248 do 255 sú rezervované.

Údaje v module sú uložené v 4 tabuľkách.

Dve tabuľky sú len na čítanie a dve sú na čítanie a zápis.

Každá tabuľka obsahuje 9999 hodnôt.

Registračné čísloAdresa registra HEXTypnázovTyp
1-9999 0000 až 270EČítaj píšDiskrétne výstupné cievkyDO
10001-19999 0000 až 270EČítanieDiskrétne vstupné kontaktyDI
30001-39999 0000 až 270EČítanieAnalógové vstupné registreAI
40001-49999 0000 až 270EČítaj píšAnalógové výstupné registreAO

Správa Modbus používa adresu registra.

Napríklad, prvý AO Holding Register, má miestnosť 40001 ale jeho adresu rovná sa 0000.

Rozdiel medzi týmito dvoma hodnotami je ofsetový posun.

Každá tabuľka má svoj vlastný offset: 1, 10001, 30001 a 40001.

Nižšie je uvedený príklad požiadavky Modbus RTU na získanie hodnoty analógového výstupu AO (holding registers) z registrov #40108 až 40110 s adresou zariadenia 17.

11 03 006B 0003 7687

Ako odpoveď od zariadenia Modbus RTU Slave dostaneme:

11 03 06 AE41 5652 4340 49AD

11 Adresa zariadenia(17 = 11 hex)ID otroka
03 Kód funkcie funkčný kód
06 Počet bajtov ďalej(nasleduje 6 bajtov)Počet bajtov
AE (AE hex)Hodnota registra Hi (AO0)
41 (41 hex)Hodnota registra Lo (AO0)
56 Hodnota najvýznamnejšieho bitu registra(56 hex)Hodnota registra Hi (AO1)
52 Hodnota najmenej významnej číslice registra(52 hex)Hodnota registra Lo (AO1)
43 Hodnota najvýznamnejšieho bitu registra(43 hex)Hodnota registra Hi (AO2)
40 Hodnota najmenej významnej číslice registra(40 hex)Hodnota registra Lo (AO2)
49 Kontrolná suma Hodnota CRC Lo
AD Kontrolná suma Hodnota CRC Hi

Analógový výstupný register AO0 je nastavený na AE 41 HEX alebo 44609 decimálne.

Analógový výstupný register AO1 je 56 52 HEX alebo 22098 desiatkových.

Analógový výstupný register AO2 je 43 40 HEX alebo 17216 desiatkových.

Hodnota AE 41 HEX je 16 bitov 1010 1110 0100 0001, môže nadobudnúť inú hodnotu v závislosti od typu zobrazenia.

Hodnota registra 40108 v kombinácii s registrom 40109 dáva 32 bitovú hodnotu.

Príklad prezentácie.

Typ zobrazeniaRozsah hodnôtPríklad v HEXBude v desiatkovom tvare
16-bitové celé číslo bez znamienka0 až 65535AE4144,609
16-bitové celé číslo so znamienkom-32768 až 32767AE41-20,927
dvojznakový reťazec ASCII2 znakyAE41® A
diskrétna hodnota zapnutia/vypnutia0 a 10001 0001
32-bitové celé číslo bez znamienka0 až 4,294,967,295AE41 56522,923,517,522
32-bitové celé číslo so znamienkom-2 147 483 648 až 2 147 483 647AE41 5652-1,371,449,774
32-bitové jedno presné číslo IEEE s pohyblivou rádovou čiarkou1,2×10−38 až 3,4×10+38AE41 5652-4,395978 E-11
štvorznakový reťazec ASCII4 znakyAE41 5652® A V R

Aké sú príkazy Modbus RTU?

Tu je tabuľka s kódmi pre čítanie a zápis registrov Modbus RTU.

Kód funkcieČo robí funkciaTyp hodnotyTyp prístupu
01 (0x01)Čítanie DOPrečítajte si stav cievkyDiskrétneČítanie
02 (0x02)Čítanie DIPrečítajte si stav vstupuDiskrétneČítanie
03 (0x03)Čítanie AOPrečítajte si obchodné registre16 bitČítanie
04 (0x04)AI čítanieČítanie vstupných registrov16 bitČítanie
05 (0x05)Nahrávanie jedného DOForce Single CoilDiskrétneNahrávanie
06 (0x06)Single AO záznamPrednastavený jeden register16 bitNahrávanie
15 (0x0F)Nahrávanie viacerých DOForce Multiple CoilsDiskrétneNahrávanie
16 (0x10)Nahrávanie viacerých AOPrednastavené viaceré registre16 bitNahrávanie

Ako poslať príkaz Modbus RTU na čítanie digitálneho výstupu? Príkaz 0x01

Tento príkaz sa používa na čítanie hodnôt digitálnych výstupov DO.

Požiadavka PDU špecifikuje počiatočnú adresu prvého registra DO a následný počet požadovaných hodnôt DO. V PDU sú hodnoty DO adresované od nuly.

Hodnoty DO v odpovedi sú v jednom byte a zodpovedajú hodnote bitov.

Hodnoty bitov sú definované ako 1 = ZAPNUTÉ a 0 = VYPNUTÉ.

Najmenej významný bit prvého dátového bajtu obsahuje hodnotu DO, ktorej adresa bola uvedená v požiadavke. Zvyšné hodnoty DO nasledujú vo vzostupnom poradí po najvyššiu bajtovú hodnotu. Tie. sprava doľava.

Ak bolo požadovaných menej ako osem hodnôt DO, zostávajúce bity v odpovedi budú vyplnené nulami (od najmenej významného bajtu po najvýznamnejší bajt). Pole Počet bajtov Počet bajtov ďalej označuje počet úplných bajtov údajov v odpovedi.

Príklad požiadavky DO od 20 do 56 pre adresu SlaveID zariadenia 17. Adresa prvého registra bude 0013 hex = 19, pretože účet je vedený od adresy 0 (0014 hex = 20, -1 nulový posun = dostaneme 0013 hex = 19).

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
01 Kód funkcie01 Kód funkcie
00 05 Počet bajtov ďalej
13 CDHodnota registra DO 27-20 (1100 1101)
00 Počet registrov Hi bajtov6BHodnota registra DO 35-28 (0110 1011)
25 Počet registrov Lo bajtovB2Hodnota registra DO 43-36 (1011 0010)
0EKontrolný súčet CRC0EHodnota registra DO 51-44 (0000 1110)
84 Kontrolný súčet CRC1BHodnota registra DO 56-52 (0001 1011)
45 Kontrolný súčet CRC
E6Kontrolný súčet CRC

Stavy výstupov DO 27-20 sú zobrazené ako hodnoty hex-bajtu CD alebo binárne 1100 1101.

V registri DO 56-52 bolo vyžiadaných 5 bitov napravo a zvyšné bity sú vyplnené nulami na celý bajt ( 000 1 1011).

Diskrétne výstupné moduly: M-7065 , ioLogik R1214 , ADAM-4056S

Ako poslať príkaz Modbus RTU na čítanie digitálneho vstupu? Príkaz 0x02

Tento príkaz sa používa na čítanie hodnôt digitálnych vstupov DI.

Príklad požiadavky DI z registrov #10197 až 10218 na adresu SlaveID zariadenia 17. Adresa prvého registra bude 00C4 hex = 196, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
02 Kód funkcie02 Kód funkcie
00 Adresa prvého registra Ahoj bajty03 Počet bajtov ďalej
C4Adresa prvého registra Lo bajtovACHodnota registra DI 10204-10197 (1010 1100)
00 Počet registrov Hi bajtovD.B.Hodnota registra DI 10212-10205 (1101 1011)
16 Počet registrov Lo bajtov35 Hodnota registra DI 10218-10213 (0011 0101)
BAKontrolný súčet CRC20 Kontrolný súčet CRC
A9Kontrolný súčet CRC18 Kontrolný súčet CRC

Diskrétne vstupné moduly: M-7053 , ioLogik R1210 , ADAM-4051

Ako poslať príkaz Modbus RTU na čítanie analógového výstupu? Príkaz 0x03

Tento príkaz sa používa na čítanie hodnôt analógových výstupov AO.

Príklad požiadavky AO z registrov #40108 až 40110 na adresu SlaveID zariadenia 17. Adresa prvého registra bude 006B hex = 107, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
03 Kód funkcie03 Kód funkcie
00 Adresa prvého registra Ahoj bajty06 Počet bajtov ďalej
6BAdresa prvého registra Lo bajtovAEAhoj hodnota registra #40108
00 Počet registrov Hi bajtov41 Hodnota registra Lo #40108
03 Počet registrov Lo bajtov56 Ahoj hodnota registra #40109
76 Kontrolný súčet CRC52 Hodnota registra Lo #40109
87 Kontrolný súčet CRC43 Ahoj hodnota registra #40110
40 Hodnota registra Lo #40110
49 Kontrolný súčet CRC
ADKontrolný súčet CRC

Analógové výstupné moduly: M-7024 , ioLogik R1241 , ADAM-4024

Ako poslať príkaz Modbus RTU na čítanie analógového vstupu? Príkaz 0x04

Tento príkaz sa používa na čítanie hodnôt analógových vstupov AI.

Príklad požiadavky AI z registra #30009 na adresu SlaveID zariadenia 17. Adresa prvého registra bude 0008 hex = 8, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
04 Kód funkcie04 Kód funkcie
00 Adresa prvého registra Ahoj bajty02 Počet bajtov ďalej
08 Adresa prvého registra Lo bajtov00 Ahoj hodnota registra #30009
00 Počet registrov Hi bajtov0AHodnota registra Lo #30009
01 Počet registrov Lo bajtovF8Kontrolný súčet CRC
B2Kontrolný súčet CRCF4Kontrolný súčet CRC
98 Kontrolný súčet CRC

Moduly s analógovým vstupom: M-7017 , ioLogik R1240 , ADAM-4017+

Ako poslať príkaz Modbus RTU na zápis digitálneho výstupu? Príkaz 0x05

Tento príkaz sa používa na zápis jednej hodnoty digitálneho výstupu DO.

Hodnota FF 00 hex nastaví výstup na ON.

Hodnota 00 00 hex nastaví výstup na OFF.

Všetky ostatné hodnoty sú neplatné a neovplyvnia výstupnú hodnotu.

Normálnou odpoveďou na takúto požiadavku je echo (opakovanie požiadavky v odpovedi), vrátené po zmene stavu DO.

Príklad zápisu do DO s registrom #173 pre adresu SlaveID zariadenia 17. Adresa registra bude 00AC hex = 172, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
05 Kód funkcie05 Kód funkcie
00 Adresa prvého registra Ahoj bajty00 Adresa prvého registra Ahoj bajty
ACAdresa prvého registra Lo bajtovACAdresa prvého registra Lo bajtov
FFAhoj hodnota bajtuFFAhoj hodnota bajtu
00 Hodnota Lo bajtov00 Hodnota Lo bajtov
4EKontrolný súčet CRC4EKontrolný súčet CRC
8BKontrolný súčet CRC8BKontrolný súčet CRC

Stav výstupu DO173 sa zmenil z vypnutého OFF na zapnutý ON.

Diskrétne výstupné moduly: M-7053 , ioLogik R1210 , ADAM-4051

Ako poslať príkaz Modbus RTU na zápis analógového výstupu? Príkaz 0x06

Tento príkaz sa používa na zápis jednej hodnoty analógového výstupu AO.

Príklad zápisu do AO s registrom #40002 pre adresu SlaveID zariadenia 17. Adresa prvého registra bude 0001 hex = 1, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
06 Kód funkcie06 Kód funkcie
00 Adresa prvého registra Ahoj bajty00 Adresa prvého registra Ahoj bajty
01 Adresa prvého registra Lo bajtov01 Adresa prvého registra Lo bajtov
00 Ahoj hodnota bajtu00 Ahoj hodnota bajtu
03 Hodnota Lo bajtov03 Hodnota Lo bajtov
9AKontrolný súčet CRC9AKontrolný súčet CRC
9BKontrolný súčet CRC9BKontrolný súčet CRC

Analógové výstupné moduly: M-7024 , ioLogik R1241 , ADAM-4024

Ako poslať príkaz Modbus RTU na zápis viacerých digitálnych výstupov? Príkaz 0x0F

Tento príkaz sa používa na zápis viacerých hodnôt DO.

Príklad zápisu do niekoľkých DO s registrami #20 až #29 pre adresu SlaveID zariadenia 17. Adresa registra bude 0013 hex = 19, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
0FKód funkcie0FKód funkcie
00 Adresa prvého registra Ahoj bajty00 Adresa prvého registra Ahoj bajty
13 Adresa prvého registra Lo bajtov13 Adresa prvého registra Lo bajtov
00 Počet registrov Hi bajtov00
0APočet registrov Lo bajtov0A
02 Počet bajtov ďalej26 Kontrolný súčet CRC
CDHodnota bajtu DO 27-20 (1100 1101)99 Kontrolný súčet CRC
01 Hodnota bajtu DO 29-28 (0000 0001)
bfKontrolný súčet CRC
0BKontrolný súčet CRC

Odpoveď vráti počet zapísaných registrov.

Diskrétne výstupné moduly: M-7053 , ioLogik R1210 , ADAM-4051

Ako poslať príkaz Modbus RTU na zápis viacerých analógových výstupov? Príkaz 0x10

Tento príkaz sa používa na zápis viacerých hodnôt analógového výstupu AO.

Príklad zápisu do viacerých AO s registrami #40002 a #40003 pre adresu SlaveID zariadenia 17. Adresa prvého registra bude 0001 hex = 1, pretože účet je vedený z adresy 0.

ByteŽiadosťByteOdpoveď
(hex.)Názov poľa(hex.)Názov poľa
11 Adresa zariadenia11 Adresa zariadenia
10 Kód funkcie10 Kód funkcie
00 Adresa prvého registra Ahoj bajty00 Adresa prvého registra Ahoj bajty
01 Adresa prvého registra Lo bajtov01 Adresa prvého registra Lo bajtov
00 Počet registrov Hi bajtov00 Počet zaznamenaných reg. Ahoj byte
02 Počet registrov Lo bajtov02 Počet zaznamenaných reg. lo bajtov
04 Počet bajtov ďalej12 Kontrolný súčet CRC
00 Ahoj hodnota 4000298 Kontrolný súčet CRC
0ANízka hodnota 40002
01 Ahoj hodnota 40003
02 Nízka hodnota 40003
C6Kontrolný súčet CRC
F0Kontrolný súčet CRC