WSPÓŁCZESNE STEROWANIE EKSPERYMENTEM FIZYCZNYM NA PODSTAWIE WYKORZYSTANIA PROGRAMU LABVIEW

W.Dobrogowski, (dobrog@physics.uwb.edu.pl)
J. Świekło (j_s@physics.uwb.edu.pl)
Instytut Fizyki Uniwersytetu w Białymstoku, Białystok


Spis treści

  1. Wprowadzenie
  2. Porównanie tekstowych i graficznych języków programowania
  3. Pomiary w czasie rzeczywistym.
    1. Pomiar opóżnień związanych z równoległą pracą kilku programów
    2. Pomiar zależności B(H) dla materiałów ferromagnetycznych z wykorzystaniem zewnętrznego procesora
    3. Wykorzystanie LabView do sterowania mikroskopem sił magnetycznych
    4. Zdalne sterowanie komputerem.
  4. Podsumowanie.
  5. Podziękowania

Wprowadzenie

Współczesny eksperyment fizyczny wykonywany jest najczęściej przy komputerowym wspomaganiu. Dotyczy to zarówno eksperymentów wykonywanych w pracowniach naukowych jak i w laboratoriach studenckich czy nawet szkolnych. Podczas eksperymentu komputer może pełnić dwie główne funkcje: urządzenia do akwizycji danych pomiarowych i/albo sterować pomiarową aparaturą. Te dwa procesy odbywają się w czasie rzeczywistym, stąd mamy określone wymagania do komputera i wykorzystywanego oprogramowania pod względem prędkości. Aparatura pomiarowa może być podłączana bezpośrednią do komputera, sterującego eksperymentem, lub, w dużej odległości od niego. Dobrym przykładem jest sterowanie urządzeń w kosmosie - jak w przypadku teleskopu Hubble’a [], gdzie całe urządzenie pomiarowe znajduje się na orbicie ziemskiej daleko od centrum sterowania. Ten przypadek zdalnego sterowania przez komputer nabiera coraz większej wagi w miarę rozwoju globalnych sieci komputerowych takich jak INTERNET.

Istotna jest szybkość działania programu oraz czas który trzeba poświęcić na oprogramowanie eksperymentu. Te warunki są sprzeczne, bo jak wiadomo najszybszymi są programy napisane w języku asemblera konkretnego procesora (co wymaga dużych nakładów czasowych), a najszybciej się piszą programy w językach wysokiego poziomy, wykorzystujące specjalistyczne biblioteki i funkcje zaawansowanych systemów operacyjnych (z definicji programy te wykonywane są wolniej niż asemblerowe). Ten dylemat jest postawą występowania bardzo szerokiej oferty na rynku oprogramowania.

W pracy przedstawiono przykłady wykorzystania języka wysokiego poziomu (LABVIEW, firma National Instruments) dla programowania eksperymentów fizycznych na różnych poziomach - od pracowni studenckiej do pracowni naukowej.

2. Porównanie tekstowych i graficznych języków programowania

Tradycyjne języki programowania opierają się na tekście programów zawartych w plikach tekstowych. W tym przypadku człowiek jest wspomagany przez edytory tekstu, które oprócz standardowej funkcji mogą posiadać dodatkowe możliwości, ułatwiające napisanie programu, np. sprawdzanie składni konkretnego języka, zaznaczenie na kolorowo słów kluczowych itp. W wielu przypadkach język programowania występuje w postaci zintegrowanego środowiska, łączącego edytor, kompilator, linker i debugger. Jednym przyciskiem klawiszy możemy od razu po napisaniu tekstu programu wywołać go (oczywiście w przypadku bezbłędnego jego napisania). Wykonując program krok po kroku można śledzić jego przebieg, starać się usunąć ewentualne błędy kontrolując pośrednie wartości zmiennych. Gorzej jest z napisaniem dużych programów, wykorzystujących szerokie możliwości sprzętowe i programowe współczesnych komputerów (np. grafikę, dźwięk, wielozadaniowość). Wtedy program rozrasta się od jednego pliku do projektu zawierającego zbiór plików z powiązaniami do różnych bibliotek. W takim przypadku poprawny plik programu może zawierać błędy logiczne lub błędy związane z niepoprawnym wykorzystaniem funkcji bibliotecznych lub przekazywania danych. W sumie czas umiejscawiania i usuwania usterek może znacznie przekraczać czas napisania programu jako systemu plików tekstowych (Rys. 1).

  Rys. 1. Etapy programowania w językach tekstowych.

Rozwój technik komputerowych daje nam możliwość korzystania co raz z większych zasobów sprzętowych. W wyniku tego rozwoju (i znacznego spadku ceny sprzętu) powstali bardzo popularne graficzne systemy operacyjne, służące jako platformy dla programów aplikacyjnych. Środowisko graficzne, bardziej intuicyjne dla przeciętnego człowieka, potrzebuje znacznych zasobów sprzętowych komputera. Duża ilość parametrów jest ustalana domyślnie, a użycie myszy w interfejsie graficznym zwiększa wydajność pracy, zmniejsza czas uczenia. Te zmiany dotyczą i języków programowania.

Graficzny język programowania jest podobny do rysowania schematów elektronicznych. Poszczególne funkcje są przedstawione w postaci elementów funkcyjnych (prostokąty). Ilość i typ pinów wejścia/wyjścia, odpowiada ilości i typowi otrzymywanych/przesyłanych danych. Elementy te łączone są pomiędzy sobą w programie (schemacie) “przewodami”; których kolor odpowiada typowi przekazywanych danych, a grubość - wymiarowi przekazywanej tablicy. Bezpośrednią pomiędzy sobą można łączyć tylko piny tego samego typu. Są pewne elementy, które dopuszczają polimorfizm, tzn że np. ten sam element może być użyty zarówno do dodawania liczb całkowitych, jak i liczb rzeczywistych. Wykonywanie programu odpowiada przepływowi strumienia danych; funkcja jest wykonywana jak tylko ona posiada wszystkie niezbędne argumenty. Prócz tego istnieje możliwość ręcznego ustawienia warunków synchronizacji poszczególnych części w programie.

Programowanie graficzne istotnie zmienia sposób pisania programów dla urządzeń pomiarowych. Przede wszystkim chodzi tu o prędkość napisania poprawnie działającego programu. Algorytm napisania programu w języku graficznym wygląda następującą (Rys. 2).
 



Rys. 2. Etapy programowania w języku graficznym

Obecnie głównymi producentami graficznych języków programowania dla sterowania eksperymentem fizycznym są: (i) Hewlett Packard - program HPVEE i (ii) National Instruments - program LabView. Według szacowań, przeprowadzonych w roku 1998, przez czasopismo “Personal Engineering & Instrumentation News”, najczęściej wykorzystywany do programowania układów obsługujących akwizycje i analizę danych był program LabView (Rys. 3) [].Komercyjnie sprzedawany LabView jest dostępny na sześciu platformach (Win16, Win32, Mac, HP-UX, Sun, Concurrent PowerMAX), posiada możliwości do akwizycji , analizy i prezentacji danych, posiada dużą bibliotekę sterowników różnego typu zewnętrznych urządzeń pomiarowych wraz z przykładami, podtrzymuje wszystkie karty pomiarowe produkowane przez National Instruments i większość popularnych urządzeń pomiarowych. Jest to program ciągle rozwijany i udoskonalany.
 
 

a) 

b) 

Rys. 3. Częstość użycia programów do budowania: a) systemów pomiarowych; b) systemów akwizycji/analizy danych.
 

Zgodnie z koncepcją National Instruments, program ten jest wirtualnym instrumentem (skąd pochodzi rozszerzenie roboczych plików *.vi), wykonującym odpowiednie funkcje. Każdy program w LabView składa się z dwóch części, umieszczonych w jednym pliku: (i) panelu programu (urządzenia), który jest widoczny na ekranie komputera podczas pracy; (ii) schematu (diagram) programu, składający się z poszczególnych funkcji i połączeń, wykorzystanych w danym programie.

Niżej są przedstawione różne przykłady stosowania LabView dla sterowania eksperymentem fizycznym.

3. Pomiary w czasie rzeczywistym.

Eksperymenty fizyczne mogą istotnie różnić skalą czasową, ale w każdym przypadku oni odbywają się w czasie rzeczywistym. Podstawą każdego pomiaru/sterowania w czasie rzeczywistym jest równomierne, bez niekontrolowanych zatrzymań, akwizycja, analiza i przekazywanie danych do zewnętrznych urządzeń. W PC prócz procesora znajduje się jeszcze wiele urządzeń, które są aktywne podczas pracy: twardy dysk, klawiatura, myszka, itp.; w pamięci operacyjnej może działać równolegle kilka programów. Sterowanie pracą tych wewnętrznych urządzeń i programów opiera się na wykorzystywaniu sprzętowych i programowych przerwań. Procesor w czasie wykonywania swoje pracy jest przerywany (np. klawiaturą - po naciśnięciu klawisza) i wykonuje czynności, niezbędne dla obsługi konkretnego przerwania (np. odczytanie symbolu naciśniętego klawisza z bufora klawiatury). Zabronienie przerwań na dłuższy okres jest niemożliwe bo powoduje zakłócenia w normalnej prace systemu operacyjnego, a w wyniku tego i komputera. Powstaje pytanie: W jakich przypadkach można używać PC dla pomiarów w czasie rzeczywistym?

3.1 Pomiar opóźnień, związanych z równoległą pracą kilku programów.

Współczesne procesory Pentium II,III i Celeron w odróżnieniu od swoich poprzedników mają wbudowany wewnętrzny zegar, który mierzy czas od momentu włączenia komputera na częstotliwości pracy zegara procesora (np dla P-II 266 MHz - w ciągu 1 sekundy licznik rejestruje 266 milionów kwantów czasu). Dla rejestracji czasu jest wykorzystywany 64-bitowy rejestr którego zawartość można odczytać używając specjalnej instrukcji asemblera 0F31h. Tym samym uzyskujemy czas rzeczywisty z dokładnością do 1 kwantu. Dla sprawdzenia równomierności pomiarów wykonywanych przez PC sterowanego systemem operacyjnym Windows-95 wykonamy wielokrotny pomiar czasu trwania instrukcji oczekiwania w zależności od obciążenia komputera. Program ten jest napisany w LabView i z dołączeniem asemblera. Algorytm jego pracy jest następujący.

Najpierw w języku C i asemblerze jest napisana funkcja get_pentium_time(), odczytująca czas z licznika procesora:
 
 

//plik time_pen.c
#include <windows.h>
typedef struct {
    DWORD utime_low;
    DWORD utime_high;
    } TD1;
void FAR _export get_pentium_time(TD1 *var1)
{
    DWORD u_high, u_low;
    asm {
        .586
        // int 3
        db 0xF, 0x31
        mov u_high,eax
        mov u_low, edx
    }
    (*var1).utime_low=u_low;
    (*var1).utime_high=u_high;
}
Ta funkcja jest kompilowana do biblioteki time_pen.dll i następnie jest wykorzystywana przez funkcje LabView get_pentium_time.vi, diagram której jest przedstawiony na Rys. 4a-d.
 
 

a) 

b) 

c) 

d) 

Rys. 4a-d. Diagram funkcji LabView get_pentium_time.vi

Funkcja get_pentium_time.vi działa następującą. Najpierw deklaruje się klaster, składający się z dwóch 32-bitowych liczb całych bez znaku. W zerowej klatce sekwencji adres tej struktury jest przekazywany do importowanej z time_pen.dll funkcji get_pentium_time(), i w tym momencie uzyskujemy stan 64-bitiwego licznika zegara procesora do zmiennych A_high i A_low. Pierwsza klatka sekwencji zawiera procedurę, czas trwania której my mierzymy, w tym przypadku to zatrzymanie na czas, ustawiany przez zmienną Delay. W drugiej klatce sekwencji znów odbywa się odczyt licznika zegara procesora do zmiennych B_high i B_low; a w trzeciej przy pomocy wzoru jest wyliczana różnica czasu i przekazywana na wyjście funkcji get_pentium_time.vi do zmiennej D. Rzeczywisty czas jest mierzony w kwantach zegara procesora.

Dla uzyskania informacji statystycznej i wizualizacji danych pomiarowych służy program PentiumDelayMeasurements.vi. Na Rys. 5 jest pokazany panel programu, na lewej części którego znajdują się klawisze do ustawienia: częstotliwości procesora (dla przeskalowania ilości kwantów czasu w milisekundy); czasu zatrzymania Delay; czasu zatrzymania pomiędzy kolejnymi pomiarami. Środkowa część zawiera panel oscyloskopu da wizualizacji przebiegu pomiaru w czasie rzeczywistym, dwa okienka dla wyświetlania średniej wartości i średniokwadratowego odchylenia; okna dla ustawienia parametrów prezentacji diagramu w prawej części panelu.
 
 

Rys. 5. Panel programu PentiumDelayMeasurements.vi zarejestrowany pod czas działania programu, przeszukiwającego pliki na dysku twardym.
 

Diagram programu PentiumDelayMeasurements.vi wygląda następującą (Rys. 6). Duży prostokąt to pętla WHILE - pomiar trwa aż do wyłączenia przycisku Run na panelu programu. Przed pierzą iteracją odbywa się inicjalizacja ciągu 50 liczb rzeczywistych (mały prostokąt po lewej stronie pętli WHILE). Ten ciąg jest przekazywany do instrukcji wyboru w prawej części pętli WHILE. W zależności od ustawienia przyciska Analysis na paneli programu analiza statystyczna danych może być włączona lub wyłączona. Akwizycja danych pomiarowych odbywa się w pętli FOR (duży prostokąt w lewej części pętli WHILE). W ciągu działania cyklu FOR uzyskujemy 10 wartości, które po przeskalowaniu w postaci ciągu są przekazywane do instrukcji wyboru. Wewnątrz tej pętli FOR działa funkcja dla prezentacji wyników pomiaru w czasie rzeczywistym. Jeżeli przycisk Analysis na paneli programu jest wyłączony, to aktywne jest okienko instrukcji wyboru oznaczone jako False. Wtedy cała analiza statystyczna jest wyłączona. W przypadku włączonego przycisku Analisys (aktywne jest dolne okienko instrukcji wyboru oznaczone jako True) dane pomiarowe równolegle trafiają do bibliotecznych funkcji Undate statistics.vi i histogram+.vi. W wyniku działania funkcji Update statistics.vi są wyliczane średnia wartość Mean i średniokwadratowe odchylenie Standart deviation pokazywane na panelu programu. Po obliczeniu w funkcji histogram+.vi dane są przekazywane do funkcji Array To Bar Graph.vi, budującej histogram.
 
 


 
 

Rys. 6. Diagram programu PentiumDelayMeasurements.vi.

Obciążenie procesora równoległymi zadaniami drastycznie zmienia wyniki pomiarów czasu zatrzymania. Wzorcowy czas zatrzymania był ustawiony na 10 msek. W przypadku, kiedy LabView był jedynym aktywnym programem, pracującym pod Windows95, to zmierzony rzeczywisty czas zatrzymania był tidle=12.04ą0.67 msek. Przy równoległej prace w tle programu, aktywnie przeszukiwającego pliki na twardym dysku, ten czas zmienił się na tHDD=20.32? 7.22 msek. Analizując wyniki można wnioskować, że dla PC, pracującego pod systemem operacyjnym Windows95, nie można uzyskać równomiernych w czasie pomiarów na poziomie mniejszym od 1 ms.

3.2 Pomiar zależności B(H) dla materiałów ferromagnetycznych z wykorzystaniem zewnętrznego procesora

Dla umożliwienia pomiarów w czasie rzeczywistym z równomiernością znaczne mniejszą od 1 ms była skonstruowana płyta pomiarowa na bazie 8-bitowego RISC procesora PIC17C756 (częstotliwość zegara 11 MHz) i połączona z PC poprzez port szeregowy na prędkości 57600 bodów. Procesor PIC17C756 posiada wewnętrzny 10-bitowy przetwornik ADC (czas przetwarzania ok. 40 mikrosekund, czas próbkowania ok. 20 mikrosekund), multipleksowany na 12 kanałów. Przy pomiarach praca procesora PIC17C756 nie jest zakłócana niekontrolowanymi zewnętrznymi przerwaniami i odbywa się z dokładnością do jednego kwantu zegara procesora; po uzyskaniu danych PIC17C756 przekazuje je (niekoniecznie równomiernie) do PC i czeka na następną instrukcje. Zestaw ten jest wykorzystywany w studenckim Laboratorium Komputerowym na przykład dla pomiarów B(H).

Pomiar zależności B(H) dla materiałów ferromagnetycznych jest wykonywany z wykorzystaniem prostego układu, składającego się z dwóch cewek: (i) magnesującej - dla wytworzenia sinusoidalne zmiennego zewnętrznego pola magnetycznego i (ii) detekcyjnej - dla pomiaru zmiany indukcji magnetycznej dB/dt próbki. Na Rys. 7 jest pokazany elektryczny schemat urządzenia pomiarowego. Cewka magnesująca LM po przez transformator T2 jest zasilana od sieci (f=50Hz). Natężenie pola magnetycznego H jest wprost proporcjonalne do prądu I1 płynącego po przez opornik R1. Napięcie na cewce detekcyjnej LD jest wprost proporcjonalne do pierwszej różniczki dB/dt. Wykonując jednocześnie pomiary H (napięcie na oporniku R1) i dB/dt (napięcie na cewce detekcyjnej) można otrzymać zależność dB/dt od H, a po całkowaniu - B(H). W ciągu tego eksperymentu układ pomiarowy powinien być na tyle szybki żeby w ciągu jednego okresu zmian napięcia zasilania, (20 ms) zarejestrować około 100 par wartości H i dB/dt. Bezpośrednio na PC/Windows takiej dokładności nie da się uzyskać, i dla tego jest używana w/w specjalistyczna płyta pomiarowa.
 
 

Rys. 7. Elektryczny schemat urządzenia do pomiaru B(H).
 
 

Program sterujący współpracą PC z PIC17C756 był napisany w LabView 5.0. Na Rys. 8 jest pokazany panel programu i sam program (Rys. 9). W ciągu pracy na panelu są wyświetlane trzy wykresy: zależność H(t), dB/dt(H) i B(H). Prócz tego wyświetlana jest informacja o ilości bajtów przekazanych od PIC17C756 i przekazana tabela danych. Podczas pomiaru błyska czerwona lampka. Domyślnie pomiar odbywa się co 1.5 sekundy. Ze schematu widać, że program składa się z następujących części: odpowiednia inicjalizacja portu szeregowego, następnie jest wykonywana pętla WHILE aż do odwołania poprzez przycisk ON/OFF. W ciągu pracy tej pętli występuję 5 klatek sekwencji: 1 - przekazanie polecenia do PIC17C756; 2- zapala się czerwona lampka; 3 - zatrzymanie na czas akwizycji danych przez PIC17C756 ustawiany na paneli sterowania (domyślnie 1.5 sekundy); 4 - gaśnie lampka; 5 - odbywa się odczyt danych z portu szeregowego, przekształcenie ich w kolumny, całkowanie kolumny z dB/dt i rysowanie wykresów na panelu.
 
 

Rys. 8. Panel programu do pomiaru zależności B(H).


 
 

Rys. 9. Diagram programu do pomiaru zależności B(H). Wymiary klatek sekwencji 0,1,2,3 zmniejszone dla czytelności.

3.3 Wykorzystanie LabView do sterowania mikroskopem sił magnetycznych

Mikroskop sił atomowych (AFM) służy dla wizualizacji powierzchni materiałów. Zasada jego działania opiera się na utrzymywaniu stałej siły (~1 nN) pomiędzy wierzchołkiem cienkiej dźwigni (promień zaokrąglenia rzędu 10 nanometrów) i powierzchnią próbki. W czasie pracy przy pomocy silników piezoelektrycznych próbka jest skanowana w płaszczyźnie XY względem sondy, system sterowania jest włączony i regulując napięcie na silniku Z stara się podtrzymać stałą wartość siły oddziaływania na ustalonym poziomie. Rejestrując napięcie na silniku Z jako funkcje położenia X,Y uzyskujemy kształt badanej powierzchni.

Mikroskop sił magnetycznych (MFM) służy dla wizualizacji rozkładu pól magnetycznych przy powierzchni próbki z rozdzielczością poprzeczną mniejszą od 1 mikrometra. Sonda z magnetycznym wierzchołkiem przesuwa się w płaszczyźnie XY nad powierzchnią próbki (optymalna odległości próbka-sonda - około 50 nm) powtarzając jej kształt. Mierzona jest siła oddziaływania próbki na sondę.

Mikroskopy skaningowe są przykładem urządzeń ściśle współpracujących z komputerem. Na pierwszych mikroskopach skaningowych przy niewielkiej ilości linii skanowania [] jeszcze udawało się zarejestrować obraz powierzchni przy pomocy rejestratora, ale w miarę szybkiego rozwoju tej techniki, wzrostu ilości przekazywanej informacji, zmniejszenia czasu próbkowania, komplikacji algorytmów pomiaru stało się koniecznym użycie komputera. Przy większych polach skanowania (>10 mkm) prędkość skanowania jest definiowana procesem oddziaływania sonda-powierzchnia, a nie prędkością przekazywania danych i szybkość działania PC/Windows/LabView jest wystarczająca, żeby nie stosować specjalistycznego procesora do sterowania mikroskopem.

W dostępnym modzie pracy naszego mikroskopu AFM METRIS-2000 firmy Burleigh, możliwa była rejestracja siły oddzialywania sonda-powierznia tylko przy stałej wartości Z. Pomiar rozkładu pól magnetycznych był niemożliwy ze względu na nierówności i nachylenie powierzchni badanej próbki do płaszczyzny skanowania. Sprzętowo zmiana AFM na MFM polegała (Rys. 10), w naszym przypadku, na: (i) zastosowaniu dodatkowej karty pomiarowej (PCL-812), posiadającej przetwornik cyfra-analog DAC_Z dla kompensacji nierówności/nachylenia próbki (przetwornik dodawał odpowiednie napięcie na przesuwie Z) i wyjście cyfrowe DO_7 dla włączenia/wyłączenia sprzężenia zwrotnego; (ii) zainstalowania magnetycznej sondy.
 
 

Rys. 10. Schemat blokowy AFM/MFM mikroskopu.
 
 

Istniejące standardowe oprogramowanie AFM METRIS-2000 jest zamknięte i nie nadaje się do przeróbki dla pomiarów MFM. Dla szybkiego oprogramowania algorytmu MFM był wykorzystany Labview. Zgodnie z zasadami pomiaru zrealizowany algorytm MFM składa się z dwóch części: (i) rejestracji kształtu powierzchni z wykorzystaniem klasycznego modu AFM; (ii) pomiaru MFM z korektą odległości próbka-sonda w każdym punkcie przy wykorzystaniu informacji z poprzedniego (i) pomiaru AFM.
 
 

Rys. 11. Panel programu dla sterowania MFM po zarejestrowaniu struktury AFM/MFM testowej próbki CAMST-2 [].
 
 

Panel programu (Rys. 11) wygląda następująco. Lewa części panelu służy dla prezentacji danych pod czas pomiaru AFM: w oknie Surface image jest budowany monochromatyczny obraz powierzchni próbki. Środkowa część panelu służy dla graficznej prezentacji danych pomiarowych MFM: na górnym wykresie DAC_Z jest wyświetlane napięcie podawane na DAC_Z, niżej na Force scan line - pojedyncza linia skanowania siły oddziaływania sonda-powierzchnia i na Force image monochromatyczny dwuwymiarowy obrazek MFM. Reszta przycisków służy dla ustawiania parametrów eksperymentu (wzmocnienie, ilość linii skanowania, prędkość itp.). Diagram tego programu jest zbyt skomplikowany żeby jego opisywatić w niniejszym artykule.

W wyniku uzyskano zadowalające obrazy przestrzennych rozkładu magnetyzacji w testowych próbkach [].

3.4 Zdalne sterowanie komputerem.

Problem zdalnego sterowania eksperymentem sprowadza się najczęściej do współpracy dwóch komputerów: klienta, na którym pracuje eksperymentator, i serwera, obsługującego zestaw pomiarowy. Połączenie komputerów nie daje możliwości klientowi bezpośredniego dostępu (zapisywania/odczytywania) do portów serwera. Przyczyna tego kryje się w niekontrolowanych opóźnieniach, które mogą ewentualnie zaistnieć przy zdalnej komunikacji. Operacje zapisywania/odczytywania z portów powinny być ściśle zsynchronizowane. Rozwiązanie takiego problemu polega na zainstalowaniu na serwerze programu, serwującego nie oddzielne polecenia niskiego poziomu, a większe funkcje współpracy z urządzeniami, podłączonymi do tego komputera, które już nie są krytyczne do opóźnień czasowych.

Połączenie klient-serwer realizowane jest zazwyczaj poprzez wykorzystanie typowej sieci komputerowej (np Ethernet) i standardowych protokołów przesyłania danych (np.TCP/IP). Na tej bazie powstało wiele programów serwujących zdalny dostęp do urządzeń, także poprzez Internet z wykorzystaniem języka HTML. Tak istnieje szereg ogólnie dostępnych układów pomiarowych, np. układ do badań ciekłych kryształów na Uniwersytecie w Kent [].
 
 

Rys. 12. Zdalne sterowanie komputerem. Schemat doświadczenia.
 
 

Dla demonstracji możliwości zdalnego sterowania pomiarami przez INTERNET w okresie odbywania się Zjazdu uruchomiono w Białymstoku serwer obsługujący układ pomiarowy do badania struktury domenowej i procesów magnesowania w cienkiej magnetycznej warstwie granatu []. Schemat układu jest pokazany na Rys. 12.
 
 

a) b)

Rys. 13. a) Obrazek struktury domenowej; b) Zewnętrzny widok zestawu doświadczalnego.
 

Rys. 14. Widok paneli programu na WWW-przeglądarce użytkownika. Dane pomiarowe namagnesowania próbki granatu.
 
 

Komputer-serwer pracował wykorzystując program serwujący HTTP firmy National Instruments uruchamiany jako część środowiska LabView. Serwer ten umożliwia nie tylko serwowanie dokumentów w języku HTML, ale także uruchamianie skryptów CGI, napisanych w języku LabView. Współpraca obu tych języków umożliwia przekazywanie poprzez formularze HTTP parametrów do programów LabView dzięki czemu dowolny użytkownik przy pomocy zwykłej przeglądarki WWW mógł: (i) ustawić natężenie stałego pola magnetycznego H przyłożonego do próbki, lub przyłożyć do próbki zmienne (piłokształtne) pole H o ustalanych parametrach zmian; (ii) zarejestrować obraz magnetycznej struktury domenowej przy wykorzystaniu kamery CCD(Rys. 13a); (iii) zarejestrować krzywą magnesowania z wykorzystaniem detektora światła; (iv) “podglądnąć on line" układ pomiarowy dodatkową kamerą (Rys. 13b). Skrypt CGI-LabView zwraca wygenerowaną stronę HTTP, która poza danymi uzyskanymi w pomiarze może zawierać panele programów LabView w postaci dołączonych plików graficznych (Rys. 14). Opisany sposób komunikacji serwer-klient przedstawia schematycznie Rys.. 15.
 

Rys.. 15. Wymiana danych klient-serwer
 



Rys.. 16. Diagram części skryptu CGI, napisanego w języku LabView.
 
 

Jako przykład programu umożliwiającego tego typu sterowanie rozpatrzmy część skryptu CGI napisaneo w LabView (Rys.. 16). Program ten wykonuje się jako część skryptu CGI o nazwie "Nazwa.vi" i generuje fragment dokumentu HTML, odpowiedzialną za pola formularza, dotyczące zapytań o częstotliwość generowanego przez zasilacz sygnału - zmienna "x" i liczbę sumowań -"y". Oprócz tego tworzone są przyciski "Wykonaj" i "Wyczyść", odpowiadające poleceniom "submit form" i "reset form". Generowany kod w HTML-u jest dołączany do końca zmiennej "HTML in" zawierającej źródła dokumentu, tworzone przez inne części programu LabView, i jako całość jest wysyłany dalej. Do kontroli tej części jest używana także zmienna typu True/False, która decyduje o formie generowanego dokumentu, w tym przypadku, dla FALSE generowany jest oprócz wyżej opisanego kodu także część, zawiadamiająca użytkownika strony o tym ile razy strona została odwiedzona (licznik uruchomień). Zmienna "array in" przekazuje do programu wiadomość o wszystkich zmiennych - "kluczach" używanych w skrypcie CGI.

Więcej informacji można otrzymać bezpośrednio ze strony eksperymentu:

http://physics.uwb.edu.pl/zfmag/strona/doswiadczenie_internetowe.htm

4. Podsumowanie.

Graficzne języki programowania znacznie zmniejszają czas napisania programu, umiejscawiania i usuwania usterek. Program (schemat) jest bardziej czytelny, łatwej do niego wnosić zmiany nawet po długim czasie od momentu napisania. Użytkownik ma możliwość dopisania własnych funkcji w językach tekstowych, które umożliwiają obsługę niestandardowych urządzeń, czasochłonne obliczenia, niestandardowe metody numeryczne i dołączyć je do głównego programu. Przy potrzebie pomiarów w czasie rzeczywistym na poziomie 1 milisekundy w środowisku Windows zalecane jest używanie specjalistycznych urządzeń pomiarowych, sterowanych własnym procesorem.

5. Podziękowania

Prace były częściowo finansowo wspomagane przez KBN (mikroskopia MFM) i Fundacji Polsko-Niemieckiej (zestawy Regionalnego Laboratorium Komputerowego).

Dziękujemy profesorowi Reinerowi Lincke z Uniwersytetu w Kilonii za zapoznanie jednego z nas (WD) ze swoimi rozwiązaniami komputerowo wspomaganych eksperymentów oraz za inspirację budowy w Białymstoku mikroprocesorowego interfejsu  i wykorzystania programu LabView w studenckim laboratorium