Měření na akviziční jednotce Zadání laboratorní úlohy 1)
Seznamte se s parametry a možnostmi aplikace akviziční jednotky Agilent U2351A v automatizovaných měřicích procesech.
2)
Seznamte se s ovládáním digitálních vstupů/výstupů. Ovládání výstupů otestujte při aktivování (rozsvěcování) LED.
3)
Sestavte program pro testování neznámého (Black box) kombinačního logického obvodu. Program ověřte na kombinačním logickém obvodu se 4 vstupy a 1 výstupem a pokuste se určit logickou funkci, kterou obvod realizuje.
4)
Seznamte se s architekturou programovatelného čítače. Sestavte program pro měření frekvence a střídy obdélníkového signálu.
5)
Seznamte se aplikacemi analogových vstupů a výstupů akviziční jednotky. Ovládání analogových vstupů/výstupů otestujte měřením výstupního napětí napájecího zdroje. Funkci ověřte měřením nastaveného výstupního napětí na analogovém výstupu.
6)
Sestavte program pro měření převodní charakteristiky neznámého dvojbranu (Black box) a tuto charakteristiku zobrazte.
7)
Seznamte se s využitím generování a snímání analogových průběhů pomocí integrované paměti FIFO. Sestavte jednoduchý program realizující generátor tvarových kmitů.
8)
Sestavte program pro harmonickou analýzu neznámého dvojbranu, na vstup bude z akviziční jednotky přiveden harmonický signál a na výstupu dvojbranu bude sejmut s následným zobrazením na panelu v časové i frekvenční oblasti.
Teoretický úvod Akviziční jednotka Agilent U2351A řady DAQ je určena pro generování a sběr dat v různorodých měřicích procesech. Obsahuje soubor digitálně ovládaných vstupů a výstupů, dvě jednotky programovatelného čítače a 16 kanálů analogových vstupů a 2 kanálů analogových výstupů s 16-ti bitovými A/D a D/A převodníky se vzorkováním do 250 kS/s. Cílem laboratorní úlohy je základní seznámení se všemi integrovanými jednotkami. Na obr. 1 je uvedeno uspořádání aplikačního konektoru na čelním panelu jednotky. Stejné číslování má i rozšiřující deska U2901, ke které jsou přes svorkovnici připojeny jednotlivé aplikace (měřicí přístroje, zkoumané obvody).
Postup měření 1) Pro práci s akviziční jednotkou jsou stěžejní dva manuály, první týkající se popisu jednotlivých funkčních bloků s řadou ukázkových příkladů [1] a programátorská příručka [2], v níž jsou uvedeny syntaxe všech příkazů pro ovládání akviziční jednotky. Akviziční jednotka je k PC připojena prostřednictvím USB rozhraní. Prostudujte základní strukturu obou manuálů tak, abyste byli schopni najít potřebné informace k sestavování programů. Podle -1-
Měření na akviziční jednotce
MREM Lab. 7
zapojení konektoru na obr. 1 si udělejte přehled, na které kanály jsou připojeny jednotlivé přístroje a měřené obvody.
Obr. 1 Zapojení aplikačního konektoru. 2) Pomocí příkazů z palety VISA nejprve proveďte inicializaci měřicího přístroje. Inicializaci lze provést např. pomocí funkcí VISA Open. Na konce programového kódu by měla být samotná komunikace ukončena pomocí funkce VISA Close. Funkčnost připojeného měřicího zařízení a jeho komunikace, si můžete ověřit např. pomocí příkazu *idn?. Příklad zápisu kódu pro odeslání identifikačního příkazu je uveden na obr. 2. Pro hledání příslušných funkcí v LabVIEW je využit příslušných palet s funkcemi a nebo funkci rychlého vyhledávání pomocí funkce Quick Drop s klávesovou zkratkou CTRL + mezera. Pro inicializaci jednotky lze využít následujících standardních příkazů (všechny jsou kompletně popsány v kapitole 7 IEEE-488 Common Command [2]):
-2-
Měření na akviziční jednotce
MREM Lab. 7
Obr. 2 Ukázka realizovaného kódu v prostředí LabVIEW včetně kontextové nápovědy. *rst – restartuje měřicí přístroj; ● *idn? – vrátí inicializační řetězec měřicího přístroje; ● *wai – vyšle do měřicího přístroje dotaz, který je potvrzen po dokončení operace (čekej a pokračuj, wait and continue); ● *cls – vynuluje registry událostí. Pro práci s digitálními vstupy a výstupy je nejprve třeba definovat směr portu (nelze definovat směr jednotlivých bitů, celý port je pro danou chvíli buď vstupní nebo výstupní). Otestujte funkčnost ovládání výstupů pomocí aktivace LED, které jsou anodou připojeny k bráně kanálu DIO503 (ovládání log. 1 = LED svítí). Vybrané příkazy pro ovládání digitálních vstupů/výstupů jsou následující: ● CONF:DIG:DIR DDD, (@CCC) – nastaví směr kanálu CCC = 503 buď jako vstupní DDD = INP nebo výstupní DDD = OUTP; ● SOUR:DIG:DATA HHH, (@CCC) – vyšle na výstupní kanál CCC hodnotu HHH (nejméně významný bit portu je 0, hodnota HHH je dekadické číslo). Obládání 4 bitů je zde realizováno pomocí dekadického čísla, pokud chci aby svitili všechny čtyři LED tak na příslušný port zapíši dekadické číslo 15; ● MEAS:DIG:BIT? BBB, (@CCC) – přečte hodnotu z bitu (pinu) BBB vstupního portu (kanálu) CCC. 3) Vstupy kombinačního obvodu (páskový vodič) jsou připojeny k bráně (kanálu) DIO504 a je tedy třeba jej definovat jako výstupní. Výstup kombinačního obvodu je připojen k bráně DIO501 na bit (pin) 0. Pomocí příkazů uvedených v 2) sestavte program, který vygeneruje všechny možné kombinace na vstupech kombinačního logického obvodu a následně vyčte stav výstupního pinu obvodu. Výsledek vhodně zobrazte v přehledné tabulce, tak aby bylo možno určit logickou funkci neznámého obvodu. Při tvorbě tabulky je nutno rozložit vstupní desítkovou hodnotu z cyklu na jednotlivé binární hodnoty vstupních bitů. To lze jednoduše provést pomocí naprogramování funkcí celočísleného dělení x DIV y a modula (zbytek po dělení) x MOD y. ●
4) Integrovaný čítač v akviziční jednotce je zapojen podle obr. 2. Obsahuje tři vstupy buď ovládané softwarově nebo z externích hardwarových vstupů, a to CLK (hodiny), GATE -3-
Měření na akviziční jednotce
MREM Lab. 7
(hradlování) a UPDOWN (směr čítání). Výstup OUT pak umožňuje generování synchronních pulsů. Pro aplikaci čítače vstupního signálu je výhodné využít vstupu GATE. Pro práci s čítačem se využijí následující příkazy: ● COUN:GATE:SOUR XXX, (@CCC) – nastaví hradlo GATE kanálu čítače CCC jako interní (softwarově řízené) XXX = INT nebo externí XXX = EXT; ● COUN:CLK:SOUR XXX, (@CCC) – nastaví hodiny CLK kanálu čítače CCC jako interní (softwarově řízené) XXX = INT nebo externí XXX = EXT; ● COUN:FUNC FFF, (@CCC) – nastaví režim čítače CCC na měření frekvence FFF = FREQ, na měření periody FFF = PER, na měření šířky pulsu FFF = PWID, na generování pulsů FFF = TOT; ● MEAS:COUN:DATA? (@CCC) – přečte hodnotu naměřených dat z čítače CCC (například je-li čítač nastaven pro měření frekvence, přečtená hodnota bude odpovídat kmitočtu signálu na vstupu, atd.). V tomto bodě zadání laboratorní úlohy je třeba vytvořit obslužný program pro měření frekvence a střídy vstupního signálu připojeného na GATE portu 302. Požadovaný program může být proveden podle následujícího vývojového diagramu: 1 inicializace měřicího přístroje (reset a nulování registrů událostí); 2 inicializace čítače (GATE musí být externí, CLK interní); 3 v nepřetržité smyčce nastavování funkce čítače pro měření kmitočtu a šíře pulsů, čtení hodnot a vhodné zobrazení, při znalosti periody a šířky pulsu lze snadno určit střídu nejlépe v procentech.
Obr. 2 Architektura čítače v akviziční jednotce. Test čítače proveďte buzením z generátoru, naměřené veličiny kontrolujte osciloskopem. 5) Jednotka analogových vstupů a výstupů umožňuje měření a generování napětí. Každý analogový vstup nebo výstup je definován příslušným kanálem (vstupy AI101 …, výstupy AO201 …), do příkazů se zadává jen číslo kanálu. Pro práci s analogovým vstupem je třeba nejprve nadefinovat napěťový rozsah, zda bude zpracováván signál unipolární (jen kladné
-4-
Měření na akviziční jednotce
MREM Lab. 7
hodnoty napětí) nebo bipolární a typ připojení, tj. diferenciální vstup, vstup vztažený k analogové zemní svorce akviziční jednotky nebo vstup s plovoucí zemí. Sestavte jednoduchý program pro měření napětí na výstupu napájecího zdroje. Uvažujte bipolární signál s rozsahem ±10 V vztažený k zemní svorce akviziční jednotky. Pro práci s analogovým vstupem využijte následující příkazy: ● ROUT:CHAN:RANG HHH, (@CCC) – nastaví rozsah analogového vstupního kanálu CCC na hodnotu HHH (hodnoty HHH mohou být v bipolárním módu 10, 5, 2.5, 2.0, 1.25, 1.0, 0.5, 0.25, 0.2 nebo 0.05 V, pro unipolární měření pak 10, 5, 4, 2.5, 2.0, 1.0, 0.5, 0.4 nebo 0.1 V); ● ROUT:CHAN:POL XXX, (@CCC) – nastaví mód analogového vstupního kanálu CCC jako unipolární XXX = UNIP nebo bipolární XXX = BIP; ● ROUT:CHAN:STYP XXX, (@CCC) – nastaví připojení analogového vstupního kanálu CCC jako diferenciální XXX = DIFF, se společnou zemní svorkou s akviziční jednotkou XXX = SING nebo s plovoucí zemí XXX = NRS; ● MEAS:VOLT:DC? (@CCC) – přečte hodnotu napětí na analogovém kanálu CCC. Test analogového vstupu AI102 proveďte buzením z napájecího zdroje. Pro práci s analogovým výstupem postačuje zadat jediný příkaz, který aktivuje analogový výstup s napětím v rozsahu -10 až +10 V: ● SOUR:VOLT VVV, (@CCC) – nastaví analogový výstupní kanál CCC na napětí VVV (lze zadat i bez jednotky). Test analogového výstupu AO202 proveďte měřením osciloskopem, můžete například generovat pilový průběh realizací v opětovně volané smyčce (využijete při řešení následujícího úkolu). 6) Pomocí předcházejícího bodu proveďte měření bod po bodu převodní charakteristiky nelineárního neznámého dvojbranu. Charakteristiku závislosti výstupního napětí dvojbranu na vstupním napětí zobrazte pomocí vhodného grafu. Vstupní napětí nastavujte (rozmítejte) v rozsahu 0 až 8 V s rozumným krokem (např. 10 mV). Pro toto měření využijte analogový vstup AI101 a analogový výstup AO201. Při měření odpojte generátor (přeslechy signálu vnáší do měření chyby), to platí i pro následující úkoly. 7) Jednotka analogových vstupů a výstupů umožňuje kromě jednotlivých měření práci v kontinuálním automatickém režimu se zápisem nebo čtením měřicího signálu z integrované paměti FIFO. Na obr. 3 je uvedeno blokové zapojení analogové jednotky měřicího systému. V případě generování signálu daného průběhu se naplní vzorky tohoto průběhu paměť D/A převodníku (FIFO) daty z počítače (přes USB kontrolér) a pomocí časovacího a trigrovacího systému se přenášejí s definovanou vzorkovací frekvencí na D/A převodníky. Podobný je i přístup při akvizici vstupního analogového signálu, kdy časovací a trigrovací obvody vzorkují vstupní signál, A/D převodníky jej digitalizují a ukládají po paměti FIFO A/D převodníku. Tato data jsou pak přístupná uživateli stažením do PC přes USB kontrolér.
-5-
Měření na akviziční jednotce
MREM Lab. 7
Obr. 3 Architektura analogové jednotky v akvizičním systému. Pro generování signálů jsou v driveru akviziční jednotky připraveny nejběžnější průběhy (paterny) tvarových kmitů, které mohou být zavedeny do paměti FIFO D/A převodníku a využity pro generování tvarových průběhů. Lze rovněž vytvořit vlastní tvarový průběh (patern). Pro tento úkol využijte předdefinovaných průběhů a pomocí následujících příkazů nakonfigurujte port AO202: ● ROUT:ENAB ON, (@CCC) – aktivuje analogový výstupní kanál CCC, připojí jej k paměti FIFO D/A převodníku; ● APPL:PPP AAA, OOO, (@CCC) – provede zápis tvarového průběhu PPP do paměti DAC FIFO (PPP = SIN pro průběh sinusový, PPP = SQU pro průběh obdélníkový, PPP = TRI pro průběh trojúhelníkový, PPP = SAWT pro průběh pilovitý, PPP = NOIS pro průběh bílého šumu, PPP = USER pro průběh uživatelský) pro výstupní kanál CCC a nastaví amplitudu na AAA V a stejnosměrný ofset na OOO V; ● OUTP:WAV:FREQ FFF – nastaví frekvenci předdefinovaných průběhů na hodnotu FFF (hodnota v Hz v rozsahu 10 – 10000 Hz), vzorkovací frekvence se nastaví na předdefinovanou hodnotu; ● OUTP ON – připojí fyzický výstup k D/A převodníku; ● OUTP OFF – odpojí fyzický výstup od D/A převodníku; Pro správnou funkci generátoru tvarových průběhů je třeba nejprve aktivovat analogový výstup a připojit jej k paměti FIFO DAC, poté nastavit typ průběhu a jeho frekvenci a nakonec aktivovat fyzický výstup. Změnu průběhu nebo frekvence lze provést pouze při neaktivním fyzickém výstupu. Test generátoru proveďte pomocí osciloskopu.
-6-
Měření na akviziční jednotce
MREM Lab. 7
8) V tomto úkolu využijte předchozího generátoru s nastaveným sinusovým průběhem s 4,5 V, DC ofsetem 5 V a pracovním kmitočtem 1000 Hz. Tento signál nechť je přiveden na vstup nelineárního dvojbranu. Výstup z dvojbranu je přiveden na analogový vstup, který nastavte jako bipolární s rozsahem ±10 V a s připojením přístrojové společné země (viz bod 5 této laboratorní úlohy). Dále nastavte vzorkovací kmitočet 20 kHz, počet vzorků 500, tj. 1000 paměťových míst (ve výsledku bude aplikováno 500 vzorků, každý vzorek zabírá v paměti dvě místa – 16-ti bitové rozlišení), skenování příslušného vstupního kanálu. Pro tuto úlohu použijte výstupní port AO201 a vstupní port AI101. Nakonec spusťte digitalizaci vstupního signálu podle následujících příkazů: ● ACQ:SRAT FFF – nastaví vzorkovací frekvenci na hodnotu FFF (v Hz); ● ACQ:POIN NNN – nastaví počet paměťových míst na hodnotu NNN, počet vzorků bude poloviční; ● ROUT:SCAN (@CCC) – nastaví měření (skenování) průběhů z analogového vstupního kanálu CCC; ● DIG – započne s akvizicí (digitalizace a ukládání do paměti A/D převodníku FIFO) skenovaného kanálu. Po spuštění příkazu DIG se provádí akvizice vstupního signálu a je třeba provádět kontrolu dokončení akvizice (naplnění předdefinovaného rozsahu paměti). Kontrolu provedete pomocí příkazu (použijte konstrukci ve smyčce While Loop), které může vypadat např. následujícím způsobem (obr. 4): ● WAV:STAT? – dotaz na ukončení procesu akvizice, pokud vrátí FRAG akvizice probíhá, pokud vrátí DATA je akvizice hotová.
Obr. 4 Ukázka stavu testování připravenosti dat ve smyčce While Loop. Jakmile je signál uložen v paměti FIFO lze jej vyčíst do PC pomocí příkazu: ● WAV:DATA? – přečte data z paměti A/D převodníku FIFO. Formát uložení dat specifikuje obr. 5. Je tedy nutno nejprve přečíst prvních 10 znaků hlavičky (funkce rady VISA Read přečte pouze 10 bitů (znaků)). Z hlavičky pak vyberte informaci kolik jednotka navzorkovala hodnot a poté přečtěte novou funkcí VISA Read navzorkovaná data. (obr. 5). Počet navzorkovaných dat můžete získat ze stringu např pomocí funkce Decimal String To Number. Pak je třeba přečíst kýžená data, které jsou však ve formátu string a je nutné je přetypovat. Přetypování lze provést pomocí funkce Unflatten From String, kde je třeba jako průvodní parametr zvolit little-endian. Na výstupu budete mít k dispozici pole typu double s jednotlivými vzorky, tak jak je změžil A/D převodník. Správná hodnota odpovídající napětí vstupního signálu je pro bipolárně nastavený vstupní kanál dána vztahem:
-7-
Měření na akviziční jednotce
MREM Lab. 7
2 H R, 216 kde H je přečtená hodnota a R je nastavený rozsah kanálu. Na obr. 6 je pak uvedena ukázka kódu, který popsaná převod realizuje. U
Obr. 5 Struktura dat v paměti FIFO.
Obr. 6 Ukázka kódu pro převod vzorků. Pro jednoduchost zobrazení a vypočtu fft, je vhodné data přetypovat na datový typ Waveform pomocí funkce Build Waveform (viz obr. 6) Na závěr tohoto úkolu stačí pole 500 vzorků zobrazit v grafu jako časový průběh a provést Fourierovu transformaci pomocí funkce fft(x) a získat modul spektra pomocí funkce abs(x). Zde je vhodné použít funkci Spectral Measurements Podle teorie obvodů je zřejmé, že na výstupu nelineárního obvodu získáme další harmonické složky. Stejnou strukturu dat, která je definována pro A/D převodník FIFO má i D/A převodník FIFO pro uživatelsky definované průběhy, jak bylo naznačeno v komentáři k úkolu 7.
-8-
Měření na akviziční jednotce
MREM Lab. 7
Literatura [1]
[2]
Agilent Technologies, U2300A Series Multifunction USB Data Acquisition, User’s Guide. [online], [cit. 2013-11-21]. Dostupné z < http://cp.literature.agilent.com/litweb/pdf/U235190002.pdf>. Agilent Technologies, U2300A Series Multifunction USB Data Acquisition, Programming Guide. [cit. 2013-11-21]. Dostupné z
.
-9-