...
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:
- Bytový mód umožňujúci pracovať so zariadeniami, ktoré vracajú hodnoty registrov ako 1 bajt (na rozdiel od MODBUS štandardu, v ktorom je hodnota registra 2-bajtová).
- Variabilný mód umožňujúci pracovať so zariadeniami, ktoré vracajú hodnoty registrov s inou veľkosťou ako sú štandardné 2 bajty. Implementovaný bol kvôli podpore prietokomera FloBoss 103 od firmy Fisher Controls International (v súčasnosti súčasť Emerson Process Management): 1-bajtové premenné, 4-bajtové unsigned/signed integery, textové reťazce dĺžky 10,12,20,40 znakov, 6-bajtová časová značka a iné.
...
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
Parameter | Popis | Jednotka / rozmer | Náhradná hodnota | ||||||
---|---|---|---|---|---|---|---|---|---|
| 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/NO | NO |
Kotva | ||||
---|---|---|---|---|
|
...
- Komunikačný protokol "Modbus Client".
- Adresa stanice je dekadické číslo zvyčajne v rozsahu 1 až 247. Adresa 0 je rezervovaná ako broadcast.
...
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
Parameter | Popis | Jednotka | Náhradná hodnota | ||||||
---|---|---|---|---|---|---|---|---|---|
| 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. | s | 2 | ||||||
| Timeout pred opakovaním výzvy, pokiaľ neprišla odpoveď. | s | 0.1 | ||||||
| Timeout medzi poslaním výzvy a prvým čítaním odpovede. | s | 0.1 | ||||||
| Timeout medzi čítaniami odpovede. | s | 0.1 | ||||||
| Maximálny počet opakovaní čítania odpovede. | - | 20 | ||||||
| "Start silent interval" pred štartom vysielania v RTU móde. | ms | 50 | ||||||
| "Stop silent interval" po ukončení vysielania v RTU móde. | ms | 50 | ||||||
| Š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/NO | NO | ||||||
| Š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 | ||||||
| Výpis dodatočných ladiacich informácií o komunikácii na linke. | YES/NO | NO | ||||||
| Mód protokolu: RTU alebo ASCII. Nastavenie sa aplikuje iba v prípade sériovej komunikácie. | "RTU " "ASCII" | "RTU" | ||||||
| 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" | ||||||
| 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" | ||||||
| Maximálny počet registrov žiadaný v jednej výzve. | - | 100 | ||||||
| Maximálny počet bytov žiadaný v jednej výzve (iba v "Byte mode"). | - | 100 | ||||||
| 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/NO | NO | ||||||
| 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:
| YES/NO | NO |
...
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).
Kotva | ||||
---|---|---|---|---|
|
Tvar adresy je [I|U|Uu|Ul|f|F|L|Ll|S|Sl|B|X|sn.|an.][d][b][s]RdFn[-WrFn[d]].Address[.BitNr] kde:
- Prvé písmeno (písmená) udáva typ meraného bodu:
- I - Integer16 (implicitná hodnota, keď nie je uvedené inak) - jeden register znamienkovo.
- U - Unsigned16 - jeden register neznamienkovo.
- Uu - Unsigned16 - jeden register neznamienkovo, pričom sa z neho berie do úvahy iba vyšší bajt (1. v poradí)
- Ul - Unsigned16 - jeden register neznamienkovo, pričom sa z neho berie do úvahy iba nižší bajt (2. v poradí)
- f - Float (4 byty = 2 registre) - čítajú sa 2 registre s adresou Address a Address+1, prenášané v big-endian poradí (viď Poznámku).
- F - Float (4 byty = 2 registre) - čítajú sa 2 registre s adresou Address a Address+1, prenášané v little-endian poradí (tzv. Modicon formát) (viď Poznámku).
- 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).
- B - Byte neznamienkovo, iba horných 8 bitov hodnoty registra.
- X - Byte neznamienkovo, iba dolných 8 bitov hodnoty registra.
- sn. - Textový string s dĺžkou n znakov, jeden register je jeden znak, číta sa n registrov s adresou Address až Address+n-1.
- an. - Textový string s dĺžkou 2*n znakov, jeden register sú dva ASCII znaky, číta sa n registrov s adresou Address až Address+n-1.
- Modifikátor d hovorí, že číslo je 8-bajtové číslo (4 za sebou idúce registre). Je použiteľný pri typoch L, Ll, S, Sl, F,f a pomocou neho je možné zadefinovať 8 bajtový integer bez znamienka/so znamienkom ako aj 8-bajtový float (varianty big endian a little endian).
Poznámka: pri použití modifikátora d, musí byť meraný bod Analógového typu (Ai), pretože celočíselný typ (Ci) v D2000 je implementovaný ako 4-bajtová premenná a mohlo by dôjsť k pretečeniu. - Modifikátor b hovorí, že číslo je BCD kódované. Je použiteľný pri meraných bodoch typu I, U, B, L, Ll.
Modifikátor s hovorí, že sa číta register so stavom premennej (Unsigned16) na adrese Address a za ním Float hodnota v big endian formáte na adrese Address+1 .. Address+2. Je použiteľný pri meraných bodoch typu f a implementovaný kvôli kalorimetru Endress+Hauser RMS621. Tabuľka uvádza hodnoty Status a prevod na D2000 príznaky.
Status register D2000 príznaky 0 : Invalid value Weak 1 : Measured value valid Valid 2 : Overflow warning
3 : Overflow error
4 : Underflow warning
5 : Underflow error
6 : Saturated steam alarm
7 : Error in differential pressure calculation
8 : Wrong medium for DP calculation
9 : Wrong value range - DP calculation inaccurate
10 : Differential pressure - general error
11 : Range overshoot (Tsat > 350 etc.) on
12 : Change in state of aggregation
26 : Differential pressure --> general error
99 : No measured value is assigned to the register in the setup of the ModBusWeak - Parameter RdFn je funkcia Modbus protokolu pre čítanie údajov. Implementované sú nasledovné funkcie:
- 1 - Read Coils: čítanie binárnych stavov.
- 2 - Read Discrete Inputs: čítanie binárnych vstupov.
- 3 - Read Holding Registers: čítanie stavových registrov (Integer16/Unsigned16 a Float32 - číta 2 za sebou nasledujúce registre).
- 4 - Read Input Registers: čítanie vstupných registrov (Integer16/Unsigned16 a Float32 - číta 2 za sebou nasledujúce registre).
- 0 - V tomto prípade nebude vykonávané čítanie hodnoty ale iba zápis, je nutné aby bola nastavená funkcia pre zápis WrFn.
- Parameter WrFn je funkcia Modbus protokolu pre zápis údajov. Implementované sú nasledovné funkcie:
- 5 - Write Single Coil: zápis binárnych stavov (implicitne pre Read Coils).
- 6 - Write Single Register: zápis stavových registrov (implicitne pre Read Holding Registers).
- 16 - Write Multiple Registers: zápis viacerých stavových registrov, táto funkcia musí byť použitá pri zápise dvojregistrových typov (ako Float, Unsigned long atď.).
Pozn: funkciu je možné použiť aj na zápis viac ako dvoch registrov naraz, pokiaľ sa použije textový string. Príklad:
ak do textového meraného bodu s adresou a3.0-16.#8A00 (t.j. textový reťazec pokrývajúci 3 registre, t.j. majúci dĺžku 6 znakov) zapíšeme reťazec '123456', tak sa zapíšu do registrov 0x8A00 až 0x8A02 hexadecimálne hodnoty 0x3132, 0x3334 a 0x3536 (ASCII kód '1' je 0x31, '2' je 0x32 atď). - 22 - Mask Write Register: zápis ovplyvňujúci iba hodnotu konkrétneho bitu BitNr stavového registra. Možné použiť iba pre hodnoty typu Do s nastaveným parametrom adresy BitNr.
- Parameter d aktivuje funkciu "delayed write". Odoslanie hodnoty sa oneskorí až do príchodu požiadavky na zápis hodnoty objektu bez tohto parametra d. Všetky naakumulované požiadavky na zápis sa následne odošlú a ak je nastavená funkcia na zápis WrFn na "Write Multiple Registers" tak sa snaží odoslať hodnoty v jednom pakete.
- Parameter Address je dvojbajtová adresa registra (0-65536), viď tiež parameter protokolu Addressing model.
Pozn: adresu je možné zadávať aj v hexadecimálnom tvare za použitia mriežky (#), napr. #50CE - Parameter BitNr je číslo bitu v slove. Pre binárne stavy a vstupy sú prípustné hodnoty 0-7, pre vyčítanie bitu zo 16-bitových stavových alebo vstupných registrov sú prípustné hodnoty sú 0-15.
...
Prijaté byty registra (MSB-LSB) | Prijaté byty registra + 1 (MSB-LSB) | Typ meraného bodu | Hodnota |
---|---|---|---|
0x00 0x01 | 0x00 0x00 | Ll, Sl | 1 |
0xFF 0xFE | 0xFF 0xFF | Sl | -2 |
0x00 0x02 | 0x00 0x01 | Ll, Sl | 65538 |
0x00 0x00 | 0x3F 0x80 | F | 1.0 |
0x00 0x00 | 0xC0 0x00 | F | -2.0 |
Príklady konfigurácie:
- 1.10 - čítanie hodnoty binárneho stavu s adresou 10 funkciou Read Coils.
- 3.1 - 16-bitové číslo znamienkové vyčítavané funkciou Read Holding Registers z adresy 1 (tiež ako I3.1).
- U3.1 - 16-bitové číslo bez znamienka vyčítavané funkciou Read Holding Registers z adresy 1.
- I3-6.1000 - 16-bitové číslo so znamienkom vyčítavané funkciou Read Holding Registers z adresy 1000 a zapisované funkciou Write Single Register (keďže táto funkcia je implicitná, adresa mohla byť aj I3.1000 alebo 3.1000).
- S3.321 - 32-bitové znamienkové číslo čítané funkciou Read Holding Registers z registrov 321 a 322.
- B1.20.0 - bit vyčítavaný funkciou Read Coils z adresy 20 ako nultý bit v bajte.
- s10.3.123 - textový string o dĺžke 10 znakov od adresy 123 čítaný funkciou Read Holding Registers.
- U0-6.456 - iba zápis 16-bitového neznamienkovej hodnoty do registra 456, zápis realizovaný funkciou Write Single Register, čítanie hodnoty registra sa nerealizuje.
...
Kotva | ||||
---|---|---|---|---|
|
Tvar adresy je [xN][I|U|F|B|C|T][b]RdFn[-WrFn].Address[.BitNr] kde:
- xN hovorí o počte bajtov, ktoré sa čítajú, resp. zapisujú. Platné hodnoty N sú 1,2,4 (v kombinácii s typmi I,U,F, 6 pre typ T a ľubovoľné číslo pre typ C).
- Písmeno udáva typ meraného bodu. Oproti štandardným I,U,F,B pribudli ďalšie dva:
- C - textový reťazec pevnej dĺžky (napr. x10.C3.1001 je 10-znakový reťazec na adrese 1001)
- T - časová značka s dĺžkou 6 bajtov (ss:mi:hh dd:mm:yy)
- Význam ostatných parametrov je zhodný s nevariabilným módom.
...
- konfiguračný softvér ROCLINK800
- default login LOI, heslo 1000
- nadviazanie spojenia s FloBoss 103: poklikať na DirectConnect (máme pripojené cez COM1, na strane FloBoss 103 pripojený k LOI-local interface)
- menu Configure->Modbus->Configuration
podľa nastavenia "Byte Order" nastaviť parameter "Variable Mode" na stanici v D2000:- ak "Least Significant Byte first", tak "Little endian"
- ak "Most Significant Byte first", tak "Big endian"
- merané body sú na strane FloBoss 103 konfigurované cez menu Configure -> Modbus -> Registers
- podporované sú nasledovné typy (v ďalšom texte n označuje 16-bitovú adresu):
- Binárny vstup:
- adresa v D2000: 1.n, napr. 1.1001, premenná typu Di/Dout
- adresa v FloBoss 103: premenná typu BIN
Funkcia: 1
Starting/ending register: n
- Binárny výstup:
- adresa v D2000: 1.n, napr. 1.1001, premenná typu Dout
- adresa v FloBoss 103: premenná typu BIN r/w
Funkcia: 1 (kvôli čítaniu)
Starting/ending register: n
Funkcia: 5 (kvôli zápisu)
Starting/ending register: n
- Unsigned Int 8 bitov vstup:
- adresa v D2000: x1.B3.n, napr. x1.B3.1003, premenná typu Ci/Co
- adresa v FloBoss 103: premenná typu UINT8
Funkcia: 3A alebo 3B
Starting/ending register: n
- Unsigned Int 8 bitov výstup:
- adresa v D2000: x1.B3.n, napr. x1.B3.1003, premenná typu Co
- adresa v FloBoss 103: premenná typu UINT8 r/w
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- Unsigned Int 16 bitov vstup:
- adresa v D2000: x2.U3.n, napr. x2.U3.1004, premenná typu Ci/Co
- adresa v FloBoss 103: premenná typu UINT16
Funkcia: 3A alebo 3B
Starting/ending register: n
- Unsigned Int 16 bitov výstup:
- adresa v D2000: x2.U3.n, napr. x2.U3.1004, premenná typu Co
- adresa v FloBoss 103: premenná typu UINT16 r/w
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- Signed Int 16 bitov vstup:
- adresa v D2000: x2.I3.n, napr. x2.I3.1005, premenná typu Ci/Co
- adresa v FloBoss 103: premenná typu INT16
Funkcia: 3A alebo 3B
Starting/ending register: n
- Signed Int 16 bitov výstup:
- adresa v D2000: x2.I3.n, napr. x2.I3.1005,, premenná typu Co
- adresa v FloBoss 103: premenná typu INT16 r/w
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- Unsigned Int 32 bitov vstup:
- adresa v D2000: x4.U3.n, napr. x4.U3.1006, premenná typu Ci/Co
- adresa v FloBoss 103: premenná typu UINT32
Funkcia: 3A alebo 3B
Starting/ending register: n
- Unsigned Int 32 bitov výstup:
- adresa v D2000: x4.U3.n, napr. x4.U3.1006, premenná typu Co
- adresa v FloBoss 103: premenná typu UINT32 r/w
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- Float 32 bitov vstup:
- adresa v D2000: x4.F3.n, napr. x4.F3.1008, premenná typu Ai/Ao
- adresa v FloBoss 103: premenná typu FL
Funkcia: 3A alebo 3B
Starting/ending register: n
- Float 32 bitov výstup:
- adresa v D2000: x4.F3.n, napr. x4.F3.1008, premenná typu Co
- adresa v FloBoss 103: premenná typu FL r/w
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- String (N bajtov) vstup:
- adresa v D2000: x1N.C3.n, napr. x10.C3.1010, premenná typu TxtI/TxtO
- adresa v FloBoss 103: premenná typu ACm(AC10,AC12,AC20,AC30,AC40)
Funkcia: 3A alebo 3B
Starting/ending register: n
- String (N bajtov) výstup:
- adresa v D2000: xN.C3.n, napr. x10.C3.1010, premenná typu Co
- adresa v FloBoss 103: premenná typu ACN r/w (AC10,AC12,AC20,AC30,AC40)
Funkcia: 3A alebo 3B
Starting/ending register: n
Funkcia: 6
Starting/ending register: n
- Čas a dátum 6 bajtov vstup:
- adresa v D2000: x6.T3.n, napr. x6.T3.1010, premenná typu TiA/TxtI
- adresa v FloBoss 103: premenná typu DT6
Funkcia: 3A alebo 3B
Starting/ending register: n - Poznámka 1: FloBoss 103 podporuje lokálny aj monotónny čas - preto musí konfigurácia stanice v D20000 zodpovedať konfigurácii FloBoss-u
- Poznámka 2: Nastavenie času a dátumu je možné, ale treba nakonfigurovať zvlášť merané body pre sekundu, minútu, hodinu, deň, mesiac a rok ako Unsigned Int 8 bitov a následne zapisovať do nich.
- Binárny vstup:
...