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:
.
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.
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) Hodnota | Vý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.
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: Objekt | Popis |
---|
file | jméno souboru u parametru file | comdevice | název sekce u parametru device | N | číselná hodnota |
Popis jednotlivých parametrů: Parametr | Vý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): Hodnota | Vý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 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
Parametr | Vý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.
- 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.
- 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.
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 = ...
...
Parametr | Vý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: | 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: Parametr | Vý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
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:
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 Hodnota | Vý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 |
|