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
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ů:
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:
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'
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í
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í.
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:
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:
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:
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: Hodnota | Vý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.
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
|