Protokol MODBUS Client

Podporované typy a verzie zariadení 
Konfigurácia komunikačnej linky
Parametre protokolu linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Poznámka k zariadeniu FloBoss 103
Poznámka k regulátorom Honeywell
Literatúra
Zmeny a úpravy
Revízie dokumentu

Podporované typy a verzie zariadení


Protokol realizuje klientsku (master) komunikáciu s ľubovoľnými zariadeniami podporujúcimi štandard MODBUS RTU a MODBUS ASCII vo verziách sériovej komunikácie a štandard MODBUS TCP alebo variantu MODBUS over TCP v prípade TCP/IP komunikácie. Navyše podporuje rozšírenia:

Konfigurácia komunikačnej linky


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 linky:

Tab. č. 1

ParameterPopisJednotka / rozmerNáhradná hodnota

Immediate Disconnect

Parameter je implementovaný iba pre kategórie linky TCP/IP-TCP a TCP/IP-TCP Redundant. Parameter aktivuje rozpájanie sa TCP spojenia po vykonaní každého čítacieho cyklu, prípadne po zápise hodnoty. Parameter bol implementovaný kvôli problémom so stabilitou spojenia na mobilných GPRS sieťach.

YES/NONO

Tcp No Delay

Nastavenie "Tcp No Delay"=True parametra spôsobí nastavenie nízkoúrovňového parametra socketov TCP_NODELAY, čím sa vypne prednastavené spájanie paketov.
Parameter je implementovaný iba pre kategórie linky TCP/IP-TCP a TCP/IP-TCP Redundant.
YES/NONO

Konfigurácia stanice



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. č. 1

ParameterPopisJednotkaNáhradná hodnota
Retry Count
Maximálny počet opakovaní výzvy. Ak po poslaní tohto počtu výziev nedôjde odpoveď, stanica prechádza do stavu komunikačnej chyby.s2
Retry Timeout
Timeout pred opakovaním výzvy, pokiaľ neprišla odpoveď.s0.1
Wait First Timeout
Timeout medzi poslaním výzvy a prvým čítaním odpovede.s0.1
Wait Timeout
Timeout medzi čítaniami odpovede.s0.1
Max. Wait Retry
Maximálny počet opakovaní čítania odpovede.-20
Start Silent Interval
"Start silent interval" pred štartom vysielania v RTU móde.ms50

Stop Silent Interval

"Stop silent interval" po ukončení vysielania v RTU móde.ms50

Little Endian Mode

Poradie bajtov v Little-endian móde pre 4-bajtové premenné. Jednotlivé možnosti udávajú, do ktorých bajtov (1-najnižší, 4-najvyšší) pôjdu jednotlivé bajty z komunikácie:

  • 2143 - najskôr je prijaté nižšie slovo, potom vyššie slovo  (vyšší bajt v rámci slova vždy ako prvý)
  • 3412 - najskôr je prijaté vyššie slovo, potom nižšie slovo  (nižšší bajt v rámci slova vždy ako prvý)
  • 1234 - bajty sú prijaté od najnižšieho po najvyšší (opak Big-endianu)
-2143
Byte mode
Špeciálny bajtový mód prenosu, v ktorom majú hodnoty registrov dĺžku 1 bajt a nie 2 byty ako je definované v špecifikácii protokolu MODBUS.YES/NONO
Variable mode
Špeciálny variabilný mód prenosu, v ktorom majú hodnoty registrov variabilnú dĺžku. Podľa toho, či je Variable mode nastavený na hodnotu little-endian alebo big-endian sa aplikuje príslušné dátové kódovanie t.j. tzv. endianness (little-endian=prvý je odosielaný menej významný byte, big endian=prvý je odosielaný významnejší byte). Hodnota OFF vypína variabilný mód.
Poznámka 1: Variabilný a bajtový mód sú nezlučiteľné a je dovolené zapnutie iba jedného z nich.
Poznámka 2: Zariadenie Emerson FloBoss 103: textové reťazce a 6-bajtová časová značka sa posielajú vždy od najnižšieho bajtu.
Poznámka 3: Variabilný mód je implementovaný iba pre Protocol Mode=RTU.
Poznámka 4
: Štandardne podľa implicitných hodnôt parametrov Byte mod=NO a Variable mode=OFF, teda podľa špecifikácie protokolu MODBUS, sa automaticky uplatňuje kódovanie dát big-endian.
OFF
little-endian
big-endian
OFF
Full debug
Výpis dodatočných ladiacich informácií o komunikácii na linke.YES/NONO
Protocol mode
Mód protokolu: RTU alebo ASCII. Nastavenie sa aplikuje iba v prípade sériovej komunikácie.

"RTU "

"ASCII"

"RTU"
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.
Po zmene nastavenia tohto parametra reštartujte príslušný komunikačný proces.

"MODBUS PDU"
"MODBUS data Model"
"MODBUS PDU"
TCP/IP protocol variant
Výber varianty protokolu v prípade TCP/IP komunikácie:
"MODBUS TCP" je variant komunikácie bez zabezpečenia kontrolnou sumou. Zabezpečenie prenosu vykonávajú spodné vrstvy TCP protokolu.
"MODBUS over TCP"
je variant, v ktorej je ako payload prenosu použitý mód protokolu MODBUS RTU aj s kontrolnou sumou.
"MODBUS TCP"
"MODBUS over TCP"
"MODBUS TCP"
Max. Registers
Maximálny počet registrov žiadaný v jednej výzve.-100
Max. Bytes
Maximálny počet bytov žiadaný v jednej výzve (iba v "Byte mode").-100
Skip Unconfigured
Nikdy nežiadaj hodnoty z adries, ktoré nie sú nakonfigurované.
Popis a príklad:
Štandardne sa posielajú výzvy na dáta, ktoré sa obmedzujú parametrom protokolu "Max. Registers" alebo "Max. Bytes". Ak sú nakonfigurované napr. merané body s adresami "Holding Registers" 1, 2 a 5, odosiela sa jedna výzva požadujúca 5 registrov od adresy 1 aj, keď merané body s adresami 3 a 4 nie sú nakonfigurované - pretože je efektívnejšie a rýchlejšie získať požadované údaje jednou výzvou ako dvomi aj za cenu čítania nepotrebných dát. V prípade nastavenia parametra "Skip Unconfigured" na YES sa odošlú dve výzvy, prvá žiadajúca dva registre od adresy 1 a druhá žiadajúca jeden register na adrese 5.
YES/NONO
Check Receive Length
Ak je parameter nastavený na YES, tak pri prijatí odpovede na čítanie dát sa kontroluje, či dĺžka dát v odpovedi zodpovedá množstvu registrov v požiadavke na čítanie:
  • ak je zapnutý bajtový mód (Byte mode=YES), tak dĺžka prijatých dát sa musí rovnať množstvu registrov
  • ak nie je zapnutý bajtový ani variabilný mód, tak dĺžka prijatých dát sa musí rovnať dvojnásobku množstva registrov
  • ak je zapnutý variabilný mód (Variable mode=little-endian alebo big-endian), kontrola zatiaľ nie je implementovaná
Kontrola má zmysel na linkách s vysokými (a variabilnými) latenciami - napr. GPRS siete - na detekciu a vyhnutie sa situácii, keď dôjde k opakovaniu výzvy (#1) v dôsledku timeoutu a následne k príjmu odpovede na opakovanú výzvu, pričom táto je už považovaná za odpoveď na ďalšiu výzvu (#2). To spôsobí, že merané body adresované výzvou #2 získajú chybné hodnoty.
YES/NONO

Konfigurácia meraných bodov


Možné typy hodnôt bodov pre nevariabilný mód: Ai, Ao, Di, Do, Ci, Co, TxtI.

Možné typy hodnôt bodov pre variabilný mód: Ai,Ao,Di,Do,Ci,Cout,TxtI,TxtO,TiA.


Adresa meraného bodu:

V protokole MODBUS je základný adresný priestor rozdelený na objekty typov:

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 (tzv. MODBUS PDU addressing model). Niektoré zariadenia pracujú s adresáciou od 1 (tzv. MODBUS data Model), v takom prípade treba pri konfigurácii meraných bodov v systéme D2000 odčítať v adrese -1 alebo zmeniť nastavenie parametra protokolu Addressing model na MODBUS data Model.

Adresa meraného bodu môže mať základný alebo rozšírený tvar (pre variabilný mód).

Základný tvar adresy meraného bodu:
Tvar adresy je [I|U|Uu|Ul|f|F|L|Ll|S|Sl|B|X|sn.|an.|An.][d|D][b][s]RdFn[-WrFn[d]].Address[.BitNr] kde:


Poznámka ku poradiu prenášaných bytov a registrov

1. Protokol MODBUS používa štandardne tzv. big-endian, čiže významnejší byte registra (MSB) je prenášaný ako prvý. Príklady:

Prijaté byty registra MSB-LSBTyp meraného boduHodnota
0x00 0x01I, U1
0xFF 0xFEI-2
0xFF 0xFEU65534
0x01 0x02B1
0x01 0x02X2

2. V prípade čítania hodnôt z dvoch registrov v poradí big-endian sú prijaté byty analyzované takto:

Most significant register (Adresa ADR)Least significant register (Adresa ADR+1)
MSBLSBMSBLSB

Príklady pre dvojregistrové hodnoty v big-endian poradí:

Prijaté byty registra (MSB-LSB)Prijaté byty registra + 1 (MSB-LSB)Typ meraného boduHodnota
0x00 0x000x00 0x01L, S1
0xFF 0xFF0xFF 0xFES-2
0x00 0x010x00 0x02L, S65538
0x3F 0x800x00 0x00f1.0
0xC0 0x000x00 0x00f-2.0

3. V prípade čítania hodnôt z dvoch registrov v poradí little-endian sú prijaté byty analyzované takto:

Least significant register (Adresa ADR)Most significant register (Adresa ADR+1)
MSBLSBMSBLSB

Príklady pre dvojregistrové hodnoty v little-endian poradí, ak Little Endian Mode=2143

:

Prijaté byty registra (MSB-LSB)Prijaté byty registra + 1 (MSB-LSB)Typ meraného boduHodnota
0x00 0x010x00 0x00Ll, Sl1
0xFF 0xFE0xFF 0xFFSl-2
0x00 0x020x00 0x01Ll, Sl65538
0x00 0x000x3F 0x80F1.0
0x00 0x000xC0 0x00F-2.0


Príklady konfigurácie:


Rozšírený tvar adresy meraného bodu:

Tvar adresy je [xN][I|U|F|B|C|T][b]RdFn[-WrFn].Address[.BitNr] kde:

Príklady konfigurácie sú uvedené ďalej v Poznámke k zariadeniu FloBoss 103.

Poznámka k zariadeniu FloBoss 103



Poznámka k regulátorom Honeywell


Základné parametre a aktuálne dáta týchto regulátorov nie sú štandardne čítané prostredníctvom funkcií 0x01 až 0x04. Na ich čítanie a zápis je potrebné použiť funkcie 0x14/0x15 Read / write configuration reference data. Tieto zariadenia štandardne používajú "big endian" poradie bytov. Preto pre správnu funkčnosť nie je potrebné meniť parametre, ktoré menia bytový režim a endianitu.

Príklady konfigurácie meraného bodu:

20.039 - 16-bitové číslo z adresy 39(0x27)
f20.040 - 32-bitové reálne číslo z adresy 40(0x28)

Literatúra



O protokole Modbus si môžete prečítať aj blogy


Zmeny a úpravy


-

Revízie dokumentu


Komunikačné protokoly