Politechnika Gdańska

Transkrypt

Politechnika Gdańska
Laboratorium OiOSE. Measurement Studio, IVI
1
Politechnika Gdańska
Katedra Optoelektroniki i Systemów Elektronicznych
Organizacja i
Oprogramowanie Systemów Elektronicznych
Michał Kowalewski
Programowanie z wykorzystaniem
Measurement Studio i sterowników IVI
Politechnika Gdańska
2011
Laboratorium OiOSE. Measurement Studio, IVI
2
1. Wprowadzenie
Celem ćwiczenia jest w pierwszej kolejności zapoznanie się z możliwością wykorzystania
komponentów graficznych Measurement Studio w środowisku Microsoft Visual Studio.
Następnie wykorzystamy sterownik IVI-COM do współpracy z przyrządem pomiarowym –
multimetrem Agilent 34405A. Ostatnim etapem będzie połączenie obu mechanizmów w celu
utworzenia przyrządu wirtualnego do rejestracji i graficznej prezentacji wyników pomiarów.
2. Zadania do wykonania
1. Przygotowanie PC do pracy:
a. Uruchomić PC, przejść do katalogu c:\oiose.lab i skasować podkatalog MSVC_IVI.
b. Uruchowić MSVC_IVI.exe i przejść do katalogu c:\oiose.lab\MSVC_IVI (W
katalogu tym znajduje się instrukcja i potrzebna dokumentacja. Należy w nim
zapisywać projekty utworzone w środowisku MS Visual Studio 6.0).
c. Uruchomić środowisko MS Visual Studio 6.0.
2. Napisać program wykorzystujący komponenty Measurement Studio zgodnie z wytycznymi
zawartymi w instrukcji Getting Started with Measurement Studio for Visual C++ na
stronach 3.1 – 3.9.
a. Zademonstrować prowadzącemu działanie programu.
3. Napisać program bez interfejsu graficznego (Win32 Console Application) demonstrujący
podstawową funkcjonalność sterownika IVI-COM multimetru.
Wykorzystać kod źródłowy zamieszczony na stronach 16-17 w załączniku Getting Started
with IVI Drivers wprowadzając pewne modyfikacje:
a. Korzystamy z innego przyrządu niż w podanym przykładzie, a więc należy
zaimportować bibliotekę „Ag34405.dll”.
b. Zmienną dmm zależy zadeklarować jako zmienną typu IiviDmmPtr.
c. Funkcja __uuidof służy do pobierania wartości identyfikatora GUID (Globally
Unique Identifier). Należy ją wywołać z argumentem Ag34405.
d. Pierwszy parametr funkcji Initialize jest adresem VISA przyrządu, z którym się
komunikujemy. Prawidłową wartość tego parametru można określić korzystając z
programu Agilent Connction Expert. W obszarze powiadomień na pasku zadań jest
ikona , przy pomocy której można ten program uruchomić.
e. Ostatni parametr funkcji Initialize wskazuje, iż przyrząd ma być symulowany przez
sterownik. Należy tą opcję zmienić wpisując false zamiast true.
f. W podanym przykładzie wykorzystano sterownik Agilent 34401 Specific Driver.
Rozmieszczenie obiektów klas tego sterownika jest nieco inne niż w przypadku
multimetru Agilent 34405. Prosta podmiana identyfikatorów w kodzie źródłowym
może przy niektórych wywołaniach skutkować błędami kompilacji np. do
uaktywnienia funkcji pomiaru napięcia stałego m multimetrze 34401
wykorzystujemy instrukcję:
dmm->DCVoltage->Configure(1, 0.001);
podczas gdy tę samą operację w multimetrze 34405 osiągniemy wykonując instrukcję
dmm->Voltage ->DCVoltage->Configure(1, 1e-4);
Laboratorium OiOSE. Measurement Studio, IVI
3
Aby się uniezależnić od rodzaju dołączonego multimetru korzystamy ze sterownika
IVI DMM Class Driver, którego obiekt utworzyliśmy w podpunkcie (b).
Konfiguracja funkcji pomiarowej powinna mieć następującą postać:
dmm->Configure(IviDmmFunctionDCVolts, 1, 1e-4);
g. Skompilować program i zaobserwować efekty pracy korzystając z konsoli. Wtym
celu w programie Total Commander przejść do katalogu gdzie znajduje się
utworzony plik exe, wpisać cmd <Enter> , w konsoli wpisać nazwę programu i znów
<Enter>.
4. Zadanie dodatkowe (jedno do wyboru):
a. Rejestrator napięcia (zadana liczba pomiarów np. 100, wyzwalanie cyklu
pomiarowego przyciskiem umieszczonym na panelu, zobrazowanie wyników
pomiarów na wykresie)
b. Kontrola zakresu mierzonej wielkości (pojedynczy pomiar wyzwalany
przyciskiem, dwa suwaki ustalające wartości granicze min i max, sygnalizacja
przekroczenia dopuszczalnego zakresu na dwóch diodach led.
Wskazówki
Wykonanie pojedynczego pomiaru lub serii pomiarów w programie w odpowiedzi na naciśnięcie
przycisku powinno polegać tylko na wywołaniu funkcji Read sterownika. Pozostałe operacje (z
pewnymi modyfikacjami powinny zostać przeniesione w inne miejsca programu.
Zakładając, iż tworzymy program oparty o okno dialogowe należy postąpić następująco:
1. W pliku nagłówkowym klasy okna dialogowego dodać dyrektywy ładujące biblioteki dll:
#import
#import
#import
#import
"IviDriverTypeLib.dll" no_namespace
"IviDmmTypeLib.dll" no_namespace
"GlobMgr.dll" no_namespace
"Ag34405.dll" no_namespace
2. W tym samym pliku, w klasie okna dialogowego zadeklarować zmienną dmm następująco:
IIviDmmPtr dmm;
3. Uzupełnić kod funkcji OnInitDialog
// TODO: Add extra initialization here
HRESULT hr;
hr = CoInitialize(NULL);
if (FAILED(hr)) exit(1);
dmm.CreateInstance(__uuidof(Agilent34405));
try{
dmm->Initialize("adres VISA urządzenia",false,true,"");
dmm->Configure(IviDmmFunctionDCVolts, 1, 1e-4);
} catch(_com_error e){
MessageBox(e.ErrorMessage());
}
Laboratorium OiOSE. Measurement Studio, IVI
4
4. Dodać funkcję callback obsługi komunikatu WM_DESTROY i uzupełnić jej kod
// TODO: Add your message handler code here
try{
dmm->Close();
} catch(_com_error e){
MessageBox(e.ErrorMessage());
}
dmm.Detach();
CoUninitialize();
5. Kod funkcji obsługi przycisku wykonującego pomiar w „minimalnej” wersji powinien
zawierać jedną instrukcję
double reading = dmm->Measurement->Read(1000);
6. Oczywiście pozostaje jeszcze kwestia umieszczenia wyniku w jakiejś kontrolce na panelu,
zgromadzenia serii pomiarów i umieszczenia ich na wykresie lub też skontrolowania zakresu
mierzonego napięcia.
7. W przypadku błędów kompilacji sprawdzić ustawienia środowiska MSVC na stronach 13 i
14 w załączniku Getting Started with IVI Drivers.

Podobne dokumenty