...
- Komunikačný protokol "Modbus Client".
- Adresa stanice je dekadické číslo zvyčajne v rozsahu 1 až 247. Adresa 0 je rezervovaná ako broadcast.
Poznámka: Pokiaľ na stanici nebude nakonfigurovaný žiadny meraný bod s platnou adresou, nebude prebiehať žiadna komunikácia a stanica bude v chybovom stave (StHARDERR).
Parametre protokolu stanice
...
| 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. | - | 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 | ||||||
| Po zápise meraného bodu nasleduje ihneď spätné čítanie. Nastavením parametra na hodnotu NO je možné znížiť záťaž na komunikáciách (najmä sériových) s veľkým množstvom zápisov. | YES/NO | YES | ||||||
| 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 | ||||||
| Š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 | ||||||
| Ak je hodnota typu integer (Holding Registers, Input Registers) priraďovaná do meraného bodu typu Di alebo Dout, robí sa tak na základe porovnania načítanej hodnoty s nulou. Ak je hodnota nulová, hodnota meraného bodu je False, inak True. Parameter Bool Mask umožňuje pred porovnaním vyfiltrovať ešte konkrétne bity na základe bitovej masky zadávanej ako hexadecimálne číslo (najvyšší bajt je vľavo). Bitová maska FF FF FF FF znamená, že sa berú do úvahy všetky bity (pre 1 a 2-registrové celočíselné adresy). Bitová maska 01 znamená, že sa do úvahy berie iba najnižší bit. Ak adresa meraného bodu udáva použitie iba dolného/horného bajtu registra, aplikuje sa na ňu najnižší/druhý najnižší bajt masky. | - | FF FF FF FF | ||||||
| Nikdy nežiadaj hodnoty z adries, ktoré nie sú nakonfigurované. | 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:
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. Viď príklad takejto komunikácie: 14:55:31.532 20-06-2024|D|MDB_IDAC> REQ St: 1, Fnc: 3, Addr: 1179, Len: 17 | YES/NO | NO | ||||||
| Ak je parameter nastavený na YES, tak sa použije jediná výzva (v ktorej je celkový počet registrov). Je nutné, aby boli definované merané body pre všetky adresy 0..N. Tento mód je použiteľný pre špeciálne zariadenia, ktoré všetky dáta (s variabilnou veľkosťou registrov - 2, 4, 8 bajtov - posielajú v jedinej odpovedi). | YES/NO | NO | ||||||
| Na linke TCP/IP-TCP je možné hneď po nadviazaní spojenia zapísať konkrétnu hodnotu na zvolenú adresu (TCP Password Address) s použitím zvolenej funkcie (TCP Password Function). Riadiace jednotky ComAp týmto spôsobom umožňujú autentifikovať oprávneného Modbus klienta. Hodnota sa zadáva hexadecimálne v poradí bajtov, ako budú vysielané (napr. "01 0A BC D0". V prípade, že nie je zadaný párny počet bajtov, bude na koniec doplnený bajt s hodnotou 0. Nastavenie parametra na prázdnu hodnotu spôsobí, že zápis sa po nadviazaní spojenia nevykonáva. | - | |||||||
| Adresa pre zápis hesla (TCP Write Password) na linke TCP/IP-TCP. Ak je heslo dlhšie ako 2 bajty, je to adresa prvého registra. Ak má heslo napr. 6 bajtov, zapisuje sa ako 3 registre od zadanej adresy. | - | 0 | ||||||
| Zápisová funkcia pre zápis hesla (TCP Write Password) na linke TCP/IP-TCP. Ak je počet bajtov hesla väčší ako 2, použije sa funkcia 16 (Write Multiple Registers) aj keď je nakonfigurovaná funkcia 6 (Write Single Register). | 6 16 | 6 |
...
| Kotva | ||||
|---|---|---|---|---|
|
Tvar adresy je [I|U|Uu|Ul|f|F|L|Ll|S|Sl|B|X|sn.|an.|An.][d|D][b][s]RdFn[-WrFn[cd|dr]].Address[.BitNr] [,Items] 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, znaky sú prenášané v poradí v akom sú v reťazci, čí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, znaky sú prenášané v big-endian poradí (tj. "1234" sa prenáša ako "2143"), čí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 <B8>..<B1> a little endian <B1>..<B8>).
Modifikátor D hovorí, že číslo je 8-bajtové číslo (4 za sebou idúce registre). Je použiteľný pri typoch Ll, Sl, F a pomocou neho je možné zadefinovať 8 bajtový integer bez znamienka/so znamienkom ako aj 8-bajtový float (vo formáte little endian <B2><B1><B4><B3><B6><B5><B8><B7>). - 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
- 4 - Read Input Registers: čítanie vstupných registrov
- 20 - Read Configuration Reference Data: čítanie konfiguračných dát
- 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ď). - 21 - Write Configuration Reference Data: zápis konfiguračných dát
- 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 r aktivuje funkciu "repeat write on reconnect". Ak nemohla byť zapísaná hodnota, po znovunadviazaní spojenia sa zopakuje zápis poslednej zapisovanej hodnoty (aj keď medzitým mohla prísť z komunikácie iná hodnota).
- 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.
Pozn: je možná koexistencia meraného bodu bez parametra BitNr a viacero meraných bodov s parametrom BitNr na tej istej adrese Address. - Parameter Items udáva počet čítaných objektov. Tento parameter má zmysel iba vtedy, ak je nakonfigurovaný Cieľový stĺpec štruktúry. Udáva počet objektov, ktoré budú načítané a zapísané do štruktúry. Pokiaľ tento parameter nie je zadaný, počet načítaných objektov sa odvodí od veľkosti štruktúry, takže tento parameter umožňuje obmedziť počet načítaných položiek (napr. ak majú byť do ďalších riadkov štruktúry načítané hodnoty pomocou iného meraného bodu).
...