Ovladač AB_DF1 je určen pro spojení systému Control Web
s průmyslovými automaty (PLC) Allen Bradley pomocí protokolu
DF1 v režimu full-duplex.
Vlastnosti ovladače
Protokol DF1 (připojení do sítě DH485 přes konvertor
1770-KF3 nebo 1747-KE).
Rozhraní RS-232/RS-422.
Režim master nebo slave
Mód full-duplex.
Kontrola neporušenosti přenášených dat pomocí CRC nebo
BCC.
Operace čtení dat — přístup k obecné
paměťové oblasti (CIF), pro který se využívá příkaz
unprotected read nebo přístup k souborům
(file) PLC.
Operace zápis dat — přístup k obecné
paměťové oblasti (CIF), pro který se využívá využívá příkaz
unprotected write nebo přístup k souborům
(file) PLC.
Při práci s CIF podporuje adresování jak po
bytech, tak po slovech (word).
Obsah textu: - 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ým PLC pomocí protokolu DF1
v režimu full-duplex. Jako komunikační rozhraní je možno
použít buď standardní sériové rozhraní počítače — RS-232
nebo rozhraní RS-422 (s použitím speciální karty do počítače nebo
externího převodníku).
Ovladač může vystupovat buď jako master nebo jako slave.
V režimu master ovladač řídí komunikaci (vysílá požadavky
na čtení nebo zápis). V tomto režimu čte nebo zapisuje data
z paměti PLC pomocí komunikačních příkazů unprotected
read (CMD=01) a unprotected write (CMD=08).
U SLC 500 je tato paměť mapována jako CIF (Common Interface
File), což je File Number 9. U MicroLogix 1000 je to
Integer File 7. Způsob adresování paměti PLC je možno zvolit po
bytech (S:2/8 = 1) nebo po slovech (S:2/8 = 0). Dále umožňuje
přístup k souborům (file) I,O,S,B,T,C,R,N a F v PLC.
Adresace je omezena na rozsah 0 až 254 elementů.
V režimu slave ovladač čeká na požadavek od řídící stanice
(mastera) a je-li požadavek určen jemu, vrátí data nebo je zapíše
do kanálů a vygeneruje výjimku od ovladače, aby se aplikace mohla
dozvědět o příchodu nových dat. V tomto režimu
ovladač akceptuje pouze příkazy pro čtení nebo zápis do paměti PLC
a nepodporuje přenos dat z oblasti souborů (file).
Ovladač interpretuje datové elementy PLC jako svoje kanály, což
jsou číselné nebo logické hodnoty (boolean). Pokud
s pamětí pracuje jako s bity, je nejmenší přenášená
jednotka buď byte nebo word, podle definice patřičného bloku
kanálů, do kterého hodnota patří. Číselné kanály mohou být různých
typů (int8, uint8, int16,
uint16, int32, uint32,
float32), podle toho kolik datových elementů
zabírají. Logické kanály mohou být také různých typů (bits,
bool8, bool16) podle toho, jestli se
jedná o jednotlivé bity elemetů nebo o celé elementy
(nulová hodnota = true, nenulová hodnota =
false). Datové kanály ovladače (jejich počet a typ)
se konfigurují v souboru parametrů podle požadavků
uživatele. Způsob adresování paměti PLC je možno zvolit po bytech
(S:2/8 = 1) nebo po slovech (S:2/8 = 0).
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>
SrcAdr = <N>
Mode = master | slave
IgnoreMemSize = true | false
MaxPacketLength = <N>
InputBufferSize = <N>
OutputBufferSize = <N>
SrcAdr = <N>
UseCRC = true | false
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. | SrcAdr | vlastní adresa — adresa této stanice
(počítače). | 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). | MaxPacketLength | maximální délka přenášeného bloku. Nastavuje se v
bytech. Implicitní hodnota je 96. | InputBufferSize | velikost příjimacího komunikačního bufferu. Ovladač
si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota
je 1024 byte. | OutputBufferSize | velikost vysílacího komunikačního bufferu. Ovladač si
zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je
1024 byte. | 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 0 ms. | 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). | Mode | určuje, jestli ovladač vystupuje jako mater
(nadřízená stanice) nebo jako slave (podřízená stanice). | 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. | IgnoreMemSize | umožňuje komunikovat v režimu master-slave
mezi dvěma počítači bez omezení velikosti paměti. | UseCRC | tímto parametrem se volí způsob kontroly přenášených
dat. Je-li nastaven na hodnotu true, používá se
CRC, v opačném případě (false) se
používá BCC. Např. pro modul 1747-KE je třeba nastavit tento
parametr na hodnotu 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. |
Příklad parametrů v sekci [Settings]:
[Settings]
ComDriver = CWCOMM.DLL COM1
NumRepeat = 2
Timeout = 250
SrcAdr = 1
MaxPacketLength = 260
UseCRC = true
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ů, adresou 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. 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 = ...
...
nebo
[Channels]
Block = <From>,<To>,<Con>,<File>,<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. Možné hodnoty jsou: mb | unprotected
read/write s adresováním po bytech | mw | unprotected
read/write s adresováním po slovech (word) |
| File | soubor v PLC. Způsob zápisu je
xn:a, kde je: x | typ
souboru (O,I,S,B,T,C,R,N,F). | n | číslo
souboru | a | adresa prvního
elementu bloku v souboru |
| Type | typ dat v oblasti. Možné hodnoty jsou: bits | 8
resp. 16 boolean kanálů v jedné buňce
paměti (podle způsobu adresování buď byte nebo word). Typ
bits pracuje vždy s celou paměťovou
buňkou v paměti PLC. Je-li nastaven tento typ, pak
bude nejmenší přenesené množství dat 1 byte resp. word. | bool8 | jeden
boolean kanál v jednom byte paměti.
Nulová hodnota je false, nenulová hodnota je
true. | bool16 | jeden
boolean kanál v jednom wordu paměti.
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é
reálné číslo podle normy IEEE-754 |
| Adr | počáteční adresa bloku v definované oblasti.
Podle typu automatu nebo jeho nastavení to může být buď
adresa slova nebo 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]:
[Channels]
Block = 100, 199, 1, mb, uint8, 0
Block = 300, 331, 1, mb, bits, 0, bidirect
Block = 1000, 1009, 1, F10:5, float32
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 = <Section>
Pokud je definován parametr device a existuje
sekce jména Section, 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 | section | 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 = no
databits = 8
stopbits = 1
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.
Seznam kanálů: č. 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. | | Oblasti jsou kódovány
následovně: Hodnota | Význam |
---|
0 | paměť mb | 1 | paměť
mw | 130 (82H) | file O | 131
(83H) | file I | 132 (84H) | file
S | 133 (85H) | file B | 134
(86H) | file T | 135 (87H) | file
C | 136 (88H) | file R | 137
(89H) | file N | 138 (8AH) | file
F |
| č. 11 (real input) | počet chyb čtení | č. 12 (boolean output) | vynulování počitadla chyb čtení | č. 13 (real input) | počet chyb zápisu | č. 14 (boolean output) | vynulování počitadla chyb zápisu | č. 15 (real input) | celkový počet opakování požadavků na komunikaci | č. 16 (real input) | STS byte komunikace při chybě | č. 17 (real input) | EXT STS byte komunikace při chybě |
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
bits, bool8 nebo 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 | je 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 stopbitů komunikace.
Hodnota | Význam |
---|
0 | 1 stopbit | 1 | 1.5 stopbitu | 2 | 2 stopbity |
- GetStopBits
-
Vrátí aktuální počet stopbitů 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 |
|
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 |
|
bits |
boolean |
1bitová hodnota — 8 v 1 byte resp. 16 v 1 slově |
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.
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í | 2000 | neočekávaná chyba, neplatný rámec | 2001 | neočekávaný znak ENQ | 2002 | neočekávaný rámec s daty | 2003 | neplatná hlavička rámce, nesouhlasí SRC | 2004 | neplatná hlavička rámce, nesouhlasí DST | 2005 | neplatná hlavička rámce, nesouhlasí CMD | 2006 | přijat chybový rámec (s popisem v STS a EXT STS) | 2007 | neplatná hlavička rámce, nesouhlasí TNS |
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\AB_DF1'.
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.
|