Prázdný košík
Úvodní stránka
Přihlásit
Hledat 
 Control Web 8
 Ovladače pro Control Web
 DataLab
 DataCam
 DataLight
 Pro školy
 Ostatní software
 Control Web – předchozí verze
 Služby
 Školení

MODBUS TCP/IP
 

MODBUS TCP/IP


Kód:CW-MBTCP
Cena pro integrátory (bez DPH):4 900 Kč
Koncová cena (bez DPH):5 450 Kč
Výrobce:Moravské přístroje
 
CELKEM
Vaše cena (bez DPH):
Celková cena (bez DPH):
*) Předpokládaná dostupnost se může lišit podle volitelných parametrů produktu. Předpokládaná dostupnost nezahrnuje dobu přepravy a jedná se o nezávazný údaj.

Ovladač slouží pro komunikaci mezi jednou nebo více stanicemi, které komunikují protokolem MODBUS a systémem Control Web. Ovladač existuje ve dvou verzích:
  • pro standardní sériové rozhraní RS-232 (nebo RS-485, RS-422)

  • pro síťové propojení pomocí TCP/IP

.

Vlastnosti ovladače

Vlastnosti obou verzí ovladače jsou velmi podobné a liší se pouze tam, kde to plyne z rozdílů v použitém druhu propojení. Ovladač umožňuje připojení jedné nebo několika stanic (PLC) s komunikačním protokolem MODBUS v módu RTU nebo ASCII k systému Control Web. Jeden sériový ovladač používá jedno komunikační rozhraní (COM port), na kterém může být připojeno více stanic (RS-485). V případě, že je potřeba připojit několik stanic přes různá sériová rozhraní, je nutno v aplikaci definovat více ovladačů. Verze TCP/IP ovladače umožňuje komunikovat s více stanicemi v síti (s různými IP adresami).

Seznam sekcí:

Vlastnosti ovladače
Činnost ovladače
Přenos a typy dat
Komunikace TCP/IP
Komunikace přes sériové rozhraní
Kanály ovladače
Parametry ovladače
Procedury ovladače
Mapovací soubor ovladače a datové typy
Zpracování a stavy výjimek ovladače
Chybové kódy

Činnost ovladače

Přenos a typy dat

Pomocí ovladače je možno číst nebo zapisovat data z paměťových registrů (Holding Registers - oblast 4X) a binárních výstupů (Coils - oblast 0X). Dále je možno číst hodnoty binárních vstupů (Inputs - oblast 1X) a hodnoty vstupních registrů (Input Registers - oblast 3X). Všechny tyto hodnoty se přiřadí kanálům prostřednictvím definice v souboru parametrů ovladače. Ovladač má určitou množinu kanálů vyhraženou pro speciální informace, proto doporučujeme, aby uživatelsky definované kanály začínaly nejméně od čísla 100. Registry stanice (4X) a vstupní registry (3X) je možno interpretovat různým způsobem v závislosti na typu stanice nebo na aplikačním programu, běžícím ve stanici.

  • Jeden registr (16-bitů) může obsahovat jednu hodnotu se znaménkem nebo bez znaménka, která odpovídá jednomu kanálu.

  • Jeden registr (16-bitů) může být rozdělen na dvě hodnoty (byte) se znaménkem nebo bez znaménka, které odpovídají dvěma kanálům.

  • Jeden registr (16-bitů) může být rozdělen na 16 logických hodnot, které odpovídají 16 kanálům typu boolean.

  • Jeden registr (16-bitů) může obsahovat jednu logickou hodnotu, která odpovídá jednomu kanálu typu boolean (0 je hodnota false, hodnota různá od nuly je chápána jeko true).

  • Dva registry (po 16-bitech) mohou být spojeny do jednoho kanálu jako 32-bitová hodnota následujících typů:

    reálné číslo s jednoduchou přesností (float - single precision)

    celé číslo se znaménkem (signed integer)

    celé číslo bez znaménka (unsigned integer)

  • Čtyři registry (po 16-bitech) mohou být spojeny do jednoho kanálu jako 64-bitová hodnota následujících typů:

    reálné číslo s dvojnásobnou přesností (float - double precision)

    celé číslo se znaménkem (signed integer)

Platí konvence, že všechny numerické kanály ovladače jsou vždy typu real. Všechny konverze do jiných datových typů použitého zařízení se provádějí v ovladači.

Komunikace TCP/IP

Tento způsob vyžaduje trochu jiný přístup než je tomu u sériové komunikace. Nejdříve je nutno vytvořit spojení a teprve pak je možno komunikovat. Dojde-li k přerušení komunikace se zařízením např. vlivem jeho výpadku, nastane chyba a spojení se zruší. Při dalším požadavku na přenos dat se nejprve ovladač pokusí vytvořit nové spojení. Pokud je zařízení trvale odpojeno, může být tato operace velmi zdlouhavá, což může mít špatný vliv na běh aplikace. Proto ovladač s odpojeným zařízením při dalších požadavcích nekomunikuje. Po určité době se sám pokusí navázat spojení a v případě kladného výsledku upozorní aplikaci prostřednictvím výjimky od ovladače. Doba pro ověřování spojení s odpojenou stanicí je nastavitelná pomocí parametru ovladače.

Komunikace přes sériové rozhraní

U komunikace přes sériové rozhraní se při startu aplikace otevře sériový port a po celou dobu běhu aplikace je aktivní. Při chybách komunikace není nutno se sériovým portem nijak manipulovat (zavírat a opět otevírat). Dojde-li k výpadku komunikace, ovladač vrátí chybu a při následujícím požadavku na data se opět pokusí se stanicí komunikovat. Celkový běh aplikace se může zpomalit vlivem čekání na odpověď od stanice, které je omezeno parametrem timeout. Tento parametr však bývá nastaven na relativně malou hodnotu, takže zpomalení běhu aplikace není výrazné. Při zániku chyby se komunikace se stanicí samovolně obnoví. V kritických případech je v moci autora aplikace s využitím prostředků systému Control Web omezit přístup na kanály stanice, která nekomunikuje a jen občas testovat, je-li již chyba odstraněna.

Kanály ovladače

Ovladač může jednotlivé prvky různých datových oblastí připojených stanic interpretovat jako svoje kanály, což jsou číselné nebo logické hodnoty (bity). Definice kanálů se děje prostřednictvím souboru parametrů v sekci [Channels], jak je popsáno níže.

Vyhrazené kanály ovladače

Ovladač předává informace o stavu komunikace prostřednictvím zvláštních kanálů, které jsou mapovány do intervalu 1 až 99. Dojde-li k chybě komunikace, je vygenerována výjimka ovladače a z jednotlivých kanálů je možno zjistit různé údaje, které blíže specifikují chybu nebo nějakou událost. Kanál č.1 rozlišuje, jedná-li se o chybu při čtení nebo při zápisu, případně bylo-li navázáno TCP/IP spojení se stanicí. Skupina kanálů č.10 až 18 doplňuje údaje o chybě při čtení resp. 20 až 28 při zápisu.

Číslo kanálu Typ kanálu Význam
Společné
1 real input Druh výjimky
2 string input IP adresa stanice, se kterou bylo navázáno spojení
Operace čtení
10 real input Adresa stanice
11 real input Kód chyby
12 string input Popis chyby
13 real input Počet chyb
14 real input První kanál bloku
15 real input Poslední kanál bloku
16 real input Čtená oblast - area
17 boolean output Nulování popisu chyby
18 boolean output Nulování počtu chyb
Operace zápis
20 real input Adresa stanice
21 real input Kód chyby
22 string input Popis chyby
23 real input Počet chyb
24 real input První kanál bloku
25 real input Poslední kanál bloku
26 real input Zapisovaná oblast
27 boolean output Nulování popisu chyby
28 boolean output Nulování počtu chyb

Vyhrazené kanály ovladače

Kódy oblastí PLC (kanál 16 a 26)

HodnotaVýznam
0

žádná (nedefinovaná) oblast.

1

oblast paměťových registrů (Holding Registers — 4X).

2

oblast digitálních vstupů (Inputs — 1X).

3

oblast digitálních výstupů (Coils — 0X).

4

oblast analogových vstupních registrů (Input Registers — 3X).

Parametry ovladače

Pomocí souboru parametrů je možno nastavit parametry komunikace a definovat kanály ovladače, popřípadě nastavit další doplňující parametry. Celý soubor parametrů je rozdělen do několika sekcí. Název sekce je uveden v hranatých závorkách. V sekci jsou uvedeny za jménem a znakem "=" jednotlivé parametry. Na jednom řádku může být definován jeden parametr.

Poznámka:

U názvů sekcí a parametrů je třeba dodržet správný zápis velkých a malých písmen.

Parametry linkové komunikační vrstvy — sekce [comm]

Linková komunikační vrstva představuje prostředek pro přístup na standardní sériové rozhraní počítače. Tato vrstva umožňuje mimo jiné sdílet jedno sériové rozhraní více ovladači. V systému Control Web je linková komunikační vrstva reprezentována dvěma DLL knihovnami ('CWXLINK.DLL' a 'CWCOMM.DLL'). Pro její konfiguraci slouží v souborech parametrů ovladače sekce [comm]. V této sekci je možno buď přímo definovat parametry sériové komunikace nebo uvést odkaz (přesměrovaní) na samostatný konfigurační soubor s parametry sériové komunikace. V případě přesměrování obsahuje sekce [comm] pouze jediný parametr — file:

[comm]
  file=c:\cw\par\comm.par

Struktura parametrů linkové vrstvy:

[comm]
  file = <file>
  device = <comdevice>

Pokud je definován parametr device a existuje sekce jména comdevice, budou konfigurační parametry přednostně získány z této sekce, jinak budou použity parametry přímo ze sekce [comm].

Povinné parametry:

[comm]
  rx_frame_buffer = <N>
  tx_frame_buffer = <N>
  baudrate = <N>
  databits = <N>
  stopbits = one | 1 | oneandhalf | 1.5 | two | 2
  parity = none | no | even | mark | odd | space
  cts_flow = true | false
  dsr_flow = true | false
  dtr_control = disable | low | enable | high | handshake | toggle | toggle_neg
  rts_control = disable | low | enable | high | handshake | toggle | toggle_neg
  dsr_sense = low | high
  rx_interchar_timeout = <N>
  rx_char_timeout = <N> | 0
  rx_timeout = <N> | 0
  tx_char_timeout = <N> | 0
  tx_timeout = <N> | 0

Nepovinné parametry:

  priority = idle | low | below_normal | normal | above_normal | high | realtime
  mode = fullduplex | halfduplex
  pre_key = <N>
  hold_key = <N>
  rx_buffer = <N>
  tx_buffer = <N>
  tx_continue_xon_xoff = true | false
  tx_xon_xoff = true | false
  rx_xon_xoff = true | false
  xon_tresh = <N>
  xoff_tresh = <N>
  error_xlat = true | false
  discard_null = true | false
  xon_char = <N>
  xoff_char = <N>
  err_char = <N>
  eof_char = <N>
  evt_char = <N>

Syntaktické kategorie:

ObjektPopis
file

jméno souboru u parametru file

comdevice

název sekce u parametru device

N

číselná hodnota

Popis jednotlivých parametrů:

ParametrVýznam
file

soubor parametrů. Tento parametr je výhodné použít v případech, kdy více ovladačů používá jedinou linkovou vrstvu. Parametry lze potom udržovat v jediném souboru.

device

jméno zařízení, například COM1. Pokud je tento parametr uveden, bude použito zařízení tohoto jména. Pokud zároveň existuje sekce stejného jména, budou následující parametry získány z této sekce. Pokud sekce tohoto jména neexistuje, parametry jsou načteny z aktuální sekce [comm].

priority

priorita komunikačního threadu. Implicitní hodnota je normal.

mode

režim činnosti (obousměrná/jednosměrná komunikace). Implicitní hodnota je fullduplex.

pre_key

určuje prodlevu před zahájením přenosu. Stav signálů DTR/RTS, pokud pracují v toggle módu, je po dobu prodlevy již změněn na aktivní.

hold_key

určuje prodlevu po ukončení přenosu. Signály DTR/RTS, pokud pracují v toggle módu, zůstávají po tuto dobu prodlevy ještě aktivní.

rx_frame_buffer

velikost sekundárního bufferu pro vstup. Přípustný rozsah <96;65535>, parametr nemá implicitní hodnotu.

tx_frame_buffer

velikost sekundárního bufferu pro výstup. Přípustný rozsah <96;65535>, parametr nemá implicitní hodnotu.

rx_buffer

velikost bufferu pro vstup; rozsah <96;65535>, implicitně 4096.

tx_buffer

velikost bufferu pro výstup; rozsah <96;65535>, implicitně 4096.

baudrate

komunikační rychlost.

databits

počet data bitů.

stopbits

počet stop bitů.

parity

parita přenosu.

cts_flow

povoluje CTS řízení (handshake).

dsr_flow

povoluje DSR řízení (handshake).

dtr_control
rts_control

chování DTS a RTS, význam hodnot viz dále.

dsr_sense

určuje, je-li DSR aktivní v úrovni high nebo low (high = pozitivní handshake, low = negativní handshake).

tx_continue_xon_xoff

povoluje zastavení vysílání pokud je vstupní buffer plný a byl vyslán znak XOFF (xoff_char). Pokud je nastaveno true, vysílání pokračuje od okamžiku, kdy je ve vstupním bufferu nejméně xoff_tresh znaků volných a ovladač vyslal XOFF znak (xoff_char) pro přibrzdění příjmu. Pokud je nastaveno false, vysílání nepokračuje do okamžiku než je ve vstupním bufferu alespoň xon_tresh znaků volných a ovladač vyslal XON znak (xon_char) pro obnovení příjmu. Implicitní hodnota je false.

tx_xon_xoff

povoluje XON/XOFF (software) řízení pro výstup. Implicitní hodnota je false.

rx_xon_xoff

povoluje XON/XOFF (software) řízení pro vstup. Implicitní hodnota je false.

xon_tresh

minimální volná kapacita vstupního bufferu pro vyslání XON. Implicitní hodnota je 50 procent.

xoff_tresh

ovlivňuje maximální počet znaků ve vstupním bufferu pro vyslání XOFF. Maximální počet přípustných znaků lze spočítat odečtením uvedené hodnoty od velikosti vstupního bufferu (rx_buffer). Implicitní hodnota je 80 procent.

error_xlat

povoluje nahrazení znaků přijatých s chybou parity znakem err_char. Pokud je nastaveno true a kontrola parity povolena, dochází k nahrazení. Implicitní hodnota je false.

discard_null

povoluje odstranění prázdných (NULL) znaků. Pokud je nastaveno true, každý NULL znak je ihned po přijetí odstraněn ze vstupního bufferu. Implicitní hodnota je false.

xon_char

dekadický kód znaku XON.

xoff_char

dekadický kód znaku XOFF.

err_char

dekadický kód znaku, který je určen pro nahrazení znaků přijatých s chybou parity.

eof_char

dekadický kód znaku EOF.

evt_char

dekadický kód znaku EVT.

rx_interchar_timeout

meziznaková prodleva pro příjem v milisekundách.

rx_char_timeout

prodleva na jeden přijatý znak v milisekundách.

rx_timeout

konstantní prodleva pro příjem v milisekundách.

tx_char_timeout

prodleva na vyslání jednoho znaku v milisekundách.

tx_timeout

konstantní prodleva pro vysílání v milisekundách.

Hodnoty pro definici chování DTS a RTS (parametry rts_control a dtr_control):

HodnotaVýznam
disable

řízení vypnuto, trvale v úrovni low

low

stejně jako disable

enable

řízení vypnuto, trvale v úrovni high

high

stejně jako enable

handshake

pozitivní handshake

toggle

signál mění stav během přenosu dat na high (pozitivní klíč), jinak trvale v low

toggle_neg

signál mění stav během přenosu dat na low (negativní klíč), jinak trvale v high

Chování DTR/RTS v módech toggle/toggle_neg

Chování DTR/RTS v módech toggle/toggle_neg

Upozornění:

Parametry rx_interchar_timeout, rx_char_timeout a rx_timeout ovlivňují propustnost na vstupu. Zvýšením hodnoty rx_timeout lze dosáhnout zvýšení efektivity pro rozsáhlé přenosy dat (pozor na kapacitu vstupního bufferu!), ale dojde také k prodloužení prodlev při příjmu separátních bloků dat. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace.

Parametry tx_char_timeout a tx_timeout ovlivňují propustnost na výstupu. Zvýšením hodnot lze docílit vyšší efektivity pro rozsáhlé přenosy dat, zvláště při povoleném handshake. Příliš malé hodnoty mohou způsobit problémy při vysílání, včetně potenciálně velkého počtu neúspěšných pokusů o vyslání. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace.

Příklad definice parametrů sériové komunikace v souboru parametrů ovladače MODBUS:

[comm]
  baudrate = 9600
  parity = even
  databits = 8
  stopbits = 1
  rx_buffer = 1152
  tx_buffer = 1152
  rx_frame_buffer = 1152
  tx_frame_buffer = 1152
  cts_flow = false
  dsr_flow = false
  dtr_control = disable
  rts_control = disable
  dsr_sense = low
  rx_interchar_timeout = 0
  rx_char_timeout = 0
  rx_timeout = 0
  tx_char_timeout = 0
  tx_timeout = 0

Sekce [Modbus]

Tato sekce obsahuje parametry, které slouží ke konfiguraci ovladače z hlediska používání protokolu MODBUS. Následuje způsob zápisu parametrů:

[Modbus]
    ComDriver = <LinkDll>, <ComId>
    Mode = RTU | ASCII
    Timeout = <N>
    EnableMonitor = true | false
    DisablePresetSingleRegister = true | false
    OffsetFromOne = true | false
    SwapBytes = true | false
    SwapRegisters = true | false
    MaxRegistersInBlock= <N>
    NumRepeat = <N>
    FinalizeAfterEachBlock = false | true
    ConnectOnStartup = true | false
    CheckTime = <N>
    KeepAlive = true | false
    TransparentMode = true | false
    TransactionID = true | false
    TraceOutput = log | windows | xtrace | none
ParametrVýznam
LinkDll

řetězec obsahující jméno DLL knihovny linkového ovladače, např. 'CWCOMM4.DLL'.

ComId

řetězec obsahující jméno komunikačního portu, např COM1.

N

číselná hodnota. Může být zapsána dekadicky nebo hexadecimálně (ukončena znakem H).

Následuje výčet a popis jednotlivých parametrů:

ComDriver

jméno knihovny ovladače sériového rozhraní (linkové vrstvy) a jméno komunikačního portu (COMx), který je nainstalován v prostředí Windows. Jméno standardního ovladače je 'CWCOMM.DLL'.

Mode
Parametr definuje mód komunikace. Je možno zvolit binární mód RTU nebo znakový mód ASCII
Timeout
Parametr definuje dobu čekání ovladače na odpověď podřízené stanice. Nepřijde-li do této doby odpověď, požadavek se opakuje podle parametru NumRepeat. Nedojde-li ani poté odpověď, je hlášena chyba komunikace. Tento údaj se zadává v milisekundách.

Poznámka:

U ovladače TCP/IP se tento parametr NumRepeat neuplatňuje.

EnableMonitor

Pomocí tohoto parametru je možno zapnout výpisy průběhu komunikace do okna ovladače.

DisablePresetSingleRegister
Tento parametr povoluje nebo zakazuje používání funkce č.6 - nastavení jednotlivých registrů. Některá zařízení tuto funkci nepodporují (např. Simatic CP-521). Místo něj bude používána funkce č.16 - nastavení více registrů s počtem 1.
SwapBytes
Pomocí tohoto parametru je možno nastavit, jestli mají být byte v registrech vzájemně prohozeny.
SwapRegisters

Pomocí tohoto parametru se dá nastavit pořadí registrů u hodnot, které jsou vyjádřeny dvěma nebo čtyřmi registry.

OffsetFromOne

Tento parametr určuje, jestli datová oblast začíná od 0 nebo od 1. Implicitní nastavení je OffsetFromOne = true, což znamená, že oblast začíná od 1, tedy registr 40001 bude mít offset roven hodnotě 1. Pro OffsetFromOne = false bude mít registr 40001 offset roven hodnotě 0.

MaxRegistersInBlock

Tento parametr udává maximální počet registrů v přenášeném bloku dat. Implicitní hodnota je nastavena na 100, což odpovídá 200 byte. Správnou hodnotu je nutno zjistit z dokumentace k použitému zařízení.

NumRepeat

Parametr udává počet opakování po neúspěšné komunikaci. Je-li nastaven na 0, požadavek se neopakuje (vykoná se tedy pouze jednou). Implicitní hodnota je 2. Maximální hodnota je 5.

Poznámka:

U ovladače TCP/IP se tento parametr neuplatňuje.

FinalizeAfterEachBlock
Pomocí tohoto parametru se zadává, jestli budou data předána do aplikace po každé komunikaci (hodnota parametru = true) nebo až po dokončení přenosu všech bloků, které se řeší v rámci daného časového kroku. Implicitní nastavení je false.
TraceOutput

Zapnutí trasovacích výpisů komunikace. Je-li nutno sledovat komunikaci ovladače se zařízením, je možno zvolit tímto parametrem cíl trasovacích výpisů. Možné hodnoty parametru jsou:

none - žádné trasovací výpisy

log - výpisy jsou nasměrovány do "Okna zpráv" záložky "Ladicí výpisy" systému Control Web
xtrace - výpisy jsou nasměrovány do souboru '\XTRACE.TXT'
windows - výpisy jsou nasměrovýny do ladicího okna systému Windows

Upozornění:

Trasovací výpisy zpomalují činnost aplikace, popřípadě mohou vést ke zmenšování prostoru v paměti nebo na disku. Proto se nedoporučuje používat trasovací výpisy ve finální aplikaci.

ConnectOnStartup
Má-li tento parametr hodnotu true, ovladač se při startu aplikace pokusí spojit se všemi stanicemi. Pokud je některá stanice nedostupná, pokračuje se v běhu aplikace až po vypršení síťového timeoutu pro spojení. Až při prvním přístupu na kanál nedostupné stanice je do aplikace vygenerována výjimka s nastaveným bitem 3 v kanále č.1 (druh výjimky).
CheckTime
Parametr definuje prodlevu mezi pokusy o navázání spojení s odpojenými stanicemi. Zadává se v milisekundách. Není-li uveden, je nastaven na hodnotu 120000 (2 minuty).
KeepAlive
Je-li parametr nastaven na hodnotu false, bude spojení po každé komunikaci ukončeno. Implicitně je tento parametr nastaven na hodnotu true. Tento parametr je vhodné použít např. v situaci, kdy je třeba aby na počítači komunikovalo více MODBUS TCP klientů (master) s jediným PLC (slave) .
TransactionID
Parametr určuje, jestli se bude během komunikace měnit počitadlo transakcí v hlavičce protokolu MODBUS TCP. Implicitní hodnota tohoto parametru je false (počitadlo se nepoužívá).
TransparentMode
Je-li tento parametr nastaven na hodnotu true, nebude se při komunikaci TCP/IP používat hlavička protokolu MODBUS TCP. Implicitní hodnota parametru je false. Ovladač v transparentním režimu v podstatě tuneluje data sérivé komunikace přes síťové rozhraní pomocí protokolu TCP/IP. Tento mód je možno použít s některými typy převodníků komunikace mezi LAN (TCP/IP) a rozhraním RS-232/485.

Příklad parametrů v sekci [Modbus]:

[Modbus]
ComDriver = cwcomm, com2
Mode = RTU
Timeout = 350
EnableMonitor = true
DisablePresetSingleRegister = true
OffsetFromOne = true
SwapBytes = true
SwapRegisters = true
MaxRegistersInBlock = 100
NumRepeat = 1
FinalizeAfterEachBlock = false
TraceOutput = none

Sekce [Channels]

V této sekci se používá jediný parametr Block, který definuje bloky kanálů ovladače. Jednotlivým datovým oblastem (area) ve stanici je možno přiřadit určitou skupinu kanálů. Blok je definován adresou stanice, intervalem kanálů, datovou oblastí ve stanici (area), počáteční adresou v dané oblasti a pro oblast registrů (3X, 4X) ještě datovým typem. V případě použití obousměrných kanálů je možno definovat parametr bidirect, který zamezí vzniku kolizí při současném čtení i zápisu na stejný kanál - pak jsou v ovladači vytvořeny dva zvláštní bloky, jeden pro čtení, druhý pro zápis. U TCP/IP ovladače je dále možno pro blok definovat identifikátor spojení, který slouží pro zjišťování stavu spojení pomocí procedury ovladače GetStatus. Součástí definice bloku může být i komentář, který musí být uveden středníkem a platí až do konce řádku.

Z pohledu komunikace představuje jeden blok maximální celistvý úsek, který se dá přenést najednou v rámci jedné komunikace se stanicí. Použitý komunikační protokol tuto hodnotu dále upravuje (např. u protokolu MODBUS je možno přenést v jednom bloku maximálně 256 byte). Bude-li definován delší blok než je možno přenést najednou a budou-li zadány požadavky na čtení nebo zápis všech kanálů bloku, rozpadne se komunikace na několik částí tak, aby byla všechna data přenesena.

Poznámka:

Všechny numerické kanály musí být v aplikaci (a v souboru DMF) typu real. Ovladač automaticky provádí nezbytné konverze na ostatní typy použité v komunikaci se stanicemi.

Způsob zápisu parametrů a jejich možné hodnoty (v hranatých závorkách jsou uvedeny nepovinné nebo doplňující parametry):

[Channels]
  Block = <Station>, <ChFrom>, <ChlTo>, <Area>, <Ofs> [, <SubType>] [, <Bidirect>] [, <Id>] [ <Comment>]
  Block = ...
  ...
ParametrVýznam
Station

— u sériového ovladače je to adresa stanice (slave), což je číslo v rozsahu 0 až 255.

— u TCP/IP ovladače má tento tvar:

<UnitId>@<IPAdr>[:<IPPort>]
kde:
UnitId

je tzv. "Unit Identifier", který slouží pro komunikaci přes zařízení typu "bridge" nebo "gateway".

IPAdr

je IP adresa stanice v síti a zapisuje se jako čtyři skupiny čísel v rozsahu 0 až 255 oddělené tečkami (např. 10.0.0.5).

IPPort

je volitelný volitelný parametr a má význam IP portu. Není-li uveden, je jeho hodnota 502, což je standard pro protokol MODBUS.

ChFrom

počáteční kanál bloku (číslo).

ChTo

poslední kanál bloku (číslo).

Area

oblast ve stanici (0X,1X,3X,4X resp. O,I,R,H).

Ofs

adresa prvního elementu ve stanici odpovídající prvnímu kanálu bloku. První element začíná číslem 1, např. registr 40001 má offset 1.

SubType

datový typ pro oblast registrů 3X nebo 4X (viz. přehled datových typů). Není-li parametr uveden je pro oblast 3X implicitně nastaven typ int16 a pro oblast 4X typ uint16.

Bidirect

parametr udává, že definovaný blok je určen pro čtení i pro zápis (bidirect). Není-li uveden, je možno z bloku číst nebo do něj zapisovat, ale při současném čtení a zápisu nemusí být do stanice zapsána správná data.

Id

identifikátor spojení. Slouží pro zjišťování stavu spojení pomocí procedury ovladače GetStatus. Zapisuje se ve tvaru:

ID:<N>

kde:

N

je celé kladné číslo

Comment

komentář uvozený středníkem. Platí od středníku až do konce řádku.

Příklad parametrů v sekci [Channels] pro sériový ovladač:

[Channels]
Block = 01,  100,  199, H, 1, int16,  bidirect ; registers as numbers
Block = 01,  200,  299, H, 1, bits16, bidirect ; registers as bits
Block = 01,  300,  399, R, 1                   ; input registers
Block = 01, 1000, 1015, O, 1,         bidirect ; digital outputs
Block = 01, 1100, 1115, I, 1                   ; digital inputs

Příklad parametrů v sekci [Channels] pro TCP/IP ovladač:

[Channels]
Block = 00@10.0.0.5,  100,  199, H, 1, int16,  bidirect, ID:01 ; registers as numbers
Block = 00@10.0.0.5,  200,  299, H, 1, bits16, bidirect, ID:02 ; registers as bits
Block = 00@10.0.0.5,  300,  399, R, 1,                   ID:03 ; input registers
Block = 00@10.0.0.5, 1000, 1015, O, 1,         bidirect, ID:04 ; digital outputs
Block = 00@10.0.0.5, 1100, 1115, I, 1,                   ID:05 ; digital inputs

Procedury ovladače

Aplikace může volat ovladači určité procedury, pomocí nichž je možno řídit chování ovladače nebo získat důležité informace. To se děje prostřednictvím systémové procedury:

core.DriverQueryProc( DriverName : string; Param1 : any; &Param2 : any );

Její parametry mají následující význam:

ParametrVýznam
DriverName

symbolické jméno ovladače, definované v aplikaci

Param1

slouží k zadání povelu (jména procedury ovladače)

Param2

je použit jako parametr procedury nebo návratová hodnota procedury.

DriverName a Param1 se zadávají jako textové řetězce. Param2 je různého typu podle významu procedury. Některé procedury, sloužící k nastavení parametrů, mohou skončit chybou. Výsledek naposled vykonané procedury je možno získat voláním procedury GetResult.

Přehled a význam jednotlivých procedur ovladače (parametr Param1)

GetVersion

Vrací v Param2 řetězec popisující jméno a verzi ovladače. Param2 je typu string.

GetMajorVersion

Vrátí vyšší slovo verze produktu Control Web. Param2 je libovolného číselného typu.

GetMinorVersion

Vrátí nižší slovo verze produktu Control Web. Param2 je libovolného číselného typu.

GetAPIMajorVersion

Vrátí vyšší slovo verze API produktu Control Web. Param2 je libovolného číselného typu.

GetAPIMinorVersion

Vrátí nižší slovo verze API produktu Control Web. Param2 je libovolného číselného typu.

SetTraceOutput

Nastaví cíl trasovacích výpisů komunikace. Param2 je typu string a udává cíl výpisů:

none - žádné trasovací výpisy

log - výpisy jsou nasměrovány do "Okna zpráv" záložky "Ladicí výpisy" systému Control Web
xtrace - výpisy jsou nasměrovány do souboru '\XTRACE.TXT'
windows - výpisy jsou nasměrovýny do ladicího okna systému Windows
OpenCom

Otevře COM port. Param2 je typu string a obsahuje jméno sériového portu (např. COM1). Pokud se na jeho místě použije proměnná (typu string) a je uvedena znakem '&', vrací výsledek operace. Návratová hodnota 'ok', znamená, že otevření sériového portu bylo úspěšné. Při chybě je vrácen text popisující chybu. Po startu aplikace je sériový port otevřen podle nastavení v souboru parametrů.

CloseCom

Procedura slouží k uzavření sériového portu. Param2 nemá žádný význam.

GetStatus

Procedura slouží k zjištění stavu TCPI/IP spojení. Při volání procedury musí Param2 obsahovat platnou hodnotu identifikátoru spojení (parametr ID bloku kanálů). Po návratu z procedury obsahuje Param2 hodnotu stavu spojení:

0 - byl zadán neplatný identifikátor bloku

1 - spojení je uzavřeno
2 - spojení je aktivní (otevřeno)
3 - nastala chyba spojení
4 - stanice není připojena

Parametr Param2 je libovolného číselného typu.

Mapovací soubor ovladače a datové typy

Tento soubor obsahuje typy kanálů ovladače. Protože ovladač má jak pevnou množinu kanálů, tak proměnnou množinu kanálů, měl by tento soubor obsahovat vždy shodnou definici pro vyhražené kanály a různou (podle požadavků aplikace) pro kanály definované uživatelsky v souboru parametrů v sekci [Channels].

Area SubType Typ kanálu Popis
0X   boolean 1-bitová hodnota pro zápis na binární výstupnebo čtení stavu výstupu
1X   boolean 1-bitová hodnota binárního výstupu
3X,4X int64 real 64-bitová hodnota se znaménkem - čtyři registry
3X,4X float64 real 64-bitová real hodnota - čtyři registry
3X,4X uint32 real 32-bitová hodnota bez znaménka - dva registry
3X,4X int32 real 32-bitová hodnota se znaménkem - dva registry
3X,4X float32 real 32-bitová real hodnota - dva registry
3X,4X uint16 real 16-bitová hodnota bez znaménka
3X,4X int16 real 16-bitová hodnota se znaménkem
3X,4X uint8 real dvě 8-bitové hodnoty bez znaménka
3X,4X int8 real dvě 8-bitové hodnoty se znaménkem
3X,4X bool16 boolean jedna boolean hodnota v jednom registru
3X,4X bits16 boolean 16 boolean hodnot v jednom registru

Přehled datových typů ovladače

Poznámka:

Poznámka. Typ float64 je ve formátu double a typ float32 je ve formátu single podle specifikace IEEE 754.

Zpracování a stavy výjimek ovladače

Při výskytu chyby komunikace vznikne událost, kterou ovladač může přenést jako výjimku do aplikace. V aplikaci musí být definován objekt (virtuální přístroj), který má definován parametr driver_exception resp. activity — driver se symbolickým jménem tohoto ovladače. V tomto případě je takový přístroj výjimkou aktivován. V rámci jeho činnosti je možno zjistit stav výjimky přečtením kanálu č.1. Stav je určen jednotlivými bity podle následující tabulky:

  • bit 0 - je-li bit nastaven, nastala chyba při čtení.

  • bit 1 - je-li bit nastaven, nastala chyba při zápisu.

  • bit 2 - je-li bit nastaven, je signalizováno TCP/IP spojení se stanicí, jejíž IP adresu lze získat čtením kanálu č.2.

  • bit 3 - je-li bit nastaven, je signalizována chyba spojení při startu aplikace.

Chybové kódy

Ovladač generuje následující chybové kódy. Tyto kódy jsou k dispozici na kanálech č.11 resp. č.21. Při vzniku chyby se současně vypíše hlášení do okna zpráv.

Specifické chybové kódy ovladače

HodnotaVýznam
0

úspěšná operace

1

chyba timeoutu

2

neplatná hodnota

3

nesprávné číslo kanálu

101

neplatná funkce

102

nesprávná adresa dat

103

nesprávná hodnota dat

104

chyba podřízené stanice

105

chyba potvrzení

106

podřízená stanice není schopna přijímat požadavky

107

negativní potvrzení

108

chyba paměti stanice

110

nedostupná brána (gateway)

111

chyba odpovědi zařízení cílové brány

200

chyba CRC

201

vstupní komunikační buffer je plný

202

nesprávná adresa stanice

203

stanice vrátila nesprávný kód povelu (funkce)

204

přijatá data mají nesprávnou délku

205

chyba spojení přes TCP/IP

206

zařízení je odpojeno

300

nedefinovaná chyba

Poznámka:

Kódy 101 až 111 odpovídají původním kódům 1 až 11 z dokumentace MODICON MODBUS.