Programování měřicích systémů pomocí technologie VXIplug&play Jaroslav Roztočil Katedra měření Elektrotechnická fakulta ČVUT Praha
2 Obsah VXIplug&play Systems Alliance Cíle aliance Dokumenty Systémové rámce VISA knihovna Příklad programu Ovladače měřicích přístrojů a modulů Závěr
3 VXIplug&play Systems Alliance Aliance založená v roce 1993 Zakládající členové: GenRad, National Instruments, Racal Instruments, Tektronix, Wavetek. Hlavním záměry: zjednodušit integraci, programování a údržbu VXI systémů - minimalizovat závislost na konkrétním výrobci nebo dodavateli funkčních komponent; zajistit vzájemnou funkční spolupráci jednotlivých komponent VXI systémů (VXI rámů, řídicích počítačů, měřicích modulů a programového vybavení).
4 VXIplug&play Systems Alliance Dílčí cíle: udržovat dlouhodobou kompatibilitu instalovaných VXI systémů; udržovat „otevřenou architekturu“ VXI systémů; standardizovat použití programových komponent - SW ovladačů měřicích modulů a přístrojů a jednoduchých programů pro testování jejich činnosti. V průběhu vývoje byl standard VXIplug&play rozšířen i na systémy na bázi IEEE 488 a RS-232 !!!
5 Dokumenty VXIplug&play standard obsahuje 16 dokumentů: jednotlivé dokumenty mají označení VPP-x např. VPP-1: Charter Document, VPP-2 System Frameworks Specification mimořádné postavení mají dokumenty VPP ‑ 4.1 (VISA-1, Main Specification) a VPP-4.3 (The VISA Library); všechny dokumenty lze bezplatně získat z webové stránky :
6 Systémové rámce Systémové rámce definované dokumentem VPP-2 System Frameworks Specification specifikují následující systémové prvky: HW konfiguraci řídicího počítače včetně komunikačního rozhraní (VXI, IEEE 488, RS-232) měřicích modulů popř. přístrojů; typ operačního systému; aplikační vývojové prostředky; SW rozhraní VISA a knihovny pro komunikaci s rozhraním; ovladače měřicích přístrojů; program pro testování měřicího přístroje (tzv. Soft Front Panel); požadavky na dokumentaci. Ve standardu VPP-2 je v současnosti definováno pět základních systémových rámců odvozených od HW platformy řídicího počítače a použitého operačního systému.
7 Systémové rámce
8 WIN počítače standardu IBM PC a operační systém Windows 3.1 nebo Windows for Workgroups 3.11; vývojové prostředky: 16-bitové verze MS C++, Borland C++, LabWindows/CVI, LabVIEW, MS Visual Basic a Agilent VEE; WIN95 počítače standardu IBM PC a operační systém Windows95 nebo Windows98; vývojové prostředky: 32-bitové verze MS C++, Borland C++, LabWindows/CVI, LabVIEW, MS Visual Basic a Agilent VEE;
9 Systémové rámce WINNT počítače standardu IBM PC a operační systém Windows NT 4.0 nebo Windows 2000 (NT 5.0); vývojové prostředky stejné jako v předchozím případě; SUN počítače standardu SUN 4 s operačním systémem Solaris 1.x nebo 2.x; kompilátor Sunsoft cc; HP-UX počítače standardu HP System 700 s operačním systémem HP ‑ UX ver. minimálně 10.01; kompilátor HP CC;
10 VISA knihovna VISA (Virtual Instrument Software Architecture) zajišťuje transparentní komunikaci mezi aplikačním programem (popř. přístrojovým ovladačem) a fyzickým zařízením (přístrojem nebo modulem); umožňuje psát programy jednotným způsobem, bez ohledu na to, kdo je výrobcem použitého rozhraní (VXI, IEEE 488, RS-232). Způsob použití funkcí knihovny VISA demonstruje následující příklad programu pro komunikaci v systému se sběrnicí IEEE 488.
11 #include "visa.h" int main(void) { ViStatus status; /* hlášení chyb */ ViSession defaultRM, instr; /* komunikační kanály */ ViUInt32 retCount; /* počet přenesených znaků */ ViChar buffer[200]; /* buffer pro komunikaci */ /* inicializace systému */ status = viOpenDefaultRM(&defaultRM); if (status < VI_SUCCESS) { /* chyba při inicializaci VISA...ukončení */ return -1; } /* zahájení komunikace s přístrojem s primární adresou 1 */ status = viOpen( defaultRM, "GPIB0::1::INSTR", VI_NULL, VI_NULL, &instr );
12 /* nastavení intervalu „timeout“ pro spojení určenéné pomocí instr */ status = viSetAttribute(instr, VI_ATTR_TMO_VALUE, 5000); /* dotaz na identifikaci přístroje */ status = viWrite(instr, "*IDN?", 5, &retCount); status = viRead(instr, buffer, MAX_CNT, &retCount); /* zpracování dat... */ /* ukončení komunikace */ status = viClose(instr); status = viClose(defaultRM); return 0; }
13 Komunikační kanál (tzn. spojení s konkrétním přístrojem) se otevírá pomocí operace viOpen(). Specifikace přístroje a použitého rozhraní se provádí pomocí deskriptoru !!! ROZHRANÍPŘÍSTROJOVÝ DESKRIPTOR IEEE 488 GPIB[board]:: [::secondary address]::INSTR VXI VXI[board]:: ::INSTR GPIB-VXI GPIB-VXI[board]:: ::INSTR RS-232 ASRL ::INSTR Např.: /* sběrnice IEEE 488 (GPIB), přístroj s primární adresou 1 */ status = viOpen( defaultRM, "GPIB0::1::INSTR", VI_NULL, VI_NULL, &instr ); /* rozhraní RS-232, port COM1 */ status = viOpen( defaultRM, “ASRL1::INSTR", VI_NULL, VI_NULL, &instr );
14 VISA - operace VISA je založena na na objektově orientovaném návrhu. Prostředky (resources) odpovídají objektům, operace (operations) metodám. Příklady operací: –viOpenDefaultRM()otevírá spojení s implicitním správcem prostředků; –viOpen()otevírá spojení (relaci, session) s požadovaným přístrojem; –viWrite()zapisuje data do přístroje; –viRead()čte data z přístroje; –viPrintf()provádí formátovaný zápis, obdoba printf(); –viScanf()provádí formátované čtení; –viReadSTB() přečte status byte přístroje (např. u GPIB vyvolá polling); –viGetAttribute()přečte hodnotu atributu; –viSetAttribute()nastaví hodnotu atributu; –viClose() končí spojení s přístrojem nebo správcem prostředků
15 Atributy popisují vlastnosti příslušných relací nebo prostředků. Některé atributy jsou lokální, tj. ovlivňují jen jednu relaci, jiné jsou globální pro všechny relace. Atributy jsou zpřístupněny operacemi viGetAttribute() a viSetAttribute(). Příklady atributů: – VI_ATTR_TMO_VALUE(lokální), určuje dobu pro timeout v ms; – VI_ATTR_TERMCHAR(lokální), určuje ukončovací znak přenosu; – VI_ATTR_INTF_TYPE(globální, jen čtení), určuje typ interface; – VI_ATTR_GPIB_PRIMARY_ADDR adresa zařízení v dané relaci; – VI_ATTR_EVENT_TYPE (jen čtení) typ události, která nastala. VISA - atributy
16 Asynchronní události (events) SW aplikace může povolit příjem specifikovaných událostí pomocí dvou mechanismů (záznamu do fronty, funkce zpětného volání). Pro řízení přístrojů jsou definovány tyto události: – VI_EVENT_SERVICE_REQ žádost o obsluhu přístroje (SRQ u GPIB); – VI_EVENT_VXI_SIGP VXIbus signál nebo přerušení (pouze VXI); – VI_EVENT_TRIG VXIbus trigger (pouze VXI); – VI_EVENT_IO_COMPLETION dokončení asynchronního čtení/zápisu. VISA - asynchronní události
17 Ovladače měřicích přístrojů a modulů standardizace ovladačů měřicích přístrojů je obsažena v dokumentech VPP-3.1 až VPP-3.4; hlavním přínos - specifikace jednotné architektury ovladače, implementace logických funkčních bloků společných pro libovolný typ měřicího přístroje nebo modulu; každý z bloků vybaven příslušnou funkcí nebo skupinou funkcí, které jsou přístupné z aplikačního programu prostřednictvím definovaného programového rozhraní; konkrétní implementace ovladače je závislá na typu operačního systému; v případě MS Windows je požadována DLL knihovna distribuovaná jak v kompilovaném tvaru (*.dll,*.def,*.lib), tak ve zdrojovém tvaru programu v jazyce ANSI C (*.h a *.c.), dále soubor typu *.fp zajišťující grafické rozhraní a dokumentační soubor ve tvaru *.hlp.
18 Model přístrojového ovladače
19 VXIplug&play Programming VXI DMMVXI SwitchVXI Instrument VISA Hardware/Software Link Soft Front Panel DMM DriverSwitch Driver Application Program
20 Závěr technologie VXIplug&play výrazně zjednodušuje vývoj a údržbu programů pro laboratorní měřicí systémy; zajišťuje přenositelnost programů na různé SW a HW platformy s minimálními zásahy do zdrojového kódu; uživatel může integrovat konkrétní systém pomocí HW příp. SW prostředků různých výrobců a optimalizovat výsledné technické příp. cenové parametry; někteří výrobci (National Instruments, Agilent Corp.) nabízejí rozšíření systémových rámců a VISA knihovny vůči standardu (podpora OS Linux, TCP IP komunikace, podpora systémů PXI).
21 Literatura [1] NI-VISA, User Manual. National Instruments, Austin, September [2] NI-VISA, Programmer Reference Manual. National Instruments, Austin, September [3] webová stránka VXIplug&play Systems Alliance [4] Haasz, V.-Roztočil, J.-Novák, J.: Číslicové měřicí systémy. Vydavatelství ČVUT, Praha [5] Agilent VISA. User’s Guide. Agilent Corporation 2002.
22 Literatura [6] ANSI/IEEE Standard , IEEE Standard Digital Interface for Programmable Instrumentation. [7] ANSI/IEEE Standard , IEEE Standard Codes, Formats, Protocols, and Common Commands. [8] ANSI/IEEE Standard , VMEbus Extensions for Instrumentation: VXIbus. [9] PXI Specification: PCI eXtensions for Instrumentation, National Instruments Corporation, Austin 2001.