2014. április hónap bejegyzései

DAQmx - mintavételezéses mérések

Hardware-timed mérések esetén a mintavételezés vezérlését nem a számítógép, hanem maga a mérőhardver végzi el. Az aktuális hardver képességei határozzák meg, hogy az egyszerre hány mérési feladat (Task) végrehajtására képes, mekkora memória áll rendelkezésre az adatok ideiglenes tárolására, illetve, hogy milyen adatátviteli sebességgel rendelkezik. A legtöbb mérőeszköz mindössze egyetlen SW vagy HW timed feladat végrehajtására alkalmas. STC3 vezérlőt tartalmazó eszközök esetén (pl cDAQ) már három feladatot is használhatunk párhuzamosan, különböző időzítések mellett, azonban egy-egy modulhoz csak egy-egy feladat rendelhető.

Mintavételezéses méréseknek két fő típusát különböztetjük meg: véges hosszúságú mérés, és folytonos mérések. Előbbiek esetén a megadott mennyiségű adat mérését követően befejezzük a mintavételezést, esetleg a mérést később megismételjük (pl. egy ciklusban). Egy egyszerű mintaprogram a következő ábrán látható:

DAQmx HW-Timed A In

A csatorna kiválasztását követően megadjuk a mintavételi sebességet, valamint azt is, hogy hány pontot szeretnénk mérni egy-egy mérés során. A ciklusban mindig újraindítjuk a mérést, majd pedig beolvassuk a mintavételezett adatokat. Több csatorna mérése esetén az NChan NSamp opciót kell kiválasszuk. Folytonos mérések esetén a DAQmx Timing.vi sample mode bemenetére a Continuous Samples opciót kell bekössük, ezt követően a cikluson kívül (egyszer) indítjuk a mérést, a ciklusban pedig beolvassuk a szükséges adatmennyiséget:

DAQmx - Continuous A In

A mintavételi sebesség megadásakor a driver felülbírálhatja kérésünket, és a hardver képességeihez igazodó mintavételi sebességet fog beállítani. Amennyiben kíváncsiak vagyunk a végeredményre, a DAQmx Timing Property Node.vi segítségével kérdezhetjük le:

 DAQmx  -Actual Sample Clock

DAQmx - Analóg bemenet mérése

A National Instruments által gyártott USB műszerek nagy része a DAQmx driver segítségével programozhatók. A LabVIEW programozásról valamint a műszerek kezelésének alapjairól a hamarosan megjelenő „Mérés és adatgyűjtés laboratóriumi jegyzet” című jegyzetben írok részletesebben. A most elkezdett post-sorozatban néhány, ott nem szereplő módszert és valamint hasznos javaslatokat mutatok be.

Műszerek egyszerű kezelésére a DAQ assistant nevű eszközt is használhatjuk, mely segítségével, egyszerűen, varázslószerűen tudjuk konfigurálni a mérési vagy vezérlési feladatot. Összetettebb mérési feladatok esetén viszont a DAQ assistant használata már nem kézenfekvő, célszerű magunknak megírni az adatgyűjtésre használható kódot.

A driver használata során a következő alapfogalmak ismeretére van szükségünk:

  • Physical channel: az eszközön lévő bemenet vagy kimenet
  • Virtual channel: a fizikai csatorna reprezentációja
  • Task: egy mérési feladat, mely több virtuális csatornát tartalmaz
  • On demand/ Software timed: a mintavételezést a PC szoftver frissítési rátája dönti el. Nem determinisztikus, alacsony sebességnél használható
  • Hardware timed: maga a hardver végzi a mintavételezés vezérlését, determinisztikus

A következő egyszerű programban egy csatorna mérését mutatom be.

DAQmx Software Timed Analog Input 1 Ch

A program elején konfiguráljuk a kiválasztott csatornát. Az input terminal configuration bemenet esetén a következő fő választási lehetőségeink vannak:

  • RSE (referenced single ended): a bemenő feszültséget a műszer földjéhez képest mérjük
  • NRSE (non referenced single ended): a bemenő feszültséget a műszer az AI-sense bemenethez képest méri
  • Differential: két (általában szomszédos) bemenet közötti feszültségkülönbséget méri
  • Default: az adott csatorna alapértelmezett beállítását használja. Ez általában differenciális beállítást takar, kivéve a magasabb sorszámú csatornák esetén amennyiben azok valamely bemenet negatív párja lennének differenciális mérés esetén.

A DAQmx Start Task.vi indítja el magát a mérést, ezt követően a DAQmx Read.vi segítségével olvashatjuk ki az adatokat. A vi alatt lévő Polymorphic VI Selector segítségével választhatjuk ki az adatok típusát, egyetlen csatorna és egyetlen mért minta esetén választhatunk DBL (egyetlen skalár) valamint a Waveform között. A Waveform a minta mellett tartalmazni fogja a csatorna időzítési értékeit is (pl. mérés ideje).

A mérés egy ciklusban történik, ennek frissítési gyakorisága 100 ms. Az adatok egy Waveform Chart-on kerülnek megjelenítésre. A ciklus a Stop gomb megnyomásakor, vagy hiba esetén leáll. A program végén az erőforrások felszabadítása zajlik.

Szükség esetén egyszerre több csatornát is mérhetünk. Ekkor a physical channels mező Browse opcióját használhatjuk egyszerre több, azonos tulajdonságokkal rendelkező bemenet kiválasztására. A DAQmx Read.vi esetén ki kell válasszuk az NChan1Samp opciót.

DAQmx Software Timed Analog Input n Ch

Amennyiben különböző beállításokkal rendelkező csatornákat szeretnénk hozzárendelni egy-egy mérési feladathoz, akkor több DAQmx Start Task.vi-t kell meghívnunk a következő ábrának megfelelően:

 DAQmx multiple physical channels

Megjegyzés: csak azonos típusú csatornákat (pl. analóg bemenet) tudunk egy feladathoz hozzárendelni.

KLJN kommunikátor megvalósítása

A KLJN kommunikációs protokoll alapját az előző bejegyzésben írtam le. Benne jelentős szerepet kap a termikus zaj, azonban a termikus zaj szobahőmérsékleten túlságosan is kis értékű ahhoz, hogy bármilyen kommunikációt építhessünk rá. Ezért, a termikus zajt feszültséggenerátorokkal helyettesítjük, melyek több millió fokos hőmérsékletet szimulálnak. Ahhoz, hogy a kommunikáció ezen változtatás miatt ne lehessen feltörhető, a zajnak minden tulajdonságában azonosnak kell lennie a termikus zajjal, az amplitúdója is annak megfelelően kell skálázódjon:

 {\sigma_{H} \over \sigma_{L} } = \sqrt { R_{H} \over R_{L} }.

A megvalósított KLJN rendszer blokk diagramja a 2. ábrán látható [Mingesz 2012]. Mindkét kommunikáló fél rendelkezik egy adatgyűjtő egységgel és egy jelkondicionáló egységgel. A két fél közötti kommunikációt egyrészt a KLJN vezeték valósítja meg, e mellett pedig egymással internetes protokollon keresztül osztják meg a protokoll működtetéséhez szükséges, valamint a feltörés kiküszöbölésére szolgáló mérési adatokat.

KLJN rendszer blokkdiagramja

KLJN rendszer blokkdiagramja

Egy-egy kommunikátor blokkvázlata a következő ábrán látható. A rendszer alkalmas a protokoll működésének bemutatására és bizonyos feltörési kísérletek elemzésére. A rendszer továbbfejlesztése folyamatban van.

KLJN egység blokk diagramja

KLJN egység blokk diagramja

A megvalósított KLJN rendszer fényképe

A megvalósított KLJN rendszer fényképe

[1] R. Mingesz, L.B. Kish, Z. Gingl, C.G. Granqvist, H. Wen, F. Peper, T. Eubanks, G. Schmera, “Information theoretic security by the laws of classical physics”, Plenary talk at the 5th IEEE Workshop on Soft Computing Applications, (SOFA 2012) August 2012, Szeged, Hungary. In: Balas VE et al. (Eds.), Soft Computing Applications, AISC 195, pp. 11–25 (Springer). http://arxiv.org/abs/1206.2534

Előzmény: A KLJN kommunikációs protokoll

Rövid LabVIEW képzések

A CEFAIC pályázat keretein belül három rövid LabVIEW képzést indítunk. A képzések a LabVIEW programozás alapjait tekinti át, valamint bemutatják, hogyan lehet különböző adatgyűjtő eszközöket programozni. A kurzust az egyetemen dolgozó kollégáknak, valamint diákoknak ajánljuk.

Mindhárom képzés 2x3 órás, csütörtökönként 14:00 és 16:30 között, a helyszín pedig az Irinyi 116-os laboratórium.

A kurzusok:

  • Bevezetés a LabVIEW használatába, április 10. és 17.
  • NI adatgyűjtők programozása LabVIEW segítségével, április 24. és május 8.
  • Valós idejű (cRIO) rendszerek programozása, május 22. és 29.

A képzések ingyenesek, további részletek itt:
http://www.inf.u-szeged.hu/~mingesz/Education/CLV/