LABORATORIUM SYSTEMÓW POMIAROWYCH
KTP IR PW
MATERIAŁY POMOCNICZE DO ĆWICZEŃ LABORATORYJNYCH ( 1 - 6 )
Warszawa 2001
SPIS TREŚCI
ĆWICZENIE 1
Symulator systemu pomiarowego w standardzie IEC-625. 1 3
ĆWICZENIE 2
Magistrala systemu pomiarowego w standardzie IEC-625. 2 (IEEE-488.2) 12
ĆWICZENIE 3
Programowanie systemu pomiarowego w standardzie IEEE-488.2 (IEC-625.2) 16
ĆWICZENIE 4
Środowisko programowe labwindows / cvi 19
ĆWICZENIE 5
Środowisko pomiarowe HP VEE 21
ĆWICZENIE 6
Metoda regresji liniowej planowanie eksperymentu 33
Wszystkie teksty instrukcji do ćwiczeń 1 - 6 dostępne są również na stronie laboratorium spom:
http://www.ire.pw.edu.pl/zur/ktp/spomlab/
ĆWICZENIE 1
SYMULATOR systemu pomiarowego w standardzie IEC-625. 1
Menu programu
Projekt - otwiera i zapisuje projekt.
Program -konfiguracja schematu połączeń urządzeń, przyporządkowanie parametrów i adresów urządzeń , sprawdzenie poprawności wprowadzonych danych oraz wykonanie pliku z programem określającym działanie systemu IEC-625.1.
Test - służy do graficznego przedstawienia stanów linii IEC-625.1.
Ustawienia - konfiguracja programu.
Menu `Projekt`
Nowy projekt - usuwa z pamięci schemat połączeń i parametry urządzeń.
Otwórz projekt - otwiera plik z zapisanym schematem połączeń oraz z parametrami urządzeń.
Zapisz projekt - zapisuje w pliku schemat połączeń oraz parametry urządzeń.
Wyjście - wyjście z programu.
Menu `Program `
Sprawdzenie poprawności - sprawdza poprawność wprowadzonych danych.
Interpretacja kodu - interpretuje kod programu , który określa działanie szyny IEC-625.1.
Wczytanie programu - wczytuje plik z programem.
Pokaż konfigurację systemu IEC - służy do graficznego konfigurowania układu (wybór urządzeń , wzajemne połączenia, parametry urządzeń, adresy).
Zakończ edycje systemu IEC - zamyka edytor graficzny.
Otwórz plik z kodem programu - otwiera plik z kodem programu określającym działanie magistrali IEC.
Menu `Symulacja`
Otwórz symulację - otwiera okno z przebiegami logicznymi występującymi na liniach szyny IEC-625.1.
Zamknij symulację - zamyka okno z symulacją.
Menu `Ustawienia`
Konfiguracja symulatora - umożliwia skonfigurowanie okna z wynikami symulacji.
Menu `Pomoc' nie zawierają jeszcze dostępnych pozycji.
Obsługa edytora konfiguracji układu.
Otwarcie edytora
Otwarcie edytora graficznego nastąpi po otwarciu projektu lub po wybraniu opcji „Program => Pokaż konfigurację systemu IEC”. Każde dostępne urządzenie reprezentowane jest jako ikona posiadająca wejście, wyjście, wejście na zasilanie ( w zależności od rodzaju obiektu) symbolizowane przed czarne punkty na brzegach ikony. Połączenia między urządzeniami są symbolizowane przez łączące ikony.
Rys. 1. Symbol wzmacniacza
Wybór urządzenia
Wybranie urządzenia następuje przez dwukrotne kliknięcie lewym przyciskiem myszy, podczas gdy pod kursorem myszy nie znajduje się żadne inne urządzenie. Spowoduje to ukazanie się listy dostępnych urządzeń , z których użytkownik wybiera żądany element przez naciśnięcie przycisku z nazwą urządzenia.
Rys.2. Okno z dostępnymi urządzeniami
Jeśli użytkownik nie chce wybierać żadnego z urządzeń należy wcisnąć krzyżyk znajdujący się w prawym górnym rogu.
Łączenie urządzeń.
Łączenie urządzeń następuje przez ustawienie kursora myszy na czarnym punkcie przy brzegu ikony. Wówczas należy wcisnąć lewy klawisz myszy co spowoduje zmianę wyglądu kursora na krzyżyk. Podtrzymując naciśnięty klawisz myszy należy przesunąć kursor myszy na czarny punkt innej ikony i puścić przycisk myszy. Jeśli połączenie między urządzeniami jest możliwe zostanie to pokazane przez wyświetlenie linii łączącej te urządzenia. Jeśli to połączenie jest błędne to urządzenia pozostaną nadal rozłączone.
Rys. 3. Rysunek przedstawiający połączone urządzenia.
Określenie parametrów urządzenia i jego adresu .
Należy naprowadzić kursor na ikonę urządzenia i dwukrotnie kliknąć myszą . Spowoduje to pojawienie się okna w którym będzie można dokonać parametryzacji urządzenia.
Rys. 4. Okno do określenia parametrów urządzenia.
Okno ma możliwość wpisywania danych bez użycia klawiatury ( strzałki w górę lub w dół). Wciśnięcie klawisza `OK' spowoduje zaakceptowanie danych, natomiast użycie klawisza `Cancel' pozostawi dane o wartościach sprzed wywołania tego okna. Określenie parametrów jest możliwe dla wszystkich elementów z wyjątkiem obiektów badanych.
Usunięcie urządzenia.
W celu usunięcie urządzenia należy najechać kursorem myszy na urządzenie oraz nacisnąć prawy klawisz myszy. Spowoduje to pojawienie się okna w którym jedną z pozycji będzie przycisk `usuń'. Należy go wcisnąć co spowoduje usunięcie urządzenia z pamięci. Usunięciu z pamięci podlegać będą również połączenia tego urządzenia.
Język programowania
Przypisywanie wartości liniom szyny:
jednoliniowe.
atn=1
eoi = 0
wieloliniowe.
dio =34
Deklaracja zmiennych:
zmienne tekstowe ( TXT0, TXT1, TXT2, ...,TXT9 ).
TXT0 = "asdfdf”
zmienne numeryczne ( INT0, INT1, INT2, ...,INT9 ).
przypisanie stałej
INT1=5
przypisanie zmiennej
INT4=INT1
sumowanie (odejmowanie) zmiennych lub stałych
INT1=INT4 + 5
przypisanie elementu zmiennej tekstowej
INT1=TXT0[n] , gdzie n - stała lub zmienna określająca n - ty element TXT0 ( TXT[0] pierwszy element )
pobranie bitu linii `dio'
INT2=BitDio(n) , gdzie n = 0,1,2,.. 7
pobranie wartości linii
INT2 = nrfd
INT2=dio
tablica ciągów
przypisanie
string zmiennanazwa = {"F30Z32","F300Z32","F3000Z32"}
pobranie wartości
INT1 = sgen[int9][int0]
tablica liczb
przypisanie
number zmiennanazwa = {6,7,8}
pobranie wartości
int2 = ngen[int9]
Pętla ` while ' :
while ( INT0 == 4 )
...
...
endw
Operatory logiczne : ==, !=, >, <, <=, >=
Instrukcja warunkowa ` if `
if ( INT0 == 5) if ( INT0 == 5)
... ...
... LUB ...
else endi
...
...
endi
Operatory logiczne jak w pętli ` while'.
Kody błędów mogących się pojawić podczas analizy kodu programu.
Błąd ogólny:
10 - nierozpoznane polecenie.
11 - za mała tablica na dane.
53 - brak ustawionej linii ren
Przypisanie zmiennym wartości:
21 - brak `='.
22 - są aż dwa znaki `-` i `+'.
23 - próba operacji arytmetycznej ze zmienną tekstową.
24 - brak ` przy przypisaniu ciągu zmiennej tekstowej.
25 - brak `[` lub `]'.
26 - zły parametr w `[...]'.
Błędy pętli while
31 - brak końca pętli while (brak endw)
32 - nieskończona pętla
33 - nierozpoznane funkcja logiczna w while
34 - brak `)'
35 - brak zmiennej
36 - brak liczby
pobranie wartości linii DIO
41 - brak `(`.
42 - brak `)'.
43 - zły szyk polecenia.
składna poleceń dotyczących magistrali IEC 625.1
51 - brak `=' , `+' lub `-`.
52 - przypisanie złej wartości.
błąd transmisji - ` nrfd=0 ' i ` ndac=0 ' .
Wyniki symulacji są umieszczane w pliku `wynik'.
Wynik symulacji.
Aby obejrzeć wyniki symulacji należy wybrać opcję `Symulacja => Otwórz symulację'. Spowoduje to ukazanie się okna, w który będą się znajdować nazwy linii, przebiegi na magistrali, stany funkcji interfejsowych poszczególnych urządzeń.
Rys. 5. Graficzne przedstawienie przebiegów na magistrali.
Prawe górne okno zawiera przebiegi magistrali. Znajduje się w nim pionowa niebieska linia wskazująca na odpowiednią chwilę czasową. Linię tę można przesuwać w dowolne miejsce za pomocą myszy - kliknięcie lewego przycisku przeniesie linię w miejsce kursora myszy. Przesunięci tej linii może nastąpić również poprzez naciśnięcie jednego z dwu przycisków , znajdujących się pod wykresem. Przesuwają one linię w prawo lub lewo o jedną chwilę czasową. Lewe górne okno to stany linii magistrali w chwili określonej przez wyżej omówiony marker. Cały przebieg zdarzeń na magistrali nie mieści się w prawym górnym oknie więc do przesuwania go w przód lub w tył służy suwak umieszczony pod przebiegiem.
Dolne okno wyświetla dla każdego z urządzeń stany funkcji interfejsowych, zawartość bufora, adresy urządzeń oraz stany sygnałów urządzeń takich jak STB, MTA, MLA.
Okno symulacji zamyka się poleceniem `Symulacja => Zamknij symulację'
Spis dostępnych urządzeń
Zasilacz:
Format programowania: FnZm
n = 0 - 99
m = {1,2 }
wartość napięcia u = n*10^(1-m) [V]
Generator:
Format programowania: FnZm
m - amplituda w 100mV
n - częstotliwość
m = 0 - 50
n = 0 - 99999 Hz
Woltomierz:
Format programowania: FnZm
n = 1 - 2 ( bez znaczenia )
m = 1 zakres 0.. 0.01 V
2 zakres 0.. 0.1 V
3 zakres 0.. 1 V
4 zakres 0.. 10 V
5 zakres 0.. 100 V
0.01, 0.1, 1, 10, 100
Woltomierz dokładny:
Format programowania: FnZm
n = 1 - 2 ( bez znaczenia )
m = 1 zakres 0.. 0.01 V
2 zakres 0.. 0.1 V
3 zakres 0.. 1 V
4 zakres 0.. 10 V
5 zakres 0.. 100 V
Częstościomierz:
Format programowania: FnZm - n = 1 - 2
n = 1 - 2 ( bez znaczenia )
m = 1 zakres 0.. 99 Hz
2 zakres 0.. 999 Hz
3 zakres 0.. 9999 Hz
4 zakres 0.. 99999 Hz
Przykładowe fragmenty programu
rozadresowanie
dio=63
dav=1
dav=0
zaadresowanie do nadawania urządzenia o adresie 1
dio=65
dav=1
dav=0
przesłanie do urządzenia tekstu programującego
INT0=0
TXT1="F50Z1"
while(INT0<5)
INT1=TXT1[INT0]
dio=INT1
if(INT0==4)
eoi=1
endi
dav=1
dav=0
INT0=INT0+1
endw
eoi=0
string sgen = {"F30Z32","F300Z32","F3000Z32"}
number ngen = {6,7,8}
int9 = 0
int2 = ngen[int9]
int3 = int2 -1
int0 = 0;
atn=0
while( int0 < int2 )
INT1 = sgen[int9][int0]
dio = INT1
if(INT0==int3)
eoi = 1
endi
dav = 1
dav = 0
INT0 = INT0 + 1
endw
eoi=0
odpytywanie szeregowe
...
% kod inicjacji odpytywania szeregowego
...
int5=66
int2=0
txt2=""
while (int5 < 69)
...
dio=int5 % kolejne adresy do nadawania
dav=1
dav=0
...
if( dio == 64) % kod żądania obsługi
txt2[int2]=int5
int2 = int2+1
endi
...
int5 = int5 + 1
endw
...
% kod zakończenia odpytywania szeregowego
...
LITERATURA OBOWIĄZKOWA
1. Wiesław Winiecki: „Organizacja Komputerowych Systemów Pomiarowych”, WPW, Warszawa 1997, rozdział: 6.
2. Materiały z wykładów
ĆWICZENIE 2
MAGISTRALA systemu pomiarowego
w standardzie IEC-625. 2 (IEEE-488.2)
1. CEL ĆWICZENIA
Celem ćwiczenia jest praktyczne zapoznanie się z metodami uruchamiania nowoczesnych systemów pomiarowych w standardzie IEC-625.2. Wykonanie ćwiczenia polega na realizacji prostego zadania pomiarowego w systemie składającym się z testera interfejsu IEC-625 (pełniącego funkcję kontrolera) oraz multimetru firmy Hewlett-Packard.
Zastosowany sprzęt programuje się wykorzystując standard instrukcji SCPI, który jest obecnie standardem w dziedzinie oprogramowania urządzeń pomiarowych.
2. OPIS MULTIMETRU HP 34401A
2.1 PŁYTA CZOŁOWA
Funkcje dostępne bezpośrednio z płyty czołowej pogrupowane są w cztery bloki:
1.FUNCTION
Pomiar napięcia oraz prądu stałego i zmiennego, rezystancji, okresu i częstotliwości a także testowanie diody;
2.MENU
Włączenie i wyłączenie menu oraz wywołanie ostatnio używanej funkcji.
3.RANGE / DIGITS
Ustawienie zakresu pomiarowego oraz ilości cyfr znaczących;
4. MATH
Pomiar z uwzględnieniem wartości odniesienia, wyznaczenie wartości minimalnej i maksymalnej w serii pomiarów, pomiary w dB i dBm;
Poza tym możliwy jest wybór rodzaju wyzwalania (ręczne lub automatyczne).
Struktura menu
Menu posiada strukturę 3-poziomową (menus, commands, parameters). Poruszanie się pomiędzy poziomami: góra ∧ , dół ∨ . Każdy z trzech poziomów ma kilka opcji, których wybór następuje przez naciśnięcie < lub > .
.
Menus
Commands
Parameters
On/Off
- włączenie menu: naciśnięcie shift < ,
- wyłączenie: analogicznie lub naciśnięcie dowolnego przycisku z grupy function lub math w górnym rzędzie płyty czołowej.
- wykonanie polecenia menu: naciśnięcie Auto/Man
ENTER
Przykładowe polecenia menu
A:MEASurement MENU
1: AC FILTER ⇒ 2: CONTINUITY ⇒ 3: INPUT R ⇒ 4: RATIO FUNC ⇒ 5: RESOLUTION |
1: AC FILTER Selects the slow, medium, or fast ac filter;
2: CONTINUITY Sets the continuity beeper threshold ( 1Ω to 1000Ω);
3: INPUT R Sets the input resistance for dc voltage measurements,
4: RATIO FUNC Enables the dcv: dcv ratio function;
5: RESOLUTION Selects the measurement resolution.
B: MATH MENU
1: MIN-MAX ⇒ 2: NULL VALUE ⇒ 3: dB REL ⇒ 4: dBm REF R ⇒ 5: LIMIT TEST ⇒ 6: HIGH LIMIT ⇒ 7: LOW LIMIT |
1: MIN-MAX Recalls the stored minimum, maximum, average, and reading count;
2: NULL VALUE Recalls or sets the null value stored in the null register;
3: dB REL Recalls or sets the dBm value stored in the dB relative register;
4: dBm REF R Selects the dBm reference resistance value;
5: LIMIT TEST Enables or disables limit testing;
6: HIGH LIMIT Sets the upper limit for limit testing;
7: LOW LIMIT Sets the lower limit for limit testing.
C: TRIGer MENU
1: READ HOLD ⇒ 2: TRIG DELAY ⇒ 3: N SAMPLES |
1: READ HOLD Sets the reading hold sensitivity band;
2: TRIG DELAY Specifies a time interval which is inserted before a measurement;
3: N SAMPLES Sets the number of samples per trigger.
D: SYStem MENU
1: RDGS STORE ⇒ 2: SAVED RDGS ⇒ 3: ERROR ⇒ 4: TEST ⇒ 5: DISPLAY ⇒6: BEEP ⇒ 7: COMMA ⇒ 8:REVISION |
E: Input / Output MENU
1: HP-IB ADDR ⇒ 2: INTERFACE ⇒ 3: BAUD RATE ⇒ 4: PARITY ⇒ 5: LANGUAGE |
F: CALibration MENU
1: SECURED ⇒ [ 1: UNSECURED ] ⇒ [ 2: CALIBRATE ] ⇒ 3: CAL COUNT ⇒ 4: MESSAGE |
UWAGA: Dwie komendy ujęte w nawiasy kwadratowe ( [ ] ) są „ukryte” dopóki multimetr jest zabezpieczony przed zmianą kalibracji.
Przykład użycia komendy z MENU:
Zmiana adresu multimetru On/Off
- wejście do MENU, ( nacisnąć shift , a następnie < , pojawia się napis:
A: MEAS MENU );
- naciskając < lub > dokonać właściwego wyboru menu ( tu:
E: I/O MENU );
- nacisnąć ∨ żeby przejść do podmenu commands, ( pojawia się napis:
1:HP-IB ADDR );
- dokonać wyboru komendy analogicznie jak wyboru menu, ( tu: 1:HP-IB ADDR );
- nacisnąć ∨ żeby przejść do podmenu parameters, ( pojawia się napis:
∧22 ADDR );
- naciskając < lub > dokonać wyboru cyfry która ma ulec zmianie;
- zmiany wartości dokonujemy naciskając ∧ lub ∨ ;
- potwierdzenie zmiany, ( nacisnąć Auto/Man , w przeciwnym razie zmiany
nie zostaną zapamiętane ). ENTER
2.2 NAJCZĘŚCIEJ SYGNALIZOWANE BŁĘDY PRZEZ MULTIMETR HP-34401A
-101 Invalid character
Wykryto niewłaściwy znak w słowie programującym np.: CONF:VOLT#DC
-102 Syntax error
Nieprawidłowa składnia słowa programującego np. spacja przed lub po dwukropku bądź przecinku np.: SAMP:COUN ,1
-103 Invalid separator
Nieprawidłowy znak przestankowy w słowie programującym np. przecinek zamiast dwukropka
-105 GET not allowed
Niedozwolone wyzwolenie przyrządu: przyrząd nie został jeszcze poprawnie zaprogramowany
-108 Parameter not allowed
Za dużo parametrów w tekście programującym lub parametr po słowie, które jego nie wymaga np.: READ? 10
-109 Missing parameter
Zbyt mało parametrów np.: SAMP:COUN
-113 Undefined header
Nieznana komenda. Prawdopodobnie wystąpił błąd ortograficzny w tekście programującym np.: TRIGG:COUN 3 (forma skrócona komendy musi składać się z 4 znaków)
-121 Invalid character in number
Nieprawidłowy znak w liczbie określającej wartość parametru np.:
STAT:QUES:ENAB #B01010102
-211 Trigger ignored
Zignorowane polecenie wyzwolenia przyrządu. Należy upewnić się, że multimetr znajduje się w stanie oczekiwania na wyzwolenie „wait-for-trigger state” i wyzwolenie przyrządu nastąpiło z odpowiedniego źródła
-213 Init ignored
Zignorowane polecenie INIT. Multimetr prawdopodobnie nie zakończył jeszcze poprzedniego pomiaru
-222 Data out of range
Liczbowa wartość parametru spoza dozwolonego zakresu np.: TRIG:COUN -3
-410 Query INTERRUPTED
Przyrząd otrzymał komendę wysyłającą dane do bufora wyjściowego, lecz bufor ten zawiera dane umieszczone w nim w wyniku działania poprzedniej komendy.
Należy usunąć dane z bufora np.: rozkazem *RST lub wyłączeniem zasilania
-532 Cannot achieve reqested resolution
Przyrząd nie może zaakceptować podanego tekstu programującego. Prawdopodobnie wystąpił błąd w składni komendy CONFigure lub MEASure
3. PRZYKŁADOWE PYTANIA KONTROLNE
1. Opisać typową sekwencję operacji, jaką należy wykonać za pomocą testera interfejsu IEC-625 aby zaprogramować, wyzwolić i odebrać wynik z multimetru HP-34401A.
2. Omówić metodę transmisji stosowaną w standardzie IEC-625 tzw. handshake trójprzewodowy
4. LITERATURA OBOWIĄZKOWA
1. Wiesław Winiecki: „Organizacja Komputerowych Systemów Pomiarowych”, WPW, Warszawa 1997, rozdziały: 6.1, 6.2, 6.3, 6.4, 6.6, 8.1, 10.
2. Materiały z wykładów
ĆWICZENIE 3
Programowanie systemu pomiarowego
w standardzie IEEE-488.2 (IEC-625.2)
1. CEL ĆWICZENIA.
Celem ćwiczenia jest praktyczne zapoznanie się z nowoczesnymi urządzeniami pomiarowymi i oprogramowaniem służącym do budowy komputerowych systemów pomiarowych w standardzie IEC-625.2. Wykonanie ćwiczenia polega na zaprogramowaniu prostego zadania pomiarowego w systemie składającym się z kontrolera (komputer IBM-PC z zainstalowanym pakietem interfejsu NI-488.2 firmy National Instruments), zwanego dalej skrótowo kontrolerem NI-488.2, oraz generatora funkcyjnego i multimetru firmy Hewlett-Packard. Zastosowany sprzęt i oprogramowanie umożliwiają zapoznanie się z językiem SCPI, który jest obecnie standardem w dziedzinie programowania urządzeń pomiarowych.
2. PROGRAMOWANIE GENERATORA HP-33120A.
Wybrane funkcje i zakresy pomiarowe generatora HP-33120A:
-Zakresy częstotliwości dla różnych kształtów przebiegów:
sinus: 100μHz - 15 MHz;
prostokąt: 100μHz - 15 MHz;
trójkąt: 100μHz - 15 kHz;
-Amplituda (przy obciążeniu 50Ω): 50mVpp - 10Vpp;
-Amplituda (bez obciążenia): 100mVpp - 20Vpp;
-Składowa stała: ± 5 Vpk ac + dc;
-Jednostki wyjściowe: Vpp, Vrms, dBm;
-Impedancja wyjściowa: 50Ω.
Generator HP-33120A może także generować szum oraz przebiegi zmodulowane. Istnieje także możliwość zdefiniowania dowolnego przebiegu o liczbie próbek do 4000 i umieszczenie go w pamięci trwałej generatora. Generator posiada także układ wyzwalania, umożliwiający np. generowanie pojedynczych impulsów z określoną fazą początkową. Generator dysponuje obszerną listę rozkazów języka SCPI.
Najprostszą metodą zaprogramowania generatora funkcyjnego jest zastosowanie rozkazu APPLy:
-generacja fali sinusoidalnej:
APPLy:SINusoid [<frequency> [,<amplitude> [,<offset>] ]];
-generacja fali prostokątnej:
APPLy:SQUare [<frequency> [,<amplitude> [,<offset>] ]];
-generacja fali trójkątnej:
APPLy:TRIangle [<frequency> [,<amplitude> [,<offset>] ]];
-generacja stałej amplitudy:
APPLy:DC [<frequency|DEFault> [,<amplitude> [,<offset>] ]];
frequency - częstotliwość;
amplitude - amplituda;
offset - składowa stała.
Uwaga: W przypadku generacji stałej amplitudy parametr dotyczący częstotliwości zostanie zignorowany, musi jednak wystąpić w rozkazie jako konkretna wartość albo jako "DEFault".
Zamiast konkretnych wartości amplitudy, częstotliwości czy składowej stałej można podać np. "MINimum" , "MAXimum" lub "DEFault".
Przykłady:
"APPL:SIN 5 KHZ, 3.0 VPP, -2.5 V"
3.0 VPP -oznacza 3V wartości międzyszczytowej amplitudy;
3.0 VRMS -oznacza 3V wartości skutecznej amplitudy;
"APPL:SIN 5.0E+3, 3.0"
"APPL:SIN MAX, 3.0, -2.5".
Wartość międzyszczytowa amplitudy na wyjściu generatora zależy od wartości obciążenia podłączonego do wyjścia generatora. Do informowania generatora o wartości obciążenia służy rozkaz:
OUTPut:LOAD {50 | INFinity | MINimum | MAXimum}.
Domyślną wartością obciążenia jest wartość 50 (dopasowanie). W przypadku np. dołączenia do generatora odbiornika o wysokiej impedancji należy poinformować o tym generator za pomocą rozkazu:
"OUTP:LOAD INF".
Zapewni to, że wartość amplitudy na wyjściu generatora będzie odpowiadała wartości podanej jako parametr rozkazu APPLy.
3. PRZYKŁADOWE PYTANIA KONTROLNE
1. Jaka sekwencja rozkazów jest potrzebna do skonfigurowania systemu bajtu statusu tak, żeby zgłoszenie żądania obsługi następowało tylko w wyniku pojawienia się komunikatu w buforze wyjściowym urządzenia. Założyć, że nie znamy aktualnego stanu rejestrów systemu statusu.
2. Przeanalizować przykładowy program aplikacyjny zamieszczony w rozdziale 8.1.3.2. literatury i zastanowić się jak należałoby go zmodyfikować, aby efektem jego działania było:
-zaprogramowanie generatora funkcyjnego (kształt przebiegu: sinus, częstotliwość: 2kHz, amplituda: 2VRMS, składowa stała: -1V);
-zaprogramowanie woltomierza (AC, zakres: 10V, rozdzielczość: 0.01V);
-obliczenie średniej z wykonanych 20 pomiarów.
Przyjąć, że generator ma adres 10 a multimetr adres 22 i nie przeprowadzać identyfikacji. W celu sprawdzenia, czy generator i multimetr wykonały wysłane im sekwencje rozkazów konfigurujących, zastosować rozkaz *OPC?. Multimetr wyzwalać ze źródła wewnętrznego. Obecność wyniku pomiaru w buforze multimetru powinna być sygnalizowana jako żądanie obsługi.
3. Zastanowić się nad użyciem instrukcji TestSRQ() zamiast WaitSRQ() i nad tym czy w przypadku przykładowego programu ma sens taka zamiana.
4. Jaki będzie wynik pomiaru, jeżeli generator, do którego jest podłączony tylko woltomierz, zaprogramowano w następujący sposób: obciążenie 50, amplituda międzyszczytowa sinusoidalnego sygnału wyjściowego 1Vpp. Woltomierz zaprogramowano na pomiar napięcia międzyszczytowego AC.
4. LITERATURA OBOWIĄZKOWA
1. Wiesław Winiecki: „Organizacja Komputerowych Systemów Pomiarowych”, WPW, Warszawa 1997, rozdziały: 6.6, 8.1.
2. Materiały z wykładów.
ĆWICZENIE 4
ŚRODOWISKO PROGRAMOWE LABWINDOWS / CVI
1. Cel ćwiczenia
Celem ćwiczenia jest praktyczne zapoznanie się z nowoczesnymi urządzeniami pomiarowymi i oprogramowaniem służącym do budowy komputerowych systemów pomiarowych w standardzie IEC-625.2. Wykonanie ćwiczenia polega na zaprogramowaniu prostego zadania pomiarowego w systemie składającym się z kontrolera (komputer PC z zainstalowanym pakietem interfejsu NI-488.2 firmy National Instruments wraz z pakietem oprogramowania LabWindows/CVI pracującym w środowisku Windows) oraz multimetru firmy Hewlett Packard.
2. Wybrane instrukcje drivera multimetru HP34401A
hp34401a_init ( address, &instrumentID );
gdzie:
address - adres multimetru (22),
instrument ID - identyfikator multimetru (zmienna typu int).
Instrukcja powoduje inicjalizację multimetru w następujący sposób:
- Wysyła do przyrządu zapytanie identyfikacyjne.
- Ustawia nastawy przyrządu w zadane położenie.
- Zwraca wartość ID używane do identyfikacji urządzenia w systemie pomiarowym.
hp34401a_conf ( instrumentID, function, autorange, range, resolution );
gdzie:
instrument ID - identyfikator multimetru (zmienna typu int),
function - kod funkcji: 0 - woltomierz AC,
1 - woltomierz DC,
7 - częstościomierz.
autorange - automatyczna zmiana zakresu:
0 - wyłączona,
1 - włączona,
range - zakres: częstościomierz - tylko jeden 300 kHz,
woltomierza DC - 0.1V, 1V, 10V, 100V, 1000V;
woltomierza AC - 0.1V, 1V, 10V, 100V, 750 V.
resolution - liczba cyfr wyniku: 0 - 4 1/2, 1 - 5 1/2, 2 - 6 1/2.
Instrukcja konfiguruje funkcję, zakres, liczbę cyfr wyniku oraz włącza bądź wyłącza automatyczną zmianę zakresu.
hp34401a_single_meas ( instrumentID, &result );
gdzie:
instrument ID - identyfikator multimetru (zmienna typu int),
result - wynik pomiaru (zmienna typu double).
Instrukcja powoduje wykonanie pomiaru i zwraca jego wynik.
Poza instrukcjami sterującymi przyrządem należy użyć instrukcji odczytującej stan sterowników bądź ustawiającej stan sterownika.
Do odczytu stanu (wartości) sterownika (przełącznika) należy użyć instrukcji -
GetCtrlVal (panelHandle, CONSTANT NAME panelu_CONSTANT NAME sterownika, &zmienna);
a do ustawienia wyniku na wskaźniku lub stanu diody LED -
SetCtrlVal (panelHandle, CONSTANT NAME panelu_CONSTANT NAME sterownika, stała lub zmienna);
Instrukcje te znajdują się w opcji Library/User Interface/Controls.../General Function.
3. LITERATURA OBOWIĄZKOWA
1. Wiesław Winiecki: „Organizacja Komputerowych Systemów Pomiarowych”, WPW, Warszawa 1997, rozdziały: 3.2.1, 8.2, 9.4.1.
2. Materiały z wykładów.
ĆWICZENIE 5
ŚRODOWISKO POMIAROWE HP VEE
1. Przedmiot i cel ćwiczenia
Przedmiotem ćwiczenia jest zapoznanie się z możliwościami produktu firmy Hewlett Packard - pakietu "HP VEE oraz wykonanie prostego projektu systemu pomiarowego z wykorzystaniem oprogramowania zawartego w pakiecie.
2. Wstęp
HP VEE podobnie jak LabWindows umożliwia sterowanie blokami funkcjonalnymi systemu pomiarowego, zbieranie danych pomiarowych, analizę i przetwarzanie danych, prezentację wyników na monitorze lub drukarce. HP VEE współpracuje systemem operacyjnym MS Windows podobnie jak najnowsza wersja środowiska pomiarowego LabWindows.
Dzięki pakietom sterowników interfejsów, oprogramowanie zrealizowane w LabWindows lub HP VEE może sterować urządzeniami w standardzie IEC-625 (IEEE-488), VXI i RS-232.
Główna różnica między LabWindows a HP VEE dotyczy sposobu programowania. W środowisku LabWindows program tworzony jest w języku C lub Basic, jednakże rozbudowane środki wspomagania projektowania umożliwiają automatyczne generowanie linii programu. Program może być kompilowany przy użyciu standardowych kompilatorów wraz ze standardowymi bibliotekami; możliwe jest dołączanie własnych procedur. Natomiast HP VEE umożliwia stworzenie programu przy użyciu symboli graficznych. Projektowanie obrazkowe ma pewną zaletę istotną dla niektórych projektantów, ale również kilka wad. Zaletą jest programowanie bez konieczności znajomości typowych języków programowania Pascal, C, czy Basic. Wadą HP VEE jest m.in. brak możliwości dołączania do środowiska w typowy sposób własnych procedur w języku C, możliwe jest natomiast dołączanie programów wykonywalnych ( typu .exe ).
3. Ogólna charakterystyka pakietu HP VEE
3.1. Wymagania sprzętowe:
komputer osobisty zgodny z IBM PC;
mikroprocesor - 486/66 MHz z komprocesorem;
15 - calowy monitor SVGA;
CD-ROM lub 3,5'' stacja dysków w zależności od nośnika danych instalacyjnych
system operacyjny Windows 9x, Windows NT 4.0;
16MB pamięci RAM dla Windows 9x, 24 dla Windows NT;
wolne min. 13MB pamięci na dysku HDD (max. 60MB);
mysz współpracująca z MS Windows®;
współpraca z poniższymi kartami interfejsów:
- IEC-625: HP 82335, HP 82340, HP 82341 ( Hewlett Packard)
AT-GPIB, AT-GPIB/TNT, MC-GPIB , GPIB-PCII/IIA,PCMCIA-GPIB (National Instruments)
- VXI: E1383A, E1483A,
-RS-232: Porty szeregowe: COM1, COM2, COM3, COM4;
współpraca z dowolnymi przyrządami sterowanymi jedną z powyższych magistral.
3.2. Własności pakietu:
obiektowe podejście do programowania poprzez stworzenie obiektów programowych: tzn. paneli urządzeń i ich funkcji będących odwzorowaniem obiektów fizycznych (tzn. elementów płyty czołowej przyrządu ), a także obiektów realizujących elementarne funkcje programowe;
wyświetlanie płyt czołowych przyrządu na ekranie monitora oraz możliwość ich edycji i tworzenia nowych płyt (graficzny panel przyrządu pomiarowego jako wizualizacja przyporządkowania manipulatorom i funkcjom przyrządu obiektów programowych);
wielopoziomowy panel urządzenia realizujący sterowanie przyrządem, kontrolę jego statusu, przeprowadzenie kalibracji itp.;
tworzenie obiektu części lub całego systemu pomiarowego w postaci zbioru paneli urządzeń i innych obiektów;
wielopoziomowy system menu, pomocny w realizacji wszystkich etapów projektowania systemu pomiarowego - z menu wybiera się odpowiednie opcje, a z nich:
- panele przyrządów rzeczywistych
- źródła sygnałów wirtualnych służących do symulacji komputerowych
- funkcje do obliczeń matematycznych i statystycznych
- obiekty realizujące elementarne funkcje programowe
- obiekty służące do prezentacji danych
- funkcje do komunikowania się z urządzeniami I/O
- standardowe narzędzia dostępne w aplikacjach pracujących w środowisku Windows;
prosta procedura tworzenia aplikacji systemowej:
- system składany z "klocków" za pomocą myszy - niekonieczna znajomość języków programowania przez użytkowników;
rozbudowane funkcje akwizycji, analizy i prezentacji danych
wspomaganie automacji i kontrolek ActiveX :
automacja ActiveX umożliwiająca wykorzystanie HP VEE jako kontrolera automacji.Pozwala to innym aplikacjom jak np. MS Word, Excel i Access na działania takie jak np. przesyłanie danych do aplikacji celem wygenerowania raportu. Rozszerza to dotychczasowe możliwości kontroli aplikacji DDE do aplikacji wykorzystujących automację.
kontrolki ActiveX, możliwe do uzyskania z różnych źródeł (producentów), rozszerzają funkcjonalność HP VEE o nowe możliwości przetwarzania danych i ich wizualizacji.
kompatybilność z przyszłościowym standardem bibliotecznym do sterowania przyrządów z interfejsem VXI, IEC-625, RS232 etc.
wbudowany serwer WWW umożliwiający monitorowanie i śledzenie błędów aplikacji HP VEE poprzez zdalną przeglądarkę WWW używającą standardowego protokołu HTTP.
3.3. Struktura pakietu HP VEE:
Pakiet HP VEE składa się z kilku aplikacji ściśle ze sobą współpracujących, a których funkcje przedstawiono poniżej:
HP VEE Evaluation - program główny służący do tworzenia aplikacji pomiarowej,
HP Driver Writer Tool - edytor paneli - konstrukcja i konfiguracja panelu urządzenia,
HP ID Compiler - kompilator kodu języka HP ID generowanego przez edytor paneli,
Install Drivers - program służący do instalacji driver'ów,
Uninstall Evaluation - program deinstalacyjny.
3.4. Pojęcie obiektu - obiekt w HP VEE:
Podstawowa idea projektowania oprogramowania z wykorzystaniem HP VEE polega na stworzeniu w komputerze obiektów programowych, które są odwzorowaniem obiektów fizycznych i funkcjonalnych. Podejście to pozwala na zbudowaniu systemu oprogramowania jako otwartego zbioru obiektów programowych wielokrotnego użycia, które reprezentują zarówno fizyczne przyrządy pomiarowe i urządzenia pomocnicze, jak i procedury pomiarowe, procedury przetwarzania danych oraz elementy graficznego interfejsu użytkownika. Wszystkie te obiekty programowe mogą być reprezentowane w komputerze przez odpowiednie symbole graficzne lub tekstowe. Zbiór dostępnych obiektów może być łatwo rozszerzany poprzez definiowanie nowych obiektów programowych. Oprogramowanie zarządzające procesem pomiarowym (czyli oprogramowanie systemu pomiarowego) może być łatwo zbudowane przez wybór odpowiedniego zbioru predefiniowanych obiektów pomiarowych i połączenie ich zgodnie z połączeniami między fizycznymi obiektami. Czynności te mogą być wykonane z wykorzystaniem narzędzi programowania nie wymagających od użytkownika specjalnej biegłości w programowaniu.
Poniżej przedstawiono organizację obiektu w środowisku HP VEE. Obiektem jest każdy element systemu, który może być przedstawiony w postaci ikony lub całego elementu graficznego przedstawiającego fizyczny przyrząd, źródło wirtualne, elementarną funkcję programową itp. Każdy obiekt posiada zestaw styków ( ang. pin ), których umiejscowienie i znaczenie przedstawia rysunek 1. Styki umieszczone po lewej stronie ikony ( tzw. Data Input Pin ) służą do pobierania danych przez obiekt systemu w postaci np. ciągów znakowych, czy typowych zmiennych charakterystycznych dla języków wysokiego poziomu programowania. Natomiast styki umieszczone po prawej stronie ( Data Output Pin ) do ich wysyłania. Łącząc tego typu styki różnych obiektów uzyskuje się możliwość przesyłania danych między obiektami systemu. Po rozwinięciu ikony widoczny jest przyporządkowany stykowi terminal z nazwą funkcji obiektu, do której mają być przesyłane dane przychodzące do styku. W ten sposób otrzymuje się możliwość programowej kontroli wszystkimi funkcjami obiektu. Styki umieszczone na górze ( Sequence Input Pin ) i na dole ( Sequence Output Pin ) obiektu służą do określania uwarunkowań czasowych wykonywanego programu. Zastosowanie terminali pokazuje przykład opisany w punkcie 4.1 niniejszego opracowania.
Rys. 1. Obiekty w środowisku HP VEE
4. Projektowanie systemu pomiarowego
Tworzenie systemu pomiarowego z wykorzystaniem pakietu HP VEE jest etapem wielostopniowym. Przed przejściem do właściwego etapu realizacji systemu pomiarowego należy przeprowadzić standardową instalację interfejsu pomiarowego - tu IEEE 488.2. Jest to czynność jednokrotna i nie ma potrzeby jej wykonywania podczas tworzenia kolejnych aplikacji pomiarowych. Czynność ta nie będzie tu szerzej omawiana, gdyż sposób instalacji jest zawsze zamieszczony przez producenta interfejsu. Drugim etapem jest tzw. konfigurowanie sprzętowe elementów systemu mające na celu np. ustawienie parametrów transmisji w przypadku interfejsu RS-232, czy przydzielenie symboli identyfikacyjnych urządzeniom pracującym w standardzie IEC-625. Po tych czynnościach można już przystąpić do właściwego etapu konstruowania systemu pomiarowego (punkt 4.1). Aplikacja pomiarowa jest tworzona za pomocą programu HP VEE Evaluation z wykorzystaniem driver'ów przyrządów (dołączanych przez producentów lub wcześniej stworzonych przez projektanta systemu za pomocą aplikacji HP DWT).
Poniższy przykład ma na celu pokazanie sposobu konstruowania oprogramowania systemu pomiarowego w środowisku HP VEE. W tym celu prześledźmy proces tworzenia aplikacji służącej do badania charakterystyki częstotliwościowej obiektu badanego przy użyciu systemu składającego się z dwu przyrządów pomiarowych sterowanych przez kontroler IEC-625.2. Poniżej przedstawiono schemat systemu (rys. 2).
Rys. 2. Schemat systemu do automatycznej identyfikacji ch-tyki częstotliwościowej.
4.1. Konstruowanie aplikacji pomiarowej
Założyć należy w tym miejscu posiadanie odpowiednich sterowników programowych (ang. driver) dostarczanych przez producentów przyrządów, co w chwili obecnej jest rzeczą dość powszechną. Posiadanie ich wiąże się z brakiem konieczności konstruowania własnych sterowników (w trakcie konstruowania systemu pomiarowego pomija się wtedy punkt 1). W przypadku używania przyrządów, do których nie są dołączane tego typu driver'y użytkownik musi stworzyć je sam za pomocą programu HP Driver Writer Tool. Stworzony w ten sposób panel urządzenia musi być skompilowany w programie HP ID Compiler. Poniżej przedstawiono konstruowanie paneli za pomocą programu HP DWT z wykorzystaniem dołączonego szkieletu. Możliwe jest konstruowanie paneli bez używania tej pomocy co daje użytkownikowi znacznie większą elastyczność w tworzeniu paneli. W tym opracowaniu nie będzie ten problem szerzej omawiany, należy jedynie zaznaczyć, że ten sposób postępowania wymaga od użytkownika znajomości specyfiki konkretnych przyrządów pomiarowych, tzn. sposobu ich programowania a także znajomości specyficznego języka zwanego “HP ID Language”.
1. Tworzenie panelu urządzenia z wykorzystaniem HP DWT
Po otwarciu tej aplikacji w polu roboczym ukaże się szkielet panelu urządzenia ( widoczny po lewej stronie rysunku 4 ). Szkielet ten zawiera trzypoziomową konstrukcję składającą się z panelu głównego, panelu statusu oraz panelu informacyjnego. Dodanie nowego panelu odbywa się poprzez wybranie opcji Create/Panel i wpisanie jego nazwy. Cała procedura tworzenia paneli odbywa się przez dodawanie obiektów będących odwzorowaniem funkcji przyrządów. Obiekty te są dostępne w menu Create i są podzielone na podgrupy: wyświetlacze numeryczne, funkcje dyskretne ( np. wybór funkcji woltomierza ), funkcje ciągłe ( np. wybór częstotliwości generatora ), przyciski bi - ( np. power - on/off ) i monostabilne oraz wyświetlacze graficzne. Sposób kreacji podstawowych funkcji pokazuje zamieszczony w programie samouczek, natomiast szczegółowe zaprojektowanie panelu wymaga od użytkownika znajomości funkcji i kodów programujących urządzenie. Poniżej pokazano na przykładzie multimetru kolejne fazy powstawania takiego panelu (rys. 3 ÷ 5).
Rys. 3. Szkielet panelu po otwarciu aplikacji HP DWT
Rys. 4. Tworzenie funkcji urządzenia ( tu: po wybraniu opcji Create/Discrete )
Rys. 5. Przykład prostego panelu multimetru
2. Uruchomienie programu HP VEE Evaluation ( ikona w grupie HP VEE ).
3. Wybranie i skonfigurowanie urządzeń pomiarowych.
Konfigurowanie interfejsu pomiarowego za pomocą pakietu HP VEE jest bardzo proste i nie wymaga od użytkownika znajomości specyfiki użytych w systemie elementów. W celu konfiguracji urządzeń I/O ( jakimi są interfejsy pomiarowe ) należy uruchomić aplikację HP VEE i z menu I/O wybrać pozycję Instrument Manager.... Ukaże nam się wtedy okno Instrument Managera z listą dostępnych instrumentów. Aby znaleźć instrumenty z interfejsem HP-IB14 wybieramy (podświetlamy) ten interfejs. W tym momencie w grupie klawiszy Configuration (po prawej stronie listy instrumentów) ukaże nam się klawisz Find Instruments, wybranie którego spowoduje wyszukanie urządzeń. W oknie Instrument List użytkownik otrzyma informację o dostępnych z poziomu HP VEE urządzeniach z wybranym interfejsem. Dalsze postępowanie sprowadza się do:
- wybrania interesującego nas urządzenia I/O
- naciśnięcia przycisku Auto Confugure, co spowoduje automatyczną identyfikację i konfigurację urządzenia.
Aby dokonać wyboru przyrządów, które zamierzamy użyć w systemie należy z menu wybrać opcję I/O|Instrument Manager... .Pojawi się okno w którym znajdą się symbole urządzeń, których sterowniki są zainstalowane w systemie. Po wybraniu interesującego nas przyrządu należy dokonać jego konfiguracji. Jest to możliwe po naciśnięciu przycisku Edit Instrument. Podczas konfiguracji należy pamiętać o ustawieniu odpowiedniego adresu przyrządu oraz, w przypadku stosowania interfejsu GPIB, ustawieniu parametru "Byte Ordering" na wartość MSB. Gdy korzystamy z rzeczywistego przyrządu konieczne jest też ustawienie parametru Live Mode na wartość ON. Opisana sytuacja jest zobrazowana na rysunku 6.
Rys. 6. Wybór i konfiguracja urządzenia.
Rys. 7. Wybór panelu urządzenia.
W przypadku korzystania z paneli utworzonych za pomocą HP DWT należy jeszcze wskazać odpowiedni plik naszego panelu urządzenia (w zakładce [Panel Driver]->[ID Filename:]). Rysunek 7 ilustruje tę sytuację.
Po zaakceptowaniu ustawień i wybraniu opcji Panel Driver. W oknie głównym programu HP VEE Evaluation pojawi się wirtualny panel wybranego przyrządu.
4. Utworzenie terminali przyrządów
Terminal jest miejscem, poprzez które funkcja obiektu systemu może pobierać argumenty lub zwracać swoją wartość. Użycie terminali jest konieczne przy automatycznych zmianach nastaw obiektów oraz przy ich odczycie. Poprzez terminal wejściowy możemy zmieniać ustawienia funkcji natomiast z terminalu wyjściowego odczytywać aktualny stan obiektu. W celu utworzenia terminalu należy kliknąć myszą w lewym górnym rogu obiektu, wybrać opcję Add Terminal i dalej rodzaj terminalu. Etap tworzenia terminalu na przykładzie panelu multimetru na rysunku 8.
Rys. 8. Tworzenie terminali
W ostatnim kroku należy wybrać funkcję, jaka ma być sterowana za pomocą terminalu ( w przypadku terminala wejściowego ), bądź parametr który chcemy odczytać ( terminal wyjściowy ). Wybór funkcji pokazano na rysunku poniżej ( rys. 9 ).
Rys. 9. Wybór funkcji terminala
W celu realizacji systemu do badania charakterystyki częstotliwościowej obiektu mierzonego konieczny jest w tym miejscu wybór odpowiednich funkcji terminali użytych przyrządów. Aby odczytywać wyniki pomiarów z multimetru należy utworzyć terminal wyjściowy realizujący funkcję READING, natomiast do zmian częstotliwości generatora - terminal wejściowy FREQENCY.
5. Wybór obiektów typu "FLOW"
Obiekty tego typu służą do realizacji algorytmu pomiarowego. Ich użycie pozwala na tworzenie aplikacji podobnie jak przy użyciu tradycyjnych języków programowania. Zawierają takie elementy jak: pętle pomiarowe, deklaracje stałych i zmiennych, konstrukcje warunkowe itp.
W celu ich użycia należy wybrać opcję Flow oraz pobrać odpowiedni obiekt. Wybór funkcji Repeat/For Log Range przedstawiono na rysunku 10. Znaczenie poszczególnych elementów dostępnych z menu Flow jest oczywiste i nie będzie tu omawiane.
Rys. 10. Wybór obiektu typu flow ( Repeat/For Count )
6. Łączenie obiektów
Łączenie obiektów odbywa się przy użyciu terminali. Oczywiście można łączyć jedynie terminale różnych typów ( nie można np. połączyć dwu terminali wejściowych ). Połączenie realizuje się poprzez kliknięcie myszą na terminalu danego obiektu i poprowadzeniu linii łączącej do innego terminala. Proces ten pokazuje rysunek 11.
7. Uruchomienie aplikacji.
Rysunek 12 przedstawia gotową aplikację pomiarową. Zgodnie z założeniami może być ona wykorzystana do badania charakterystyki częstotliwościowej badanego obiektu. Algorytm programu zawiera 5 punktów pomiarowych na dekadę ( parametr w oknie obiektu For Log Range ). Częstotliwość początkowa wynosi 10 Hz i jest ona zmieniana w kolejnych krokach aż do osiągnięcia wartości końcowej 10000 Hz. Odczytu dokonuje się z terminalu wyjściowego multimetru ( READING ), do którego można dołączyć bądź dowolny obiekt z menu Display, bądź urządzenie z menu I/O|to w celu np. zapamiętania wyników w pliku lub ich wydrukowania.
Uruchomienie aplikacji odbywa się po wybraniu opcji RUN lub naciśnięciu przycisku Start ( jeśli taki jest zamieszczony ). Możliwa jest praca krokowa po naciśnięciu przycisku Step. Przycisk Stop służy do przerwania działania aplikacji.
Rys. 11. Proces łączenia obiektów.
Rys.12. Aplikacja pomiarowa do identyfikacji ch-tyki częstotliwościowej
LITERATURA OBOWIĄZKOWA
1. Wiesław Winiecki: „Organizacja Komputerowych Systemów Pomiarowych”, WPW, Warszawa 1997, rozdziały: 3.2.1, 8.2, 9.4.2.
2. Materiały z wykładów.
ĆWICZENIE 6
METODA REGRESJI LINIOWEJ
PLANOWANIE EKSPERYMENTU
1. Przedmiot i cel ćwiczenia
Przedmiotem ćwiczenia jest metoda regresji liniowej z elementami planowania eksperymentu.
2. Wstęp
Wygodnym sposobem opisu zależności stochastycznej między zmiennymi losowymi
i
jest funkcja regresji:
(2.1)
określająca zależność średniej wartości zmiennej losowej
od realizacji zmiennej losowej
.
Funkcja regresji minimalizuje drugi moment zmiennej losowej , tzn. wyrażenie:
(2.2)
osiąga minimum dla . Jest to teoretyczna przesłanka zastosowania metody najmniejszej sumy kwadratów do aproksymacji funkcji regresji na podstawie ciągu par odpowiadających sobie realizacji zmiennych losowych
i
:
(2.3)
W metrologii i technice eksperymentu szczególnie rozpowszechnione jest następujące sformułowanie problemu wyznaczania funkcji regresji na podstawie danych pomiarowych:
Zmienna losowa
modeluje stan wejściowy pewnego obiektu fizycznego (lub przyczynę badanego zjawiska), zaś zmienna losowa
stan wyjściowy tego obiektu (lub skutek charakteryzujący badane zjawisko).
Stany wejściowe mogą być zadawane lub mierzone z pomijalnym błędem i dlatego dane reprezentujące zmienną losową
mogą być traktowane jako dokładne:
.
Stany wyjściowe mierzone są z błędem przypadkowym podlegającym rozkładowi o zerowej średniej i dlatego dane reprezentujące zmienną losową
mają postać:
dla n = 1,...,N (2.4)
gdzie
jest realizacją zmiennej losowej
takiej, że:
oraz
tzn. zmienne losowe są nieskorelowane.
Zakłada się ponadto, że funkcja regresji, czyli zależność średniej wartości zmiennej losowej
od realizacji zmiennej losowej
, może być z wystarczającą dokładnością aproksymowana za pomocą funkcji o znanej postaci, ale z nieznanymi parametrami
.
Wyznaczanie wektora parametrów p, a ściślej jego estymaty , metodą najmniejszych kwadratów polega na minimalizacji następującego wskaźnika rozbieżności między danymi pomiarowymi a modelem zależności między zmiennymi losowymi
i
, którym jest funkcja regresji:
(2.5)
co w języku matematyki zapisuje się jako:
(2.6)
Metodę najmniejszych kwadratów zaproponowali niezależnie A. M. Legendre (1806) i K. F. Gauss (1809) w związku z wyznaczaniem orbit planet i komet na podstawie obserwacji astronomicznych. Gauss wyprowadził ją jako przypadek szczególny ogólniejszej zasady maksymalizacji funkcji gęstości prawdopodobieństwa błędów, którą R. A. Fisher rozwinął do postaci metody największej wiarygodności (1912).
3. Ogólna charakterystyka pakietu „Matlab Statistics Toolbox”
Pakiet „Matlab Statistics Toolbox” zawiera szereg procedur pomocnych przy obliczeniach statystycznych np. unifrnd, normrnd, regress, tinv, var. Pełny ich wykaz można uzyskać wydając polecenie: help stats. Użycie tych procedur pozwala na znaczne zaoszczędzenie czasu poświęconego na tworzenie oprogramowania realizującego obliczenia statystyczne, a także skraca czas obliczeń statystycznych służących do planowania eksperymentu i weryfikacji danych pomiarowych.
4. Program ćwiczenia
1. Generacja liczb pseudolosowych
1.1. Wygenerować ciąg liczb pseudolosowych o rozkładzie:
a) równomiernym U za pomocą procedury unifrnd;
b) normalnym N za pomocą procedury normrnd;
Przykłady :
unifrnd(-rMAX, rMAX, M, N) - generuje macierz liczb pseudolosowych o rozkładzie równomiernym w przedziale o wymiarach M×N.
normrnd(m, σ, M, N) - generuje macierz liczb pseudolosowych o rozkładzie normalnym i o wymiarach M×N, gdzie m - wartość oczekiwana, σ - odchylenie standardowe.
1.2. Sporządzić kilka histogramów ciągu dla N = 10, 100, 1000, 10000 przy użyciu procedury hist. Uzyskane wydruki histogramów zamieścić w sprawozdaniu.
Wyznaczyć i przedstawić graficznie zależność estymaty wartości oczekiwanej i estymaty wariancji od długości ciągu , tj. od N.
Aby wyznaczyć estymatę wartości oczekiwanej należy wygenerować kilka ciągów liczb pseudolosowych, policzyć ich wartości oczekiwane, które utworzą wektor wartości oczekiwanych a następnie wyznaczyć wartość średnią tego wektora, która jest estymatą wartości oczekiwanej . W analogiczny sposób należy postąpić przy wyznaczaniu estymaty wariancji .
Wyznaczyć estymatę funkcji autokorelacji ciągu dla N = 10000, korzystając z przybliżonego wzoru:
(5.1)
2. Estymacja parametrów relacji x → y metodą najmniejszych kwadratów.
Zdefiniować zadanie testowe wybierając dokładne wartości parametrów p0, p1 i p2 zadania testowego: dla x1, x2 ∈[0,1].
Zaprojektować macierz wejść:
przyjmując jako xn1 i xn2 wszystkie pary ułamków k/K dla k = 0,...,K; N = ( K + 1)2;
przyjmując jako xn1 i xn2 pary liczb pseudolosowych o rozkładzie równomiernym U ;
przyjmując jako xn1 i xn2 pary liczb pseudolosowych o rozkładzie normalnym N , których wartość nie wykracza poza przedział (0,1).
W czasie wykonywania ćwiczenia należy wybrać jeden z możliwych wariantów : a), b) lub c) w zależności od wskazówek prowadzącego.
Wyznaczyć wektor syntetycznych danych pomiarowych o składowych:
dla n = 1,...,N
do symulacji błędów Δyn używając generatora liczb pseudolosowych o rozkładzie:
a) równomiernym U ;
normalnym N .
Wyznaczyć estymaty , i parametrów p0, p1 i p2, korzystając z procedury regress, która wyznacza estymaty parametrów, granice przedziałów ufności dla parametrów, wektor residuów a także granice przedziałów ufności dla residuów.
Przykład wywołania:
[p_est, p_uf, r, r_uf, STATS] = regress(y,X,alfa)
gdzie :
p_est - wektor estymat parametrów,
p_uf - macierz składająca się z dwu wektorów, które zawierają odpowiednio dolne i górne granice przedziałów ufności odpowiadających estymatom ,
r - wektor residuów,
r_uf - macierz składająca się z dwu wektorów, które zawierają odpowiednio dolne i górne granice przedziałów ufności dla residuów r,
y - wektor syntetycznych danych pomiarowych,
X - macierz wejść,
alfa - poziom niepewności.
Uwaga: Podczas wykonywania punktów 2.3 i 2.4 należy korzystać z macierzy wejść wygenerowanej w punkcie 2.2.
3. Badanie metody najmniejszej sumy kwadratów
Wyznaczyć i przedstawić graficznie zależność błędów Δpm = - pm (m = 0,1,2) od N dla kilku wartości σ2y.
Wyznaczyć i przedstawić graficznie zależność wariancji estymat parametrów Var() (m = 0,1,2) od N dla kilku wartości σ2y.
Wyznaczyć i przedstawić graficznie zależność kowariancji estymat parametrów Cov(,) (m = 0,1,2) od N dla kilku wartości σ2y.
W tym celu należy wybrać jednen z elementów macierzy kowariancji i wykreślić zależność unormowanego współczynnika kowariancji dla tego elementu od N. Macierz kowariancji należy wyznaczać ze wzoru :
(5.2)
a unormowany współczynnik kowariancji ze wzoru:
(5.3)
3.4. Wyznaczyć zależność granic przedziałów ufności odpowiadających estymatom od N dla kilku wartości σ2y.
3.5. Zbadać istotność parametrów modelu zależności x → y przy założeniu, że dane generowane są zgodnie z zasadami przedstawionymi w punkcie 2.2 i 2.3, a model ma postać:
dla x1, x2 ∈[0,1];
dla x1, x2, x3 ∈[0,1].
W tym celu należy dla każdego parametru obliczyć wartość statystyki t - Studenta:
(5.4)
gdzie cmm jest elementem macierzy , zwanym mnożnikiem Gaussa. Obliczoną wartość należy porównać z wartością tkryt , odpowiadającą przyjętemu poziomowi istotności α (np. α = 0,05) i liczbie stopni swobody N-M-1, wyznaczoną za pomocą procedury tinv. Jeżeli tkryt > to można stwierdzić, że badany parametr nie jest istotny statystycznie.
Uwaga: Punkt 3.5 nie należy do podstawowego programu ćwiczenia.
5. Przykłady programów realizujących wybrane warianty ćwiczenia
Przykładowy program realizujący punkt 1.
clear all
close all
clc
% Zadanie 1
% Punkt 1.1 i 1.2
Tab_N = [10 100 1000 10000];
rmax=1;
Mi=0;
Sigma=1;
for i=1:length(Tab_N)
N=Tab_N(i);
Ru=unifrnd(-1*rmax,rmax,N,1); % generacja wektora o rozkładzie równomiernym
figure
hist(Ru,100);
end
disp('Naciśnij dowolny klawisz');
pause
close all
% Punkt 1.3
for i=1:length(Tab_N)
N(i)=Tab_N(i);
R=normrnd(Mi,Sigma,500,N);
E=mean(R);
EE(i)=mean(E);
end
figure
semilogx(N,EE);
title('Zależność estymaty średniej od N');
xlabel('N');
Przykładowy program realizujący punkty 2 i 3 ( z wyjątkiem 3.5)
clear all
close all
% Zadanie 2
Tab_N = [10,20,50,100,200,500,1000];
Tab_Vy = [0.1,0.01,0.001,0.0001,0.00001,0.000001];
Vy = Tab_Vy(3); % Wariancja y
alfa=0.05; % Założony poziom niepewności
disp(['Poziom niepewności alfa = ' num2str(alfa)]);
disp(['Wariancja y = ' num2str(Vy)]);
for i=1:length(Tab_N)
N = Tab_N(i); % Liczba pomiarów
% Dla każdego N należy powtórzyć pomiary kilkakrotnie aby można było wyznaczyć wariancję
% parametrów p.
K = 20; % Liczba powtórzeń pomiarów
disp(' ');
disp(['Liczba pomiarów N = ' num2str(N)]);
for ii=1:K
p=[1 1 1 1]';
XX=normrnd(0,1,length(p),N); % Generacja macierzy wejść o rozkładzie normalnym
X=XX';
X(:,1)=ones(N,1); % Pierwsza kolumna - jedynki
for a=2:length(p)
for b=1:N
X(b,a)=min(X(b,a),1); % Ograniczenie do przedziału [0,1]
X(b,a)=max(X(b,a),0);
end
end % Koniec tworzenia macierzy wejść
y = X*p;
delta_y = normrnd(0,sqrt(Vy),N,1);
y_zab = y + delta_y; % Wektror syntetycznych danych pomiarowych
[p_est,p_uf,r,r_uf,STATS]=regress(y_zab,X,alfa);
Tab_p_est(:,ii)=p_est;
Tab_p_uf_lo(:,ii)=p_uf(:,1);
Tab_p_uf_hi(:,ii)=p_uf(:,2);
end
Var_p(i,:)= var(Tab_p_est);
P_est(i,:)= mean(Tab_p_est);
P_uf_lo(i,:)= mean(Tab_p_uf_lo);
P_uf_hi(i,:)= mean(Tab_p_uf_hi);
end
figure(1)
semilogx(Tab_N,P_est(:,1),Tab_N,P_est(:,2),Tab_N,P_est(:,3),Tab_N,P_est(:,4))
title('Estymaty parametrów p');
xlabel('N');
figure(2)
semilogx(Tab_N,P_uf_lo(:,1),Tab_N,P_uf_hi(:,1));
title('Przedziały ufności dla p0');
xlabel('N');
figure(3)
semilogx(Tab_N,P_uf_lo(:,2),Tab_N,P_uf_hi(:,2));
title('Przedziały ufności dla p1');
xlabel('N');
figure(4)
semilogx(Tab_N,P_uf_lo(:,3),Tab_N,P_uf_hi(:,3));
title('Przedziały ufności dla p2');
xlabel('N');
figure(5)
semilogx(Tab_N,P_uf_lo(:,4),Tab_N,P_uf_hi(:,4));
title('Przedziały ufności dla p3');
xlabel('N');
figure(6)
semilogx(Tab_N,Var_p(:,1),Tab_N,Var_p(:,2),Tab_N,Var_p(:,3),Tab_N,Var_p(:,4))
title('Wariancje estymat parametrów p');
xlabel('N');
Przykładowy program realizujący punkt 3.5
clear all
close all
% Zadanie 3.5 - Badanie istotności statystycznej parametrów
Tab_N = [10,20,50,100,200,500,1000];
Tab_Vy = [0.1,0.01,0.001,0.0001,0.00001,0.000001];
Vy = Tab_Vy(1); % Wariancja y
alfa=0.1; % Poziom niepewności
disp(['Poziom ufności alfa = ' num2str(alfa)]);
disp(['Wariancja y = ' num2str(Vy)]);
for i=1:length(Tab_N)
N = Tab_N(i); % Liczba pomiarów
disp(['Liczba pomiarów N = ' num2str(N)]);
disp(' ');
p3=[1 1 1]';
p4=[1 1 1 1]';
XX3=normrnd(0,1,length(p3),N); % Generacja macierzy wejść o rozkładzie normalnym
X3=XX3';
XX4=normrnd(0,1,length(p4),N); % Generacja macierzy wejść o rozkładzie normalnym
X4=XX4';
X3(:,1)=ones(N,1);
for a=2:length(p3)
for b=1:N
X3(b,a)=min(X3(b,a),1);
X3(b,a)=max(X3(b,a),0);
end
end % Koniec tworzenia macierzy wejść
X4(:,1)=ones(N,1);
for a=2:length(p4)
for b=1:N
X4(b,a)=min(X4(b,a),1);
X4(b,a)=max(X4(b,a),0);
end
end
y = X3*p3;
delta_y = normrnd(0,sqrt(Vy),N,1);
y_zab = y + delta_y; % Wektror syntetycznych danych pomiarowych
[p_est3,p_uf,r,r_uf,STATS]=regress(y_zab,X3,alfa);
[p_est4,p_uf4,r4,r_uf4,STATS4]=regress(y_zab,X4,alfa);
Mnoz_Gauss3=inv(X3'*X3);
for iii=1:length(p3)
t_p3(iii)=abs(p_est3(iii))/(Vy*sqrt(Mnoz_Gauss3(iii,iii))); % Wzór (7.12)
end
Mnoz_Gauss4=inv(X4'*X4);
for iii=1:length(p4)
t_p4(iii)=abs(p_est4(iii))/(Vy*sqrt(Mnoz_Gauss4(iii,iii))); % Wzór (7.12)
end
disp('Parametry modelu y = p0 + p1x1 + p2x2');
disp(' ');
t_kryt=tinv(1-alfa,N-length(p3));
for j=1:length(p3)
if t_p3(j) > t_kryt
disp(['Dla N = ' num2str(N) ' Parametr p' num2str(j-1) ' jest istotny statystycznie']);
else
disp(['Dla N = ' num2str(N) ' Parametr p' num2str(j-1) ' nie jest istotny statystycznie']);
end
end
disp(' ');
disp('Parametry modelu y = p0 + p1x1 + p2x2 + p3x3');
disp(' ');
t_kryt=tinv(1-alfa,N-length(p4));
for j=1:length(p4)
if t_p4(j) > t_kryt
disp(['Dla N = ' num2str(N) ' Parametr p' num2str(j-1) ' jest istotny statystycznie']);
else
disp(['Dla N = ' num2str(N) ' Parametr p' num2str(j-1) ' nie jest istotny statystycznie']);
end
end
disp(' ');
end
6. Literatura
R. Z. Morawski: „Systemy Pomiarowe”, materiały pomocnicze do wykładu, Warszawa 1997
J. M. Jaworski, R. Z. Morawski, J. Olędzki: „Wstęp do metrologii i techniki eksperymentu”, WNT 1991
A. Zalewski, R. Cegieła: „MATLAB - obliczenia numeryczne i ich zastosowania”, Wydawnictwo Nakom, Poznań 1996
B. Mrozek, Z. Mrozek: „MATLAB - uniwersalne środowisko do obliczeń naukowo-technicznych”, PLJ, Warszawa 1996
41
Ćwiczenie 1
Ćwiczenie 2
Ćwiczenie 3
Ćwiczenie 4
Ćwiczenie 5
Ćwiczenie 6