Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=300&lang=405, vytištěno: 30.04.2025 16:19:00
Hlavní stránka▹Produkty▹Programový systém Control Web▹Ovladače pro Control Web a OPC Server | 9.2.2011 |
---|
Ovladač je určen pro komunikaci s moduly ADAM 4000/5000 od firmy ADVANTECH. Tento ovladač nevyžaduje programovou podporu od firmy ADVANTECH a je určen především pro aplikace běžící na počítačích s operačním systémem Windows CE. |
Komunikuje přes standardní sériové rozhraní RS-232 (RS-485) a používá linkovou komunikační vrstvu CWCOMM, která je součástí systému Control Web. Ovladač je dodáván zvlášť pro vývojovou resp. runtime verzi systému Control Web a samostatně pro systém Windows CE. Jméno souboru ovladače je 'ADAM2.DLL'. Upozornění:
Vlastnosti ovladače
Seznam sekcí:
Činnost ovladačePomocí tohoto ovladače je možno komunikovat s moduly ADAM řady 4000 a 5000 přes standardní sériové rozhraní počítače. Pro přenos dat mezi moduly ADAM a aplikací existují dva způsoby přístupu. Prvním je standardní přístup prostřednictvím kanálů ovladače. Pro tvůrce aplikace je jednoduchý, ale nepodporuje všechny možnosti, které moduly poskytují. Druhý přístup je zcela univerzální, ale je poněkud pracnější a vyžaduje větší zkušenost s programováním. Využívá speciální procedury ovladače, které je možno z aplikace volat. Přístup pomocí kanálůPro čtení nebo zápis základních údajů z modulů ADAM jako jsou analogové nebo digitální vstupy a analogové nebo digitální výstupy je možno využít techniku čtení nebo zápisu kanálů ovladače. Ovladač při tom na základě požadavků na čtení nebo zápis kanálů používá základní komunikační příkazy #AA, #AAN, $AA6, #AA(data), #AABB(data) pro moduly ADAM 4000 a #AASi, $AASi6, #AASiCj(data), #AASiBB(data) pro moduly ADAM 5000. Podrobný popis komunikačních příkazů modulů ADAM najdete v dokumentaci firmy ADVANTECH. Kanály jednotlivých modulů nejsou v ovladači nijak pevně definovány, ale tvoří se na základě požadavků tvůrce aplikace. K tomuto účelu slouží soubor parametrů ovladače, konkrétně jeho sekce [Channels]. V ní jsou definovány jednotlivé moduly a způsob přiřazení jejich vstupů či výstupů do kanálů ovladače. Přesný způsob definice kanálů ovladače naleznete v kapitole Konfigurace kanálů ovladače — sekce [Channels]. Přístup pomocí procedur ovladačeJestliže se vyskytne potřeba použít i další příkazy komunikace, je možno je vyvolat prostřednictvím procedur ovladače. V tomto případě se dá do modulu vyslat libovolný řetězec s požadavkem (příkazem) a pokud modul odpoví, ovladač vrátí tuto odpověď opět jako řetězec do aplikace. Je jen na tvůrci aplikace, jak s přijatou odpovědí naloží. Při vysílání ovladač automaticky přidává na konec zpráv znak <CR> a při příjmu očekává tento znak jako ukončovací znak zprávy. Znak <CR> pak není součástí přijaté zprávy. Ovladač může automaticky generovat a ke zprávě přidávat kontrolní součet. Samozřejmě, že pokud je tato vlastnost zapnuta, také testuje kontrolní součet u přijatých zpráv. Existují dva způsoby komunikace pomocí procedur — synchronní a asynchronní. Synchronní znamená, že se pomocí procedury vyšle příkaz do modulu a ovladač čeká na odpověď. Když do doby stanovené parametrem Timeout nepřijde odpověď, hlásí ovladač chybu. V opačném případě ovladač signalizuje do aplikace, že přijal odpověď a aplikace může číst přijatá data. Asynchronní znamená, že se pomocí procedury vyšle příkaz (např. společný pro všechny moduly) a ovladač nečeká žádnou odpověď. Samozřejmě, že pokud nějaká zpráva přijde, zpracuje se stejným způsobem jako odpověď při synchronní komunikaci. V praxi to znamená, že se do aplikace signalizují přijatá data. Parametry ovladačePomocí souboru parametrů je možno nastavit parametry komunikace a definovat kanály ovladače, popřípadě nastavit další doplňující parametry. Celý soubor parametrů je rozdělen do několika sekcí. Název sekce je uveden v hranatých závorkách. V sekci jsou uvedeny za jménem a znakem = jednotlivé parametry. Na jednom řádku může být definován jeden parametr. 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 Monitor = true | false Význam symbolů: Základní syntaktické kategorie použité v konfiguraci ovladače:
Následuje výčet a popis jednotlivých parametrů:
Příklad parametrů v sekci [Settings]: [Settings] ComDriver = CWCOMM.DLL COM4 Timeout = 350 InterMessageDelay = 0 NumRepeat = 1 Trace = none Monitor = false Readback = false Konfigurace kanálů ovladače — sekce [Channels]Tato sekce definuje jednotlivé kanály nebo skupiny kanálů ovladače a jejich přiřazení ke vstupům nebo výstupům jednotlivých modulů ADAM. Jednotlivé kanály resp. skupiny kanálů se definují jako bloky. Blok je popsán intervalem kanálů, typem a adresou modulu (u modulů ADAM 5000 musí být adresa doplněna ještě číslem slotu). Definice bloku dále obsahuje typ vstupu nebo výstupu a parametr, který určuje, jestli se při komunikaci bude používat zabezpečení přenosu dat pomocí kontrolního součtu. Popis bloku může obsahovat i speciální skupinu znaků (řetězec), která se vyšle do modulu na začátku každé zprávy (prefix). Tato skupina může být použita např. pro ovládání adresovatelných převodníků ADAM-4521. 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] <From> [<- To>] = Adam:<N>, [Prefix:<S>,] Adr:<N>, [Slot:<N>,] ChSum:<N>, Data:<S> <From> [<- To>] = ... ... Význam symbolů:
Následuje výčet a popis jednotlivých parametrů:
Příklad parametrů v sekci [Channels]: [Channels] 100 - 107 = Adam:4018, Adr:2BH, ChSum:1, Data:AI 110 = Adam:4011, Adr:02H, ChSum:0, Data:AI 120 - 127 = Adam:5017, Adr:03H, Slot:0, ChSum:0, Data:AI 200 = Adam:4021, Adr:0AH, ChSum:0, Data:AO 210 - 213 = Adam:5024, Adr:03H, Slot:1, ChSum:0, Data:AO 300 - 315 = Adam:4050, Adr:10H, ChSum:0, Data:DI 316 - 331 = Adam:5060, Adr:03H, Slot:2, ChSum:0, Data:DI 400 - 407 = Adam:4050, Adr:10H, ChSum:0, Data:DO 408 - 415 = Adam:5060, Adr:03H, Slot:2, ChSum:0, Data:DO 500 - 501 = Adam:4050, Adr:10H, ChSum:0, Data:DIB 502 - 503 = Adam:5060, Adr:03H, Slot:2, ChSum:0, Data:DIB 600 = Adam:4050, Adr:10H, ChSum:0, Data:DOB 601 = Adam:5060, Adr:03H, Slot:2, ChSum:0, Data:DOB 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ů:
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:
Popis jednotlivých parametrů:
Hodnoty pro definici chování DTS a RTS (parametry rts_control a dtr_control):
Chování DTR/RTS v módech toggle/toggle_neg Upozornění: Parametry rx_interchar_timeout, rx_char_timeout a rx_timeout ovlivňují propustnost na vstupu. Zvýšením hodnoty rx_timeout lze dosáhnout zvýšení efektivity pro rozsáhlé přenosy dat (pozor na kapacitu vstupního bufferu!), ale dojde také k prodloužení prodlev při příjmu separátních bloků dat. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace. Parametry tx_char_timeout a tx_timeout ovlivňují propustnost na výstupu. Zvýšením hodnot lze docílit vyšší efektivity pro rozsáhlé přenosy dat, zvláště při povoleném handshake. Příliš malé hodnoty mohou způsobit problémy při vysílání, včetně potenciálně velkého počtu neúspěšných pokusů o vyslání. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace. Příklad parametrů v sekci [comm]: [comm] baudrate = 9600 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čeOvladač má jednak pevně přidělenou množinu kanálů se speciálními funkcemi a dále uživatelsky definované bloky kanálů. Ty jsou popsány v kapitole Konfigurace kanálů ovladače — sekce [Channels] Vyhrazené kanály ovladačeKromě 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:
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čeAplikace může volat ovladači určité procedury, pomocí nichž je možno řídit chování ovladače nebo získat důležité informace. To se děje prostřednictvím systémové procedury: core.DriverQueryProc( DriverName : string; Param1 : any; &Param2 : any ) Její parametry mají následující význam:
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)
Mapovací soubor ovladače a datové typyTento 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 pomocí sekce [Channels]. Zpracování a stavy výjimek ovladačePři výskytu chyby komunikace vznikne událost, kterou ovladač může přenést jako výjimku do aplikace. V aplikaci musí být definován objekt (virtuální přístroj), který má definován parametr driver_exception se symbolickým jménem tohoto ovladače. V tomto případě je takový přístroj výjimkou aktivován. V rámci jeho činnosti je třeba zapsat na kanál č. 2 hodnotu true nebo zavolat proceduru ovladače EnableException. Tím se povolí vyvolání další výjimky, jakmile nastane nebo pokud není fronta výjimek prázdná. Přečtením kanálu č. 1 je možno zjistit stav výjimky. Při použití kanálu č. 2 je třeba pamatovat na to, aby měl virtuální přístroj nastaven parametr send_same_data. Pokud aplikace výjimky nezpracovává, přidávají se do fronty, jejíž maximální velikost je určena parametrem MaxExceptions v sekci [Settings]. Kódy pro stavy výjimek ovladače
Chybové kódyOvladač generuje následující chybové kódy. Tyto kódy jsou k dispozici na kanále č. 6. Kód a popis chyby je také možno získat voláním procedur ovladače GetErrorCode a GetErrorString. Při vzniku chyby se současně vypíše hlášení do Okna zpráv systému Control Web. Kódy definované systémem Control Web:
Obecné chybové kódy ovladače:
Příklad použití ovladačeSoučástí instalace je několik příkladů použití ovladače. Tyto příklady naleznete v adresáři 'ADAM2\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. |