Ovladač MRS04 je určen pro spojení systému Control Web s regulátory MRS 04 od firmy A.P.O. - ELMOS přes sériové
rozhraní RS-232 nebo RS-485.
Vlastnosti ovladače
Ovladač umožňuje připojení jednoho nebo více regulátorů
MRS 04 k systému Control Web.
Komunikace přes standardní sériové rozhraní počítače
RS-232 resp. RS-485 s použitím vhodného
převodníku.
Ovladač řídí komunikaci - pracuje v režimu
master.
Čtení a zápis všech dostupných hodnot parametrů.
Komunikace s typy regulátorů MRS 04-1x, MRS 04-2x,
MRS 04-3x.
Při komunikaci s více regulátory je možno logicky
odpojit regulátory, které jsou momentálně nedostupné.
Seznam sekcí: - Vlastnosti ovladače
- Činnost ovladače
- Parametry ovladače
- Kanály ovladače
- Procedury ovladače
- Mapovací soubor ovladače a datové typy
- Zpracování a stavy výjimek ovladače
- Chybové kódy
- Příklad použití ovladače
Činnost ovladače
Pomocí ovladače je možno číst nebo zapisovat všechny dostupné
hodnoty parametrů a aktuální data z regulátoru.
Ovladač interpretuje parametry a aktuální hodnoty regulátoru
jako svoje kanály. Vždy se jedná o kanály číselného typu.
Číselný rozsah je dán typem hodnoty v regulátoru.
Z hlediska aplikace mohou být všechny kanály definovány jako
hodnoty typu real. Pokud některé kanály obsahují
pouze hodnoty 0 a 1, je možno je v aplikaci definovat jako
typ boolean. Ovladač se automaticky stará
o převod na požadovaný typ na základě definice kanálů
v souboru parametrů. Výjimku tvoří pouze kanály, ve kterých
se vrací jméno výrobce, název a verze regulátoru. Tyto kanály musí
být typu string.
Počet kanálů ovladače není pevně definován a záleží pouze na
tom, které hodnoty je třeba v aplikaci číst nebo zapisovat.
Jednotlivé datové kanály ovladače, popřípadě celé jejich skupiny
se konfigurují v souboru parametrů podle požadavků uživatele.
Existuje-li možnost připojení více zařízení - stanic na jedno
sériové rozhraní (např. prostřednictvím sběrnice RS-485), ovladač
se dá nakonfigurovat tak, aby při výskytu chyby komunikace
s některým zařízením došlo k jeho logickému odpojení.
Ovladač v tomto případě nebude se zařízením komunikovat. To
zabezpečí plynulý běh zbytku aplikace. Po uplynutí nastaveného
intervalu, popřípadě povelem z aplikace se dá znovu zažádat o
spojení s právě odpojeným zařízením.
Parametry ovladače
Parametry ovladače — úvod
Parametry
ovladačePomocí 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 pro základní nastavení ovladače — sekce [Settings]
Tato sekce obsahuje parametry, které slouží ke konfiguraci
ovladače z hlediska komunikace. Způsob zápisu parametrů a
jejich možné hodnoty:
[Settings]
Syntax sekce
settingsComDriver = <LinkDll> <ComId>
NumRepeat = <N>
Timeout = <N>
InputBufferSize = <N>
OutputBufferSize = <N>
MaxExceptions = <N>
Trace = none | log | xtrace | windows
InterMessageDelay = <N>
Readback = true | false
SrcAdr = <N>
GoodComReport = true | false
MaxPacketLength = <N>
DoNotCheck = true | false
Význam
Settings LinkDll | řetězec obsahující jméno DLL knihovny linkového
ovladače. | ComId | řetězec obsahující jméno komunikačního portu. | 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 | COMx'CWCOMM.DLL' | NumRepeat | Implicitní hodnota je
1. | Timeout | Implicitní hodnota je 300
ms. | SrcAdr | — | MaxPacketLength | Implicitní hodnota je
255. | InputBufferSize | Implicitní hodnota je
255 byte. | OutputBufferSize | Implicitní hodnota je
255 byte. | MaxExceptions | | Trace | 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. | InterMessageDelay | Implicitní hodnota se
nastavuje podle komunikační rychlosti. | Readback | | GoodComReport | true | DoNotCheck | je-li nastaven na hodnotu true,
eliminuje chybu ve firmware regulátoru, která způsobuje
nesprávný výpočet kontrolního součtu při čtení stavu
regulátoru. |
Příklad parametrů v sekci [Settings]:
[Settings]
ComDriver = CWCOMM.DLL COM1
NumRepeat = 2
Timeout = 250
SrcAdr = 1
MaxPacketLength = 260
InputBufferSize = 522
OutputBufferSize = 522
DoNotCheck = true
MaxExceptions = 1000
Trace = none
Konfigurace kanálů ovladače — sekce
[Channels]
Tato sekce definuje jednotlivé kanály nebo skupiny kanálů
ovladače a jejich reprezentaci v paměti regulátoru. Jednotlivé
kanály resp. skupiny kanálů se definují jako bloky. Blok je
definován intervalem kanálů, adresou regulátoru, a číslem
požadované funkce regulátoru pro přenos dat. Funkce může
vyžadovat doplňkové parametry pro bližší určení hodnoty. Tyto
doplňkové parametry jsou segment, index X, index Y a datový
typ hodnoty. Doplňkové parametry jsou závislé na dané
funkci.
Dále je možné zadat v definici kanálů ovladače další
rozšiřující parametry, které jsou nepovinné. 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
stejného kanálu — pak jsou v ovladači
vytvořeny dva zvláštní bloky, jeden pro čtení, druhý pro
zápis. Další nepovinný parametr určuje prohození pořadí byte u
typů zabírajících více než jeden byte v paměti regulátoru.
Každý blok může být dále opatřen vlastním identifikátorem.
Jeho význam je popsán dále. Součástí definice bloku může být i
komentář. Ten musí být uveden na samostatném řádku a musí
začínat středníkem.
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 resp.
nižší komunikační vrstvy tuto hodnotu dále upravují. 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.
Následuje způsob zápisu parametrů a jejich možné hodnoty.
Každé skupině (bloku) kanálů odpovídá jeden řádek textu. V
hranatých závorkách jsou uvedeny nepovinné nebo doplňující
parametry:
[Channels]
Block = <From>, <To>, <Con>, <Function>[, <Seg>, [, <IX>, <IY>], <Type>][, Id:<ID>][, Bidirect][, Swapbytes]
Block = ...
...
From | číslo prvního kanálu v bloku. | To | číslo posledního kanálu v bloku. | Con | identifikátor spojení (adresa stanice). | Function | kód komunikační služby regulátoru. Možné hodnoty jsou: IDENT | Blok s tímto funkčním kódem může obsahovat 1
až 3 řetězcové kanály, které obsahují název výrobce,
název typu zařízení a název verze zařízení
v pořadí, v jakém jsou zde uvedeny. Kanály
tohoto bloku jsou určeny pouze pro čtení. Pro tento blok
nejsou žádné doplňkové parametry. | VALUE | Blok obsahuje definici kanálů, které zpřístupní
jednoduchou hodnotu v regulátoru. Platí pravidlo,
že první kanál bloku obsahuje hodnotu prvku 0 (první
okruh), druhý kanál hodnotu prvku 1 (druhý okruh) atd.
Počet kanálů v bloku je tedy maximálně 4. Doplňkové
parametry jsou číslo segmentu, ve kterém se hodnota
nachází a číselný typ, který musí odpovídat dokumentaci
k regulátoru. | MVALUE | Blok obsahuje definici kanálů, které zpřístupní
jednu hodnotu z matice hodnot v regulátoru.
Opět platí pravidlo, že první kanál bloku obsahuje
hodnotu prvního okruhu, druhý kanál hodnotu druhého
okruhu atd. Počet kanálů v bloku je maximálně 4.
Doplňkové parametry jsou číslo segmentu, ve kterém se
hodnota nachází, index X, index Y a číselný typ podle
dokumentace k regulátoru. | STATUS | Tento blok definuje až 20 kanálů, které obsahují
status regulátoru. Je složen ze 4 skupin (pro každý
okruh jedna) po pěti kanálech s hodnotami:
chod regulace
akční zásah
žádaná hodnota
výstup relé
naměřená hodnota
Pro tento blok nejsou doplňkové parametry. |
| Seg | číslo segmentu v regulátoru. | IX | Index X hodnoty z matice | IY | Index Y hodnoty z matice | Type | typ dat v oblasti. Možné hodnoty jsou: uint8 | 8-bitové číslo bez znaménka | int8 | 8-bitové číslo se znaménkem | uint16 | 16-bitové číslo bez znaménka | int16 | 16-bitové číslo se znaménkem | uint32 | 32-bitové číslo bez znaménka | int32 | 32-bitové číslo se znaménkem | float32 | 32-bitové desetinné číslo podle normy
IEEE-754 |
| Bidirect | příznak toho, že blok slouží jak pro zápis, tak pro
čtení. Tento parametr je nepovinný. | SwapBytes | příznak, který určuje zda se prohazuje pořadí byte ve
slovech v rámci definovaného bloku. Tento parametr je
nepovinný. | Id | Name je jméno identifikátoru bloku.
Identifikátor slouží pro dynamickou změnu počáteční adresy
(čísla prvku) definovaného bloku za běhu aplikace. Změna
adresy se provádí pomocí procedur ovladače SetBlockId
a SetBlockOffset. Délka identifikátoru může být
max. 32 znaků. Tento parametr je nepovinný. |
Příklad parametrů v sekci [Channels]:
[Channels]
Block = 100, 102, 0, IDENT
Block = 200, 203, 0, VALUE, 6, uint8, Id:SensorType
Block = 204, 207, 0, VALUE, 1, float32, Id:MeasuredValue
Block = 300, 303, 0, VALUE, 0, float32, Id:ActuatingHit
Block = 400, 419, 0, STATUS
Block = 500, 503, 0, VALUE, 3, float32, Id:DesiredValue
Parametry spojení s připojenými jednotkami — sekce [Unit_n]
Parametry spojení
s připojenými jednotkami — sekce [Unit_n]Pokud
ovladač komunikuje s více zařízeními, která jsou připojena na jedné
sběrnici, může nastat případ, kdy je některé z nich nedostupné. To
může být způsobeno buď poruchou zařízení, jeho vypnutím, či odpojením a
pod. Jestliže tato situace nastane a aplikace požaduje po ovladači
výměnu dat s tímto zařízením, může dojít ke zpomalení běhu celé
aplikace vlivem čekání ovladače na odpověď od tohoto zařízení (po dobu
definovanou parametrem Timeout). Aby se zabránilo těmto
stavům, je ovladač vybaven možností nefungující zařízení logicky
odpojit. To znamená, že se zařízení z pohledu ovladače uvede do
vypnutého neboli odpojeného stavu. Nachází-li se zařízení
v odpojeném stavu, požadavky aplikace na komunikaci s ním
budou ovladačem ignorovány (budou ztraceny). Do odpojeného stavu může
být zařízení uvedeno buď uživatelsky (povelem z aplikace) nebo
automaticky po výskytu chyby komunikace (jestliže zařízení neodpovídá na
požadavky od ovladače). Připojení zařízení, které je v odpojeném
stavu se uskuteční automaticky po uplynutí předem definované doby
(parametr ovladače) nebo opět uživatelsky - povelem z aplikace.
Akce připojení nezpůsobí okamžitý požadavek na komunikaci, ale pouze
nastaví pro zařízení stav, kdy s ním ovladač může opět komunikovat
- zařízení přejde do stavu připojeno. Fyzicky se komunikace uskuteční až
v důsledku následující žádosti aplikace na přenos dat. Je-li
zařízení stále nedostupné, vznikne opět chyba komunikace a zařízení
přejde znovu do stavu odpojeno. Připojit nebo odpojit zařízení je
možno prostřednictvím kanálů ovladače č.28 a 29 nebo voláním procedur
ovladače UnitConnect a UnitDisconnect. Aby
bylo možné využívat zmíněné vlastnosti ovladače, je třeba pro každé
zařízení, ke kterému se má ovladač takto chovat, definovat zvláštní
sekci v souboru parametrů. Název sekce je složen z klíčového
slova Unit_ (se znakem podtržítko) a pořadového čísla sekce
v souboru parametrů, např. Unit_1. Číslování sekcí
musí začínat od jedničky a pokračovat v souvislé řadě. Číslo
v názvu sekce nemá nic společného s adresou
zařízení. Způsob zápisu parametrů a jejich možné
hodnoty: [Unit_<N>]
UnitAdr = <N>
StatusChannel = <N>
CheckTime = <N> 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ů: UnitAdr | Adresa resp. identifikátor zařízení, které může být logicky
odpojeno nebo připojeno. Tato adresa (identifikátor) musí souhlasit
s identifikátorem spojení v definicích bloků kanálů, kde
je odkaz na konkrétní připojené zařízení (fyzická adresa, IP adresa,
jméno zařízení apod. ) . | StatusChannel | Číslo kanálu, pomocí kterého je možno zjistit stav zařízení.
Typ kanálu je real. Je-li zařízení odpojeno kanál vrací
hodnotu 0. V opačném případě vrací hodnotu 1. | CheckTime | Doba po které bude odpojené zařízení znovu připojeno. Udává
se v sekundách. |
Příklad zápisu parametrů: [Unit_1]
UnitAdr = 15
StatusChannel = 1000
CheckTime = 60
Parametry linkové komunikační vrstvy — sekce [comm]
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: file | jméno souboru u parametru file | comdevice | název sekce u parametru device | N | číselná hodnota |
Popis jednotlivých parametrů: 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: 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 | 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. |
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 parametrů v sekci [comm]:
[comm]
baudrate = 9600
databits = 8
parity = even
stopbits = 1
rx_buffer = 512
tx_buffer = 512
rx_frame_buffer = 512
tx_frame_buffer = 512
cts_flow = disable
dsr_flow = disable
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
Kanály ovladače
Kanály ovladače — úvod
Kanály
ovladačeOvladač 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.
Vyhražené kanály ovladače
Vyhrazené kanály 1
až 9Kromě uživatelsky definovaných kanálů, viz sekce [Channels],
má ovladač skupinu kanálů, které jsou pevně definovány. Tyto kanály jsou
vyhrazeny pro poskytování stavových informací o ovladači a pro řízení
jeho činnosti. Jsou mapovány do intervalu 1 až 99. Proto kanály
s těmito čísly nepoužívejte v definici bloků pro
komunikaci:
- č.1 (real input)
stav výjimky od ovladače
- č.2 (boolean output)
povolení výjimky od ovladače
- č.3 (real input)
počet zpracovaných výjimek od ovladače
- č.4 (real input)
počet nezpracovaných výjimek, které má ovladač ve
frontě
- č.5 (real input)
adresa stanice, která způsobila výjimku
- č.6 (real input)
chybový kód
- č.7 (string input)
popis chyby
- č.8 (real input)
číslo prvního kanálu bloku, při jehož přenosu vznikla
chyba
- č.9 (real input)
číslo posledního kanálu bloku, při jehož přenosu vznikla
chyba
- č.10 (real input)
kód oblasti, při jejímž přenosu vznikla
chyba: Hodnota | Význam |
---|
1 | Data dostupná pomocí komunikační služby IDENT. | 2 | Oblast jednoduchých hodnot (VALUE). | 3 | Oblast maticových hodnot (MVALUE). | 4 | Oblast popisující stav regulátoru (STATUS). |
Vyhrazené kanály
11 až 15
- č.11 (real input)
počet chyb čtení
- č.12 (boolean output)
vynulování počítadla chyb čtení
- č.13 (real input)
počet chyb zápisu
- č.14 (boolean output)
vynulování počítadla chyb zápisu
- č.15 (real input)
celkový počet opakování požadavků na komunikaci
Vyhrazené kanály
28 a 29
- č.28 (string/real output)
logické připojení zařízení. Zápisem adresy resp.
identifikátoru zařízení do tohoto kanálu dojde k jeho
připojení.
- č.29 (string/real output)
logické odpojení zařízení. Zápisem adresy resp.
identifikátoru zařízení do tohoto kanálu dojde k jeho
odpojení.
Automatická konverze typů
Při definování kanálů ovladače je nutno kromě zápisu bloků
v souboru parametrů vytvořit také soubor '*.DMF',
který obsahuje seznam kanálů a jejich typů pro aplikaci.
Ovladač nevyžaduje striktní dodržování stejných typů v
definici bloků a souboru '*.DMF'. Pouze
doporučujeme aby kanály typu boolean (logické) v
souboru '*.DMF' měly své protějšky v blocích v
souboru '*.PAR' jako některý z bitových typů.
Ostatní číselné typy se mohou kombinovat. Např. v souboru
'*.DMF' mohou být všechny číselné kanály typu
real a v blocích ovladače mohou být uvedeny třeba
jako int16.

Příklad automatické konverze typu int16 na
real.
Procedury ovladače
Procedury ovladače — úvod
Procedury
ovladačeAplikace 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: system.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)
- GetResult
-
Vrátí výsledek naposledy volané
procedury ovladače. Výsledkem je některý z chybových kódů, popsaných v
kapitole Chybové kódy. Tato procedura by se
měla volat po volání těch procedur, u kterých může nastat
chyba.
- GetVersion
-
Vrátí v Param2 řetězec popisující
jméno a verzi ovladače.
- GetMajorVersion
-
Vrátí vyšší slovo verze
produktu Control Web.
- GetMinorVersion
-
Vrátí nižší slovo verze
produktu Control Web.
- GetAPIMajorVersion
-
Vrátí vyšší slovo verze API
produktu Control Web.
- GetAPIMinorVersion
-
Vrátí nižší slovo verze API
produktu Control Web.
- EnableException
-
Voláním této procedury se
povolí další výjimka od ovladače.
- GetErrorCode
-
Vrátí číslo chyby právě
zpracovávané výjimky ovladače.
- GetErrorString
-
Vrátí popis chyby právě
zpracovávané výjimky ovladače.
- GetExcStatus
-
Vrátí kód právě zpracovávané
výjimky ovladače.
- SetTraceOutput
-
Nastaví cíl trasovacích výpisů komunikace. Parametr udává
cíl výpisů: Hodnota | Význam |
---|
0 | žádné trasovací výpisy | 1 | výpisy jsou nasměrovány do ladicího okna systému
Windows | 2 | výpisy jsou nasměrovány do Okna zpráv záložky
Ladicí výpisy systému Control Web | 3 | výpisy jsou nasměrovány do souboru
'\XTRACE.TXT' |
- SetDevice
-
Nastaví jméno COM portu pro otevření
pomocí procedury OpenCom.
- GetDevice
-
Vrátí aktuální jméno COM portu
(nemusí se shodovat se jménem nastaveným pomocí procedury SetDevice).
- OpenCom
-
Otevře COM port definovaný procedurou
SetDevice a vrací popis chyby.
- CloseCom
-
Zavře aktuální COM
port.
- IsOpen
-
Vrátí aktuální stav COM portu — otevřen/zavřen.
- SetComParams
-
Nastaví parametry COM portu.
Parametr je ve tvaru: 'baud=n, data=n, parity=n, stop=n'.
- GetComParams
-
Vrátí aktuální parametry COM
portu.
- SetBaudRate
-
Nastaví komunikační rychlost, např.
19200.
- GetBaudRate
-
Vrátí aktuální komunikační
rychlost.
- SetDataBits
-
Nastaví počet datových bitů
komunikace. Možné hodnoty jsou 5, 6, 7, 8.
- GetDataBits
-
Vrátí počet datových
bitů.
- SetParity
-
Nastaví paritu přenosu: Hodnota | Význam |
---|
0 (none) | bez parity | 1 (odd) | lichá | 2 (even) | sudá | 3 (mark) | značka | 4 (space) | mezera |
- GetParity
-
Vrátí aktuální paritu přenosu.
Hodnoty jsou stejné jako u procedury SetParity.
- SetStopBits
-
Nastaví počet stop bitů komunikace: Hodnota | Význam |
---|
0 | 1 stop bit | 1 | 1.5 stop bitu | 2 | 2 stop bity |
- GetStopBits
-
Vrátí aktuální počet stop bitů
komunikace.
- SetTimeout
-
Nastaví timeout komunikace v
milisekundách. Je to doba, kterou ovladač čeká po odeslání požadavku na
odpověď od zařízení. Pokud odpověď do této doby nepřijde, vznikne chyba
timeout.
- GetTimeout
-
Vrátí aktuální hodnotu timeoutu
komunikace.
- SetBlockId
-
Nastaví identifikátor aktuálního
bloku kanálů pro změnu adresy (offsetu) v paměti PLC. Parametr je typu
string a předává se v něm identifikátor bloku (maximálně 32
znaků). Tento identifikátor musí být shodný s identifikátorem v definici
bloků v souboru parametrů.
- SetBlockOffset
-
Nastavuje adresu (offset)
začátku bloku v paměti PLC. Blok je určen svým identifikátorem v souboru
parametrů a vybrán pomocí procedury SetBlockId. Parametr
udává adresu a může být libovolného číselného
typu. Upozornění: Rozsah parametru se
nehlídá.
- UnitConnect
-
Připojí odpojené zařízení. Parametr
udává adresu zařízení.
- UnitDisconnect
-
Odpojí připojené zařízení.
Parametr udává adresu zařízení.
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].
Typ dat |
Typ kanálu |
Popis |
uint32 |
číslo |
32bitová hodnota bez znaménka — 4
byte |
int32 |
číslo |
32bitová hodnota se znaménkem — 4
byte |
float32 |
číslo |
32bitová real hodnota — 4
byte |
|
uint16 |
číslo |
16bitová hodnota bez znaménka — 2
byte |
int16 |
číslo |
16bitová hodnota se znaménkem — 2
byte |
|
uint8 |
číslo |
8bitová hodnota bez znaménka — 1
byte |
int8 |
číslo |
8bitová hodnota se znaménkem — 1
byte |
Přehled datových typů ovladače
Zpracování a stavy výjimek ovladače
Zpracování a
stavy výjimek ovladačePř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 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 třeba zapsat na kanál č.2 hodnotu true nebo zavolat proceduru
ovladače EnableException. Tím se povolí vyvolání další
výjimky, jakmile nastane nebo pokud není fronta výjimek prázdná.
Přečtením kanálu č.1 je možno zjistit stav
výjimky. Při použití kanálu č.2 je třeba
pamatovat na to, aby měl virtuální přístroj nastaven parametr send_same_data.
Pokud aplikace výjimky nezpracovává, přidávají se do fronty, jejíž
maximální velikost je určena parametrem MaxExceptions
v sekci [Settings].
Kódy pro stavy výjimek ovladače
Kódy
výjimek ovladače0 | žádná výjimka od ovladače | 1 | výjimka signalizuje chybu při čtení dat. Její kód a popis je
možno získat voláním procedury ovladače GetErrorCode
nebo čtením kanálu č.6. | 2 | výjimka signalizuje chybu při zápisu dat. Její kód a popis je
možno získat voláním procedury ovladače GetErrorCode
nebo čtením kanálu č.6. | 3 | změna dat v zařízení. U asynchronních komunikací nebo v
případě, že ovladač vystupuje jako podřízená stanice (slave), se
takto signalizuje změna dat v zařízení. | 4 | chyba procedury ovladače. Vykonání některých procedur
ovladače může zabrat poměrně dlouhou dobu. Proto běží zpravidla ve
zvláštním threadu, aby nezdržovaly běh aplikace. Pokud procedura
skončí chybou, způsobí generování výjimky s tímto kódem. |
Chybové kódy
Chybové
kódyOvladač generuje následující chybové kódy. Tyto kódy jsou
k dispozici na kanále č.6. Kód a popis
chyby je také možno získat voláním procedur ovladače GetErrorCode
a GetErrorString. Při vzniku chyby se současně vypíše
hlášení do Okna zpráv systému Control Web. Kódy definované systémem Control Web Hodnota | Význam |
---|
0 | úspěšná operace | 1 | chyba timeoutu | 2 | neplatná hodnota | 3 | neexistující kanál |
Obecné chybové kódy ovladače Hodnota | Význam |
---|
1000 | vnitřní chyba | 1001 | chyba kontrolního součtu | 1002 | vstupní komunikační buffer je plný | 1003 | nesprávná adresa stanice | 1004 | nesprávný kód povelu (funkce) | 1005 | přijatá data mají nesprávnou délku | 1006 | chyba potvrzení | 1007 | nesprávná odpověď | 1008 | chyba otevření COM portu | 1009 | chyba zavření COM portu | 1010 | chyba nastavení zařízení | 1011 | chyba nastavení COM parametrů | 1012 | chyba nastavení rychlosti | 1013 | chyba nastavení délky slova | 1014 | chyba nastavení parity | 1015 | chyba nastavení stop bitů | 1016 | chyba nastavení timeoutu | 1017 | chyba zápisu bloku | 1018 | výstupní fronta je plná | 1019 | vstupní fronta je plná | 1020 | nesprávný parametr procedury | 1021 | data nejsou k dispozici | 1022 | neznámá procedura ovladače | 1023 | nesprávný identifikátor bloku | 1024 | neplatný offset bloku | 1025 | zařízení není připojeno | 1026 | datový element je určen pouze pro čtení | 1027 | neplatný číselný rozsah datového elementu nebo nesprávný
formát dat v textovém tvaru | 1028 | neplatné záhlaví rámce |
Příklad použití ovladače
Součástí instalace je několik příkladů použití ovladače. Tyto
příklady naleznete v adresáři 'EXAMPLES\MRS04'.
Součástí příkladů jsou také soubory '*.DMF' a
'*.PAR'. Před spuštěním příkladů si nejprve tyto
soubory upravte podle aktuální konfigurace.
|