Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Rodzaje i budowa komunikatów
Ustalenia standardu IEEE488.2 oraz SCPI
2
Komunikacja kontroler - urządzenie:
Komunikacja pomiędzy kontrolerem i urządzeniem systemu opiera się na wymianie komunikatów poleceń i odpowiedzi (Program and Response Messages). Komunikaty poleceń są wysyłane przez kontroler i polecają wykonanie pewnej akcji przez urządzenie, które odebrało taki komunikat. Akcja może dotyczyć ustawienia pewnego zasobu funkcjonalnego urządzenia, wykonania pomiaru, zerowania urządzenia lub dostarczenia pewnych danych. Polecenia żądające dostarczenia danych przez urządzenie nazywają się zapytaniami (Queries). Polecenia dotyczące modyfikacji ustawień zasobów funkcjonalnych urządzenia lub wykonania przez nie pewnych operacji nazywają się komunikatami lub poleceniami programującymi (Commands). Komunikaty odpowiedzi (Response Messages) są wysyłane przez urządzenie w reakcji na otrzymane wcześniej zapytanie.
3
Rodzaje komunikatów urządzeniowych:
Komunikaty odbierane przez urządzenie (nadawane prze kontroler): Polecenia programujące Zapytania Komunikaty wysyłane przez urządzenie ( odbierane przez kontroler): Odpowiedzi Oba rodzaje komunikatów są komunikatami tekstowymi ( kodowanie w ASCII ). Postać tekstowa ułatwia programiście kreowanie poleceń a także ich czytanie i interpretację. Polecenia wysyłane przez kontroler są w dużej części tworzone bezpośrednio przez programistę i postać tekstowa poleceń znakomicie ułatwia ich kodowanie. Odpowiedzi urządzeń są tworzone przez urządzenie ale postać tekstowa ułatwia ich interpretację.
4
Budowa polecenia programującego:
Nagłówek – jest tekstem alfabetycznym, który wyraża przeznaczenie komunikatu. Określa zasób funkcjonalny urządzenia, który ma zostać ustawiony zgodnie z wartościami argumentów polecenia. Separator nagłówka – separuje nagłówek polecenia od jego argumentów. Pozwala analizatorowi składni poleceń szybko wydzielić dwie zasadnicze części polecenia: nagłówek i argumenty. Separatorem nagłówka jest spacja ( co najmniej jedna). Argumenty – specyfikują wartości związane z poleceniem. Wartości argumentów określają ustawienie programowanego zasobu funkcjonalnego. Polecenia wykorzystują dane różnego typu. Format zapisu zależy od typu danych. Dla niektórych typów można stosować różne formy zapisu. Polecenie może być bezargumentowe, z jednym argumentem lub wieloma. W poleceniu wieloargumentowym poszczególne argumenty są oddzielane separatorem danych, którym jest przecinek.
5
Przykłady poleceń programujących :
INITiate Inicjalizuje podsystem wyzwalania urządzenia; polecenie używa tylko nagłówka, nie ma argumentów. SENSe:VOLTage:RANGe 200E-3 Ustawia podzakres pomiarowy 200mV. Nagłówek polecenia (SENSe:VOLTage:RANGe) oddziela od argumentu (200E-3) separator nagłówka w postaci jednej spacji. SOURce:LIST:FREQuency 20.0E+3,30.0E+3,40.0E+3 Ustawia listę częstotliwości sygnału generatora określoną trzema argumentami polecenia o wartościach 20, 30 i 40 kHz. Argumenty rozdziela separator danych , którym jest znak przecinka.
6
Budowa zapytania: Nagłówek – jest tekstem alfabetycznym, który wyraża przeznaczenie komunikatu. W zapytaniu określa zasób funkcjonalny urządzenia, którego ustawienie jest celem zapytania. ? – znak zapytania dołączony do tekstu nagłówka oznacza zapytanie. Praktycznie każde polecenie nastawcze posiada odpowiadające polecenie pytające. Nagłówki obu poleceń są identyczne. Zwykle polecenia bez argumentów nie mają odpowiadającej formy pytającej, np. INIT, ABORT, *RST itd. Zapytanie może mieć dwie formy – z argumentami lub bez argumentów. Zapytanie bez argumentu – dotyczy uzyskania informacji o aktualnym ustawieniu zasobu funkcjonalnego urządzenia. Zapytanie z argumentem – dotyczy uzyskania informacji o możliwościach ustawienia zasobu funkcjonalnego urządzenia. Argument określa wtedy rodzaj charakterystycznej wartości nastawy: maksymalna, minimalna, domyślna.
7
Przykłady zapytań: SENSe:VOLTAge:ATTenuation 30
Polecenie programujące ustawiające tłumienie sygnału napięciowego o wartości 30dB. SENSe:VOLTAge:ATTenuation? Zapytanie o aktualne ustawienie tłumienia. SENSe:VOLTAge:ATTenuation? MAX Zapytanie o maksymalne dopuszczalne ustawienie tłumienia.
8
Terminator polecenia:
Każde polecenie musi kończyć się terminatorem plecenia, który wskazuje jednoznacznie jego koniec. Terminatorem polecenia programującego i zapytania jest znak NL (nowa linia). W interfejsie IEEE488 dopuszcza się wykorzystanie komunikatu END wysyłanego linią EOI magistrali GPIB. Stąd możliwe są następujące alternatywne terminatory poleceń: NL ^ END – znak nowej linii wysyłany przy ustawionej linii EOI. NL – sam znak nowej linii. <byte> ^ END – ostatni bajt komunikatu wysłany przy ustawionej linii EOI. Terminator jednoznaczne wyznacza porcje bajtów stanowiące kompletne polecenie. Odbiorca po otrzymaniu terminatora polecenia może przystąpić do interpretacji otrzymanego ciągu znaków traktując go jako kompletne polecenie. Odbiorca może poprawnie analizować składnię otrzymanego polecenia i w dalszej konsekwencji wykonać je lub odrzucić.
9
Automatyczne wstawianie terminatora:
Stosowanie terminatorów poleceń jest bardzo ważne dla uzyskania właściwej komunikacji pomiędzy kontrolerem i urządzeniem. Wiele przyrządowych bibliotek I/O automatycznie wstawia terminator na końcu wysyłanego polecenia. HP VEE - Konfiguracja I/O ustala znak terminalny dla każdego zdefiniowanego urządzenia. W transakcji wysyłającej polecenie zaznacza się opcję wysłania znaku terminalnego. LabView - Znak terminalny trzeba dołączyć jawnie do tekstu wysyłanego polecenia. Dodatkowo dla interfejsu IEEE488 domyślnie jest włączona zawsze opcja wykorzystania komunikatu END. W HP VEE – zawsze; W LabView – Domyślnie włączona dla otwieranej sesji urządzeniowej. Można wyłączyć, modyfikując własności sesji Send End Enable (Property Node).
10
Budowa polecenia złożonego:
Kilka komunikatów jednostkowych można zgrupować w jednym poleceniu przed wysłaniem terminatora polecenia tworząc polecenie złożone. Komunikaty jednostkowe rozdziela separator poleceń jednostkowych, którym jest znak średnika. Poleceniami jednostkowymi mogą być polecenia programujące i pytające. Kolejność ich ułożenia jest w zasadzie dowolna. Określa ją raczej cel wykonywanych operacji, choć są pewne wyjątki od pełnej dowolności.
11
Przykład polecenia złożonego:
SENSe:VOLTage:RANGe 2.00E+3 ; RESolution E-6 NL^End Argument Nagłówek Polecenie jednostkowe Separator nagłówka Terminator polecenia poleceń Dodatkowe białe znaki ( spacje i znaki sterujące z wyjątkiem NL ) mogą występować pomiędzy elementami syntaktycznymi polecenia, np. biały znak(i) może : Poprzedzać nagłówek; Poprzedzać terminator polecenia (dlatego para CR LF jest legalnym terminatorem); Występować pomiędzy nagłówkiem i argumentami; Występować przed i po separatorze argumentów oraz separatorze poleceń.
12
Budowa komunikatu odpowiedzi:
Nagłówek – jest tekstem alfabetycznym, który opisuje dane odpowiedzi. Większość współczesnych urządzeń stosuje odpowiedzi bez nagłówków. Odpowiedź zawiera tylko dane. Separator nagłówka – separuje nagłówek odpowiedzi od danych. Separatorem nagłówka jest spacja. Dane – specyfikują wartości wygenerowane przez urządzenie w odpowiedzi na wcześniejsze zapytanie. Zwykle jest to jedna wartość prezentująca wynik pomiaru, aktualne ustawienie zasobu funkcjonalnego urządzenia, informacja o stanie urządzenia. Separator danych - odpowiedź może składać się z jednej lub wielu danych. W odpowiedzi z wieloma danymi poszczególne wartości są oddzielone separatorem danych, którym jest przecinek.
13
Przykłady odpowiedzi:
Pytanie : SOURce:LIST:FREQuency:POINts? Odpowiedź : 3 Liczba zdefiniowanych częstotliwości sygnału ustawianych sekwencyjnie przez generator. Odpowiedź w postaci jednej danej. Pytanie : SOURce:LIST:FREQuency? Odpowiedź : E+3,30.0E+3,40.0E+3 Lista zdefiniowanych częstotliwości sygnału ustawianych sekwencyjnie przez generator. Odpowiedź w postaci trzech danych rozdzielonych przecinkiem. Pytanie : TRIGger:SOURce? Odpowiedź : EXT Ustawione źródło wyzwolenia pomiaru. Odpowiedź w postaci jednej wartości. Jest to odpowiedź typu znakowego a nie numerycznego.
14
Terminator odpowiedzi:
Odpowiedź kończy się znakiem terminatora odpowiedzi, który wskazuje jednoznacznie jej koniec. Terminator jednoznaczne wyznacza porcje bajtów stanowiące kompletną odpowiedź. Odbiorca po otrzymaniu terminatora może przystąpić do interpretacji otrzymanego ciągu znaków traktując go jako kompletną odpowiedź. Terminatorem odpowiedzi jest zawsze znak NL (nowa linia). Urządzenia z interfejsem IEEE488 wykorzystują dodatkowo komunikat END wysyłany linią EOI magistrali GPIB. Ich terminator to zawsze NL ^ END , czyli znak nowej linii wysyłany przy ustawionej linii EOI.
15
Odpowiedzi złożone : Kilka odpowiedzi jednostkowych urządzenie można zgrupować tworząc odpowiedź złożoną zakończoną terminatorem odpowiedzi. Odpowiedzi jednostkowe rozdziela separator odpowiedzi jednostkowych, którym jest znak średnika. Urządzenie wysyła odpowiedź jednostkową zakończoną terminatorem w reakcji na proste zapytanie, czyli polecenie zakończone terminatorem i zawierające jedno zapytanie. Urządzenie grupuje odpowiedzi w formie złożonej tylko w sytuacji otrzymania polecenia złożonego z wieloma zapytaniami.
16
Przykłady odpowiedzi złożonych (1):
Zapytanie : SOURce:LIST:FREQuency? ; FREQuency:POINts? Odpowiedź : 20.0E+3,30.0E+3,40.0E+3 ; 3 Pierwsze zapytanie żąda dostarczenia wszystkich wartości z aktualnie obowiązującej listy częstotliwości. Drugie pytanie żąda podania liczby elementów listy. Zwrócone dane 20.0E+3, 30.0E+3 i 40.0E+3 specyfikują wartości częstotliwości z listy i stanowią jednostkową odpowiedź z trzema danymi. Ostatnia wartość 3 określa liczbę punktów w liście częstotliwości i stanowi drugą odpowiedź jednostkową.
17
Przykłady odpowiedzi złożonych (2):
Oba zapytania są funkcjonalnie tożsame. Żądają wykonania pomiaru napięcia zmiennego w kanałach pomiarowych 109 i 111 i dostarczenia wyników pomiaru. Zapytanie 1: MEAS:VOLT:AC? AUTO, MAX, Odpowiedź : E+00 , E+00 Pierwsze zapytanie jest pytaniem prostym i odpowiedź urządzenia jest odpowiedzią jednostkową z dwoma danymi rozdzielonymi znakiem przecinka (separator danych). Zapytanie 2: MEAS:VOLT:AC? AUTO, MAX, MEAS:VOLT:AC? AUTO, MAX, Odpowiedź : E+00 ; E+00 Drugie zapytanie jest pytaniem złożonym i odpowiedź urządzenia jest odpowiedzią złożoną z dwóch odpowiedzi jednostkowych oddzielonych znakiem średnika (separator odpowiedzi).
18
Nagłówki komunikatów – budowa:
Nagłówek komunikatu składa się z słów kluczowych. Słowo kluczowe musi rozpoczynać się literą i może stosować duże i małe litery alfabetu, cyfry oraz znak podkreślenia: [ A-Z, a-z, 0-9, _ ] Urządzenia nie rozróżniają dużych i małych liter alfabetu. Długość słowa do 12 znaków, ale preferuje się słowa czteroznakowe. Treść nagłówka powinna oddawać przeznaczenie komunikatu. Np. ABORt , INITiate Np. SOURce:LIST:FREQuency MEASure:VOLTage:AC? Np. *IDN?, *RST, *CLS
19
Swobodny odbiór i precyzyjne nadawanie:
Urządzenia odbierają polecenia programujące i pytające wysyłane przez kontroler systemu wykonujący aplikację programową. Konstrukcja oprogramowania wewnętrznego urządzeń zapewnia nie restrykcyjny odbiór komunikatów. Ułatwia to budowanie aplikacji programowych oraz ich dostosowanie do urządzeń pochodzących od różnych producentów. I tak w procesie odbioru, urządzenia : Są obojętne na wielkość liter nagłówka; Dopuszczają występowanie dodatkowych białych znaków pomiędzy elementami syntaktycznymi polecenia; Dopuszczają swobodny format zapisu danych liczbowych (np. każdy z przedstawionych zapisów 123, 123.0, 1.23E+2, 1.23e+2 jest poprawnie interpretowany). Urządzenia są bardzo precyzyjne w nadawaniu odpowiedzi. Formaty odpowiedzi odpowiadają precyzyjnie przyjętym ustaleniom (też ułatwia prace programiście) : Nagłówki zawsze z zastosowaniem wielkich liter i formy krótkiej; Bez nadmiarowych znaków białych; Format danych liczbowych zawsze taki sam dla odpowiedzi danego typu. Uwaga: Zapisy tekstowe wartości liczbowych dostarczanych do lub odczytywanych z urządzenia zawsze używają kropki jako separatora części całkowitej i ułamkowej. Urządzenie przyjmie argument 1.23E+2 ale zgłosi błąd przy zapisie 1,23E+2 (dlaczego?).
20
Typy danych poleceń i odpowiedzi :
Character data – dane znakowe Decimal numeric data – dziesiątkowe dane numeryczne ( liczby o podstawie 10) Non decimal numeric data – nie dziesiątkowe dane numeryczne ( liczby o podstawie 2, 8, 16) String data – dane stringowe (teksty) Arbitrary block data – dowolne bloki danych (przekazywanie danych binarnych) ASCII response data – odpowiedź w postaci ciągu znaków ASCII ( typ dotyczy tylko odpowiedzi) Expression data – dane wyrażeniowe
21
Dane znakowe: Dana znakowa jest słowem kluczowym , budowanym na identycznych zasadach jak słowa kluczowe nagłówków. Ten typ danych jest stosowany wówczas, gdy tekst słowa lepiej wyraża wartość argumentu niż przykładowo wartość liczbowa (analogia do typu enumerycznego). Typ stosowany do ustawiania zasobu funkcjonalnego posiadającego kilka charakterystycznych ustawień. Np. : Źródło wyzwolenia akcji urządzenia : IMMediate – natychmiastowe wewnętrzne; EXTernal – sygnałem zewnętrznym; BUS – rozkazem interfejsowym GET; TIMer – wewnętrzne sygnałem czasowym; Sprzężenie kanału wejściowego oscyloskopu: DC – stałoprądowe; AC – zmienno prądowe; GROUnd – zwarcie do masy. Przykład: Programowanie: TRIGger:SOURce IMMediate Zapytanie : TRIGger:SOURce? Odpowiedź : IMM ( zawsze duże litery i forma krótka)
22
Dziesiątkowe dane numeryczne:
Dana dziesiątkowa jest stosowana do reprezentacji liczb w zapisie dziesiętnym. Stosuje formę zapisu z ukrytym lub jawnym punktem dziesiętnym oraz ewentualnie zapis wykładniczy. Punkt dziesiętny zawsze w postaci kropki. Dostępne formy zapisu: Liczby całkowite NR zapis stosuje [ +, -, 0-9 ]; np Liczby rzeczywiste NR zapis stałoprzecinkowy; używa [ +, -, . ,0-9 ] np Liczby rzeczywiste NR zapis wykładniczy; używa [ +, -, ., 0-9, E, e ] np E E E2 Urządzenie przyjmuje dane numeryczne w każdej z podanych postaci, natomiast odpowiedź na określone zapytanie używa zawsze jeden z podanych formatów. Dana przekazana do urządzenia może mieć większą precyzję niż wewnętrzne możliwości urządzenia. Wtedy przekazana wartość podlega zaokrągleniu, np. : VOLTage 2.57E-3 gdy rozdzielczość nastawy wynosi zostanie ustawione napięcie 3E-3 (3mV).
23
Przyrostki dziesiątkowych danych numerycznych:
Dane dziesiątkowe poleceń określają wartości w podstawowych jednostkach fizycznych. Można to zmienić przez dodanie przyrostka do zapisu danych numerycznych. Przyrostek składa się z dwóch części. Jedna opisuje jednostkę fizyczną a druga poprzedzająca mnożnik jednostki podstawowej. Przykłady zapisu mnożnika: 109 G Giga 106 MA Mega 103 K Kilo 10-3 M Mili 10-6 U Mikro Przykłady zapisu jednostek fizycznych: A amper RAD radian DEG stopień S sekunda HZ herz DBM dB/1mW M metr V wolt OHM ohm W wat SOURce:FREQuency 200E+3;VOLTage 2.3E-3 Polecenie ustawia w generatorze sygnał wyjściowy o częstotliwości 200kHz i amplitudzie 2.3mV. SOURce:FREQuency 200kHz;VOLTage 2.3mV Polecenie realizuje to samo co pierwsze, ale używa przyrostków. Urządzenie nie rozróżnia wielkości liter przedrostka (kHz zamiast KHZ).
24
Mnożnik mega oraz polecenie UNIT :
Uwaga: stosowanie mnożnika mega. 200megaherc to zapis 200MAHZ a nie MHZ Konwencjonalny zapis MHz i Mohm nie oznacza w poleceniach przyrządowych megaherc i megaomów lecz miliherce i miliomy. Popularność obu zapisów spowodowała przyjęcie w odniesieniu do urządzeń dodatkowych jednostek oznaczanych MHz i Mohm. Taki zapis nie musi być implementowany w urządzeniu i aby właściwie posługiwać się nim trzeba zajrzeć do dokumentacji urządzenia. Urządzenie może dysponować specjalnym poleceniem ustalającym obowiązujący mnożnik dla wartości fizycznych przekazywanych poleceniami. Wtedy wartości podaje się w poleceniach już bez mnożnika. Przykładowo miernik temperatury może dysponować poleceniem wybierającym odpowiednią skalę temperaturową ( Celsius, Fahrenheit, Kelvin) : UNIT:TEMPerature { CEL | FAR | KEL } Komunikaty odpowiedzi nie używają przyrostków przy dostarczanych wartościach numerycznych i najczęściej wartości fizyczne są podawane w jednostkach podstawowych.
25
Nie dziesiątkowe dane numeryczne:
Dane nie dziesiątkowe reprezentują tekstowy zapis liczb wyrażonych w systemie dwójkowym, oktalnym lub szesnastkowym. Stosuje się je wtedy, gdy zapis w systemie innym niż dziesiętny lepiej oddaje wartość danej. Stosowany wyłącznie dla danych całkowitych. Zapis danej używa znaków ASCII do prezentacji poszczególnych pozycji liczby. W przypadku zapisu dwójkowego stosowane są znaki 0 i 1. Zapis liczby 8-mio bitowej składa się z ośmiu znaków cyfr oraz dwóch znaków przedrostka. Taki format danej jest bardzo nieefektywny (transfer wielu znaków) i znajduje uzasadnienie tylko w sytuacji konieczności zapewnienia łatwej interpretacji kodu programu. Najczęściej jest stosowany w odniesieniu do obsługi podsystemu statusowego urządzenia. Dostępne formy zapisu: Hexalny #H #H3B Oktalny #Q #Q73 Dwójkowy #B #B111011 Znak # oznacza, że zapis jest inny niż dziesiątkowy. Znaki H, Q i B określają formę prezentacji danej numerycznej.
26
Nie dziesiątkowe dane numeryczne – przykłady :
STATus:OPERation:ENABle 1362 Polecenie ustawia szesnastobitowy rejestr maski struktury OPERation. Ustawione pozycje bitowe odblokowują odpowiadające im zdarzenia z rejestru zdarzeń. Polecenie stosuje daną dziesiątkową. Zapis danej nie wskazuje bezpośrednio, które bity zostaną ustawione. STATus:OPERation:ENABle #B Polecenie funkcjonalnie to samo, ale stosuje daną w zapisie dwójkowym. Zapis danej wskazuje, które bity zostaną ustawione. Dana jest zapisana za pomocą 13 znaków zamiast 4!!! Odpowiedź na zapytanie skierowane do zasobu ustawianego za pomocą danych nie dziesiątkowych jest zwracana domyślnie w postaci dziesiątkowej. STATus:OPERation:ENABle? Odpowiedź: Urządzenie może dysponować poleceniem wybierającym inny format odpowiedzi i wtedy dane zwracane mogą mieć także jedną z przedstawionych postaci. FORMat:SREGister HEXadecimal Komunikat nakazuje urządzeniu wysyłać odpowiedzi dotyczące stanu rejestrów w postaci szesnastkowej. STATus:OPERation:ENABle? Odpowiedź: #H552
27
Blok dowolnych danych:
Blok dowolnych danych jest przeznaczony do transferu dowolnego bloku bajtów. Blok bajtów jest tutaj rozumiany jako obszar pamięci przechowujący pewien rodzaj danej , np. skalarnej typu int, double, strukturalnej lub tablicowej. Zawartość tego obszaru bez żadnych konwersji jest przekazywana do odbiorcy. Blok dowolnych danych jest przydatny do przekazywania dużych zbiorów danych, ponieważ przesyłając surowe dane binarne minimalizuje czas transferu a jednocześnie eliminuje konieczność konwersji danych z binarnych na tekstowe oraz konwersji odwrotnej po stronie odbiorcy. Blok dowolnych danych występuje w postaci bloku o zdefiniowanej lub nieokreślonej długości. Oba typy wykorzystują przedrostek tekstowy poprzedzający właściwy blok danych binarnych. Przedrostek danej o zdefiniowanej długości specyfikuje długość bloku w bajtach: #<informacja o długości bloku> - pierwsza pozycja jest cyfrą różną od zera Przedrostek danej o nieokreślonej długości nie zawiera informacji o długości bloku: #0 - zero oznacza brak określenia długości bloku
28
Blok dowolnych danych o zdefiniowanej długości:
Przedrostek danej o zdefiniowanej długości składa się z trzech części, które kolejno zawierają : Znak # sygnalizujący odbiorcy, że dana nie jest w zapisie dziesiątkowym; Występujący po niej znak cyfry jednoznacznie wskazuje na blok danych. Pojedyncza cyfra określająca liczbę pozycji zapisu długości bloku bajtów. Zapis dziesiątkowy długości bloku bajtów. Długość zapisu definiuje pole drugie. Przykład: #213<b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b> Cyfra 2 określa liczbę pozycji zapisu długości bloku. Liczba 13 określa długość bloku w bajtach. <b> prezentuje bajty bloku.
29
Blok dowolnych danych o nieokreślonej długości:
Przedrostek danej o nieokreślonej długości składa się z dwóch znaków : Znak # sygnalizuje odbiorcy, że dana nie jest w zapisie dziesiątkowym Znak cyfry 0 wskazuje brak danych o długości bloku. Przykład: #0<b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b> <b>NL^End #0 - blok dowolnych danych o nieokreślonej długości, który jest zakończony terminatorem NL^End. <b> prezentuje bajty bloku. Brak określenia długości bloku powoduje , że jego koniec trzeba koniecznie wskazać terminatorem. Jednak kod każdego wybranego znaku terminalnego może wystąpić wewnątrz bloku. Jedynym terminatorem jednoznacznym w tej sytuacji jest komunikat interfejsowy End występujący w interfejsie IEEE488. Dlatego ten rodzaj danych może być stosowany tylko w urządzeniach pracujących w interfejsie IEEE488. Dodatkowo dana ta może wystąpić tylko jako ostatni element komunikatu (End zawsze oznacza koniec).
30
Ujednolicenie reprezentacji binarnych danych:
Zaletą bloków danych jest możliwość bezpośredniego przeniesienia zawartości pamięci z jednego urządzenia do drugiego. Jeśli ich cechy (własności systemów mikrokomputerowych i oprogramowania) są kompatybilne a kopiowanie odbywa się 1:1 wówczas urządzenie (DEV1) uzyska dane bez konieczności dodatkowej ich obróbki. Dla ogromnej oferty urządzeń pomiarowych trudno o taką zgodność. Ale poprawne przenoszenie danych uzyska się, jeśli urządzenia będą kompatybilne zewnętrznie. W tym celu wystarczy ustalić: budowę podstawowych typów danych int, float i double (długość w bajtach, znaczenie kolejnych bajtów i ich bitów); Kolejność transmisji bajtów ( od najstarszego bajtu );
31
Dane stringowe: Dane stringowe reprezentują teksty. Są ciągiem dowolnych znaków ASCII objętych podwójnymi ( ” , 22hex ) lub pojedynczymi ( ‘ , 27hex ) znakami cytowania. DISPlay:TEXT ”To jest STRING” oraz DISPlay:TEXT ’To jest STRING’ Oba polecenia używają danej stringowej , ale zapisanej w różny sposób. Znaki cytowania można używać wewnątrz danej stringowej, ale trzeba przestrzegać obowiązujących zasad, aby zapewnić jednoznaczność zapisu: ”Napis ’TEKST’ w znakach cytowania” - Napis ’TEKST’ w znakach cytowania ’Napis ”TEKST” w znakach cytowania’ - Napis ”TEKST” w znakach cytowania ”Napis ””TEKST”” w znakach cytowania” - Napis ”TEKST” w znakach cytowania ’Napis ”TEKST” w znakach cytowania’ - Napis ’TEKST’ w znakach cytowania Przykład polecenia z argumentem stringowym: SENSe:FUNCtion ”VOLTage:AC” - ustawienie funkcji pomiarowej SENSe:FUNCtion? Odpowiedź: ”VOLT:AC” Odpowiedź stosuje zawsze podwójne znaki cytowania.
32
Blok znaków ASCII: Typ stosowany wyłącznie w odpowiedziach urządzeń.
Pozwala przekazać z urządzenia dowolny tekst (ciąg znaków ASCII) nie objęty znakami cytowania. Tekst może zawierać dowolny znak ASCII z wyjątkiem znaku NL (nowej linii). Aby zapewnić poprawną interpretację odebranego komunikatu , jego koniec musi zostać jednoznacznie określony za pomocą terminatora komunikatu, nowej linii – NL. Dana z tym typem musi być ostatnim elementem odpowiedzi urządzenia. Odpowiedź na zapytanie o identyfikację ( *IDN? ) jest przykładem tego typu danej. Dlatego zapytanie *IDN? musi być zawsze jedynym zapytaniem w poleceniu złożonym lub ostatnim.
33
Dane wyrażeniowe: Dane wyrażeniowe są stosowane do kreowania różnego rodzaju wyrażeń realizowanych przez urządzenie, np. wyrażeń matematycznych, operacji logicznych itp. Precyzyjna definicja kilku typów wyrażeń została przedstawiona w umowie SCPI. Lista kanałów Lista numeryczna ( liczby lub zakres liczb jako jedna dana ) Wyrażenie numeryczne Specyfikator przyrządu ( opisuje możliwości przyrządu ) Inne zastosowania są pozostawione projektantom urządzeń pomiarowych. Dana wyrażeniowa jest zapisem tekstowym wyrażenia objętym okrągłymi nawiasami ograniczającymi: CALCulate:MATH ( ( IMPLied^2 – 1) ^ 0.5 ) - przykład wyrażenia numerycznego
34
Lista kanałów : Lista kanałów jest używana do określenia portów przyrządów (a) lub specyfikacji drogi przejścia sygnału przez blok przełączający (b i c). Przełączniki macierzowe: 2!3 ) - punkt macierzy 3!5,3!6 ) - lista punktów macierzy 3!5:3!9 ) - zakres punktów macierzy Przełączniki proste: 2 ) - kanał 2, 3, 5 ) - lista kanałów 3:9 ) - zakres kanałów Przykłady: MEASure:VOLTage:DC? - zmierz napięcie DC w kanałach 1, 3, 4, 5 i 9 oraz zwróć rezultat zawierający 5 wartości. MEASure:PHASe? – zmierz fazę pomiędzy sygnałami z kanałów 1 i 2 oraz 3 i 5. ROUTe:CLOSe - zamknij klucze z wiersza trzeciego na kolumny 5 i 6.
35
Wyrażenia numeryczne :
Przyrządy mogą wykonywać na wynikach pomiarów różne operacje, np. uśrednianie, FFT. Takie możliwości stanowią część standardowych cech funkcjonalnych danego urządzenia. Wbudowane funkcje obliczeniowe są sterowane przez specjalne polecenia programujące podsystemu obliczeniowego, np. CALCulate:AVERage czy CALCulate:TRANsform. Urządzenia mogą wykonywać również operacje definiowane przez użytkownika. Do definiowania takich operacji stosuje się wyrażenia numeryczne stanowiące argumenty specjalnych poleceń podsystemu obliczeniowego urządzeń – CALCulate:MATH. Przykłady: CALCulate:MATH (”SENSe” ^2 + 1) ”SENSe” jest tu oznaczeniem danych uzyskiwanych z bloku SENSe (wykonania pomiaru). CALCulate:MATH ( IMPLied^2 + 3) IMPLied jest zarezerwowanym słowem kluczowym dla wyrażeń numerycznych odnoszącym się do danych uzyskanych z poprzedniej operacji matematycznej.
36
Dziesiątkowe dane numeryczne – dodatki SCPI:
Dane numeryczne mogą zostać wyrażone zapisem liczbowym lub mnemonikiem (słowem kluczowym). SCPI definiuje kilka słów kluczowych, które reprezentują szczególne wartości liczbowe: MAXimum – ustawia maksymalną możliwą wartość programowanej funkcji Minimum– ustawia minimalną możliwą wartość programowanej funkcji UP – wartość nastawy jest zwiększana o jeden krok DOWN – wartość nastawy jest zmniejszana o jeden krok DEFault – ustawia domyślną wartość programowanej funkcji NANumber – dana nie jest liczbą (np. wynik dzielenia przez zero; 9.91E+37); INFinity / NINFinity - plus i minus nieskończoność (odpowiednio 9.9e+37 i –9.9e+37 ) Wartość 9.9E+37 (czyli INFinity) jest często dostarczana przez urządzenie w sytuacji wystąpienia błędu pomiaru i braku możliwości zwrócenia poprawnego wyniku.
37
Dziesiątkowe dane numeryczne – przykłady:
Przyrząd posiada filtr wejściowy o programowalnej częstotliwości odcięcia w zakresie od 10Hz do 10kHz i stosuje następujące drzewo poleceń: INPut :FILTer [:LPASs] <numeric_value> węzeł domyślny! INPut:FILTer MAXimum Ustawia maksymalną częstotliwość odcięcia równą 10kHz. INPut:FILTer MINimum Ustawia minimalną częstotliwość odcięcia równą 10Hz. INPut:FILTer 2.0E+3 Ustawia częstotliwość odcięcia równą 2kHz. INPut:FILTer? Odpowiedź: 2E+3 ( zawsze liczba! ) Informuje o aktualnym ustawieniu filtra. INPut:FILTer? MAXimum Odpowiedź: 10E+3 Informuje o maksymalnej możliwej częstotliwości odcięcia filtra. INPut:FILTer? MINimum Odpowiedź: 10 Informuje o minimalnej możliwej częstotliwości odcięcia filtra.
38
Dane boolowskie – dodatki SCPI:
Dane boolowskie zapewniają prosty zapis parametrów dwuwartościowych : TRUE i FALSE. Zapis danych stosuje słowa kluczowe ON (TRUE) i OFF (FALSE) lub wartości liczbowe. Każda wartość liczbowa, która po zaokrągleniu reprezentuje zero odpowiada wartości logicznej FALSE. Wartość różna od zera po zaokrągleniu odpowiada wartości boolowskiej TRUE. Przykłady: SOURce:AM:STATe OFF Wyłączenie modulacji amplitudowej w generatorze. SOURce:AM:STATe 1 Włączenie modulacji amplitudowej w generatorze. SOURce:AM:STATe? odpowiedź: 1 Odpowiedź zawsze zwraca liczbę 0 lub 1, nigdy ON lub OFF.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.