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.-2
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