Ovladač je určen pro spojení systému Control Web s průmyslovými
automaty (PLC) OMRON Host Link Units (označovanými také jako
C-series PC) s použitím komunikačního protokolu Multiple-Link.
Ovladač je určen pro spojení systému Control Web s průmyslovými
automaty (PLC) OMRON Host Link Units (označovanými také jako
C-series PC) s použitím komunikačního protokolu Multiple-Link. Ovladač
nepodporuje jednodušší variantu protokolu Single-Link. Jméno knihovny
ovladače je 'OMRON2.DLL'.
Vlastnosti ovladače
Ovladač umožňuje připojení jednoho nebo několika PLC k
systému Control Web.
Komunikace přes standardní sériové rozhraní počítače
RS-232 nebo RS-422/485 s použitím patřičného převodníku
úrovní.
Ovladač vystupuje v komunikaci jako nadřízená
stanice (master).
Čtení a zápis dat v oblastech DM, IR, HR, AR, LR,
TC, PV.
Čtení a nastavení času a stavu PLC.
Možnost zjištění identifikace modelu PLC a chyby PLC.
Upozornění: Tento ovladač nelze přímo nahradit namísto původního
ovladače 'OMRON.DLL'. Důvodem je rozdílný způsob zápisu
parametrů a odlišná množina interních (systémových) kanálů (1 až
16).
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 data z datových
oblastí DM, IR, HR, AR, LR, TC, PV. Dále je možno číst a
nastavovat systémový čas PLC a zjišťovat informace o jeho
stavu a chybách.
Ovladač interpretuje datové elementy PLC jako svoje kanály, což
jsou číselné nebo logické hodnoty (boolean). Datový
element v PLC je zpravidla word (16 bitů) nebo logická
hodnota (bit). Číselné kanály ovladače mohou být různých typů (int8,
uint8, int16, uint16,
int32, uint32, float32,
uint64), podle toho kolik datových PLC elementů
zabírají. Logické kanály mohou být také různých typů (bits8,
bits16, bool8, bool16)
podle toho, jestli se jedná o jednotlivé bity elemetů nebo o celé
elementy (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.
Parametry ovladače
Pomocí souboru parametrů je možno nastavit parametry komunikace
a definovat kanály ovladače, popřípadě nastavit další doplňující
parametry. Celý soubor parametrů je rozdělen do několika sekcí.
Název sekce je uveden v hranatých závorkách. V sekci jsou uvedeny
za jménem a znakem = jednotlivé parametry. Na jednom
řádku může být definován jeden parametr.
Parametry 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>
MaxPacketLength = <N>
InputBufferSize = <N>
OutputBufferSize = <N>
SwapBytes = true | false
MaxExceptions = <N>
FinalizeAfterEachBlock = false | true
Trace = none | log | xtrace | windows
InterMessageDelay = <N>
Readback = true | false
GoodComReport = true | false
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í nastavení je 1 opakování. | 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. | MaxPacketLength | maximální délka přenášeného bloku. Nastavuje se v
bytech. Implicitní hodnota je 255. | InputBufferSize | velikost příjimací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. | 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 4096. | 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: 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í. Implicitní nastavení je .... | 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). |
Příklad parametrů v sekci [Settings]:
[Settings]
ComDriver = CWCOMM.DLL COM1
NumRepeat = 2
Timeout = 250
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í (adresa PLC), 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í (adresa stanice). | Area | kód oblasti. Označení oblastí odpovídá způsobu
značení ve vývojových nástrojích pro PLC (DM, IR, HR
atd.). Některé oblasti jsou ale fiktivní a jejich označení
neodpovídá běžným konvencím (ERROR, ERRORC, MODEL, TIME,
SYNCTIME). Možné hodnoty jsou: DM | Data
Memory. | IR | I/O &
Internal Relay. | HR | Holding
Relay. | AR | Auxilary
Relay. | LR | Link Relay. | TC | Timer/Counter.
Typ se neuvádí, je vždy typu boolean. | PV | Present
Value. | STATUS | Stav PLC.
Čtením je možno získat informace o stavu PLC. Zápisem
je možno měnit mód PLC (Program, Debug, Monitor, Run).
Význam jednotlivých bitů je uveden v dokumentaci
k PLC. | ERROR | Informace
o chybě PLC. Data jsou určena pouze pro čtení. Význam
jednotlivých bitů je uveden v dokumentaci
k PLC. | ERRORC | Informace
o chybě PLC. Po přečtení je chyba v PLC
smazána. Data jsou určena pouze pro čtení. Význam
jednotlivých bitů je uveden v dokumentaci
k PLC. | MODEL | Informace
o typu PLC. Data jsou určena pouze pro čtení. Význam
hodnot je uveden v dokumentaci k PLC. | TIME | Načtení
nebo zápis času v PLC. Čas je v PLC uložen
v oblasti AR. PLC musí tuto vlastnost podporovat.
V aplikaci se přenáší prostřednictvím 7 po sobě
jdoucích kanálů. | SYNCTIME | Synchronizace
času PLC s časem počítače. Data jsou určena pouze
pro zápis. |
| Type | typ dat v oblasti. Možné hodnoty
jsou: bits8, bits16 | 8
nebo 16 boolean kanálů podle délky datového
elementu v paměti PLC. Typ bits8 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. Typ bits16
pracuje se dvěma byte v paměti PLC (word) najednou. | bool8 | jeden
boolean kanál v jednom byte paměti PLC. Nulová
hodnota je false, nenulová hodnota je
true. | bool16 | jeden
boolean kanál v jednom slově (word) paměti PLC.
Nulová hodnota je false, nenulová hodnota je
true. | 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 | uint64 | 64bitové
číslo bez znaménka | int64 | 64bitové
číslo se znaménkem |
| Adr | počáteční adresa v datové oblasti. Adresace je po
jednotlivých datových elementech, zpravidla po slovech
(word) nebo po bitech. | 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]:
[Channels]
Block = 200, 299, 0, DM, uint16, 50, Id:block1
Block = 300, 399, 0, DM, uint16, 50, Id:block2
Block = 400, 499, 0, DM, bits, 50
Block = 500, 599, 0, DM, bits, 50
Block = 600, 699, 0, TC, 0
Block = 800, 800, 0, STATUS, uint16
Block = 801, 801, 0, MODEL, uint16
Block = 802, 803, 0, ERROR, uint32
Block = 850, 856, 0, TIME
Block = 857, 857, 0, SYNCTIME
Block = 900, 915, 0, STATUS, bits
Block = 916, 947, 0, ERROR, bits
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 mimojiné 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řibrždě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
parity = even
databits = 7
stopbits = 2
rx_buffer = 2048
tx_buffer = 2048
rx_frame_buffer = 2048
tx_frame_buffer = 2048
cts_flow = false
dsr_flow = false
dtr_control = disable
rts_control = disable
dsr_sense = low
rx_interchar_timeout = 0
rx_char_timeout = 0
rx_timeout = 0
tx_char_timeout = 0
tx_timeout = 0
Kanály ovladače
Ovladač může jednotlivé prvky různých datových oblastí
připojených stanic interpretovat jako svoje kanály, což jsou
číselné nebo logické hodnoty (bity). Definice kanálů se děje
prostřednictvím souboru parametrů v sekci [Channels],
jak je popsáno níže.
Vyhražené 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 vyhraženy 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: | | 0 - oblast IR | | 1 - oblast HR | | 2 - oblast AR | | 3 - oblast LR | | 4 - oblast TC | | 5 - oblast DM | | 6 - oblast PV | | 15 - oblast STATUS | | 16 - oblast ERROR | | 17 - oblast ERRORC | | 18 - oblast MODEL | | 19 - oblast TIME | | 20 - oblast SYNCTIME | č. 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 |
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 v souboru
'*.DMF' měly své protějšky v blocích v souboru
'*.PAR' jako typy bits8, bits16
nebo bool8, bool16. 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:
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á.
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 |
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 |
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 |
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
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.
Hodnota | Význam |
---|
0 | úspěšná operace | 1 | chyba timeoutu | 2 | neplatná hodnota | 3 | neexistující kanál | 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 | nesprávná hodnota v hlavičce přenášeného
telegramu. Požadavek na přenos dat nemusí splňovat pravidla
komunikačního protokolu. |
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\OMRON2'.
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.
|