Podsystem wyzwalania

31
Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia

description

Podsystem wyzwalania. Sterowanie wyzwalaniem akcji urządzenia. Określenia podstawowe:. Wszystkie rodzaje akcji współczesnych urządzeń pomiarowych mogą być synchronizowane zdarzeniami zewnętrznymi lub wewnętrznymi. Pod pojęciem akcji rozumie się rozpoczęcie akwizycji lub generacji sygnału. - PowerPoint PPT Presentation

Transcript of Podsystem wyzwalania

Page 1: Podsystem wyzwalania

Podsystem wyzwalania

Sterowanie wyzwalaniem akcji urządzenia

Page 2: Podsystem wyzwalania

Określenia podstawowe:

Wszystkie rodzaje akcji współczesnych urządzeń pomiarowych mogą być synchronizowane zdarzeniami zewnętrznymi lub wewnętrznymi.

Pod pojęciem akcji rozumie się rozpoczęcie akwizycji lub generacji sygnału.

Synchronizację akcji urządzenia z zdarzeniami nazywa się ogólnie wyzwoleniem (triggering).

Polecenia odpowiedzialne za ustawienie parametrów wyzwolenia akcji urządzenia są zgrupowane w podsystemie TRIGger systemu poleceń SCPI.

Page 3: Podsystem wyzwalania

Podstawowy model podsystemu TRIGger :

IDLE - Stan spoczynkowy (obowiązkowy)

INITiated – stan zainicjalizowania (opcjonalny)

ARM – stan oczekiwania na uzbrojenie (dowolna liczba stanów, opcjonalny)

TRIGger – stan oczekiwania na wyzwolenie (obowiązkowy)

System musi przejść przez wszystkie stany , aby zainicjować akcję urządzenia.

Page 4: Podsystem wyzwalania

Działanie podsystemu TRIGger :

Urządzenie pozostaje w stanie IDLE do momentu wykonania polecenia INITiate.

System TRIGger przechodzi do stanu następnego w sekwencji zastosowanych stanów.

W stanie ARM oczekuje na zdarzenie pozwalające mu wyjść z tego stanu i przejść do następnego.

Ostatnim ze stanów oczekujących na zdarzenie jest stan TRIGger.

Każde wyjście w dół lub w górę z danego stanu generuje sygnał zdarzenia, który może być wykorzystany do sterowania urządzeniem.

Sygnał wyjścia w dół ze stanu TRIGger jest wykorzystany do zainicjowania akcji urządzenia.

Page 5: Podsystem wyzwalania

Nazwy zasobów dotyczących poszczególnych warstw sekwencji wyzwalania :

Prosty system wyzwalania jest sekwencją pokazanych stanów (warstw), spośród których tylko warstwa ARM może mieć kilka instancji.

Zasoby funkcjonalne określające sposób działania warstw są związane wyłącznie z warstwami ARM oraz TRIGger.

W poleceniach nazwa danego zasobu jest poprzedzona nazwą warstwy do, której on należy , np.:

ARM:LAYer2 – poprzedza zasoby warstwy ARM nr 2

ARM:LAYer1 – poprzedza zasoby warstwy ARM nr 1

ARM – poprzedza zasoby warstwy ARM nr 1; nr 1 jest domyślnym określeniem i słowo LAYer1 można pominąć.

TRIGger – poprzedza nazwę zasobu warstwy TRIGger

System wyzwalania może składać się z kilku równoległych sekwencji. Wówczas w nazwie zasobu występuje dodatkowo nazwa sekwencji:

ARM:SEQuence3:LAYer2 – zasób warstwy ARM nr 2 sekwencji 3 systemu wyzwalania

ARM:SEQuence1:LAYer1 – zasób warstwy ARM nr 1 sekwencji1; równoważne określeniu ARM

Page 6: Podsystem wyzwalania

Stan IDLE oraz INITiated :

Podsystem wyzwalania może wyjść ze stanu IDLE tylko na skutek polecenia:

INITate[:IMMediate ]   lub  INITiate:CONTinous  ON

Dopóki podsystem TRIGger jest w stanie spoczynkowym wszelkie zdarzenia synchronizujące są ignorowane. Akcje urządzenia w sensie rozpoczęcia akwizycji danych czy generacji nowego sygnału są zablokowane.

Po zainicjowaniu system przechodzi natychmiast przez stan INITiated do najwyższej warstwy ARM:LAYer.

Odwrotne przejście jest uzależnione od sposobu zainicjowania podsystemu TRIGger. W pracy ciągłej (INIT:CONT ON) następuje powrót sterowania do najwyższej warstwy ARM.

Polecenie INIT jest poleceniem nakładkowym. Wyjście ze stanu INITiated ustawia flagę NOPF wykonywania operacji natomiast powrót do stanu INITiated zeruje ją wskazując zakończenie operacji.

Page 7: Podsystem wyzwalania

Stan oczekiwania na zdarzenie (ARM i TRIGger) :

Programowalne zasoby każdej warstwy ARM oraz TRIGger:

• Źródło zdarzenia

• Charakterystyka zdarzenia

• Liczba zdarzeń po których nastąpi wyjście z danej warstwy

• Opóźnienie pomiędzy zdarzeniem i wyjściem z warstwy

• Liczba powtórzeń akcji danej warstwy.

Przyrząd nie musi implementować wszystkich cech funkcjonalnych warstw oczekiwania na zdarzenie.

Page 8: Podsystem wyzwalania

Źródła zdarzeń :

BUSZdarzenie jest generowane przez rozkaz wyzwolenia charakterystyczny dla danego interfejsu (dla GPIB rozkaz GET) lub polecenie wspólne *TRG.

INTernal Zdarzenie wyzwalające pochodzi z sygnału z jednego z kanałów przyrządu.

EXTernalZdarzenie pochodzi z sygnału doprowadzonego do specjalnego gniazda przyrządu.

IMMediate Brak oczekiwania na zdarzenie. Natychmiastowe wyjście z układu detekcji.

HOLDWszystkie zdarzenia są wyłączone. Tylko polecenie IMMediate może spowodować wyjście z warstwy w stanie HOLD.

MANual Wyzwolenie ręczne z płyty czołowej urządzenia.

TIMer Sygnał wyzwolenia jest generowany przez układ czasowy przyrządu.

LINE Sygnał wyzwolenia pochodzi z sygnału AC zasilającego przyrząd.

LINKSygnał wyzwolenia określony poleceniem LINK. Może to być dowolne zdefiniowane zdarzenie występujące w urządzeniu.

Page 9: Podsystem wyzwalania

Kwalifikacje sygnału wyzwolenia :

COUPling Sprzężenie z przenoszeniem składowej stałej (DC) lub bez niej (AC).

FILTer Zasoby filtracji sygnału (rodzaj filtru, częstotliwość odcięcia, stan włączenia).

LEVelDefiniuje zdarzenie, które wystąpi , gdy sygnał wejściowy przekroczy określony poziom sygnału.

HYSTeresis Określa histerezę obowiązującą dla zdarzenia określonego przez LEVel.

SLOPeOkreśla zbocze sygnału przy, którym jest generowane zdarzenie ( POSitive, NEGative, EITHer).

ECL lub TTLUstawia LEVel, HYSTeresis, COUPling oraz Delay stosownie do własności sygnału wyzwalającego ECL lub TTL.

TIMerUstawia okres zegara generującego cyklicznie zdarzenia czasowe. Zasób dotyczy wyłącznie podsystemu TRIGger i ma znaczenie po wyborze źródła wyzwalania TIMer.

LINKOkreśla zdarzenie wewnętrzne, które jest dołączone (LINK) do detektora zdarzeń. Ma znaczenie po wyborze źródła wyzwalania LINK.

Określenie zakresu możliwości sygnału wyzwalającego dotyczy praktycznie sygnałów analogowych (źródło zdarzeń INT, EXT lub LINE).

Page 10: Podsystem wyzwalania

Źródło zdarzenia (ARM i TRIGger) :

TRIGger:SOURce EXTernal – zdarzenie jest generowane przez sygnał zewnętrzny doprowadzony do specjalnego gniazda.

TRIGger:LEVel 4.5 – zdarzenie wystąpi , gdy sygnał wejściowy przekroczy poziom 4.5V.

ARM:LAYer2:SOURce INT

ARM:LAYer2:LEVel 5.0

ARM:LAYer2:SLOPe POS

ARM:LAYer2: HYSTeresis 0.2– polecenia ustawiające źródło wyzwolenia i parametry charakteryzujące zdarzenie dla warstwy ARM nr 2.

Page 11: Podsystem wyzwalania

Polecenia SIGNal i IMMediate (ARM i TRIGger) :

Polecenia te powodują jednorazowe pominięcie oczekiwania na zdarzenie w warstwie, do której zostanie skierowane.

Różnica pomiędzy nimi polega na tym, że IMMediate bocznikuje licznik ECOUnt oraz DELay, powodując natychmiastowe wyjście z warstwy.

Polecenie musi wystąpić w momencie oczekiwania na zdarzenie w danej warstwie. Jeśli wystąpi w innych warunkach jest ignorowane i zgłaszany jest błąd.

TRIGger:SIGnal – polecenie zbocznikuje detektor zdarzeń warstwy TRIGger.

TRIGger:IMMediate - polecenie zbocznikuje detektor zdarzeń warstwy TRIGger i spowoduje natychmiastowe wyjście z niej a więc także nastąpi natychmiastowy start akcji urządzenia.

Page 12: Podsystem wyzwalania

DElay oraz ECOunt (ARM i TRIGger) :

Zasób DELay pozwala opóźnić wyjście z warstwy w stosunku do zdarzenia o podany okres czasu (domyślnie =0):

TRIGger:DELay 0.05 – wyjście z warstwy trigger nastąpi z opóźnieniem 50ms w stosunku do wykrytego zdarzenia.

Zasób ECOunt określa po ilu zaistniałych zdarzeniach ma nastąpić wyjście z warstwy (domyślnie =1):

ARM:SOURce EXT

ARM:SLOPe POS

ARM:ECOunt 10 – wyjście z warstwy ARM w dół nastąpi po 10 zdarzeniach, np. po 10-tym narastającym zboczu zewnętrznego sygnału wyzwalającego.

Page 13: Podsystem wyzwalania

COUNt (ARM i TRIGger) :

Zasób COUNt określa liczbę powtórzeń akcji danej warstwy (domyślnie =1):

TRIGger:COUNt 5 – wyznacza 5-krotne powtórzenie akcji warstwy TRIGger. Każde powtórzenie to wyzwolenie akcji urządzenia po wystąpieniu określonego zdarzenia. Po 5 wyzwoleniu i zakończeniu akcji urządzenia następuje przejście do warstwy wyższej.

ARM:COUNt 10 – podobnie jak w przykładzie poprzednim z tym, że dotyczy warstwy ARM.

Page 14: Podsystem wyzwalania

Zdarzenia wyjść z warstw sekwencji :

Podczas działania systemu następują przejścia w dół poprzez poszczególne warstwy oraz przejścia powrotne w górę do stanu spoczynkowego.

Każde wyjście z warstwy zarówno w dół jak i w górę generuje zdarzenie, które jest określone standardową nazwą i może być wykorzystane w procesie sterowania działaniem urządzenia.

Budowa nazwy zdarzenia jest następująca:

<nazwa_warstwy><sekwencja_warstwy> <rozszerzenie_nazwy><[:DOWN] | :UP>

np.:

INITiated:DOWNINITiated:UP – wyjście w dół i w górę z warstwy zainicjowania sekwencji nr 1 .

ARM:SEQuence2:LAYer3:DOWN – wyjście w dół z warstwy ARM nr3 sekwencji drugiej.

TRIGger:SEQuence2TRIGger:SEQuence2:UP– wyjście w dół oraz w górę z warstwy TRIGger sekwencji drugiej.

Page 15: Podsystem wyzwalania

Podsystem TRIGger multimetru HP34401 :

Podsystem TRIGger multimetru HP34401 wykorzystuje tylko warstwę IDLE oraz TRIGger.

Przykład zaprogramowania przyrządu do wykonania zadanej liczby <n> pojedynczych pomiarów inicjalizowanych sygnałem zewnętrznym bez dodatkowego opóźnienia :TRIGger:Source EXTTRIGger:COUNt <n>TRIGger:Delay 0SAMPle:COUNt 1

Lub podobnie, ale z założeniem wykonania po każdorazowym wyzwoleniu serii <k> pomiarów w odstępach 1sekundowych:TRIGger:Source EXTTRIGger:COUNt <n>TRIGger:Delay 1SAMPle:COUNt <k>

Równoważne polecenie złożone:TRIGger:Source EXT; COUNt <n>; Delay 1; :SAMPle:COUNt <k>

Page 16: Podsystem wyzwalania

Polecenia MEAS? oraz READ?:

Page 17: Podsystem wyzwalania

Podsystem TRIGger multimetru 2001 Keithley  :

Multimetr ( 2001 Keithley ) posiada wewnętrzny moduł przełącznika kanałów pomiarowych.

Stosuje jedną sekwencję wyzwalania, ale z dwiema warstwami ARM.

Zdarzenia DOWN kolejnych warstw są wykorzystane następująco:

• ARM:LAYer2 - powtarzanie cykli skanowania listy kanałów.

• ARM:LAYer1 – przejście po kanałach listy;• TRIGger - start pomiaru w ustawionym kanale;

Odpowiednio programując system wyzwalania można zrealizować sesję pomiarową wykonującą:

• n cykli pomiarowych w wybranych kanałach pomiarowych;

• w każdym cyklu uczestniczy k kanałów; • w wybranym kanale pomiarowym wykonana

jest każdorazowo seria m pomiarów.

Page 18: Podsystem wyzwalania

Złożone systemy wyzwalania :

Sekwencje złożonego systemu wyzwalania mogą być niezależne lub wzajemnie synchronizowane przez zdarzenia generowane w tych sekwencjach.

Wzajemne powiązania są predefiniowane w urządzeniu lub ustalane programowo.

Konfigurowanie programowe powiązań polega na :

• wyborze źródła synchronizacji typu LINK dla danej warstwy w wybranej sekwencji;

• podaniu nazwy zdarzenia, które detektor tej warstwy ma wykryć.

ARM:SEQuence2:LAYer1:SOURce LINK – wybór źródła typu LINK

ARM:SEQuence2:LAYer1:LINK "ARM:SEQuence1:LAYer3:DOWN" – nazwa zdarzenia związana z źródłem LINK wybranej warstwy.

Page 19: Podsystem wyzwalania

Aliasy sekwencji wyzwalania :

Sekwencjom systemu wyzwalania można przypisywać własne nazwy (aliasy nazw standardowych).

Ma to na celu ułatwienie programowania przyrządu oraz zapewnienie dobrej czytelności poleceń w kodzie źródłowym programu.

Służy do tego celu jedno z poleceń:

ARM:SEQuence<n>:DEFine <alias>

TRIGger:SEQuence<n>:DEFine <alias>

Oba mają te same przeznaczenie. Jeśli sekwencja nie ma warstw ARM stosuje się drugie polecenie.

ARM:SEQuence2:DEFine VECTOR – VECTOR jest aliasem nazwy SEQuence2

ARM:VECTOR:SOURce BUS – ustawia wyzwolenie z interfejsu dla warstwy ARM sekwencji VECTOR. Wersję krótką aliasu można stosować dopiero po odpowiednim przystosowaniu urządzenia do tego celu (polecenie MGRules).

Page 20: Podsystem wyzwalania

Polecenia sekwencyjne i nakładkowe :

Sekwencyjne; Polecenia są wykonywane sekwencyjnie. Kolejne polecenie czeka w kolejce aż zostanie wykonane poprzednie.

Rozpoczęcie realizacji danego polecenia oznacza , że poprzednie zostało już wykonane w całości.

Nakładkowe; Polecenia realizowane współbieżnie .

Blok przekazywania poleceń inicjuje ich realizację przez blok funkcji urządzeniowych i nie czeka na zakończenie związanych z nimi operacji lecz przekazuje do wykonania następne polecenie.

Zwykle są to polecenia o długim czasie wykonania.

Page 21: Podsystem wyzwalania

Relacje czasowe:

Page 22: Podsystem wyzwalania

Zaleta poleceń nakładkowych :

Ustawienie podsystemu TRIGger:TRIGger:Source IMMTRIGger:COUNt 100TRIGger:Delay 0.1SAMPle:COUNt 10

Czas wykonania jednego pomiaru równy np. około 50ms.

Polecenie INITiate inicjalizuje podsystem wyzwalania.

Proces zbierania wszystkich danych trwa około:T = 100 * ( 100ms + 50 ms) * 10 = 150ms * 1000 = 150sekund Komplet danych jest dostępny dopiero po upływie 2.5 minut.

Jeśli polecenie INITiate jest poleceniem sekwencyjnym wówczas przez ten okres czasu urządzenie jest niedostępne (głuche).

Jeśli polecenie INITiate jest poleceniem nakładkowym to w czasie jego realizacji można pozyskiwać z urządzenia inne dane, między innymi dowiedzieć się czy proces zbierania danych już się zakończył.Jeśli czas realizacji polecenia jest relatywnie długi wówczas polecenie powinno mieć charakter nakładkowy.

Page 23: Podsystem wyzwalania

Synchronizacja programu z działaniem urządzenia :

Polecenie MEAS? realizuje pomiar pewnej wielkości . Czas pomiaru jest duży około 100sek.Fragment programu inicjujący pomiar i odczyt wyniku to w najprostszej postaci sekwencja instrukcji viPrintf i viScanf lub viWrite i viRead.

Jeśli Tpom>timeout operacji I/O wówczas powyższa sekwencja instrukcji nigdy nie wykona się poprawnie. Wystąpi błąd ‘timeout viRead’.

Można ustawić ‘timeout ‘ o odpowiednio dużej wartości , ale wtedy program wchodzi w realizację funkcji viRead i jest również zajęty (głuchy) przez tak długi okres czasu.

Aby uniknąć takich sytuacji należy przed wywołaniem operacji odczytu sprawdzić gotowość odpowiedzi i odczyt realizować gdy jest gotowa odpowiedź.

Page 24: Podsystem wyzwalania

Synchronizacja :

..........................

viPrintf(vi, ”MEAS?\n”);

do {viReadSTB (vi, &stb);

} while (!(stb & 0x10)); // bit MAV

viScanf(vi, ”%t”, buffor);

..........

Page 25: Podsystem wyzwalania

Flaga operacji :

Page 26: Podsystem wyzwalania

Polecenia synchronizacji :

• *WAI - czekaj na zakończenie zainicjalizowanych wcześniej poleceń nakładkowych;

• *OPC - uaktywnia ustawienie bitu wykonania poleceń w standardowym rejestrze zdarzeń;

• *OPC? - wstaw znak '1' ASCII do kolejki wyjściowej po wykonaniu wcześniej zainicjalizowanych poleceń.

Page 27: Podsystem wyzwalania

Standardowy rejestr zdarzeń :

Page 28: Podsystem wyzwalania

Zastosowanie bitu OPC :

Page 29: Podsystem wyzwalania

Przykład wykorzystania bitu OPC :

Ustawienie podsystemu TRIGger:TRIGger:Source IMMTRIGger:COUNt 100TRIGger:Delay 0.1SAMPle:COUNt 10

..........................

viPrintf(vi, ”*CLS; *ESE 1; INIT;*OPC\n”);

do {viReadSTB (vi, &stb);

} while (!(stb & 0x20));

viPrintf(vi, ”FETCH?\n”);viScanf(vi, ”%t”, buffor);

Page 30: Podsystem wyzwalania

Przykład wykorzystania bitu OPC :

Ustawienie podsystemu TRIGger:TRIGger:Source IMMTRIGger:COUNt 100TRIGger:Delay 0.1SAMPle:COUNt 10

..........................

viPrintf(vi, ”*CLS; INIT;*OPC\n”);

do { viPrintf(vi, ”*ESR?\n”); viScanf (vi, ”%t”, buf);} while (!(atoi(buf) & 0x01))

viPrintf(vi, ”FETCH?\n”);viRead(vi, buffor);

?

Page 31: Podsystem wyzwalania

Przykład wykorzystania polecenia *OPC? :

Ustawienie podsystemu TRIGger:TRIGger:Source IMMTRIGger:COUNt 100TRIGger:Delay 0.1SAMPle:COUNt 10

..........................

viPrintf(vi, ”*CLS; *ESE 0; INIT; *OPC? \n”);

do {viReadSTB (vi, &stb);

} while (!(stb & 0x10));

viScanf(vi, ”%t”, buffor); // odczyt odpowiedzi na zapytanie *OPC?

viPrintf(vi, ”FETCH?\n”);viScanf(vi, ”%t”, buffor);