Olaf Józefowicz 116560
Krzysztof Tkacz 110316
Pomiary
wielkości elektrycznych za pomoc
miernika cyfrowego
wyposażonego w interfejs GPIB
1. Cel ćwiczenia
Celem ćwiczenia było zapoznanie się ze środowiskiem systemu TestPoint i wprowadzenie poprawek do aplikacji, w której wykonywane są pomiary miernikiem połączonym z komputerem za pomocą interfejsu GPIB. Program oblicza charakterystykę prądowo napięciową oraz przedstawia ją na wykresie.
2. Opis układu pomiarowego
W doświadczeniu wykorzystywaliśmy miernik cyfrowy Keithley 487 Picoammeter / Voltage Source połączony z komputerem PC interfejsem IEEE 488 (GPIB).
Rys. 1 Schemat układu pomiarowego
W ramach systemu GPIB można połączyć maksymalnie 15 urządzeń, z których jedno
pełni zawsze rolę nadrzędną (CIC - Controller-In-Charge). Po inicjalizacji kontrolerem jest z
reguły karta GPIB (System Controller). Każde z urządzeń może być:
• nadawcą (talker),
• odbiorcą (listener),
lub pełnić obie powyższe funkcje. W prostych systemach może nie występować kontroler
(urządzenia są na stałe zaadresowane do nadawania lub odbierania). Należy podkreślić, że
stosowanie w systemie więcej niż jednego urządzenia mogącego pełnić funkcję kontrolera
(CIC) nie jest częste.
Transmisja danych odbywa się na zasadzie komunikatów – słów 8-bitowych. Jest to
transmisja równoległa asynchroniczna w trybie handshake (z potwierdzeniem odebrania
komunikatu), w którym szybkość transmisji jest dostosowywana do najwolniejszego
odbiorcy. Maksymalna szybkość transmisji wynosi 1 MB/s (typowo 500 kB/s). W 1993 r.
firma NI opracowała protokół szybkiej transmisji HS488 dla aplikacji wymagających 8MB/s.
Magistrala GPIB jest realizowana przy użyciu kabla 24-żyłowego (25-żyłowego dla IEC-625,
znacznie mniej popularne rozwiązanie). Maksymalna długość kabla wynosi 20 m, przy czym
odległość pomiędzy dwoma urządzeniami nie powinna przekraczać 4 m (zaleca się 2 m).
Rezystancja przewodów nie powinna przekraczać 140 mΩ/m, a ich pojemność do masy 150
pF/m. Magistrala może być wydłużona nawet do kilku kilometrów przy użyciu extenderów.
Rys.2 Złącze interfejsu GRIP
Linie magistrali dzielą się na linie masy i ekranowania (7+1 linii, dla IEC-625 jest 8+1 linii) oraz sygnałowe (16 linii), które można podzielić na:
• szynę danych (8 linii) – Data Input Output DIO1-DIO8,
• szynę synchronizacji (3 linie) – Interface Handshake Bus,
• szynę sterowania (5 linii) – Interface Management Bus,
Interfejs IEEE-488 umożliwia łączenie w system pomiarowy następujących urządzeń:
• kontrolera, czyli urządzenia sterującego pracą systemu,
• cyfrowych urządzeń pomiarowych (np.: woltomierze, multimetry, oscyloskopy, częstościomierze i czasomierze, analizatory częstotliwości, analizatory stanów logicznych itd.),
• urządzeń elektronicznych sterowanych cyfrowo (np.: generatory sygnałowe, zasilacze, sterowane źródła prądu, przełączniki itd.),
• drukarek, ploterów, rejestratorów cyfrowych.
Niezależnie od funkcji użytkowych każde urządzenie z interfejsem GPIB musi być
przygotowane do wykonywania 10 standardowych funkcji umożliwiających współpracę z
innymi urządzeniami, tzw. funkcji interfejsowych:
1. Inicjowanie współpracy (Source Handshaking - SH)
2. Potwierdzenie współpracy (Acceptor Handshaking - AH)
3. Nadawanie danych (Talking - T) lub nadawanie rozszerzone (Talking Extended - TE)
4. Odbieranie danych (Listening - L) lub odbieranie rozszerzone (Listening Extended - LE)
5. Żądanie obsługi (Serving Request - SR)
6. Zerowanie urządzeń (Device Clearing - DC)
7. Wyzwalanie urządzeń (Device Triggering - DT)
8. Przełączanie na obsługę zdalną (Remote/Local - RL)
9. Sterowanie (Control - C)
10. Kontrola równoległa (Parallel Polling - PP)
3. Opis środowiska TestPoint
Jest to środowisko programistyczne do szybkiego tworzenia aplikacji. Jego twórcą jest Capital Equipment Corporation (CEC). Zasadniczo służy do budowania programów, które sterują urządzeniami, zbierają dane, przetwarzają je i wizualizują, choć dzięki możliwości importu DLL, OCX, VBX czy DDE da się w nim zrobić dużo więcej. Aplikacje tworzy się podobnie jak w innych programach "wizualnych" - na panelu umieszcza się potrzebne elementy (gotowe klawisze, suwaki, okna edycyjne, wyświetlacze itp.) ze stosu. Dostępna jest też obszerna biblioteka sterowników do przyrządów pomiarowych.
Stos obiektów, które można wykorzystać podczas tworzenia programu: klawisz, przełącznik ON/OFF, selektor, suwak, pole edycyjne, wskaźnik diodowy, wyświetlacz tekstowy, wskaźnik poziomu, tabela, wykres, przetwornik AC i CA, urządzenia I/O (sterowanie 8255), COM, GPIB, pętla programowa, warunek IF, CASE, formuła matematyczna, zegar, operacje plikowe, sterowanie I/O (np. własna karta w slocie komputera), kontener na dane, obiekt zadań, tworzenie podprogramu, tekst, obrazek, raport, nowy panel, link DDE, kontrolka VBX, kod DLL, obsługa błędów i inne...
Rys. 3.1 Główne okno środowiska TestPoint
Zasobnik (Stock) zawiera wszystkie dostępne obiekty pogrupowane w odpowiednich kategoriach, jak np.: wejścia danych, rysunki, interfejsy, pliki, cyfrowe wejścia/wyjścia, wykresy, wskaźniki, przetworniki A/C i C/A, pętle, itd.
Lista obiektów (Objects) przedstawia obiekty, które zostały wykorzystane w danej aplikacji.
Kolejność obiektów na liście nie ma znaczenia, mogą one być przesuwane przez ustawienie
strzałki na danym obiekcie, naciśniecie lewego przycisku myszy i przeniesienie w inne
miejsce. Każdy obiekt z listy ma dodatkowe własne okno. Okno to ma cztery zakładki
(Settings, Actions, Comments, Xref), umożliwiające zmianę informacji wyświetlanych w tym
oknie.
Panel jest oknem, który umożliwia obsługę systemu pomiarowego. Znajdują się na nim takie elementy, jak przyciski, przełączniki, wyświetlacze itd.
4. Opis programu.
Po otworzeniu pliku z programem i uruchomieniu, pojawia się nam okno główne programu:
4.1. Okno główne programu
Okno programu można podzielić na dwa pola: część konfiguracyjno-sterującą oraz wyświetlającą informacje o przebiegu pomiarów.
W części konfiguracyjnej możemy włączyć filtry oraz amperomierz. Pole „ilość uśrednionych pomiarów” określa ile pomiarów ma być przeprowadzone dla tego samego napięcia. Po skończeniu pomiarów dla danego napięcia, obliczana jest średnia i zmieniane jest napięcie. Poniżej ustawia się napięcie początkowe, końcowe oraz krok pomiarowy. Wartości te mogą być ujemne, a napięcie początkowe może być większe od końcowego. „Opóźnieniem” zmieniamy przerwę czasową pomiędzy pomiarami. Parametrem „natężenie max” ustalamy maksymalne natężenie prądu jakim może być poddana próbka. Poniżej wybieramy jednostkę natężenia prądu elektrycznego. Do wyboru mamy: mA, μA, nA oraz pA. Jeżeli wartość natężenia przekroczy zadaną wartość, zapali się czerwona „lampka”, wyświetli się komunikat ostrzegawczy, a pomiary zostaną zatrzymane. Pole „Nazwa pliku” określa katalog oraz nazwę pliku w którym będą zapisane wyniki pomiarów. Pomiar możemy rozpocząć przyciskiem „Początek pomiarów”, a zakończyć przyciskiem „Stop”.
W części informacyjnej wyświetlane są wartości napięcia i prądu. Na wykresie natomiast, wyświetlana jest charakterystyka prądowo napięciowa.
Pomiary przeprowadzamy poprzez odpowiednie skonfigurowanie parametrów pomiaru, uruchomienie amperomierza, a następnie naciśnięcie przycisku „Początek pomiarów”. Wartości napięcia zostaną wyświetlone na wykresie. W każdej chwili możemy zatrzymać pomiary przyciskiem „Stop”. Wyniki pomiarów są zapisywane do pliku.
|
Rys.4.1 Program w trakcie pomiarów |
5. Omówienie kodu programu
Naszym zadaniem było opracowanie algorytmu i napisanie kodu, który pozwala zwiększać lub zmniejszać napięcie w zależności od tego która wartość jest większa (czy “napięcie początkowe” czy “napięcie końcowe”). Określiliśmy również, jak szybko można zmieniać napięcie na mierniku cyfrowym i uwzględniliśmy to w programie. W tym celu zapoznaliśmy się z instrukcją do miernika Keithley 487 Picoammeter. Nanieśliśmy szereg poprawek, które poprawiły czytelność kodu. Praca ta polegała głównie na wykorzystaniu własności zmiennych programu Test-Point, które to mogą przechowywać wartości, jak i wyrażenia matematyczne. Pozwoliło to na usunięcie zbędnych zmiennych. Poprawiliśmy też drobne “literówki” (głównie związane z polskimi literami) oraz błędy w samym interfejsie programu (niemieszczące się zdania, zmiana wielkości czcionek, poprawienie maksymalnych i minimalnych wartości możliwych do wprowadzenia przez użytkownika.
Na rysunku 5.1 przedstawiony jest fragment kodu odpowiedzialny za określenie, która wartość napięcia jest większa (czy „napięcie początkowe”, czy napięcie końcowe”). Kod z rysunków 5.2 oraz 5.3 jest uruchamiany po wciśnięciu przycisku „Początek pomiaru”.
Oto główne zadania, jakie wykonuje kod z rys. 5.2 :
ustawienie napięcia aktualnego („zm Vaktualne”) na wartość „napięcie początkowe [V]”
Jeżeli napięcie początkowe jest wyższe od końcowego, zmienna „znak” jest przyjmuje wartość „-1”, w przeciwnym przypadku jest ustawiana na „1”.
sprawdzenie czy amperomierz jest włączony. Jeżeli tak to jest uruchamiana pętla z rys. 5.3
|
Rys.5.1 Kod źródłowy programu, odpowiedzialny za rozpoznanie które napięcia są większe (początkowe czy końcowe) |
Na rys. 5.2 przedstawiony jest fragment kodu programu, odpowiedzialny za zmianę napięcia. Realizowane jest to za pomocą pętli „loop”.
Algorytm jest następujący:
ustaw zmienną „licznik a+1” (licznik przeprowadzonych pomiarów dla jednego napięcia) na wartość „1”
wyzeruj „zm_suma” (zmienna potrzebna do obliczenia wartości średniej z pomiarów)
rozpoczyna się pętla „loop”, która jest zakańczana jeżeli zmienna „zm_czyPomiar” będzie równa „0”
jeżeli „licznik a+1” jest mniejszy od „do_usredn” (zmienna wprowadzana przez użytkownika: „ilość uśrednianych pomiarów”) to
do zmiennej „zm_suma” dodaj wartość pomiaru otrzymaną z miernika
jeżeli „licznik a+1” jest większy od „do_usredn”, wtedy
podziel zsumowane pomiary przez ilość pomiarów (dzięki temu uzyskamy średnią wartość),
wyświetl tą wartość na wykresie
zapisz wartość do pliku
ustaw zmienną „licznik a+1” na wartość „1”
wyzeruj „zm_suma”
zmień wartość napięcia o na następną wartość:
„V_aktualne”:=”V_aktualne”+”znak”*”krok pomiarowy [V]”
W zależności od tego, czy zmienna znak jest dodatnia czy ujemna, wartość aktualna napięcia będzie odejmowana lub dodawana.
Sprawdzanie czy nie została przekroczona wartość napięcia końcowego:
jeżeli „znak” jest równy „1” to
jeżeli „zm Vaktualne” jest większy od „napięcie końcowe” to ustaw zmienną „zm_czyPomiar” na wartość „0” (wyjście z pętli)
w przeciwnym przypadku
jeżeli „zm Vaktualne” jest mniejsze od „napięcie końcowe” to ustaw zmienną „zm_czyPomiar” na wartość „0” (wyjście z pętli)
|
Rys.5.2 Kod źródłowy programu, odpowiedzialny za zmianę kroku czasowego oraz za warunek wyjścia z pętli |
6.Wnioski
Ćwiczenie pozwoliło zapoznać się nam z podstawową obsługą środowiska TestPoint Poznaliśmy też techniki programowania interfejsu GPIB.
Wprowadzone przez nas zmiany nie rozszerzyły diametralnie możliwości programu, lecz dzięki naszej pracy znacznie ulepszyły program. Stał się on bardziej intuicyjny i przyjazny dla końcowego użytkownika, a kod źródłowy programu jest łatwiejszy do zrozumienia i modyfikacji.