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
Vlastnosti ovladače
Ovladač umožňuje připojení jednoho nebo více přístrojů
A.P.O. - ELMOS 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 se všemi typy přístrojů MRS 01, MRS 04 a
APOSYS, popřípadě dalšími se shodným protokolem.
Při komunikaci s více regulátory je možno logicky
odpojit regulátory, které jsou momentálně nedostupné.
Činnost ovladače
Ovladač slouží ke komunikaci systému Control Web s přístroji MRS 01, MRS 04 a APOSYS ve všech
jejich modifikacích. Dále umožňuje komunikovat s novými
přístroji, které mají shodný komunikační protokol s některým
přístrojem z uvedených skupin. Pomocí ovladače je možno číst
nebo zapisovat všechny dostupné hodnoty parametrů a aktuální data.
Při komunikaci s přístroji A.P.O. - ELMOS ovladač používá
následující komunikační služby:
Ovladač interpretuje parametry a aktuální hodnoty přístrojů
jako svoje kanály. Vždy se jedná o kanály číselného typu.
Číselný rozsah je dán typem hodnoty v přístroji.
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 přístroje. 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
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. Upozornění: U názvů
sekcí a parametrů je třeba dodržet správný zápis velkých a malých
písmen.
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]
ComDriver = <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>
FinalizeAfterEachBlock = true | false
DoNotCheck = true | false
Základní syntaktické kategorie použité v konfiguraci
ovladače: Objekt | Popis |
---|
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ů: Parametr | Význam |
---|
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'. | NumRepeat | počet opakování požadavků na komunikaci
po výskytu chyby. Implicitní hodnota je
1. | Timeout | čas čekání na odezvu v milisekundách.
Nedojde-li do této doby odpověď od zařízení, bude vrácena do aplikace
chyba komunikace. Implicitní hodnota je 300
ms. | SrcAdr | vlastní adresa — adresa této stanice (počítače). | MaxPacketLength | maximální délka přenášeného bloku.
Nastavuje se v bytech. Implicitní hodnota je
255. | InputBufferSize | velikost přijímacího komunikačního
bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je
255 byte. | OutputBufferSize | velikost vysílacího komunikačního
bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je
255 byte. | MaxExceptions | velikost fronty pro nezpracované
výjimky od ovladače. Implicitní nastavení je
4 096. | 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ů Povolené hodnoty nastavení
parametru jsou popsány dále. | InterMessageDelay | minimální časová prodleva před
následujícím požadavkem na komunikaci v milisekundách. Ovladač nezahájí
další komunikaci dříve než uplyne nastavený čas od naposledy přijaté
odpovědi zařízení. Implicitní hodnota se
nastavuje podle komunikační rychlosti. | Readback | parametr slouží k automatickému
filtrování zpráv, které se dostávají zpět na vstup přijímače při
vysílání. To může nastávat například u některých starších typů
převodníků RS-232/RS-485. Dále je možno tento parametr použít
u zařízení, která přijatou zprávu vysílají nazpět
(echo). | GoodComReport | je-li tento parametr nastaven na
hodnotu true, bude se při obnovení komunikace po chybě
generovat výjimka od ovladače. Stav výjimky bude 1 nebo 2 pro čtení
resp. pro zápis a kód výjimky bude 0 (úspěšná operace). | 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. | DoNotCheck | je-li nastaven na hodnotu true,
eliminuje chybu ve firmware u některých regulátorů MRS
04, která způsobuje nesprávný výpočet kontrolního součtu při
čtení stavu regulátoru. |
Možné hodnoty nastavení parametru Trace
jsou: Hodnota | Význam |
---|
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.
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 přístroje.
Jednotlivé kanály resp. skupiny kanálů se definují jako bloky.
Blok je definován intervalem kanálů, adresou přístroje, typem
přístroje a jménem požadované funkce pro přenos dat. Funkce
může vyžadovat doplňkové parametry pro bližší určení hodnoty.
Tyto doplňkové parametry jsou pro přístroje MRS 04-1xxx a MRS
04-3xxx segment, index X, index Y a datový typ hodnoty. Pro
ostatní přístroje jsou to čísla tabulek a jména datových
struktur, které popisují typy dat v tabulkách a blocích
se stavy přístrojů. 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 přístroje. 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.
Dále následuje popis zápisu parametrů a jejich možné
hodnoty. Každé skupině (bloku) kanálů odpovídá v parametrickém
souboru jeden řádek textu. V hranatých závorkách jsou
uvedeny nepovinné nebo doplňující parametry:
[Channels]
Block = <From>, <To>, <Con>, <Device>, <Function> [, Id:<ID>] [, Bidirect] [, Swapbytes]
Block = ...
...
Device = APOSYS02 | APOSYS10 | APOSYS20 | APOSYS30 | APOSYS40 |
MRS01_1 | MRS04_1 | MRS04_3 | MRS04_4 | MRS04_5 | MRS04_D
Function = IDENT | VERSION | STATUS <StructName> |
VALUE, <Seg>, <Type> |
MVALUE, <Seg>, <IX>, <IY>, <Type> |
TC, <Table>, <StructName> |
SYNC | SYNCREAD, <StructName> |
EEPROM
Význam jednotlivých parametrů: Parametr | Význam |
---|
From | číslo prvního kanálu v bloku. | To | číslo posledního kanálu v bloku. | Con | identifikátor spojení (adresa přístroje). | Device | typ přístroje. | Function | kód komunikační služby přístroje s doplňujícími
parametry. | Seg | číslo segmentu v regulátoru. | IX | Index X hodnoty z matice. | IY | Index Y hodnoty z matice. | Type | typ dat v oblasti. | StructName | jméno datové struktury, která popisuje typy dat
v bloku. Jednotlivé datové struktury se definují
v samostatné sekci [Structures]. | 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ý. Tento parametr je automaticky nastaven
u některých přístrojů, které mají byte ve slovech
v pořadí MSB..LSB. | 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ý. |
Možné hodnoty parametru Function
jsou: Hodnota | Význam |
---|
IDENT | Blok s tímto funkčním kódem může obsahovat tři
nebo jeden řetězcový kanál. U přístrojů MRS 04-1x a MRS
04-3x obsahují tři kanály bloku název výrobce, název typu
zařízení a název verze zařízení v pořadí, v jakém
jsou zde uvedeny. U ostatních přístrojů blok obsahují
pouze jeden kanál s názvem typu zařízení. Kanály tohoto
bloku jsou určeny pouze pro čtení. Pro tento blok nejsou
žádné doplňkové parametry. | VERSION | Blok obsahuje 1 řetězcový kanál, který obsahuje verzi
firmware. Kanál tohoto bloku je určen pouze pro čtení. Pro
tento blok nejsou žádné doplňkové parametry. | STATUS | Blok může obsahovat volitelný počet kanálů (podle
typu přístroje), které obsahují stav přístroje. Jednotlivé
typy kanálů bloku musí být popsány strukturou, která je
definována v sekci [Structures] a je
specifická pro každý typ přístroje. Počet kanálů bloku musí
odpovídat počtu prvků ve struktuře. Velikost přijatého bloku
dat musí souhlasit s velikostí struktury. Jméno
struktury musí být uvedeno jako doplňkový parametr. Kanály
tohoto bloku jsou určeny pouze pro čtení. | VALUE | Blok obsahuje definici kanálů, které zpřístupní
jednoduchou hodnotu v regulátorech MRS 04-1xxx a MRS
04-3xxx. 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átorech MRS 04-1xxx
a MRS 04-3xxx. 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. | TC | Blok definuje kanály, které zpřístupní hodnoty
z tabulek u přístrojů, které tuto funkci
podporují. Dalším parametrem musí být číslo tabulky a jméno
struktury, která popisuje datové typy u jednotlivých
položek tabulky. Struktura musí být definována v sekci
[Structures] a je specifická pro každou tabulku
a každý typ přístroje. Počet kanálů bloku musí odpovídat
počtu prvků ve struktuře. | SYNC | Blok obsahuje jediný kanál (boolean),
který slouží k vyslání povelu pro synchronizovaný
sběr dat. Pokud je adresa přístroje v definici bloku
nastavena na hodnotu v intervalu 0 až 126, tak při
zápisu do tohoto kanálu proběhne synchronizace pouze
v přístroji, s touto adresou. Pokud je nastavena
adresa na hodnotu 127, dojde k synchronizaci dat
u všech přístrojů, které tuto funkci podporují. Ve
druhém případě je třeba uvést jako parametr
Device libovolný typ přístroje, který tuto
funkci podporuje. | SYNCREAD | Podobně jako u služby (funkce) STATUS
je i vtomto bloku volitelný počet kanálů. Kanály tohoto
bloku slouží k načtení synchronizovaných hodnot,
získaných předchozím zápisem do kanálu pro synchronizaci dat
(služba SYNC). Také zde musí být typy kanálů
bloku popsány strukturou, která je definována v sekci
[Structures] a je specifická pro každý typ
přístroje. Počet kanálů bloku musí odpovídat počtu prvků ve
struktuře. Velikost přijatého bloku dat musí souhlasit
s velikostí struktury. | EEPROM | Blok obsahuje jediný kanál (boolean),
který slouží k vyslání povelu pro uložení aktuálních
dat z paměti RAM dat do paměti EEPROM. To se provede
zápisem hodnoty true do tohoto kanálu. |
Možné hodnoty parametru Device
jsou: Hodnota | Význam |
---|
APOSYS02 | přístroje APOSYS 02 | APOSYS10 | přístroje APOSYS 10 | APOSYS20 | přístroje APOSYS 20 | APOSYS30 | přístroje APOSYS 30 | APOSYS40 | přístroje APOSYS 40 | MRS01_1 | přístroje MRS 01 | MRS04_1 | přístroje MRS 04-1xxx | MRS04_3 | přístroje MRS 04-3xxx | MRS04_4 | přístroje MRS 04-4xxx | MRS04_5 | přístroje MRS 04-5xxx | MRS04_D | přístroje MRS 04-DIN a MRS 04-DIN EKVI |
Možné hodnoty parametru Type
jsou: Hodnota | Význam |
---|
uint8 | 8bitové číslo bez znaménka | int8 | 8bitové číslo se znaménkem | uint16 | 16bitové číslo bez znaménka | int16 | 16bitové číslo se znaménkem | uint32 | 32bitové číslo bez znaménka | int32 | 32bitové číslo se znaménkem | float32 | 32bitové desetinné číslo podle normy
IEEE-754 |
Příklad parametrů v sekci [Channels]:
[Channels]
Block = 1100, 1102, 11, MRS04_1, IDENT
Block = 1200, 1203, 11, MRS04_1, VALUE, 3, float32
Block = 1204, 1207, 11, MRS04_1, VALUE, 4, float32
Block = 1208, 1211, 11, MRS04_1, VALUE, 1, float32
Block = 1300, 1303, 11, MRS04_1, VALUE, 0, float32
Block = 1400, 1419, 11, MRS04_1, STATUS, StatusMRS04_1
Block = 1500, 1503, 11, MRS04_1, VALUE, 3, float32
Block = 1504, 1507, 11, MRS04_1, VALUE, 4, float32
Block = 2100, 2100, 12, APOSYS30, IDENT
Block = 2101, 2101, 12, APOSYS30, VERSION
Block = 2400, 2401, 12, APOSYS30, STATUS, StatusAPOSYS30
Block = 2200, 2201, 12, APOSYS30, TC, 0, Table0
Block = 2202, 2206, 12, APOSYS30, TC, 1, Table1
Block = 2502, 2506, 12, APOSYS30, TC, 1, Table1
Block = 2207, 2208, 12, APOSYS30, TC, 2, Table2
Block = 2507, 2508, 12, APOSYS30, TC, 2, Table2
Block = 2209, 2209, 12, APOSYS30, TC, 5, Table5
Block = 2509, 2509, 12, APOSYS30, TC, 5, Table5
Definice struktur — sekce [Structures]
Tato sekce popisuje datové struktury, které jsou použity
v sekci [Channels] v definici typů
u bloků kanálů, které zpřístupňují stav přístrojů, data
tabulek a synchronizovaná data (funkce STATUS,
TC a SYNCREAD). Jinými slovy, jsou
použity všude tam, kde se najednou přenášejí data různých
typů. Každá struktura musí mít svůj jednoznačný identifikátor
(jméno) a seznam jednotlivých jednoduchých typů všech položek
tak, jak jsou přenášeny za sebou mezi přístrojem a počítačem
resp. tak, jak jsou uloženy v paměti přístroje.
Následuje způsob zápisu struktur:
[Structures]
<StructName> = <Type>, <Type>, ...
<StructName> = ...
...
Význam paramterů pro definici struktur je
následující: Parametr | Význam |
---|
StructName | jméno datové struktury. Musí být jednoznačné a jeho
maximální délka může být 32 znaků. | Type | datový typ položky struktury. |
Možné datové typy v položce
Type jsou: Hodnota | Význam |
---|
uint8 | 8bitové číslo bez znaménka | int8 | 8bitové číslo se znaménkem | uint16 | 16bitové číslo bez znaménka | int16 | 16bitové číslo se znaménkem | uint32 | 32bitové číslo bez znaménka | int32 | 32bitové číslo se znaménkem | float32 | 32bitové desetinné číslo podle normy
IEEE-754 |
Příklad parametrů v sekci [Structures]:
[Structures]
Status = float32,uint8
Table0 = float32[2]
Table1 = uint8[4], uint16
Table2 = float32[2]
Table3 = float32[3]
Table4 = float32[2]
Table5 = uint8
Table6 = uint8
Table7 = uint8
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ásleduje výčet a popis jednotlivých parametrů: Parametr | Význam |
---|
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]
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 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
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].
Vyhrazené kanály ovladače
Kromě 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 funkce, při jejímž přenosu vznikla chyba:
Hodnota | Význam |
---|
1 | IDENT — přístroje
MRS04_1, MRS04_3. | 2 | IDENT — přístroje
APOSYS02, APOSYS10, APOSYS20,
APOSYS30, APOSYS40, MRS01_1,
MRS04_4, MRS04_5, MRS04_D.
| 3 | VALUE — přístroje
MRS04_1, MRS04_3. | 4 | MVALUE — přístroje
MRS04_1, MRS04_3. | 5 | STATUS — přístroje
MRS04_1, MRS04_3. | 6 | STATUS — přístroje
APOSYS02, APOSYS10, APOSYS20,
APOSYS30, APOSYS40, MRS01_1,
MRS04_4, MRS04_5, MRS04_D. | 7 | VERSION — přístroje APOSYS02, APOSYS10,
APOSYS20, APOSYS30, APOSYS40,
MRS01_1, MRS04_4, MRS04_5,
MRS04_D. | 8 | TC — přístroje
APOSYS30, APOSYS40. | 9 | TC — přístroje
APOSYS02, APOSYS20, MRS04_4,
MRS04_5, MRS04_D. | 10 | TC — přístroje
APOSYS10, MRS01_1. | 11 | SYNC — přístroje
APOSYS02, APOSYS10, APOSYS20,
MRS01_1, MRS04_4, MRS04_5,
MRS04_D. | 12 | SYNCREAD — přístroje APOSYS02, APOSYS10,
APOSYS20, MRS01_1, MRS04_4,
MRS04_5, MRS04_D. | 13 | EEPROM — přístroje
APOSYS10, APOSYS20, MRS01_1,
MRS04_4, MRS04_5, MRS04_D. |
- č. 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
- č. 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
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)
- 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
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 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
Hodnota | Význam |
---|
0 | žá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
Ovladač 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\APOELMOS'.
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.
|