Prázdný košík
Úvodní stránka
Přihlásit
Hledat 
 Control Web 8
 Ovladače pro Control Web
 DataLab
 DataCam
 DataLight
 Pro školy
 Ostatní software
 Control Web – předchozí verze
 Služby
 Školení

Ovladač pro rychlé děje pro PCL karty Advantech
 

Ovladač pro rychlé děje pro PCL karty Advantech

Pro Control Web 5,6,7. Vyžaduje SW podporu ADSPCL firmy Advantech. Pracuje jen v 32-bitové verzi operačního systému.

Kód:CW-APCLI
Cena pro integrátory (bez DPH):1 900 Kč
Koncová cena (bez DPH):2 100 Kč
Výrobce:Moravské přístroje
 
CELKEM
Vaše cena (bez DPH):
Celková cena (bez DPH):
*) Předpokládaná dostupnost se může lišit podle volitelných parametrů produktu. Předpokládaná dostupnost nezahrnuje dobu přepravy a jedná se o nezávazný údaj.

Ovladač ADVBUF je určen pro rychlá čtení dat z měřicích karet od firmy ADVANTECH a k přenosu těchto hodnot prostřednictvím kanálů typu buffer do aplikace systému Control Web.

Upozornění:

Ovladač může pracovat pouze v 32-bitové verzi operačního systému Windows. Je to dáno tím, že programová podpora (Advantech Device Manager), kterou ovladače používají, je k dispozici pouze v 32-bitové verzi. Tato podpora je dostupná na instalačním mediu s našimi produkty (USB flash).

S aktuální programovou podporou, která je k dispozici na stránkách firmy Advantech, tyto ovladače nepracují. Důvodem je to, že využívá prostředí .NET Framework, které Control Web nepodporuje.

Vlastnosti ovladače

Ovladač ADVBUF je určen pro rychlá čtení dat z měřicích karet od firmy ADVANTECH a k přenosu těchto hodnot prostřednictvím kanálů typu buffer do aplikace systému Control Web. Pro spouštění převodu hodnot z analogových vstupů se využívá hardwarového přerušení. Kromě toho ovladač umožňuje číst digitální vstupy karet a nastavovat analogové a digitální výstupy karet.

V aplikaci pro Control Web je možno současně použít tento ovladač s běžným ovladačem ADVPCL (v ceníku má označení CWD-PCL). V tomto případě je nutno zabezpečit pouze to, aby se současně nečetly hodnoty analogových vstupů oběma ovladači. Kombinovat čtení digitálních vstupů a zápis do analogových a digitálních výstupů oběma ovladači je dovoleno.

Upozornění:

Ke své činnosti ovladač vyžaduje nainstalovanou a správně nakonfigurovanou programovou podporu od firmy ADVANTECH (verze 1.3 a vyšší).

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
Možné problémy při použití ovladače
Příklady souborů DMF a PAR ovladače

Činnost Ovladače

Úkolem ovladače je zajistit přenos velkého objemu dat z karty do aplikace systému Control Web. Karta vzorkuje vstupní signál z jednoho nebo několika vstupů zadanou vzorkovací frekvencí. K tomu je využit programovatelný časovač, který je umístěn přímo na měřicí kartě. Vzorkovací frekvence se dá programově měnit ve velkém rozsahu. Tento rozsah (zpravidla jeho horní limit) je dán typem měřicí karty. Maximální frekvence dosahuje řádově desítky kHz. Pokud se měří víc vstupů najednou, je v jedné periodě časovače změřen jeden vstup. Vzorkovací frekvence pro jeden vstup je tedy rovna nastavené vzorkovací frekvenci časovače vydělené počtem měřených vstupů. Pro každý vstup je možno nastavit zvlášť zesílení, pokud to karta umožňuje. Změřená data se ukládají do vyrovnávacích pamětí, které mají několik úrovní.

Na nejnižší úrovni se naměřený vzorek dat uloží buď do registru nebo do FIFO (first in - first out) paměti (pokud ji karta obsahuje). Velikost FIFO paměti má zpravidla pevnou délku, typicky 1024 vzorků. Karta vygeneruje přerušovací signál na základě změření buď jedné hodnoty (bez FIFO) nebo když se zaplní první nebo druhá polovina paměti FIFO. Přerušení zachytí operační systém a předá řízení ovladači, který je zpracuje. Je to tzv. low-level ovladač (ovladač na nízké úrovni), se kterým spolupracuje přímo jádro operačního systému. Tento ovladač se dodává a je nainstalován jako součást podpory firmy ADVANTECH. K jeho konfiguraci slouží program 'DEVINST.EXE'. Vyšší programovou vrstvu tvoří systém Control Web se svým ovladačem. Tento ovladač plní funkci prostředníka mezi aplikací a low-level vrstvou. Alokuje paměť pro nižší vrstvu, zpracovává požadavky aplikace a plní data do kanálů typu buffer aplikace. Dále volá funkce pro čtení digitálních vstupů a zápis do digitálních a analogových výstupů. Z aplikace je možno ovladač řídit buď pomocí vyhrazených kanálů nebo pomocí procedur ovladače. Převod je spuštěn na základě požadavku aplikace. Postupně dochází k plnění buffer kanálu tak, že hardwarová vrstva přečte data do registru nebo zaplní část FIFO paměti. V obsluze přerušení se plní vyrovnávací paměť low-level ovladače. Jakmile se tato vyrovnávací paměť naplní do poloviny nebo celá, vznikne událost, na kterou čeká vyšší vrstva ovladače. Data jsou takto postupně přenesena do kanálů (typu buffer) aplikace. V tomto okamžiku mohou být také zachyceny aktuální hodnoty z analogových vstupů, a dále je možno fyzicky ukončit převod (byla-li předtím vyvolána operace pro zastavení převodu). Když je kanál (buffer) naplněn, ovladač vygeneruje do aplikace výjimku, která je zpracována některým z virtuálních přístrojů. Při nedostatečně rychlém výběru dat z bufferů může nastat buď chyba přeběhu (buffer overrun) nebo dojde ke ztrátě dat.

Paměť ovladače

Paměť ovladače

Režimy Měření

Existují dva režimy pro získávání dat z měřicí karty. Volba režimu se děje prostřednictvím nastavení v parametrech ovladače.

  • Spojitý převod se odstartuje povelem z aplikace. Postupně dochází k plnění buffer kanálu. Jakmile je naplněn, vygeneruje se výjimka od ovladače. Při jejím zpracování dochází zároveň k novému plnění vnitřní vyrovnávací paměti a následně buffer kanálu. Při jeho naplnění se vygeneruje nová výjimka od ovladače. Tento cyklus pokračuje dokud není převod ukončen povelem z aplikace. Tento mód slouží k získávání a zpracovávání spojitých dat. Důležité je, aby aplikace stihla zpracovat buffer kanál dříve, než do něj ovladač zapíše nová data. V opačném případě jsou stará data přepsána. V tomto režimu se velikost vyrovnávacího bufferu nastavuje implicitně (1024 vzorků na každý měřený vstup) nebo jako parametr ovladače.

  • Jednorázový převod se také odstartuje povelem z aplikace. Postupně se plní buffer kanál a jakmile je ukončen, je převod zastaven a generuje se výjimka od ovladače. Nový převod se spustí novým povelem z aplikace. V tomto režimu je možno velikost vyrovnávacího bufferu nastavit buď ručně (jako parametr ovladače) nebo se nastaví automaticky podle velikosti použitých buffer kanálů.

Spouštění převodu (trigger)

Spojitý i jednorázový převod může být spuštěn jedním ze třech způsobů:

  • externě - spouštění pomocí signálu připojeného na zvláštní vstup karty. Při využití tohoto způsobu je třeba prostudovat dokumentaci ke konkrétní měřicí kartě.

  • programově - ke spuštění převodu do bufferu dojde okamžitě po zadání požadavku na převod

  • napěťovou úrovní - ke spuštění převodu do bufferu dojde po zadání požadavku, ale až když napětí na vybraném vstupu dosáhne definované hodnoty a směru.

Ošetření chyby přeběhu

Tato chyba může nastat, když je spuštěn převod a nestihnou se vyčíst data z pracovního bufferu ovladače, přičemž vznikne nová událost, signalizující přítomnost nových dat. Data se zpravidla nestihnou vyčíst, když je zaneprázdněn operační systém (dlouhé diskové nebo síťové operace) nebo, když aplikace obsahuje delší programové smyčky nebo náročnější vykreslování. Další situace, kdy tato chyba nastává, je při nevhodném nastavení velikosti buffer kanálu a velikosti vyrovnávacího bufferu ovladače. Chybu může eliminovat některá z následujících úprav:

  • externě - spouštění pomocí signálu připojeného na zvláštní vstup karty. Při využití tohoto způsobu je třeba prostudovat dokumentaci ke konkrétní měřicí kartě.

  • programově - ke spuštění převodu do bufferu dojde okamžitě po zadání požadavku na převod

  • napěťovou úrovní - ke spuštění převodu do bufferu dojde po zadání požadavku, ale až když napětí na vybraném vstupu dosáhne definované hodnoty a směru.

Automatické nastavení

Ovladač si nastavuje většinu svých parametrů automaticky podle definice buffer kanálů v aplikaci. Pouze režim činnosti a parametry měření, jako je vstupní zesílení a vzorkovací frekvence, je třeba definovat v jeho souboru parametrů. V inicializační fázi během startu aplikace si ovladač sám alokuje vyrovnávací paměť pro low-level ovladač a nastaví si interval měřených vstupů. Tento interval je pak možno za běhu aplikace upravit, ale pouze tak, že bude podmnožinou původního intervalu. Tato nová změna nastavení se uplatní až po novém spuštění převodu. Automaticky se počítá také timeout pro dokončení převodu. Pouze u externího způsobu spouštění je nutno tento parametr definovat. Typ dat buffer kanálů je určen jejich definicí v aplikaci. Přípustné jsou pouze typy cardinal (16 bitů bez znaménka) nebo shortreal (real 4 byte). Jinak je při startu aplikace vypsáno chybové hlášení.

Parametry ovladače

Činnost a chování ovladače se dá ovlivnit nastavením jeho parametrů. Tyto parametry se zapisují do souboru, který se zadává v definici ovladače v aplikaci systému Control Web. Soubor parametrů je textový soubor, který je možno upravovat běžným textovým editorem. Parametry mohou být rozděleny do několika skupin - sekcí. Každá sekce má svoje jméno uvedené v hranatých závorkách a dále seznam několika parametrů tvořených jménem parametru oddělovacím znakem (rovnítko) a jednou nebo více hodnotami parametru. Ovladač ADVBUF v současné době používá jedinou sekci.

Upozornění:

U zápisu názvu sekcí a parametrů záleží na způsobu psaní velkých a malých písmen.

Sekce [Settings]

Tato sekce obsahuje veškeré parametry pro nastavení ovladače. Pomocí těchto parametrů se nastavuje číslo zařízení (měřicí karty v počítači), zesílení jednotlivých vstupů, režim činnosti ovladače, perioda vzorkování, způsob spouštění převodu a velikost vyrovnávací paměti.

Způsob zápisu jednotlivých parametrů

  Device = <n>
  OpenDeviceOnInit = true | false
  Gain = <n>
  Gain0 = <n>
  ...
  Gain15 = <n>
  SampleFrequency = <n>
  SampleBuffer = <n> | auto
  FIFO = none | default | auto | <n>
  Trigger = ext | int | value
  TriggerInput = <n>
  TriggerValue = <n>
  TriggerSlope = up | down
  ExtTriggerTimeout = <n>
  Continuous = true | false
  GetActualValues = true | false
  EnableIntEvent = true | false
  EnableRestart = true | false

Následuje výčet a popis jednotlivých parametrů:

Device

index v seznamu zařízení v programu 'DEVINST.EXE' od firmy ADVANTECH (začíná od nuly).

OpenDeviceOnInit

příznak automatického otevření zařízení. Pro veškeré operace je nutné, aby dané zařízení (karta) bylo otevřeno. Ovladač může pracovat s různými zařízeními, ale otevřeno může být pouze jedno. Všechny operace se tedy uskutečňují pouze s aktivním (otevřeným) zařízením. Implicitně je parametr OpenDeviceOnInit nastaven na hodnotu true a v rámci startu aplikace se otevře zařízení, které je definováno parmetrem Device. Po otevření zařízení se generuje výjimka od ovladače, pomocí které je možno zjistit výsledek operace. Pokud je potřeba řídit převod a další operace pomocí procedur ovladače, je vhodné nastavit tento parametr na hodnotu false.

Gain

zisk zadávaný pro všechny vstupy karty najednou. Hodnota parametru musí odpovídat hodnotám podle dokumentace ke konkrétní měřicí kartě.

GainX

zisk zadávaný pro jednotlivé vstupy. X je číslo vstupu a má hodnotu 0 až 15. Hodnota parametru musí odpovídat hodnotám podle dokumentace ke konkrétní měřicí kartě..

SampleFrequency

vzorkovací frekvence. Rozsah je dán typem měřicí karty.

SampleBuffer

počet vzorků vyrovnávacího bufferu low-level vrstvy ovladače. Zadává se buď hodnota nebo klíčové slovo auto pro automatické nastavení velikosti vyrovnávací paměti. Minimální hodnota je 127 vzorků. Měří-li se více vstupů najednou, je vyrovnávací buffer společný pro všechny vstupy.

FIFO

počet vzorků vyrovnávací paměti na kartě. Ne všechny měřicí karty mají vlastní vyrovnávací paměť. Proto je nejlepší nastavit tento parametr na hodnotu auto. Další možnosti jsou none pro vypnutí vyrovnávací paměti, default definuje velikost paměti 512 vzorků nebo číslo, kterým se zadává volitelná hodnota. Tu je možno zadat pouze u některých karet.

Trigger

parametr definuje způsob spouštění převodu. Hodnota může nabývat následujících hodnot:

ext

nastavuje externí spouštění, pro které je určen speciální vstup na kartě. K tomuto parametru se vztahuje parametr ExtTriggerTimeout, který definuje maximální dobu čekání na ukončení převodu.

int

nastavuje programové spouštění převodu. V tomto případě je převod spuštěn zápisem hodnoty true do kanálu č.90 nebo voláním procedury ovladače StartConversion.

value

nastavuje spouštění převodu po dosažení definované hodnoty a směru na vstupu karty. K tomuto parametru se vztahují další parametry TriggerInput a TriggerSlope. Hodnota může být zadána podle typu buffer kanálu buď jako reálné číslo v rozsahu vstupních napětí karty (např. 2.3) nebo jako celé číslo v rozsahu A/D převodníku (např. 2400). Na začátku je třeba odstartovat převod zápisem hodnoty true do kanálu č.90 nebo voláním procedury ovladače StartConversion. Ovladač pak čeká na splnění spouštěcích podmínek (vstup, hodnota, směr). Jakmile jsou podmínky splněny, dojde k plnění buffer kanálu. Operaci je možno kdykoliv zastavit buď zápisem hodnoty false do kanálu č.90 resp. zápisem hodnoty true do kanálu č.91 nebo voláním procedury ovladače StopConversion.

TriggerInput

definuje číslo analogového vstupu karty pro spouštění převodu, je-li parametr Trigger = value. Vstupy se číslují od nuly.

TriggerValue

definuje velikost napětí na analogovém vstupu karty pro spouštění převodu, je-li parametr Trigger = value.

TriggerSlope

definuje směr průběhu signálu na analogovém vstupu karty pro spouštění převodu, je-li parametr Trigger = value. Hodnoty jsou up pro vzestupný průběh nebo down pro sestupný průběh signálu.

ExtTriggerTimeout

timeout pro převod pomocí externího vstupu. Zadává se v milisekundách.

Continuous

nastavuje spojitý (hodnota true) nebo jednorázový (false) režim převodu ovladače.

GetActualValues

je-li true, je možno číst z kanálů č.100 až 115 aktuální hodnoty. Pro jejich získávání, je třeba mít odpovídající vstupy v intervalu měřených vstupů, to znamená, že tyto vstupy musí mít nadefinovány také buffer kanály a musí být měřeny. Tato volba mírně zvyšuje režii ovladače.

EnableIntEvent

tento parametr nastavuje možnost generovat událost od low-level ovladače při zpracování hardwarového přerušení. Při zpracování této události je možno ukončit převod, byla-li předtím vyvolána operace pro zastavení převodu (např. zápisem hodnoty true do kanálu č.91). Tento parametr tedy umožnuje okamžité ukončení převodu z aplikace. Je za to ovšem nutno zaplatit zvětšením režie ovladače.

EnableRestart

tento parametr nastavuje možnost nového spuštění převodu v okamžiku, kdy ještě nebyl ukončen převod původní. Původní převod se zastaví a ihned se zahájí nové měření. Data z předchozího měření jsou ztracena.

Zjištění indexu zařízení ze seznamu nainstalovaných zařízení pomocí programu 'DEVINST.EXE' od firmu ADVANTECH:

Hlavní okno programu DEVINST.EXE

Hlavní okno programu 'DEVINST.EXE'

Po spuštění programu vybereme z menu položku Device a otevře se seznam zařízení, pro která je na počítači nainstalována programová podpora a ovladače. Z tohoto seznamu lze zjistit index zařízení (PCL karty), se kterou chceme v ovladači pracovat. Požadovaný index je třeba zadat v parametru Device.

Nainstalovaná zařízení

Nainstalovaná zařízení

Kombinace parametrů

Současné použití některých parametrů se vzájemně vylučuje nebo ovlivňuje. Proto je nutné znát přípustné kombinace parametrů a z toho odvodit jejich optimální nastavení.

  • nastavení parametru Continuous = true nebo Trigger = value vylučuje (a ruší) nastavení parametru SampleBuffer = auto. Je nutné zadat parametr SampleBuffer, jinak je automaticky nastaven na hodnotu 1024.

  • je-li nastaven parametr Continuous = true a současně Trigger = value, bude se po osdstartování převodu čekat na dosažení spouštěcí úrovně na vstupu. Poté se budou data plnit do buffer kanálu a předávat do aplikace spojitě až do zastavení převodu povelem z aplikace. Spouštěcí úroveň se přitom nebude dále uplatňovat.

Kanály ovladače

Ovladač má pevnou množinu kanálů, která se vztahuje k právě otevřenému zařízení. Kanály je možno rozdělit podle funkce do několika skupin:

  • přenos hodnot z/do ovladače

  • řízení činnosti ovladače

  • získání stavových informací o ovladači

Následuje výčet a popis kanálů ovladače:

  • 1 až 16 - buffer kanály pro analogové vstupy AD0 až AD15.

  • 17 - stav ovladače. Hodnoty a jejich význam jsou popsány v kapitole Zpracování a stavy výjimek ovladače.

  • 18 - kód poslední chyby. Význam je popsán v kapitole Chybové kódy. Zápis hodnoty do tohoto kanálu přepíše kód poslední chyby.

  • 19 - textový popis chyby.

  • 20, 21 - nastavení napětí na analogového výstupu DA0 resp. DA1. Rozsah je dán konfigurací low-level ovladače (program 'DEVINST.EXE').

  • 30 až 45 - hodnoty z digitálních vstupů karty (DI0 až DI15).

  • 50 až 65 - digitální výstupy karty (DO0 až DO15).

  • 90 - start převodu. Zápisem hodnoty true se odstartuje převod, zápisem hodnoty false se převod zastaví. Je-li převod spuštěn, zápis hodnoty true buď nemá význam (parametr EnableRestart = false) nebo se okamžitě spustí nový převod (parametr EnableRestart = true). Převod se odstartuje pouze když je zařízení otevřeno.

  • 92, 93 - zadání intervalu měřených vstupů. Kanál č.92 nastavuje první vstup (scan from) intervalu, kanál č.93 nastavuje poslední vstup (scan to) intervalu. Při spuštění aplikace se tento interval vytvoří automaticky na základě definovaných buffer kanálů v aplikaci. Pomocí tohoto kanálu se dá interval pouze zúžit nebo nastavit na původní hodnotu. Změna intervalu se uplatní až po odstartování nového převodu.

  • 94 - příznak naplnění buffer kanálu. Stav tohoto kanálu se změní pokaždé, když dojde k naplnění buffer kanálů.

  • 95 - zadání vzorkovací frekvence. Nová frekvence se uplatní až po odstartování nového převodu. Hodnota frekvence nemůže být libovolné číslo. Musí padnout do posloupnosti dané generátorem hodin na kartě a hodnoty zapsané do programovatelných čítačů na kartě. Pokud zadaná frekvence nevyhovuje, low-level ovladač vyhledá nejbližší vhodnou frekvenci. U některých low-level ovladačů může vzniknout chyba, hlavně v případech, kdy je zadaná frekvence mimo povolený rozsah.

  • 96 - nastavení způsobu spouštění převodu. Hodnoty pro jednotlivé módy jsou:

    0 - externě

    1 - programově

    2 - dosažením napěťové úrovně na vstupu

  • 97 - nastavení aktivního vstupu pro spouštění úrovní. Vstupy se číslují od nuly.

  • 98 - úroveň pro spuštění převodu. Zadává se jako hodnota napětí nebo binární hodnota AD převodníku podle typu odpovídajícího buffer kanálu. Je-li buffer kanál typu cardinal, je zadané číslo bráno jako binární hodnota AD převodníku, je-li buffer kanál typu shortreal, zadává se tato hodnota jako napětí ve Voltech.

  • 99 - směr průběhu signálu pro spuštění převodu. Hodnoty jsou:

    0 - pro spuštění musí mít signál vzestupný průběh.

    1 - pro spuštění musí mít signál sestupný průběh.

  • 100 až 115 - aktuální hodnoty měřených analogových vstupů. Vstupy musí být v intervalu automaticky získaném z definovaných buffer kanálů nebo zadaném pomocí kanálů č.92 a 93.

  • 120 až 135 - nastavení zisku pro jednotlivé analogové vstupy karty. Zadaná hodnota musí odpovídat hodnotám podle dokumentace ke konkrétní měřicí kartě.

Číselné kanály kromě buffer kanálů a aktuálních hodnot analogových vstupů nemají pevně definovány svoje typy. Hodnoty se automaticky konvertují do požadovaných typů podle definice v aplikaci (mapovací soubor). Např. kanály č.120 až 135 mohou být typu real nebo cardinal a podobně.

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. Procedury ovladače jsou určeny pro rozšíření možností ovladače. Není bezpodmínečně nutné je používat, neboť duálně s nimi fungují některé kanály. Akce vyvolané voláním procedur jsou podstatně rychlejší, než stejné akce vyvolané zápisem resp. čtením kanálů. Pomocí procedur se dá přistupovat na více zařízení. Volání procedur ovladače 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 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 nebo návratová hodnota.

DriverName a Param1 se zadávají jako textové řetězce. Param2 je různého typu podle významu procedury. Param1 se uvádí jako procedura ovladače. Param2 bude dále uváděn jako parametr procedury.

Přehled a význam jednotlivých procedur ovladače (parametr Param1)

GetResult

Vrací v Param2 řetězec popisující jméno a verzi ovladače. Param2 je typu string.

SetDeviceNumber

Nastavuje číslo aktuálního zařízení podle parametru Param2 a vybrané zařízení otevře. Jestliže je předtím nějaké zařízení otevřeno, nejprve se zavře. Ovladač vygeneruje výjimku, která informuje o výsledku operace. Param2 je libovolného číselného typu.

OpenDevice

Otevře aktuální zařízení. Číslo zařízení je nastaveno buď jako parametr Device v souboru parametrů nebo se nastaví voláním procedury SetDeviceNumber. Ve druhém případě je zařízení také otevřeno.

CloseDevice

Zavře aktuální zařízení. Poté je možno začít pracovat s jiným zařízením.

StartConversion

Odstartuje převod do buffer kanálů. Procedura se chová stejně jako zápis hodnoty true do kanálu č.90.

StopConversion

Zastaví převod do buffer kanálů. Ukončení převodu nemusí být bezprostřední. Může trvat určitou dobu, dokud se nazaplní vnitřní vyrovnávací buffer. Procedura se chová stejně jako zápis hodnoty true do kanálu č.91.

SetSamples

Nastaví novou velikost pro buffer kanál podle parametru Param2. Tato velikost může být pouze zmenšena. Param2 je libovolného číselného typu.

SetRate

Nastaví novou vzorkovací frekvenci podle parametru Param2. Procedura se chová stejně kjako zápis do kanálu č.95. Param2 je libovolného číselného typu.

GetRate

Vrátí nastavenou hodnotu vzorkovací frekvence va parametru Param2. Param2 je libovolného číselného typu.

SetScanFrom

Nastaví první z intervalu měřených vstupů podle parametru Param2. Chová se stejně jako kanál č.92. Param2 je libovolného číselného typu.

SetScanTo

Nastaví poslední z intervalu měřených vstupů podle parametru Param2. Chová se stejně jako kanál č.93. Param2 je libovolného číselného typu.

GetStatus

Vrátí stav ovladače v parametru Param2. Chová se stejně jako kanál č.17. Hodnoty a jejich význam jsou popsány v kapitole Zpracování výjimek a stav ovladače.. Param2 je libovolného číselného typu.

GetErrorCode

Vrátí aktuální chybový kód v parametru Param2 (stejně jako kanál č.18). Hodnoty jsou popsány v kapitole Chybové kódy. Param2 je libovolného číselného typu.

GetErrorStr

Vrátí textový popis aktuální chyby v parametru Param2 (stejně jako kanál č.19). Param2 je typu string.

SetDioPort

Podle parametru Param2 nastaví číslo aktuálního DIO (digital input/output) portu, se kterým pracují procedury GetDioByte a SetDioByte. Číslo portu je dáno typem karty a je zpravidla 0 pro digitální vstupy/výstupy DIO0 až DIO7 a 1 pro digitální vstupy/výstupy DIO8 až DIO15. Param2 je libovolného číselného typu.

GetDioByte

Přečte hodnotu z aktuálního DIO portu do parametru Param2. Rozsah hodnot je 0 až 255. Param2 je libovolného číselného typu.

SetDioByte

Zapíše hodnotu parametru Param2 do aktuálního DIO portu. Rozsah hodnot je 0 až 255. Param2 je libovolného číselného typu.

SetDA0Output

Zapíše hodnotu parametru Param2 do analogového výstupu DA0. Hodnota se zadává jako napětí v rozsahu podle nastavení low-level ovladače. Stejně se chová zápis do kanálu č.20. Param2 je libovolného číselného typu.

SetDA1Output

Zapíše hodnotu parametru Param2 do analogového výstupu DA1. Hodnota se zadává jako napětí v rozsahu podle nastavení low-level ovladače. Stejně se chová zápis do kanálu č.21. Param2 je libovolného číselného typu.

SetTrigger

Parametr Param2 nastavuje způsob spouštění převodu stejně jako kanál č.96. Param2 je libovolného číselného typu.

SetTriggerInput

Parametr Param2 nastavuje aktivní vstup pro spouštění úrovní stejně jako kanál č.97. Vstupy se číslují od nuly. Param2 je libovolného číselného typu.

SetTriggerValue

Parametr Param2 nastavuje úroveň pro spuštění převodu stejně jako kanál č.98. Param2 je libovolného číselného typu.

SetTriggerSlope

Parametr Param2 nastavuje směr průběhu signálu pro spuštění převodu stejně jako kanál č.99. Param2 je libovolného číselného typu.

Posloupnost volání procedur pro řízení převodu

Parametr OpenDeviceOnInit ovlivňuje posloupnosti volání procedur při měření dat do buffer kanálů. Je-li nastaven na hodnotu true, zařízení je po startu aplikace otevřeno a stačí volat pouze proceduru StartConversion pro odstartování převodu a StopConversion pro jeho zastavení. Je-li hodnota parametru OpenDeviceOnInit false, je nutno neprve zařízení otevřít pomocí procedury OpenDevice a podle potřeby také zavřít. Při ukončení aplikace se automaticky volá posloupnost procedur StopConversion a CloseDevice. Poznámka. Při volání SetDeviceNumber se automaticky volá CloseDevice a OpenDevice. Při volání StartConversion se automaticky volá OpenDevice pokud není zařízení otevřeno.

Mapovací soubor ovladače a datové typy

Tento soubor obsahuje typy kanálů ovladače. Protože ovladač má pevnou množinu kanálů, měl by tento soubor obsahovat vždy stejné kanály. Typy číselných kanálů jsou volitelné. Jedinou výjimku tvoří kanály analogových vstupů, a to jak buffer kanály (č.1 až 16), tak kanály s aktuálními hodnotami (č.100 až 115). U těchto kanálů jsou přípustné pouze typy cardinal (16 bitů bez znaménka) nebo shortreal (real 4 byte).

Zpracování a stavy výjimek ovladače

Výjimka od ovladače se vygeneruje pokaždé, když se naplní buffer kanál nebo pokud dojde k nějaké chybě. Podle stavu ovladače se dá určit jaká je její příčina. Stav ovladače může nabývat následujících hodnot:

  • 0 = stNone - stav po spuštění aplikace před otevřením zařízení (když je parametr OpenDeviceOnInit roven hodnotě false). Tento stav nevyvolá výjimku ale je možno jej zjistit čtením kanálu č.17 (chStatus) nebo voláním procedury ovladače (DQM) GetStatus.

  • 1 = stOpen - zařízení je otevřeno

  • 2 = stBusy - stav po odstartování převodu. Tento stav nevyvolá výjimku. Je možno jej zjistit čtením kanálu č.17 nebo voláním procedury GetStatus.

  • 3 = stCompleted - převod je dokončen. Buffer kanál je naplněn a je možno jej zpracovat v aplikaci.

  • 4 = stError - nastala chyba. Kód chyby je možno získat čtením kanálu č.18 a textový popis chyby čtením kanálu č.19, popřípadě voláním procedur ovladače GetErrorCode a GetErrorStr.

Chybové kódy

Nastane-li během činnosti ovladače chyba, vygeneruje se výjimka se stavem stError. K identifikaci chyby jsou k dispozici dva kanály:

  • kanál č.18 - číselný kód chyby.

  • kanál č.19 - textový popis chyby.

Chybový kód může generovat buď nižší vrstva ovladače (low-level) nebo vyšší vrstva (vlastní ovladač ADVBUF). Kódy chyb generovaných vyšší vrstvou ovladače:

HodnotaVýznam
0

erOK - žádná chyba

1

erMemory - nepodařilo se naalokovat paměť

3

erHandle - pokus o přístup na zařízení, které není otevřeno

96

erParamChange - není možno měnit parametr během převodu

97

erOverrun - došlo k chybě přeběhu

98

erBuffer - v aplikaci není definován buffer kanál

99

erInternal - vnitřní (neočekávaná) chyba

V případě chyby nižší vrstvy je vhodné přečíst textový popis chyby pro její lepší identifikaci.

Poznámka:

Textové popisy chyb nižší vrstvy jsou v anglickém jazyce, textové popisy chyb vyšší vrstvy jsou v jazyce, pro který je ovladač vygenerován.

Možné problémy při použití ovladače

  • nefunguje zadaní SampleBuffer = auto - hlásí se chyba "Invalid buffer size".

    Důvod: Je špatně zvolená velikost buffer kanálů.

  • při meření dvou a více vstupů dochází občas k náhodnému přehození dat v bufferech i při poměrně pomalém vzorkování (1000Hz).

    Důvod zatím není znám, pravděpodobně chyba v low-level ovladači (v novější verzi podpory ADVANTECH nebyl tento problém zaznamenán).

  • někdy po prvním startu převodu dojde k hlášení low-level ovladače (ADVANTECH) o obsazeném přerušení nebo DMA. Důvod není znám.

    Řešení: Je nutno potvrdit toto hlášení kliknutím na tlačítko "Yes". Následující převody jsou v pořádku.

  • Při vyšších rychlostech vzorkování může dojít k zahlcení buď low-level ovladače nebo celého systému. Projeví se to jakoby zmenšením vzorkovací frekvence

    Řešení: Zmenšit rychlost vzorkování nebo zrychlit počítač.

  • Při vzniku chyby Timeout v low-level ovladači se už nemusí podařit znovu spustit převod.

    Důvod: chyba low-level ovladače.

    Řešení: V takovém případě je třeba restartovat počítač.

Příklady souborů DMF a PAR ovladače

Soubor *.DMF pro vstupní hodnoty typu cardinal

  begin
  1 - 16 cardinal input
  17 - 18 real input
  19 string input
  20 - 21 real output
  30 - 45 boolean input
  50 - 65 boolean output
  90 - 91 boolean output
  92 - 93 real output
  94 boolean input
  95 - 99 real output
  100 - 115 cardinal input
  120 - 135 real output
  end.

Soubor *.DMF pro vstupní hodnoty typu shortreal

  begin
  1 - 16 shortreal input
  17 - 18 real input
  19 string input
  20 - 21 real output
  30 - 45 boolean input
  50 - 65 boolean output
  90 - 91 boolean output
  92 - 93 real output
  94 boolean input
  95 - 99 real output
  100 - 115 shortreal input
  120 - 135 real output
  end.

Soubor *.PAR

  [Settings]
  Gain = 0
  Device = 0
  OpenDeviceOnInit = true
  SampleFrequency = 8000
  SampleBuffer = 2560
  Fifo = none
  Continuous = true
  ExtTriggerTimeout = 2000
  Trigger = int
  TriggerInput = 0
  TriggerValue = 0
  TriggerSlope = up
  GetActualValues = true