Ovladač TECOMAT je určen pro spojení systému Control Web s průmyslovými automaty Tecomat od výrobce Teco Kolín.
Komunikuje buď přes standardní sériové rozhraní počítače RS-232
(RS-485,RS422) nebo prostřednictvím sítě ETHERNET.
Vlastnosti ovladače
Ovladač umožňuje připojení jednoho nebo více průmyslových
automatů (PLC) Tecomat k systému Control Web.
Komunikace přes standardní sériové rozhraní počítače
RS-232, popřípadě RS-485, RS-422 (s použitím vhodného
převodníku).
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 možno v aplikaci definovat víc
ovladačů.
Možnost komunikace prostřednictvím sítě
ETHERNET.
Čtení a zápis dat registrů R, S, X, Y a DB (databox)
pomocí služeb READN a WRITEN.
Nastavení jednotlivých bitů v registrech R, S, X, Y a DB
pomocí služeb WRITEB.
Čtení stavového slova (SW).
Zápis řídicího slova (CW).
Nastavení nebo synchronizace času v PLC.
Upozornění: Tento ovladač (verze 4) nelze přímo nahradit namísto
staršího ovladače Tecomat (verze 3). Důvodem je jiný způsob zápisu
parametrů a odlišná množina interních (systémových) kanálů (1 až
15).
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
Ovladač komunikuje s připojenými PLC Tecomat buď přes
standardní sériové rozhraní počítače RS-232 nebo přes rozhraní
RS-485, RS-422 (s použitím speciální karty do počítače nebo
externího převodníku) anebo prostřednictvím sítě ETHERNET.
Pomocí ovladače je možno číst nebo zapisovat data z paměťových
registrů (oblastí) R, S, X, Y a DB (databox) - využívá k tomu
služby READN a WRITEN. Navíc je možno nastavovat jednotlivé bity
těchto registrů pomocí služby WRITEB. Dále je možno číst stavové
slovo PLC (služba GETSW), zapisovat řídicí slovo PLC (SETCW) a
nastavovat v něm čas (SETTID).
Ovladač interpretuje jednotlivé registry nebo skupiny registrů
jako svoje kanály, což jsou číselné nebo logické hodnoty. Číselné
kanály mohou být různých typů (int8, uint8,
int16, uint16, float32,
...), podle toho kolik registrů zabírají. Logické kanály mohou být
také různých typů (bits, sbit, bool8)
podle toho, jestli se jedná o jednotlivé bity registru nebo o celé
registry (nulová hodnota = false, nenulová hodnota =
true). Datové kanály ovladače (jejich počet a typ) se
konfigurují v souboru parametrů podle požadavků uživatele. Zdrojem
nebo cílem dat v PLC jsou oblasti registrů (R, S, X, Y, DB, CW,
SW) a dále pomocné oblasti (TIME a SYNCTIME), které slouží pro
nastavení času v PLC. Datové kanály ovladače (jejich počet a typ)
se konfigurují v souboru parametrů podle požadavků uživatele.
Existuje-li možnost připojení více zařízení - stanic na jedno
komunikační 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 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
SwapBytes = true | false
FinalizeAfterEachBlock = false | true
Ethernet = true | false
MaxPacketLength = <N>
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ů: 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. Tato hodnota by se měla měnit pouze na základě znalostí
komunikačního protokolu připojeného zařízení. | InputBufferSize | velikost přijímacího komunikačního
bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je
255 byte pro sériovou komunikaci nebo 1440 byte pro
komunikaci přes ETHERNET. | OutputBufferSize | velikost vysílacího komunikačního
bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je
255 byte pro sériovou komunikaci nebo 1440 byte pro
komunikaci přes ETHERNET. | SwapBytes | příznak, který určuje zda se prohazuje
pořadí byte ve slově. Tento příznak je globální pro všechny bloky. Pokud
bude nastaven na false nebo nebude uveden, je možno nastavit
individuálně přehazování byte v rámci bloků kanálů. | MaxExceptions | velikost fronty pro nezpracované
výjimky od ovladače. Implicitní nastavení je
4 096. | 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. | 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: 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. | 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í. Nastavuje se
automaticky podle komunikační rychlosti. U komunikace
přes ETHETRNET se neuplatňuje. | 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). | Ethernet | je-li tento parametr nastaven na hodnotu true,
bude ovladač komunikovat přes ETHERNET a bude vyžadovat
zadání IP adresy v definicích bloků kanálů. Sekce
[comm] nemusí být v tomto případě
uvedena. |
Příklad parametrů v sekci [Settings]:
[Settings]
ComDriver = CWCOMM.DLL COM1
NumRepeat = 2
Timeout = 350
SrcAdr = 20H
Ethernet = false
SwapBytes = false
MaxExceptions = 1000
FinalizeAfterEachBlock = false
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 PLC. Skupiny se
definují po jednotlivých blocích. Blok je definován intervalem
kanálů, identifikátorem spojení (adresou), datovou oblastí v
PLC, datovým typem, a počáteční adresou v dané oblasti. 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 PLC. 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>, <Area>, <Type>, <Adr> [,Bidirect] [,SwapBytes] [,Id:<Name>]
Block = ...
...
From | číslo prvního kanálu v bloku. | To | číslo posledního kanálu v bloku. | Con | identifikátor spojení. Komunikuje-li ovladač přes
sériové rozhraní, uvede se adresa PLC. V případě, že se
komunikuje přes ETHERNET, má identifikátor spojení tvar:
<PLCAdr>@<IPAdr>[:<IPPort>] PLCAdr | Adresa PLC (nebude-li komunikace fungovat, uvede
se 0). | IPAdr | IP adresa PLC. | IPPort | IP port PLC. Tento parametr je nepovinný
v případě, že je použit implicitní port
61682. |
| Area | kód oblasti. Možné hodnoty jsou: X | registry X. | Y | registry Y. | R | registry R. | S | registry S. | DB | registry databoxu. | TIME | oblast kanálů pro nastavení času. Blok by měl mít
délku 7 kanálů a typ by měl být uint8. Do této oblasti
je možno pouze zapisovat. Parametr Offset se
neuplatňuje. Posloupnost kanálů v bloku má následující
význam:
rok (0 až 99)
měsíc (1 až 12)
den (1 až 31)
hodina (0 až 23)
minuta (0 až 59)
sekunda(0 až 59)
den v týdnu (1 - pondělí až 7 -
neděle)
| SYNCTIME | fiktivní oblast pro synchronizaci času podle času
počítače. Na počtu kanálů nezáleží. Musí být alespoň
jeden. Do této oblasti je možno pouze zapisovat. Zápisem
libovolné hodnoty do kanálu se v PLC nastaví aktuální
čas z počítače. Parametr Offset se neuplatňuje. | CW | řídící registr PLC. Délka bloku musí být alespoň
2 byte (např. jeden kanál typu uint16 nebo
dva kanály typu uint8 anebo 16 kanálů typu
bits). Do této oblasti je možno pouze
zapisovat. Parametr Offset se neuplatňuje. | SW | stavový registr PLC. Tato oblast je určena pouze
pro čtení. Parametr Offset se neuplatňuje. |
| Type | typ dat v oblasti. Možné hodnoty jsou: bits | 8 boolean kanálů v jednom byte
paměti. Typ bits pracuje vždy s celým byte
v paměti PLC. Je-li nastaven tento typ, pak bude
nejmenší přenesené množství dat 1 byte. | sbit | tento typ slouží pro nastavení (zápis)
jednotlivých bitů v dané oblasti. Při zápisu více než 8
bitů najednou je efektivnější použít typ bits.
Při čtení dat typu sbit z PLC se bude
komunikovat stejně jako u typu bits po
celých byte. | bool8 | jeden boolean kanál v jednom byte
paměti PLC. Nulová hodnota je false,
nenulová hodnota je true. | 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 | uint64 | 64-bitové číslo bez znaménka | int64 | 64-bitové číslo se znaménkem |
| Adr | počáteční adresa v datové oblasti. Adresace je po
jednotlivých byte. | 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
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] pro
sériový ovladač:
[Channels]
Block = 100, 149, 1, S, uint8, 6
Block = 150, 156, 1, TIME, uint8
Block = 157, 157, 1, SYNCTIME, uint8
Block = 160, 175, 1, SW, bits
Block = 176, 176, 1, SW, uint16
Block = 180, 195, 1, CW, bits
Block = 196, 196, 1, CW, uint16
Block = 200, 299, 1, R, uint32, 100, Id:Inputs
Block = 300, 399, 1, R, uint32, 100, Id:Outputs
Block = 400, 499, 1, R, bits, 100
Block = 500, 599, 1, R, bits, 100
Block = 600, 699, 1, Y, bits, 0
Block = 700, 799, 1, Y, sbit, 0
Příklad parametrů v sekci [Channels] pro
síťový ovladač:
[Channels]
Block = 100, 149, 00@192.168.0.1, S, uint8, 6
Block = 150, 156, 00@192.168.0.1, TIME, uint8
Block = 157, 157, 00@192.168.0.1, SYNCTIME, uint8
Block = 160, 175, 00@192.168.0.1, SW, bits
Block = 176, 176, 00@192.168.0.1, SW, uint16
Block = 180, 195, 00@192.168.0.1, CW, bits
Block = 196, 196, 00@192.168.0.1, CW, uint16
Block = 200, 299, 00@192.168.0.1, R, uint32, 100, Id:Inputs
Block = 300, 399, 00@192.168.0.1, R, uint32, 100, Id:Outputs
Block = 400, 499, 00@192.168.0.1, R, bits, 100
Block = 500, 599, 00@192.168.0.1, R, bits, 100
Block = 600, 699, 00@192.168.0.1, Y, bits, 0
Block = 700, 799, 00@192.168.0.1, Y, sbit, 0
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 = 19200
parity = even
databits = 8
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
Sekce [comm] nemusí být uvedena
v případě, že ovladač komunikuje přes ETHERNET.
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 oblasti, při jejímž přenosu vznikla
chyba: Hodnota | Význam |
---|
0 | oblast X | 1 | oblast Y | 2 | oblast S | 3 | oblast R | 4 | oblast DB | 5 | oblast TIM | 6 | oblast SYNCTIM | 7 | oblast CW | 8 | oblast SW |
- č. 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 vyhrazené 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 |
uint64 |
číslo |
64bitová hodnota bez znaménka — 8
byte |
int64 |
číslo |
64bitová hodnota se znaménkem — 8
byte |
|
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 |
bcd16 |
číslo |
hodnota ve formátu BCD — 2
byte |
bool16 |
boolean |
1 boolean hodnota — 2 byte |
bits16 |
boolean |
1bitová hodnota — 16 ve 2
byte |
|
uint8 |
číslo |
8bitová hodnota bez znaménka — 1
byte |
int8 |
číslo |
8bitová hodnota se znaménkem — 1
byte |
bool8 |
boolean |
1 boolean hodnota — 1 byte |
bits8 |
boolean |
1bitová hodnota — 8 v 1 byte |
|
sbit |
boolean |
1bitová hodnota přístupná samostatně pro zápis |
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'. 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.
|