VEE PRO - dobry opis programu - Robert Piskorz.doc

(629 KB) Pobierz
1

Robert Piskorz, VII semestr, ISP, zaoczne

 

 

 

 

Ćwiczenie 1: Obsługa aparatury pomiarowej z wykorzystaniem standardu SCPI oraz zintegrowanego środowiska programistycznego VEE PRO

Pytanie 1: Cechy środowiska VEE Pro.

 

 

 

1. CHARAKTERYSTYKA OGÓLNA HP VEE.

 

HP VEE jest profesjonalnym środowiskiem projektowania oprogramowania systemów pomiarowych. Umożliwia zrealizowanie :

·         Sterowania przyrządów (ustawiania ich zasobów funkcjonalnych);

·         Pomiarów (inicjalizacji, nadzoru, wykrycia ich wykonania);

·         Akwizycji (zebranie danych pomiarowych, także zapamiętanie na stałych nośnikach);

·         Przetwarzania zebranych danych (od prostych operacji matematycznych do cyfrowego przetwarzania sygnałów);

·         Prezentacji wyników w postaci tekstowej i graficznej (wyświetlacze tekstowe i wykresy);

·         Generacji raportów z wyników badań;

·         Graficznego interfejsu użytkownika.

 

Cechą charakterystyczną tego środowiska jest odejście od tradycyjnego programowania tekstowego (środowiska Borlanda i MS do projektowania w języku C lub C++) na rzecz projektowania graficznego. Składnikiem podstawowym zapisu programu nie jest instrukcja lecz ikona obiektu wykonującego określone operacje na swoich danych wejściowych. Z kolei sekwencja wykonywania instrukcji jest zastąpiona przepływem danych pomiędzy obiektami programu projektowanym za pomocą linii łączących wyjścia i wejścia obiektów.

 

Graficzną formę zapisu programu tworzy się podobnie do schematu blokowego urządzenia, przedstawiając jego elementy funkcjonalne oraz drogi przepływu danych oraz informacji sterujących. Po wybraniu właściwej koncepcji rozwiązania projektowanego urządzenia skonstruowanie jego schematu blokowego nie stanowi większego problemu. Podobnie jest w przypadku graficznego zapisu programu tym bardziej,  gdy dysponuje się zestawem obiektów o dużych możliwościach funkcjonalnych i odpowiedniej uniwersalności. To z kolei można łatwo osiągnąć w dedykowanych środowiskach projektowych. W rezultacie końcowym, graficzne środowisko projektowania aplikacji pomiarowej zapewnia duże ułatwienia w projektowaniu profesjonalnych aplikacji oraz znakomicie przyspiesza uzyskanie końcowego produktu przy zminimalizowaniu trudności projektowych.

 

HP VEE pozwala wyposażyć projektowaną aplikację w graficzny interfejs użytkownika zawierający elementy interakcyjnej współpracy operatora z aplikacją. Do tego celu środowisko oferuje bogaty zestaw różnego rodzaju nastawników, wskaźników i wyświetlaczy. Istnieje też możliwość wykorzystania technologii ActiveX i w ten sposób integrowania projektowanej aplikacji z innymi komercyjnymi produktami, takimi jak np. Microsoft Excel, Word itp. Wbudowane mechanizmy wykorzystania zewnętrznych bibliotek dynamicznych pozwalają budować hybrydowe aplikacje, których część jest kreowana za pomocą tradycyjnych środowisk projektowych, np. w C, C++ lub Pascal.

 

Zaprojektowana aplikacja może być wykonywana poza środowiskiem projektowo-uruchomieniowym przy zastosowaniu tzw. ”runtime’u” wchodzącego w skład pakietu HP VEE (program veerun.exe; polecenie wykonania: ”veerun [option] aplikacja.vee”).

 

HP VEE jest dostępne dla większości popularnych systemów operacyjnych, między innymi dla wszystkich wersji systemu Windows, systemu Windows NT, Linux, Unix oraz Sun.

 

2. PODSTAWOWY SKŁADNIK PROGRAMU HP VEE – OBIEKT VEE.

 

Podstawowymi składnikami programu są obiekty VEE prezentowane w postaci prostokątów z odpowiednim opisem charakteryzującym dany obiekt. Utworzony obiekt przyjmuje nazwę domyślną, ale można ją zmienić wprowadzając dowolny opis charakteryzujący precyzyjniej rolę obiektu.  Zadaniem obiektu jest wykonanie określonych operacji na danych wejściowych obiektu oraz ich dostarczenie na wyjście danych. Obraz graficzny obiektu posiada dwa przyciski : lewy-górny rozwija menu obiektu; prawy-górny minimalizuje obraz obiektu. Menu obiektu zawiera szereg operacji ułatwiających edycję programu (Clone-powielenie obiektu, Cut-usunięcie) oraz konfigurowanie obiektu (dodawanie i usuwanie końcówek oraz określanie dodatkowych cech obiektu – Properties). W zakresie cech ogólnych programista może określić opis obiektu, uaktywnić opcję prezentacji pełnego opisu końcówek, określić zachowanie obiektu odnośnie momentu jego inicjalizacji oraz sposobu działania, np. uaktywnienie opcji Wait for Input dla obiektu nastawczego powoduje, że dane wyjściowe pojawią się dopiero po akcji ponownego ustawienia nastawnika (rys.1). Zakres edytowanych własności zależy od rodzaju obiektu.

 

rys.1. Plansza konfigurowania ogólnych własności obiektu.

 

Konfigurowanie obiektu obejmuje także wprowadzanie dodatkowych wejść i wyjść (rys.2). Obiekty dysponują czterema rodzajami końcówek :

·         Wejścia i wyjścia danych (najczęściej po jednej);

·         Wejście i wyjście sekwencyjne (zawsze po jednym; niektóre obiekty nie mają wyjścia);

·         Wejścia sterujące;

·         Wyjście błędu.

 

rys.2. Menu obiektu – konfigurowanie dodatkowych wejść i wyjść.

 

Domyślnie obiekt posiada wejścia i wyjścia sekwencyjne oraz najczęściej jedno wejście i wyjście danych (rys.3). Obiekty generacyjne nie mają wejść danych. Pozostałe końcówki nie są uaktywnione i dopiero poprzez menu obiektu użytkownik może je dodać. Podobnie można dodać dodatkowe wejścia dla danych a także w odniesieniu do szeregu obiektów dodatkowe wyjścia danych.

 

rys.3. Standardowe wejścia i wyjścia obiektu.

 

Końcówki danych służą do obsługi zasadniczych danych przetwarzanych przez program. Z kolei końcówki sekwencyjne można wykorzystać do ustalenia kolejności działania obiektów. Wejście sekwencyjne wyznacza dodatkowo moment aktywizacji obiektu, natomiast wyjście moment zakończenia jego działania. Wejścia danych oraz wejście sekwencyjne obiektu synchronizują działanie obiektów, tzn. obiekt wykona swoje specyficzne operacje na danych wówczas, gdy otrzyma wszystkie dane wejściowe oraz pobudzenie na wejście sekwencyjne. Dodatkowo obiekt może dysponować wejściami asynchronicznymi, sterującymi. Dana na takim wejściu powoduje pewną akcję obiektu, ale bez inicjowania jego działań zasadniczych. Obiekt wykonuje poleconą operację natychmiast po otrzymaniu danej sterującej. Lista możliwych wejść sterujących zależy od rodzaju obiektu i najczęściej jest to Clear (zerowanie np. wyświetlacza lub wykresu), Autoscale (autoskalowanie wykresu), Default Value (ustalenie domyślnej wartości nastawy obiektu, np. w przypadku obiektów nastawczych) itd.

 

rys.4. Przykłady obiektów z dodanymi wejściami sterującymi (kolor szary).

 

Każdy obiekt dysponuje też wyjściem błędu, które w przypadku wystąpienia błędu działania obiektu dostarcza danych opisujących go. Wyjścia danych i wyjście błędu działają wykluczająco, tzn. jeśli nie ma błędu dane wyjściowe są obecne na wyjściach a wyjście błędu jest puste i odwrotnie, gdy błąd wystąpi. Domyślnie wyjście błędu nie jest włączone i w takim przypadku wystąpienie błędu spowoduje przerwanie działania programu z wyświetleniem planszy informującej o powodach błędu.  Uaktywnienie wyjścia błędu wyłącza automatyczne przerywanie działania programu , ale zakłada się wtedy, że aplikacja ma wbudowaną własną obsługę błędów.

 

rys.5. Obiekty z unikalnym wejściem XEQ oraz dodanym wyjściem błędu.

 

Dwa obiekty Collector oraz Sample&Hold wykorzystują dodatkowy rodzaj wejścia asynchronicznego XEQ, za pomocą którego można wymusić natychmiastowe działanie obiektu nawet, gdy wejścia danych są puste. Wejście to musi być podłączone, podobnie jak wejścia danych.

 

3. TYPY ZMIENNYCH PROGRAMU HP VEE.

 

HP VEE używa 14 typów danych przy czym 3 z nich są używane wyłącznie w przyrządowych transakcjach I/O. Jedenaście z nich może znaleźć zastosowanie w ogólnych operacjach VEE, tzn. każdy kontener danych przesyłany między obiektami VEE może zawierać dane jednego z tych typów :

  1. Całkowite 32-bitowe (Int32);
  2. Rzeczywiste 64-bitowe (Real64, około 16 cyfr znaczących w zapisie dziesiętnym);
  3. Zespolone w reprezentacji moduł-kąt (Pcomplex) w postaci (mag, @phase). Kąt jest podawany w ustawionych dla środowiska jednostkach: stopniach lub radianach. Oba składniki są typu rzeczywistego.
  4. Zespolone w reprezentacji kartezjańskiej (Complex) w postaci (real, imag). Oba składniki są typu rzeczywistego.
  5. Kształt sygnału (Waveform). Zespół danych, który zawiera kolejne, równomiernie rozłożone w określonym przedziale czasowym wartości rzeczywiste reprezentujące kształt sygnału w domenie czasowej. Dane muszą tworzyć tablicę jednowymiarową (Array 1D).
  6. Widmo sygnału (Spectrum). Zespół danych, który zawiera wartości zespolone Pcomplex prążków częstotliwościowych oraz wartości zakresu częstotliwościowego zespołu danych. Rozłożenie prążków może być liniowe lub logarytmiczne. Dane muszą tworzyć tablicę jednowymiarową.
  7. Współrzędne (Coord). Zespół danych określających współrzędne punktu w przestrzeni wielowymiarowej ( dwu-, trójwymiarowej itd.) w postaci (x, y, ...). Każdy składnik jest typu rzeczywistego. Dana musi być skalarem lub tablicą jednowymiarową.
  8. Enumeryczne (Enum). Dana jest tekstem stringowym z przypisaną porządkową wartością całkowitą. Dana enumeryczna musi być skalarem.
  9. Tekstowe (Text). Dana tekstowa jest stringiem złożonym ze znaków alfanumerycznych.
  10. Rekord (Record) jest typem złożonym z pól. Każde pole ma swoją nazwę oraz kontener, który może być dowolnego typu (także rekordem) i być skalarem lub tablicą.
  11. Obiekt (Object) jest zmienną obiektową używaną dla kontrolek i obiektów ActiveX. Dane typu obiektowego mogą być przekazywane do lub z UserObject oraz UserFunction.

 

HP VEE traktuje zawsze dane całkowite jako dane 32-bitowe oraz dane rzeczywiste jako 64-bitowe. Urządzenia pomiarowe często wykorzystują 8-bitowe lub 16-bitowe dane całkowite oraz 32-bitowe dane rzeczywiste. Z tego powodu HP VEE wspiera także te trzy typy danych, ale wyłącznie w odniesieniu do przyrządowych transakcji I/O :

  1. Byte – 8-bitowa dana całkowita;
  2. Int16 – 16-bitowa dana całkowita;
  3. Real32 – 32-bitowa dana rzeczywista.

 

Typ bajtowy (Byte) jest używany w transakcjach READ BINARY, WRITE BINARY oraz WRITE BYTE. Ostatnia transakcja jest często wykorzystywana do przesyłania do urządzeń specyficznych znaków ASCII, np. z grupy znaków sterujących NL, CR, TAB itp.

 

4. KONTENERY VEE, POLIMORFIZM OBIEKTÓW ORAZ KONWERSJE TYPÓW NA WEJŚCIACH DANYCH OBIEKTÓW VEE.

 

Kontener VEE jest wewnętrznym formatem danych i charakteryzuje się typem danych (text, real itp.) oraz wymiarem danych (pojedyncza dana - skalar lub wieloelementowa dana – tablica jedno- lub wielowymiarowa). Pojedyncza dana (skalar) może być typem złożonym, np. Complex, Record itp.

 

Kontener może zawierać pojedynczą daną lub tablicę z wieloma różnymi danymi tego samego typu. Niezależnie od tego tylko jeden kontener danych jest wysyłany z wyjścia danych, gdy obiekt zakończy działanie. Wejścia danych mogą przyjmować dowolne kontenery lub określonego typu. Decyduje o tym skonfigurowanie wejścia obiektu, które można wykonać na etapie projektowania aplikacji. Domyślnie wejścia obiektu są ustawione w opcji przyjmowania kontenera o dowolnym typie i wymiarze (Any).

 

Większość obiektów cechuje się polimorfizmem (wielopostaciowością). Ich wejścia mogą przyjmować dane różnego typu i o różnym wymiarze dostosowując jednocześnie swoje działanie do rodzaju otrzymanych aktualnie danych. Tak więc obiekt może akceptować nie tylko numeryczne wartości skalarne lecz także tablice danych numerycznych jedno lub wielowymiarowe. W tych warunkach funkcja otrzymując wartość skalarną dostarczy również wartość skalarną, ale ta sama funkcja może działać na wejściowych danych tablicowych dostarczając na wyjściu przetworzoną tablicę danych (rys.6).

 

rys.6. Polimorfizm funkcji matematycznej.

 

Polimorfizm dotyczy też szeregu operatorów. Przykładowo operacja sumowania realizowana przez obiekt formuły A+B (rys.7) dostarczy następujących rodzajów danych wyjściowych dla danych wejściowych typu liczbowego (real, int)  :

·         gdy A i B są skalarami – wynik jest też skalarem typu real;

·         gdy A jest skalarem a B tablicą jednowymiarową – wynik jest tablicą jednowymiarowa typu real, której elementy zostały zwiększone o A;

·         gdy A i B są tablicami o takich samych rozmiarach – wynik jest tablica jednowymiarowa, której elementy są sumą odpowiadających elementów tablic wejściowych.

 

rys.7. Polimorfizm funkcji sumowania.

 

W wypadku operacji dwuargumentowych występuje szereg ograniczeń. Np. dane skalarne typu Record muszą mieć taką samą budowę a tablice muszą mieć identyczne wymiary i rozmiary dla każdego wymiaru.

 

Polimorfizm obiektów VEE ułatwia projektowanie aplikacji, ale wymaga od projektanta zachowania ostrożności w pewnych sytuacjach, aby nie doprowadzić do nieoczekiwanych rezultatów. Np. w przykładzie z sumowaniem, jeśli na wejście A wprowadzi się tekst lub tablicę tekstową wówczas wynik będzie odpowiednio skalarem tekstowym lub tablicą tekstową, ponieważ wartość numeryczna z wejścia B zostanie automatycznie przetworzona do postaci tekstowej i rezultat będzie tekstem wynikającym z połączenia obu tekstów.

 

Jeśli tekst lub tablica tekstowa zawiera tekstowo prezentowane wartości numeryczne (np. wyniki pomiarów odczytane z przyrządu) a operacja miałaby dostarczyć wartości numerycznych (np. wyeliminować offset) to wynik byłby całkowicie nie do przyjęcia choć operacja zakończy się powodzeniem. Inna sytuacja wystąpi, jeśli na danych tekstowych uzyskanych z przyrządu trzeba wykonać obliczenia za pomocą pewnej funkcji matematycznej, np. przeliczyć je na decybele. Tym razem obiekt funkcji log10(x) zgłosi błąd, ponieważ  może pracować tylko na danych numerycznych. W obu przytoczonych przykładach należałoby dokonać jawnej konwersji danych tekstowych do danych numerycznych i na nich wykonać żądane obliczenia.

 

rys.8. Niejawna i jawna konwersja danych Text do Real.

 

Można też zrezygnować z jawnej konwersji realizowanej za pomocą odpowiedniej funkcji (From String lub asReal(x)) na rzecz specyficznego skonfigurowania wejścia obiektu – tutaj należy zadeklarować przyjmowanie danych typu Real (rys.9). Taka deklaracja nie oznacza ograniczenia typu przyjmowanych danych lecz wymusza ich konwersję do zadeklarowanego typu.

 

rys.9. Plansza konfigurowania własności wejścia obiektu.

 

Opcja ta jest bardzo wygodna, ponieważ obiekt dokona automatycznie konwersji typów danych wejściowych i wykona na nich żądane operacje. Wymiar danych nie podlega zmianie; tablica zostaje tablicą  ale typ danych może podlegać konwersji. Programista nie musi używać do tego celu osobnych funkcji (upraszcza się zapis programu), ale musi mieć świadomość rodzaju dostępnych konwersji, ponieważ nie wszystkie są możliwe do zrealizowania (tablica 1). Jeśli konwersja nie jest możliwa do wykonania obiekt zgłosi błąd wykonania.

 

 

Tablica 1. Dopuszczalne konwersje promocyjne i obniżające na wejściach danych.

Z \ Na

Int32

Real64

Complex

Pcomplex

Waveform

Spectrum

Coord

Enum

Text

Int32

x

tak

Tak[1]

Tak[1]

nie

nie

Tak[2]

nie

tak

Real64

(tak)[3]

x

Tak[1]

Tak[1]

nie

nie

Tak[2]

nie

...
Zgłoś jeśli naruszono regulamin