Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Krátké doporučení pro tvorbu akademických prací
Automatizované měření
Pavel Pačes, 2010, Verze 1
1
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Obsah Předmluva ............................................................................................................................................... 3 Seznam změn........................................................................................................................................... 3 Úvod ........................................................................................................................................................ 4 Agilent IO Libraries a NI Measurement & Automation ....................................................................... 4 Základní příkazy ............................................................................................................................... 6 Matlab Instrument Control Toolbox ................................................................................................... 6 Měřicí zařízení - přístroje......................................................................................................................... 7 GPIB ..................................................................................................................................................... 8 Sériová linka ........................................................................................................................................ 9 USB .................................................................................................................................................... 10 CANbus .............................................................................................................................................. 10 Ethernet ............................................................................................................................................. 10 Měření ................................................................................................................................................... 10 Inicializace spojení ............................................................................................................................. 11 Čtení dat ............................................................................................................................................ 12 Uzavření spojení ................................................................................................................................ 14 Group Trigger ........................................................................................................................................ 14 Příklady .................................................................................................................................................. 15 Tři multi-metry HP 34401A v měření analogových napětí ................................................................ 15 Příklad komunikace s digitálním osciloskopem Tektronix MSO4034 ................................................ 16 Rozsáhlé pracoviště s množstvím přístrojů a komunikačních rozhraní............................................. 20 Ovládání regulátoru tlaků IVD ....................................................................................................... 20 Bibliografie ............................................................................................................................................ 23
2
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Předmluva V tomto dokumentu jsou prezentované možnosti přístrojů připojených do prostředí Matlab z důvodu jednoduché a rychlé možnosti automatického změření požadovaného jevu. Nejedná se o vyčerpávající dokument a například zajímavou možnost určitě poskytuje třeba prostředí kancelářského balíku MS Office a skriptovacího jazyka Visual Basic (1).
Seznam změn 1. 1. 2010
3
První verze dokumentu
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Úvod Pro účely automatického sběru dat je možné využít několik softwarových balíků. Jednou z možností je například Octave, NI LabView, NI LabWindows CVI, Matlab, atd. Hned úvodem je třeba napsat, že v případě přípravy krátkého měření se nevyplatí vytvářet program s uživatelským rozhraním. Pro krátké měření je nejlepší vytvořit krátký skript (soubor příkazů), který umožní v rychlém sledu naměřit požadovaná data, případně měřicí skript rychle upravit data změřit znovu a data zpracovat. Což bohužel u prostředí typu NI LabWindows CVI možné není, jakkoliv se snaží práci programátora zjednodušit. Tato vývojová prostředí se hodí pro vývoj programů, které budou používány například pro testování prototypů ve výrobě po dobu např. deseti let, ale nehodí se pro požadavek rychlého změření souboru dat.
Měřicí pracoviště
Otevření
Start
přístrojů
Skript: measInit.m measMeas.m
Algoritmus měření Uzavření komunikace
Konec
Uložení dat
measClose.m
Obrázek 1 Obecný vývojový diagram pro automatizované měření.
Příklady zde uváděných skriptů je možné stáhnout z (2).
Agilent IO Libraries a NI Measurement & Automation Pro ověření funkčnosti spojení knihovny VISA a přístroje je nevýhodnější využít Agilen IO Libraries (3) nebo National Instruments Measurement & Automation Explorer (4). Jedná se o produkty, které umožňují otestovat funkčnost příkazů odesílaných na přístroj a přečíst navrácené hodnoty. Programy je možné nalézt v nabídce Start operačního systému MS Windows: Programy
Agilent IO Libraries Suite
Programy
National Instruments
Agilent Connection Expert, nebo Measurement & Automation (viz obr. 3).
Obrázek 3 NI Measurement & Automation v nabídce Programy. Obrázek 2 Přístup k Agilent Connection Expert přes ikonu v oznamovací oblasti.
4
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Obrázek 2 pak zobrazuje roletové menu pro zpřístupnění nástroje Agilent Connection Expert, který je spuštěný na obrázku 4. Výhodou software je skutečnost, že dokáže připojené přístroje automaticky identifikovat a zobrazit adresovací řetězce, které je pak možné využít v dalších programech. Obdobnou službu pak poskytuje i nástroj Measurement & Automation, firmy NI (viz obr. 5).
Obrázek 4 Přístup k Agilent Connection Expert přes ikonu v oznamovací oblasti.
Obrázek 5 Přístup k Agilent Connection Expert přes ikonu v oznamovací oblasti.
5
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření Oba nástroje umožňují jednoduchou komunikaci s přístrojem pomocí vestavěných utilit. Utilita Agilent Interactive IO je zobrazena na obrázku 6. Funkce je přístupná přes kontextové menu daného přístroje.
Obrázek 6 Přístup k Agilent Connection Expert přes ikonu v oznamovací oblasti.
Základní příkazy Mezi základní příkazy vhodné pro odladění komunikace s přístrojem patří následující: *IDN?
Identifikace přístroje.
*CLS
Smazání chybových flagů přístroje.
SYSTem:ERRor?
Vrátí popis chyby, ke které došlo.
Matlab Instrument Control Toolbox Základním prostředkem pro interakci prostředí Matlab s měřicím přístrojem je toolbox přidávaný k prostředí Matlab: Matlab Instrument Toolbox. Základní informace o nainstalovaných rozhraních, které je možné použít ke komunikaci, poskytuje funkce: >> instrhwinfo ans = MATLABVersion: SupportedInterfaces: SupportedDrivers: ToolboxName: ToolboxVersion:
6
'7.1 (R14SP3)' {'gpib' 'serial' 'tcpip' 'udp' {'matlab' 'ivi' 'vxipnp'} 'Instrument Control Toolbox' '2.3 (R14SP3)'
'visa'}
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
>>
Textový výstup obsahuje informace o verzi toolboxu a rozhraních, které je možné využívat pro komunikaci. Pro přístup k přístrojům se z důvodu univerzálního přístupu používá knihovna VISA (Virtual Instrument Software Architecture). Více informací ohledně nainstalovaných rozhraní je možné získat příkazem: >> instrhwinfo( 'visa' ) ans = InstalledAdaptors: {'ni'} JarFileVersion: 'Version 2.3' >>
Z této části výpisu je vidět, že v systému je nainstalované rozhraní knihovny VISA od firmy NI. V případě instalace balíku IO Libraries firmy Agilent by funkce vytiskla místo řetězce 'ni', řetězec 'agilent' - na základě těchto řetězců je možné přistupovat k měřicím přístrojům. Příkaz hwinstrinfo dále umožňuje: >> instrhwinfo( 'visa', 'ni' ) ans = AdaptorDllName: AdaptorDllVersion: AdaptorName: AvailableChassis: AvailableSerialPorts: InstalledBoardIds: ObjectConstructorName: SerialPorts: VendorDllName: VendorDriverDescription: VendorDriverVersion:
[1x74 char] 'Version 2.3' 'NI' [] {2x1 cell} [] {2x1 cell} {2x1 cell} 'visa32.dll' 'National Instruments VISA Driver' 4.1000
>>
Měřicí zařízení - přístroje Měřicí přístroje je možné připojit k počítači typu PC pomocí různých rozhraní typu GPIB, RS232, CAN, nebo Ethernet. Tradiční rozhraní jako GPIB je v současné době vytlačováno modernějším rozhraním USB nebo Ethernet. V následujícím textu budou uvedeny příklady připojení různých přístrojů, spolu s jejich adresovacím řetězcem, který je možné přečíst pomocí nástrojů Agilent Connection Expert, nebo National Instruments Measurement & Automation. Oba nástroje jsou popsány výše.
7
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
GPIB GPIB, tak jak ho známe, patří k tradičním rozhraním pro připojení měřicích přístrojů. Jsou jím vybaveny například všechny přístroje firmy HewletPackard (Agilent). Velkou výhodou GPIB je funkce „trigger“ pro synchronní odečet údajů z několika přístrojů. Příklad adresy: GPIB0::10::INSTR.
Obrázek 7 Agilent 33220A Function/Arbitrary Waveform Generator.
Pro sběr dat z několika zdrojů je možné místo rozsáhlého souboru přístrojů použít multifunkční měřicí přístroj Agilent 34970A, který umožňuje vložit několik vstupně výstupních modulů se šroubovacími konektory pro připojení senzorů fyzikálních veličin. Komunikace s přístroje začíná standardním otevřením zařízení a dále je třeba adresovat příslušné měřicí místo na příslušném vstupně výstupním modulu.
Obrázek 8 HP 34970A Data Acquisition/Switch Unit.
Obrázek 9 zobrazuje dvaceti kanálový měřicí modul HP 34901 s připojenými senzory, který byl použitý pro sběr dat ze zapojení měřicího pracoviště zobrazeného na obr. 16.
Obrázek 9 Zásuvný modul HP34901 s dvacetikanálovým multiplexem.
8
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Sériová linka Sériová linky patří k pomalejším rozhraním. Sériovou linkou je vybaven například přístroj pro měření tlaku Druck DPI145. Příklad adresy: ASRL1::INSTR. Frekvence měření: 2 Hz (viz uživatelský manuál).
Obrázek 10 Druck (GE) DPI145.
Příklad otevření komunikačního kanálu s přístrojem: >> vs = visa('ni', 'ASRL1::INSTR') VISA-Serial Object Using NI Adaptor : VISA-Serial-ASRL1 Communication Settings Port: ASRL1 BaudRate: 9600 Terminator: 'LF' Communication State Status: RecordStatus:
closed off
Read/Write State TransferStatus: BytesAvailable: ValuesReceived: ValuesSent:
idle 0 0 0
>> get(vs,{'Name','Port','RsrcName','Type'}) ans = 'VISA-Serial-ASRL1'
'ASRL1'
'ASRL1::INSTR'
'visa-serial'
>> get(vs,{'BaudRate','DataBits','Parity','StopBits','Terminator'}) ans = [9600]
[8]
'none'
[1]
'LF'
>>
Knihovnu VISA je možné použít pro komunikaci s jakýmkoliv zařízením připojeným přes RS232 (viz Pačes, Baťek.: Automatizované měření v prostředí MS Excel (1)).
9
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
USB Přímé připojení na rozhraní USB podporuje v poslední době stále více přístrojů. Jedním z nich je Agilent 34410A. Příklad adresy: USB0::2391::1543::MY47005859::0::INSTR. Frekvence měření: 40 Hz (zjištěno při měření (5)) v zapojení se třemi multimetry.
Obrázek 11 Agilent 34410A.
CANbus Pro komunikaci po sběrnici CAN z prostředí Matlab doporučuji (6) a (7).
Ethernet Knihovna VISA umožňuje komunikovat pomocí rozhraní ethernet, které je součástí například přístrojů Agilent 34410A, nebo osciloskopu Tektronix MSO řady 4000. Pro správnou funkci je třeba mít správně nastavenu ethernetovou sít a nakonfigurovány přístroje. Příklad adresy: TCPIP0::192.168.1.2::inst0::INSTR.
Obrázek 12 Tektronix MSO4034.
Měření Přístroje zapojené v měřicím pracovišti je nutné inicializovat, otevřít, provést měření a uzavřít. Pro interakci s přístrojem ve většině případů stačí inicializovat knihovnu VISA (příkaz visa). Otevřít objekt přístroje příkazem fopen, zapisovat na přístroj fprintf, číst fscanf a uzavřít spojení příkazem fclose. Příkazy pro měření jsou v detailech rozebrány v programátorské příručce k přístroji, která je ve většině případů dostupná na internetu. Příručka je označovaná jako Programmer‘s manual. Příklad komunikace s přístrojem je uveden zde: >> oInstrument = visa( 'ni', 'GPIB0::10::INSTR') % inicializace knihovny VISA
10
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření VISA-GPIB Object Using NI Adaptor : VISA-GPIB0-10
>> >> >> >>
Communication Address BoardIndex: PrimaryAddress: SecondaryAddress:
0 10 0
Communication State Status: RecordStatus:
closed off
Read/Write State TransferStatus: BytesAvailable: ValuesReceived: ValuesSent:
idle 0 0 0
fopen( oInstrument ) fprintf( oInstrument, '*CLS' ) fprintf( oInstrument, '*IDN?' ) fscanf( oInstrument )
% % % %
otevření přístroje zaslání příkazu clear zaslání dotazu na identifikaci přečtení odpovědi
ans = Agilent Technologies,33220A,MY44035748,2.02-2.02-22-2 >> fclose(oInstrument) >>
% uzavření spojení
V případě rozsáhlejšího měřicího systému je výhodnější vytvořit tři skripty, které budou plnit funkce popsané a vykreslené na obrázku 1. Jedná se o bloky inicializace spojení a otevření komunikačního kanálu, měření dat a uzavření spojení. Pro jednotlivé akce je výhodné vytvořit nezávislé skripty, které přistupují ke sdíleným proměnným ve tvaru struktur. Skripty je výhodné pojmenovat např. následujícím způsobem: Inicializace:
measInit.m.
Měření:
measMeas.m.
Uzavření:
measClose.m.
Inicializace spojení Soubor measInit.m přistupuje ke sdílené proměnné oInstr, která reprezentuje strukturu obsahující tzv. handle na jednotlivé přístroje. Z následujícího příkladu je patrné, že jsou inicializovány tři přístroje příkazem visa, které jsou následně otevřeny příkazem fopen a jsou identifikovány odesláním řetězce „*IDN?“ pomocí příkazu fprintf a zobrazena navrácená hodnota pomocí příkazu fscanf. % ------------------------------------% OPEN MULTI-METER A % ------------------------------------oInstr.oMultiSensorA = visa('ni', 'GPIB0::22::INSTR')
11
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření fopen( oInstr.oMultiSensorA ) % ID fprintf( oInstr.oMultiSensorA, '*IDN?' ) fscanf( oInstr.oMultiSensorA ) % ------------------------------------% OPEN MULTI-METER B % ------------------------------------oInstr.oMultiSensorB = gpib('agilent', 7, 22); fopen( oInstr.oMultiSensorB ) % ID fprintf( oInstr.oMultiSensorB, '*IDN?' ) fscanf( oInstr.oMultiSensorB ) % ------------------------------------% OPEN MULTI-METER Differential % ------------------------------------% 34410A oInstr.oMultiSensorDiff=visa('ni','USB0::2391::1543::MY47005859::0::INSTR'); fopen( oInstr. oMultiSensorDiff ) % ID fprintf( oInstr. oMultiSensorDiff, '*IDN?' ) fscanf( oInstr. oMultiSensorDiff ) % ------------------------------------% END % ------------------------------------disp( 'Init End' );
Čtení dat Soubor measMeas.m provádí hlavní měřicí smyčku. Před jejím spuštěním je výhodné zaznamenat popis měření do proměnné oData.strDesc a na konci měření zaznamenat status měření (ok nebo failed) do proměnné oData.strStatus. Hladní smyčka se provede v iteracích od 1 do iMaxCnt, což je proměnná, která se v každém průchodu kontroluje s aktuálním iteračním prvkem a v případě splněné podmínky pro opuštění smyčky použije příkaz break. Čtení a zápis dat z přístrojů probíhá pomocí standardních příkazů fprintf a fscanf. Příkaz clock vrací aktuální datum a čas. Tyto údaje jsou použity pro konstrukci unikátního jména souboru (viz proměnná filename) a pro uložení do souboru je pak výhodně použito příkazu save, jejímž jedním parametrem je struktura oData. disp( 'Measuring ...' ); % ------------------------------------% Measurement % ------------------------------------clear oData; disp( sprintf('\n') ); oData.strDesc = input('Measurement description :', 's');
12
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření i = 0; iMaxCnt = 80; % ------------------------------------% Main Loop % ------------------------------------tic; while 1 disp( sprintf('%% { %d', i) ); i = i + 1; % ------------------------------------% Wait For User % ------------------------------------% safety break if i > iMaxCnt disp( sprintf('Safety break at %d', i ) ); break; end % % % % % %
keyReply = input( 'Break the loop Y/N? [Enter = No]: ', 's' ); if (~isempty(keyReply)) disp( 'Breaking loop' ); break; end % ------------------------------------% Measurement % ------------------------------------oData.TimeA(i) = toc; fprintf(oInstr.oMultiSensorA, 'MEAS:VOLT:DC? 10,MAX'); fData = fscanf(oInstr.oMultiSensorA , '%f'); oData.SensorA(i) = fData; % ------------------------------------oData.TimeB(i) = toc; fprintf(oInstr.oMultiSensorB, 'MEAS:VOLT:DC? 10,MAX'); fData = fscanf(oInstr.oMultiSensorB , '%f'); oData.SensorB(i) = fData; oData.TimeDiff(i) = toc; % ------------------------------------fprintf(oInstr. oMultiSensorDiff, 'MEAS:VOLT:DC? 10,MAX'); fData = fscanf(oInstr. oMultiSensorDiff, '%f'); oData.SensorUin(i) = fData; disp( sprintf( 'Ua = %f, Ub = %f, Udiff = %f', ... oData.SensorA(i), oData.SensorB(i), oData.SensorDiff(i)) );
% ------------------------------------disp( sprintf('%% %d }\n', (i-1)) ); end % END while 1 oData.strStatus = input('Status :', 's'); % ------------------------------------% Save Data % -------------------------------------
13
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření oTimeStamp
= fix(clock);
filename = sprintf( 'Meas_%04d_%02d_%02d__%02d_%02d_%02d.txt', ... oTimeStamp(1), oTimeStamp(2), oTimeStamp(3), oTimeStamp(4), ... oTimeStamp(5), oTimeStamp(6) ); % save without '-ASCII' option can safe structures like Meas. File can be % loade by commnad 'load' save( filename , 'oData', 'oTimeStamp' ); disp( sprintf( 'Data saved to: %s', filename ) );
Uzavření spojení Nejjednodušším skriptem je poslední skript measClose.m, kterým se jednotlivé otevřené spojení uzavírají. Součástí uzavření spojení by mělo být přepnutí přístroje zpět do lokálního ovládání, což je u některých přístrojů řešeno příkazem „SYSTem:LOCal“. disp( 'Closing ...' ); % ------------------------------------% Close % ------------------------------------fclose( oInstr.oMultiSensorA ) delete( oInstr.oMultiSensorA ) fclose( oInstr.oMultiSensorB ) delete( oInstr.oMultiSensorB ) fclose( oInstr.oMultiSensorDiff ) delete( oInstr.oMultiSensorDiff ) % ------------------------------------% END % ------------------------------------disp( 'Close End' );
Group Trigger Ještě Matlab 2008b (příkaz trigger) neumí softwarové spouštění několika přístrojů připojených k jednomu rozhraní příkazem „*TRG“, nebo „GET“ (Group Execute Trigger). Problém lze obejít využitím externího spouštění, které je paralelně připojené na konektory umístěné na zadní straně přístroje (např. 34401A). Pro generování spouštěcího signálu se dá použít buď zařízení vyvinuté vlastními silami, nebo např. signálový generátor (Agilent 33220A) přepnutý do režimu generování pulsů.
14
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Příklady Tři multi-metry HP 34401A v měření analogových napětí Na následujícím obrázku je vidět měřicí pracoviště, na kterém byly ověřovány akcelerometry firmy Crossbow s analogovým výstupem. Senzory jsou namontovány na otočné plošině (vyvinutá panem Ing. Petruchou na Katedře měření), která je postupně vystavuje různým vlivům gravitačního pole. Analogový výstup senzorů je snímán třemi multi-metry HP34401A, které jsou zobrazené v levé části obrázku. Pro měření byla využita PCI-GPIB karta v počítači a proto je formát adresovacího řetězce GPIB1::22::INSTR. Multi-metry jsou ovládány skripty, které lze nalézt ve složce 2009_MereniAkcelerometry, v zabaleném archivu příkladu zdrojových kódů.
Obrázek 13 Meřicí pracoviště s měřeným objektem umístěným na otočné plošině.
15
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Příklad komunikace s digitálním osciloskopem Tektronix MSO4034 Následující příklad umožňuje automaticky přečíst rozdíly náběžných hran signálu mezi kanály 1-2, 1-3 a 1-4 pomocí digitálního osciloskopu Tektronix MSO4034 (8). Zdrojový kód byl použitý v (9) a video, které ilustruje provedené měření, je možné nalézt v seznamu literatury (10). Ve skriptu je využita komunikace s digitálním osciloskopem a také s množinou zařízení, které vzájemně, komunikují po sběrnici CANbus a posílají si synchronizační zprávy. Pro komunikaci po sběrnici CAN je použit MatlabToCan toolbox. Struktura měření je stejná, jak je popisováno v tomto dokumentu, ale skript byl uložen v jednom souboru. %% ------------------------------------% Open % ------------------------------------% cd 'E:\Skola\2009_PMT_Synchro\srcMatlab' % CAN sync messages clc; clear all; vs = visa('ni', 'TCPIP0::192.168.1.2::inst0::INSTR'); fopen(vs) fprintf(vs,'*IDN?') IDN = fscanf(vs) CAN_Open( 0, 500 ) pause(1); SYNC_SyncFrame( 0, hex2dec('100'), 10*60*1000 ); %% ------------------------------------% Set trigger CH1 % ------------------------------------iCnt = 0; tic while(1) %pause(rand) %SYNC_SyncFrame( 0, hex2dec('100'), 60*60*1000 ); %positions the Ch1 input fprintf(vs,'CH1:POSition fprintf(vs,'CH2:POSition fprintf(vs,'CH3:POSition fprintf(vs,'CH4:POSition
signal 2 divisions above the center. 2') 0') -2') -4')
%fprintf(vs,'HORIZONTAL:MAIN:SCALE 1E-3') fprintf(vs,'TRIGger:A:MODe NORMal') fprintf(vs,'TRIGger:A:EDGE:SOUrce CH1') fprintf(vs,'TRIGger:A:EDGE:SLOpe RISe')
16
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření %sets the A edge trigger to TTL high level 1.4V. fprintf(vs,'TRIGGER:A:LEVEL:CH1 TTL') %stop after single meas fprintf(vs,'ACQuire:STOPAfter SEQuence') %% ------------------------------------% Wait for trigger % ------------------------------------disp( 'Waiting for trigger' ); fprintf(vs,'ACQuire:STATE RUN') fprintf(vs,'BUSY?') busy = sscanf( fscanf(vs), '%s' ); pause(1) SYNC_SyncIn( 0, hex2dec('200'), 2000 ); while( busy == '1' ) fprintf(vs,'BUSY?') busy = sscanf( fscanf(vs), '%s' ); pause(0.3) end %% ------------------------------------% Measurement % ------------------------------------fprintf(vs,'MEASUrement:IMMed:DELay:EDGE2 RISe') fprintf(vs,'MEASUrement:IMMed:TYPe DELay') fprintf(vs,'MEASUrement:IMMed:SOUrce CH1') fprintf(vs,'MEASUrement:IMMed:SOUrce2 CH2') fprintf(vs,'MEASUrement:IMMed:VALue?') d12 = fscanf(vs); fprintf(vs,'MEASUrement:IMMed:SOUrce2 CH3') fprintf(vs,'MEASUrement:IMMed:VALue?') d13 = fscanf(vs); fprintf(vs,'MEASUrement:IMMed:SOUrce2 CH4') fprintf(vs,'MEASUrement:IMMed:VALue?') d14 = fscanf(vs); iCnt = iCnt+1; oData.d12(iCnt) = str2double(d12); oData.d13(iCnt) = str2double(d13); oData.d14(iCnt) = str2double(d14); disp( ... sprintf( ... 'Cnt = %d, time 12 = %e, 13 = %e, 14 = %e \n', ... iCnt, oData.d12(iCnt), oData.d13(iCnt), oData.d14(iCnt) ... )); if( iCnt > 100 ) disp( 'Closing' ); break; end end
17
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
toc %% ------------------------------------% Save data % ------------------------------------oClock = fix(clock); filename = sprintf( 'File_%d_%d_%d__%d_%d_%d.dat', oClock(1),oClock(2),oClock(3),oClock(4),oClock(5),oClock(6) ); save(filename, 'oData', 'oClock', '-mat'); %% ------------------------------------% Close % ------------------------------------CAN_Close(0) fclose(vs) delete(vs) clear vs
Flow chart
Commands
START
vs = visa('ni', 'TCPIP0::192.168.1.2::inst0::INSTR') fopen(vs) fprintf(vs,'CH1:POSition fprintf(vs,'CH2:POSition fprintf(vs,'CH3:POSition fprintf(vs,'CH4:POSition
Open and Init
Open Scope Object
fprintf(vs,'TRIGger:A:MODe NORMal') fprintf(vs,'TRIGger:A:EDGE:SOUrce CH1') fprintf(vs,'TRIGger:A:EDGE:SLOpe RISe') fprintf(vs,'TRIGGER:A:LEVEL:CH1 TTL') fprintf(vs,'ACQuire:STOPAfter SEQuence')
Set Channels Set Levels Set Edge ...
Read Data
Wait for Trigger
A Wait for trigger
Trigger Fired
fprintf(vs,'ACQuire:STATE RUN') fprintf(vs,'BUSY?') busy = sscanf( fscanf(vs), '%s' ); while( busy == '1' ) fprintf(vs,'BUSY?') busy = sscanf( fscanf(vs), '%s' ); end
NO
YES
fprintf(vs,'MEASU:IMMed:DELay:EDGE2 RISe') fprintf(vs,'MEASUrement:IMMed:TYPe DELay') fprintf(vs,'MEASUrement:IMMed:SOUrce CH1')
Read Channel 1-2 Read Channel 1-3 Read Channel 1-4
fprintf(vs,'MEASUrement:IMMed:SOUrce2 CH2') fprintf(vs,'MEASUrement:IMMed:VALue?') d12 = fscanf(vs); …..
B
Wait for a command
2') 0') -2') -4')
Continue?
YES
NO Close used devices
keyReply = input( 'Stop? [Enter = No]: ', 's' ); if (~isempty(keyReply)) disp( 'Closing' ); break; end end fclose(vs) delete(vs) clear vs
END
Obrázek 14 Vývojový diagram skriptu měření (9).
18
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Obrázek 15 Meřicí pracoviště pro měření časové synchronizace množiny embedded systémů (9).
19
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Rozsáhlé pracoviště s množstvím přístrojů a komunikačních rozhraní Následující zapojení měřicího pracoviště bylo použito pro naměření charakteristik několika senzorů tlaku v závislosti na teplotě okolí (11). V zapojení byly použity následující přístroje: Měřicí ústředna HP 34097A, multimetr 34401A, Druck DPI145, přímé připojení přístroje přes RS232 a následně připojení několika přístrojů pomocí sběrnice CAN (6). CAN Bus
USB2CAN Converter
PC CT
RS232
MATLAB USB2GPIB Converter
IT
Vacuum Pump
Temperature Chamber Constant Pressure
Druck DPI145
ADC1
IVD Pressure Regulator
Power Supply
S1a
S1b
SPI2CAN Converter
IIC2CAN Converter
MB
HCR
ADC2
……..
Sna
Snb
Vacuum 3x115V 400Hz
=27V
Voltage Stabilizer
Temperature sensor PT100
±12V
GPIB
Power Supply
Support Platform (power distribution, signal wiring)
±5V
Agilent 34097A Agilent 34401
Obrázek 16 Zapojení měřicího pracoviště (11).
Ovládání regulátoru tlaků IVD Při realizaci projektu (11) bylo nutné ovládat regulátor IVD, který je bohužel mechanický, ke kterému neexistuje kompletnější dokumentace v českém jazyce. Z důvodu usnadnění práce budoucím generacím je součástí tohoto dokumentu, který se zaměřuje hlavně na automatické měřící prostředky i krátký výlet do ruské historie. Přístroj IVD interaguje s uživatelem pomocí předního panelu, na kterém jsou v horní části 3 tlakoměry pro měření výšky (jsou cejchované v mmHg), ve střední části jsou dva tlakoměry pro měření dynamického tlaku a v dolní části jsou tři ovládací ventily. Dále přístroj požaduje dvojí napájecí napětí a to 3x115V/400Hz a 28V DC. Testované přístroje se připojují na pravé straně na svorky statického a dynamického tlaku. Zdrojem tlaku a přetlaku jsou externí zařízení (vývěva a kompresor). Zapojení systému je vidět na obrázku 17.
20
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření
Přední panel regulátoru IVD СБРОС
≈3x115V/400Hz
PS/PС PD/PД
=28V
Vakuum/ВАКУУМ
PD
Tlak/ДАВЛЕНИЕ
a
Ventil A
Rychloměr
PS
Výškoměr
a b
b
Ventil B
Ventil C
Vývěva Kompresor
Obrázek 17 Zapojení regulátoru tlaku IVD.
Pro ovládání přístroje je nutné pochopit, že ventily B a C jsou dvojité, kdy větší kolo ovládá ventil příslušného objemu k jeho zdroji (vývěva nebo kompresor), kdežto menší kolo otevírá příslušný vnitřní objem do okolní atmosféry. Aby přístroj IVD ještě chvíli sloužil, tak je nutné si uvědomit, že se jedná o jehlové ventily. Tj. NEPOUŽÍVAT SÍLU. V principu pracuje přístroj IVD podle následujícího obrázku 18. Přístroj obsahuje dva vnitřní objemy, které umožňují regulovat podtlak (výšku) a k danému podtlaku definovaný přetlak.
Objem pro výšku
Vývěva Ventil B
Přední panel regulátoru IVD
Ventil A
Ventil A
Ventil B
Ventil C
Ventil C
Kompresor
Objem pro rychlost
Obrázek 18 Princip funkce regulátoru tlaku IVD.
21
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření Postup zapnutí regulátoru Před zapnutím regulátoru je nutné provést následující kroky: Otočit ventil Ba vlevo a otevřít ventil Bb (otáčet vpravo). Otočit ventil A vlevo. Uzavřít ventil Ca a Cb (oba otočit vpravo). Zapnout oboje napájecí napětí a zapnout přístroj IVD pomocí přepínače na hlavním panelu. Tyto kroky budou mít za následek, že oba objemy (pro výšku a rychlost) budou propojeny. Kompresor i vývěva budou odpojeny od vnitřních objemů, kde bude tlak na úrovni tlaku místnosti a regulátor bude ukazovat hodnotu statického tlaku přibližně 740 mmHg a 0 mmHg pro dynamický tlak. Postup regulace výšky Atmosférický tlak ubývá exponenciálně s rostoucí výškou. K nastavení parametrů výšky tak, jak je měří měřicí přístroje, je nutné regulovat podtlak v tlakovém rozvodu. Podtlak se reguluje ventilem B, kdy předpokládáme, že je přístroj nastaven podle předcházejícího kroku. Stoupání => snižování tlaku: Uzavřeme malý ventil Bb (otočení doprava) a z objemu pro výšku začneme odčerpávat vzduch pomalým otevřením ventilu Ba (otočení dolava). Následně sledujeme změny tlaku na ukazatelích a před dosažením požadované hodnoty ventil Bb opět uzavřeme (otočení vpravo). Z důvodu netěsností tlakového vedení je možné, že se ručička tlakoměru bude stále pohybovat. Tyto změny je možné korigovat tak, že se ventil Ba trochu otevře (tj. nastaví se malá rychlost výstupu), která se následně zastaví řádným nastavením ventilu Bb. Klesání => zvyšování tlaku: V případě, že chceme přejít do nižší výšky, je nutné uzavřít ventil Ba (otočení doprava) a přiměřeně otevřít ventil Bb. Tím odstavíme funkci vývěvy a otevřeme vnitřní objem do okolního prostředí. Při manipulaci s přístrojem je třeba dát pozor na rychlost změny výšky, kdy rychlost jedné otáčky ručičky přístroje za sekundu je už rychlost vysoká. Zvláštní pozor je nutné věnovat přechodům při přepínání přístrojů mezi sebou, kdy jednotlivé hranice jsou na přístroji vyznačeny. Postup regulace rychlosti Po zapnutí přístroje a nastavení výšky podle předchozích kroků je možné začít regulovat rychlost pomocí regulace přetlaku v objemu pro rychlost, který je nutné od objemu pro výšku oddělit ventilem A (viz obr. 18), který uzavřeme (otočíme doprava). Při regulaci je třeba vzít v úvahu, že část mezi uzavřením a otevřením ventilu A je krátká (viz obr.).
Otevření
Zcela uzavřeno
Zcela otevřeno Vlevo
Vpravo Poloha
22
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření Obrázek 19 Charakteristika ventilu A.
Zvyšování rychlosti => zvyšování tlaku: Pro zvýšení rozdílu dynamického tlaku mezi objeme pro výšku a objemem pro rychlost je nutné do objemu pro rychlost napustit přetlak z kompresoru otočením ventilu Ca vlevo (otevření ventilu). Ale pozor: V případě, že je systém vytažený do výšky, tak stejnou funkci bude mít i ventil Cb, který otevírá komoru pro rychlost do okolní atmosféry! Tj. opět do přetlaku. Snižování rychlosti => snižování tlaku: Pro snížení rozdílu dynamického tlaku mezi objeme pro výšku a objemem pro rychlost je nutné otevřít propojení mezi komorami pomocí ventilu A, protože v tomto případě ventil Cb nepomůže. Postup vypnutí regulátoru Pro vypnutí regulátoru je nutné: Nastavit nulovou rychlost: otočit ventil Ca a Cb vpravo (odstavit kompresor), a následně citlivě otočit ventil A zcela vlevo (propojit komory). Odstavit vývěvu: otočit ventil Ba vpravo. Vypustit tlak z vnitřku přístroje: otevřít ventil Bb (otočit vlevo). Po zastavení pohybu ukazatele tlakoměru vypnout přístroj IVD pomocí přepínače na hlavním panelu.
Bibliografie 1. Pačes, Pavel a Baťek, Miroslav. MS Excel – jednoduchý prostředek pro sběr dat nejen na sběrnici GPIB. Automatizace s.r.o. [Online] 01. 11 2006. [Citace: 26. 01 2010.] http://www.automatizace.cz/article.php?a=1500. ISSN 0005-125X . 2. Pačes, Pavel. Automatizované měření - příklady v1.0 . *Online+ 2009. www.pacespavel.net/Download/index.php?soubor=PacesJakNaAutomatizovaneMereni_v10. 3. Agilent. Agilent IO Libraries Suite 15.5. Agilent Technologies - homepage. [Online] Agilent Technologies. http://www.home.agilent.com/agilent/product.jspx?nid=34466.907863.00&lc=eng&cc=CZ. 4. National Instruments. National Instruments - Homepage. [Online] National Instruments. http://www.ni.com/. 5. Pačes, Pavel a Vaško, Ondřej. Měření úhlu náběhu (případně vybočení). [Online] 2009. [Citace: 30. 01 2010.] www.pacespavel.net/Download/index.php?soubor=2009__mereniAngleOfSideSlip. 6. Pačes, Pavel. Matlab-To-Can Toolbox - Popis. [Online] 2010. www.pacespavel.net/Download/index.php?soubor=PacesCanTbx. 7. —. Matlab-To-Can Toolbox - Příklady. *Online+ 2010. www.pacespavel.net/Download/index.php?soubor=PacesCanTbx_v12.
23
Pavel Pačes, 2010, Verze 1
Krátké doporučení pro tvorbu akademických prací: Automatizované měření 8. Tektronix. MSO/DPO4000 Mixed Signal Oscilloscope Series. Tektronix - homepage. [Online] Tektronix. http://www.tek.com/products/oscilloscopes/mso4000/. 9. Pačes, Pavel, Šipoš, Matrin a Veselý, Milan. Verification of IEEE1588 Time Synchronization in NASA Agate Data Bus Standard. Beijing : IEEE, 2009. ISBN 978-1-4244-3862-4. 10. Pačes, Pavel a Veselý, Milan. Časová synchronizace vestavných systémů pomocí IEEE1588. [Online] 2010. www.pacespavel.net/Download/index.php?soubor=2009_mereniSynchroIEEE1588. 11. Pačes, Pavel a et_al. Sensors of Air Data Computers - Usability and Environmental Effects. Brno : Univerzita obrany, 2009. stránky 401-409, ICMT'09 - Proceedings of the International Conference on Military Technologies. ISBN 978-80-7231-649-6.
24
Pavel Pačes, 2010, Verze 1