X38MSP Automatizované měřicí systémy se sběrnicí GPIB Jaroslav Roztočil Katedra měření Fakulta elektrotechnická ČVUT Praha Technická 2, 6 27 Praha 6 E-mail: roztocil@fel.cvut.cz Sběrnice GPIB (General Purpose Interface Bus) nejčastěji používaná sběrnice laboratorních měřicích systémů navržena firmou Hewlett-Packard - HPIB (Hewlett Packard Interface Bus) definována standardy IEEE 488./2003 a IEEE 488.2/992 počet přístrojů: 4 (+ řídicí počítač) přenosová rychlost max. MB/s paralelní sběrnice, 24 vodičů (8 datových DIO aždio8, 3 pro handshaking DAV, NRFD, NDAC, 5 pro vysílání jednovodičových zpráv ATN, IFC, REN, SRQ, EOI, 8 zemních vodičů) Sběrnice GPIB elektrické úrovně signálu - TTL; L (< 0,8 V); H (> 2,0 V); logické úrovně signálu: log. (TRUE) ~ L; log.0 (FALSE) ~ H celková délka sběrnice: max. 20 m lze prodloužit pomocí extenderů vzdálenost mezi dvěma přístroji max. 2 m (ale v praxi i 4 až 8 m) Moduly rozhraní GPIB (interface modules) rozhraní GPIB není v počítačích standardně implementováno, ale výrobci (National Instruments, Agilent Corp., aj.) nabízejí moduly rozhraní GPIB prakticky pro všechny důležité typy počítačových sběrnic a rozhraní (ISA, PCI, PC Card, USB, aj.) zásuvná karta rozhraní GPIB pro PCI sběrnici: Moduly rozhraní GPIB Příklad zapojení konvertoru USB/GPIB v jednoduchém měřicím systému převodník USB/GPIB - max. přenosová rychlost: - Agilent 82357A = 850 kb/s - National Instruments NI GPIB-USB-HS =,8 MB/s resp. 8 MB/s
IEEE 488. handshaking IEEE 488. H + 2.0 V; L + 0.8 V H + 2.0 V; L + 0.8 V IEEE 488. adresy 5-bitová primární adresa (rozsah 0 až 30) Přijímací adr. (MLA, LAD): 7. bit = log.0, 6. bit = log. Vysílací adr. (MTA, TAD): 7. bit = log., 6. bit = log.0 IEEE 488. BUS COMMANDS, ATN = TRUE Univerzální vícevodičové zprávy UNL (unlisten) = 0 UNT (untalk) = 0 Příklad: UNL MTA0 MLA8 MLA22 (ATN=TRUE) IEEE 488. BUS COMMANDS, ATN = TRUE Adresované příkazy IEEE 488. BUS COMMANDS, ATN = TRUE Sekundární příkazy 2
IEEE 488. BUS COMMANDS Jednovodičové zprávy IEEE 488. žádost o obsluhu Service Request SR funkce žádosti o obsluhu kontrolérem, vysílá přístroj pomocí SRQ. Po zjištění signálu SRQ je nutné identifikovat, který z přístrojů na sběrnici žádá o obsluhu - to se provádí pomocí sériového nebo paralelního hlášení. Service Request SRQ (žádost o obsluhu kontrolérem, vysílá přístroj) IEEE 488. sériové hlášení. vyslání UNL 2. vyslání SPE 3. adresace kontroléru na příjem 4. vyslání (TAD) n 5. adresované zařízení vysílá svoje stavové slovo (status byte); hodnota ATN = FALSE 6. pokud je 7. bit stavového slova nulový, opakují se kroky 4 a 5 7. vyslání SPD; sériové hlášení je ukončeno (TAD) n představuje vysílací adresu n-tého zařízení IEEE 488. paralelní hlášení. Konfigurace UNL (LAD) PPC PPE UNL kde: PPE = 0 S P P P 2. Výzva k paralelnímu hlášení IDN = ATN & EOI == TRUE 3. Zrušení konfigurace UNL (LAD) PPC PPD UNL IEEE 488.2-987 Standard definuje: možné sestavy funkcí rozhraní zařízení dle IEEE 488. (SH, AH, T5 (příp. T6, TE5 nebo TE6), L3 ( příp. L4, LE3 nebo LE4), SR, RL0 nebo RL, PP0 nebo PP, DC, DT0 nebo DT, C0 nebo C4 s C5, C7, C9 nebo C); formát dat; syntaxi zpráv; rozšířený stavový model zařízení; soubor obecných příkazů; protokoly přístrojových zpráv. IEEE 488.2 datové formáty Kódování a) ASCII - sedmibitový kód pro přístrojové zprávy (8. bit se ignoruje); b) 8-bitový binární kód pro vyjádření celých čísel; c) binární kód pro vyjádření čísel s plovoucí řádovou čárkou (IEEE 754). Numerické formáty Povinným formátem jsou data vyjádřená v desítkové soustavě v kódu ASCII a číselném formátu NR (čísla typu integer): NR obsahuje číslice desítkové soustavy včetně znaménka Např.: 23, +23, -2345 3
IEEE 488.2 datové formáty Volitelné numerické formáty: desítkové číselné formáty NR2 a NR3. NR2 - obsahuje číslice desítkové soustavy včetně znaménka s jednou desetinnou tečkou umístěnou na libovolném místě Např.: 2.3, +.234, - 0.2345 NR3 obsahuje mantisu vyjádřenou ve formátu NR2, znak E a exponent ve formátu NR IEEE 488.2 datové formáty Znakový formát: složen z písmen velké abecedy a číslic včetně znaku '_' (dek. ekv. 95); musí začínat písmenem (např. R4_D2). Řetězcový formát: vysílaný znakový řetězec začíná i končí uvozovkami; může obsahovat libovolné znaky kódu ASCII Např.:.23E+5, +23.5E-56, -234.6858E+90 IEEE 488.2 datové formáty Blokový formát: umožňuje vysílat blok dat (kódovaných binárně nebo ASCII) pomocí osmibitových datových bajtů. Skládá se z hlavičky bloku a vlastního bloku dat (bytů). Hlavička bloku dvojitý křížek (#) v kódu ASCII následovaný číslicí v kódu ASCII, která udává, kolik dalších znaků následuje v kódu ASCII (všechny v desítkové soustavě); následné znaky představují číslo ve formátu NR udávající počet datových bajtů <DAB>, které obsahuje přenášený datový blok oddělovač jednotlivých parametrů příkazu: čárka ', např. CONF:VOLT:DC 00,E-3 (nastavení přístroje pro měření stejnosměrného napětí na rozsahu 00 V a s rozlišením mv) ukončovací znak dotazu: otazník '?', např. "MEAS:VOLT:AC?" (odměr střídavého napětí a uložení výsledku do výstupní fronty) Např.: #2 <DAB> <DAB> #300 <DAB> IEEE 488.2 syntaxe zpráv oddělovač jednotlivých příkazů (zpráv) na dvou rozdílných hieararchických úrovních: dvojtečka ':' např. "INP:IMP 50" oddělovač příkazů stejné úrovně ve vícenásobném příkazu (zprávě): středník ';' např. "INP:IMP 50; INP:FILT " nebo "INP:IMP 50; FILT " ukončovací znak zprávy (řetězce) při příjmu: a) pouze znak LF (dek. ekv. 0), b) znak LF současně s jednovodičovou zprávou EOI, c) pouze EOI. ukončovací znak zprávy (řetězce) při vysílání: znak LF současně s EOI tzv. zpráva END oddělovač významové části příkazu od jeho parametrů: ' ', tj. jakýkoliv znak s dekadickým ekvivalentem 0 až 9 či až 32 (tzv. white space) např. TRIG:SOUR EXT (přístroj bude spouštěn externě) 4
IEEE 488.2 model stavových registrů Původní standard IEEE 488 definoval jediný registr stavového bytu. IEEE488.2 zavádí povinný systém stavových registrů navázaných na generování signálu SRQ. Standard Event Status registr IEEE 488.2 obecné příkazy 0 2 3 4 5 6 název bitu Operation Complete Request Control Query Error Device Dependent Error Execution Error Command Error User Request význam Zařízení ukončilo operaci a je připraveno přijmout nové příkazy Indikuje stávajícímu kontroléru, že zařízení žádá o převzetí řízení sběrnice Pokus o čtení dat z prázdné výstupní fronty; ztráta dat z výstupní fronty Zařízení nemůže dokončit operaci v důsledku vnitřních chybových podmínek (přetečení, přetížení) Při provádění příkazu došlo k chybě (např. data v příkaze jsou mimo povolený rozsah) Syntaktická nebo sémantická chyba příkazu Indikuje lokální zásah uživatele do řízení přístroje *RST (Reset Command) příkaz pro nulování přístroje (ukončení probíhajících operací a nastavení přístroje do klidového stavu); obsahy stavových registrů zůstanou nezměněny *CLS (Clear Status Command) příkaz pro nulování stavových registrů *IDN? (Identification Query) dotaz na specifikaci přístroje *STB? (Status Byte Query) dotaz na obsah Status Byte registru *SRE (Service Request Enable) příkaz pro nastavení Service Request Enable registru *SRE? Service Request Enable Query) dotaz na obsah Service Request Enable registru *ESE (Standard Event Status Enable Command) příkaz pro nastavení Standard Event Status Enable registru *ESE? (Standard Event Status Enable Query) dotaz na obsah Standard Event Status Enable registru *ESR? (Standard Event Status Query) dotaz na obsah Standard Event Status registru 7 Power On Indikuje vypnutí a opětné zapnutí přístroje 5
IEEE 488.2 protokoly přístrojových zpráv definují závazná pravidla nejen pro vlastní přenosy přístrojových zpráv, ale také pro jejich zpracování, a to i v případech, kdy dojde k chybě (např. přijetí neúplné zprávy, přerušení během vykonávání zprávy apod.); vztahují se na zařízení, která nejsou systémovými řídicími jednotkami. Zpracování signálu SRQ pomocí mechanismů VISA Pro zpracování asynchronních událostí (např. signálu SRQ) lze v programu použít dva mechanismy VISA: záznam do fronty; funkci zpětného volání. POZN.: Ve VISA jsou pro řízení přístrojů definovány tyto události: VI_EVENT_SERVICE_REQ SRQ (obecně žádost o obsluhu); VI_EVENT_VXI_SIGP VXIbus signál (pouze VXI); VI_EVENT_TRIGVXIbus trigger (pouze VXI); VI_EVENT_IO_COMPLETION dokončení asynchronního čtení/zápisu. IEEE 488.2 protokoly přístrojových zpráv definují závazná pravidla nejen pro vlastní přenosy přístrojových zpráv, ale také pro jejich zpracování, a to i v případech, kdy dojde k chybě (např. přijetí neúplné zprávy, přerušení během vykonávání zprávy apod.); vztahují se na zařízení, která nejsou systémovými řídicími jednotkami. HS488 (High Speed GPIB protocol) navržen firmou National Instruments s cílem dosáhnout vyšší přenosové rychlosti přenosová rychlost max. 8 MB/s (2 zařízení, 2 m) nebo.5 MB/s (4 zařízení, 5 m) zvýšení rychlosti je dosaženo synchronním přenosem dat v praxi není užití tohoto protokolu příliš rozšířeno! SCPI Standard Commands for Programmable Instruments Definuje: SCPI Konsorcium firem založené v roce 990: Bruel&Kjaer, Fluke, Philips, Hewlett-Packard (nyní Agilent Technologies), Keithley Instruments, National Instruments Corporation, Racal-Dana Instruments, Tektronix, Wavetek a) hierarchicky uspořádanou množinu SCPI příkazů pro ovládání měřicích přístrojů, včetně jejich syntaxe b) množinu povinných obecných příkazů (common commands) podle IEEE 488.2, c) formáty dat d) stavový model přístroje e) model spouštění přístroje. 6
SCPI model přístroje SCPI command tree Funkce měření Cesta Parametry Volba funkce Zpracování signálu vstupu a citlivosti výsledku ROUTe INPut SENSe CALCulate Spouštěcí Vnější TRIGger MEMory algoritmus paměť FORMat CALCulate SOURce OUTPut Formát Zpracování Volba parametrů Parametry vstupních dat vstupních dat gener. signálu výstupu Funkce generování signálu Obr. 6.. Obecný funkční model přístroje podle standardu SCPI Formát výstupu FORMat ROUTe Cesta signálu Příkazy jsou uspořádány v hierarchické stromové struktuře. Např.: MEASure :VOLTage :DC? {<range> MIN MAX DEF}, {<res> MIN MAX DEF} :DC:RATIo? {<range> MIN MAX DEF}, {<res> MIN MAX DEF} :AC? {<range> MIN MAX DEF} :CURRent :DC? {<range> MIN MAX DEF}, {<res> MIN MAX DEF} :AC? {<range> MIN MAX DEF} :RESistance? {<range> MIN MAX DEF}, {<res> MIN MAX DEF} SCPI model stavových registrů :STATus :OPERation :QUEStionable RS-232 Condition Transition Event & OR Enable Condition :CONdition? Transition Event :EVENt? & OR Enable :ENABle Lze ovládat lze pouze jedno zařízení Maximální přenosová rychlost 5 kb/s Propojení RS-232 a PC Integrováno na desce Pomocí rozšiřující PCI karty Pomocí USB převodníku RQS OPR ESB MAV QUE MSS *STB? Obr. 6.2. Požadovaná konfigurace stavových registrů přístroje podle standardu SCPI TxD RxD RTS CTS DCD DTR DSR PŘÍSTROJ GND MODEM PŘENOSOVÁ LINKA MODEM 2 GND TxD RxD RTS CTS DCD DTR DSR PŘÍSTROJ 2 Obr. 2.5. Blokové zapojení přístrojů při standardní modemové komunikaci 7
PARITNÍ BIT STOP BIT 2 3 4 5 6 7 8 P DATOVÉ BITY START BIT Obr. 2.6. Formát přenosu dat RS-232 VXIplug&play Systems Alliance http://www.vxipnp.org/ Aliance založená v roce 993. 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í). VXIplug&play Systems Alliance Dílčí cíle: udržovat dlouhodobou kompatibilitu instalovaných 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, RS-232, PXI, USB!!! Systémové rámce Systémové rámce definované dokumentem VPP-2 System Frameworks Specification specifikují: 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. 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, PXI, USB). Způsob použití funkcí knihovny VISA demonstruje následující příklad programu pro komunikaci v systému se sběrnicí IEEE 488. 8
#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 -; } /* zahájení komunikace s přístrojem s primární adresou */ status = viopen( defaultrm, "GPIB0::::INSTR", VI_NULL, VI_NULL, &instr ); /* nastavení intervalu timeout pro spojení určené 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; } Komunikace s přístrojem se otevírá pomocí operace viopen(). Specifikace přístroje a použitého rozhraní se provádí pomocí deskriptoru!!! ROZHRANÍ IEEE 488 VXI GPIB-VXI RS-232 PŘÍSTROJOVÝ DESKRIPTOR GPIB[board]::<primary address>[::secondary address]::instr VXI[board]::<logical address>::instr GPIB-VXI[board]::<logical address>::instr ASRL<port>::INSTR Např.: /* sběrnice IEEE 488 (GPIB), přístroj s primární adresou */ status = viopen( defaultrm, "GPIB0::::INSTR", VI_NULL, VI_NULL, &instr ); /* rozhraní RS-232, port COM */ status = viopen( defaultrm, ASRL::INSTR", VI_NULL, VI_NULL, &instr ); /* rozhraní USB */ status = viopen( defaultrm, usb0::239::03::my43003489::instr", VI_NULL, VI_NULL, &instr ); VISA 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). 9