Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

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

ParameterPopisJednotka / rozmerNáhradná hodnota
Kotva
tnd
tnd
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

Kotva
komunikacna_stanica
komunikacna_stanica
Konfigurácia stanice

...

  • 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

ParameterPopisJednotkaNáhradná hodnota
Kotva
rc
rc
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
Kotva
rt
rt
Retry Timeout
Timeout pred opakovaním výzvy, pokiaľ neprišla odpoveď.s0.1
Kotva
wft
wft
Wait First Timeout
Timeout medzi poslaním výzvy a prvým čítaním odpovede.s0.1
Kotva
wt
wt
Wait Timeout
Timeout medzi čítaniami odpovede.s0.1
Kotva
mwr
mwr
Max. Wait Retry
Maximálny počet opakovaní čítania odpovede.-20
Kotva
stasi
stasi
Start Silent Interval
"Start silent interval" pred štartom vysielania v RTU móde.ms50
Kotva
stosi
stosi
Stop Silent Interval
"Stop silent interval" po ukončení vysielania v RTU móde.ms50
Kotva
bm
bm
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
Kotva
vm
vm
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
Kotva
fd
fd
Full debug
Výpis dodatočných ladiacich informácií o komunikácii na linke.YES/NONO
Kotva
pm
pm
Protocol mode
Mód protokolu: RTU alebo ASCII. Nastavenie sa aplikuje iba v prípade sériovej komunikácie.

"RTU "

"ASCII"

"RTU"
Kotva
am
am
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"
Kotva
mtcpv
mtcpv
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"
Kotva
mxr
mxr
Max. Registers
Maximálny počet registrov žiadaný v jednej výzve.-100
Kotva
mxb
mxb
Max. Bytes
Maximálny počet bytov žiadaný v jednej výzve (iba v "Byte mode").-100
Kotva
sku
sku
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
Kotva
mxr
mxr
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

...

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
basic
basic
Základný tvar adresy meraného bodu:
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 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 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 registerD2000 príznaky
    0 : Invalid valueWeak
    1 : Measured value validValid
    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 ModBus
    Weak


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

  • 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
extend
extend
Rozšírený tvar adresy meraného bodu:

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.

...