Model ARM-TRIGger. Stany podsystemu TRIGger - stan IDLE. Stany podsystemu TRIGger - stan INITiated. Stany podsystemu TRIGger - warstwy detekcji zdarzenia (ARM i TRIGger). Wykorzystanie generowanych zdarzeń sekwencji wyzwalania. Przykładowe rozwiązania podsystemów TRIGger. Rozszerzone modele systemu wyzwalania.
Podsystem służy do synchronizacji akcji urządzenia z zdarzeniami zewnętrznymi lub wewnętrznymi urządzenia. Akcją urządzenia jest najczęściej wykonanie pomiaru lub wytworzenie sygnału wymuszającego. Zdarzeniami stosowanymi do wywołania akcji urządzenia mogą być : polecenie wyzwolenia *TRG, rozkaz interfejsowy GET, zmiana stanu sygnału zewnętrznego, określony poziom sygnału mierzonego, itp. Podsystem TRIGger jest opisany modelem o rozszerzalnych możliwościach, dostosowywanych do potrzeb konkretnego urządzenia.
Rys.1. Model ARM-TRIGger podsystemu wyzwalania. Działanie podsystemu przedstawia diagram, w którym prostokąty obrazują stany podsystemu nazywane warstwami. Pionowo połączone warstwy tworzą tzw. "sekwencję" (sekwencję wyzwalania). Linie ciągłe obrazują przepływ sterowania między warstwami. Wyjście sterowania z danej warstwy modelu generuje zdarzenie nazywane "zdarzeniem sekwencji". Zdarzenia sekwencji mogą być wykorzystane przez inne części modelu wyzwalania lub przyrządu jako zdarzenia synchronizujące. Linie przerywane obrazują sposób propagacji "zdarzeń sekwencji".
Model ARM TRIGger. Reprezentuje zestaw możliwości bardzo często implementowany w urządzeniach. Zapewnia synchronizację akcji urządzenia z wykorzystaniem dwóch niezależnych poziomów detekcji zdarzeń. Jedną dostarcza warstwa ARM, drugą warstwa TRIGger. W konkretnej implementacji warstwa ARM może być opuszczona lub powtórzona wielokrotnie (ARM:LAYer1, ARM:LAYer2 itd.).
Stany podsystemu TRIGger - stan IDLE. Dopóki podsystem TRIGger jest w stanie spoczynkowym wszelkie zdarzenia synchronizujące są ignorowane. Akcje urządzenia w sensie akwizycji danych czy generacji nowego sygnału są całkowicie uzależnione od podsystemu TRIGger. Można powiedzieć, że stan IDLE blokuje funkcje pomiarowe przyrządu. Podsystem wyzwalania może wyjść ze stanu IDLE tylko na skutek polecenia: INITate[:IMMediate ] lub INITiate:CONTinous ON Polecenie INIT jest poleceniem nakładkowym. Wyjście ze stanu IDLE ustawia flagę NOPF w stan FALSE, powrót ustawia tę flagę w stan TRUE zaznaczając w ten sposób wykonanie polecenia.
Rys.2. Diagram działania warstwy IDLE.
Stany podsystemu TRIGger - stan INITiated. Po zainicjowaniu systemu wyzwolenia sterowanie 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. Stan INITiated jest potrzebny, aby umożliwić ustawienie flagi NOPF w stan TRUE po wykonaniu sekwencji wyzwalania w warunkach pracy ciągłej (INIT:CONT ON).
Rys.3. Diagram działania warstwy INITiated. Wyjścia ze stanu INITiated generują dwa różne zdarzenia sekwencji, które mogą być wykorzystane w procesie sterowania urządzenia: "INITiate:SEQuence[1][:DOWN]" oraz "INITiate:SEQuence[1]:UP"
Stany podsystemu TRIGger - warstwy detekcji zdarzenia (ARM i TRIGger). Warstwy ARM oraz TRIGger dostarczają możliwości wykrycia określonego zdarzenia. Każda z nich realizuje jeden poziom detekcji. Warstwa TRIGger jest zawsze pojedynczą warstwą danej sekwencji wyzwalania i jest podporządkowana warstwie ARM.
Rys.4. Diagram działania warstwy ARM oraz TRIGger.
Przejście w dół przez warstwę jest uzależnione od wystąpienia zdarzenia określonego za pomocą poleceń programujących daną warstwę. Za wykrycie zdarzenia jest odpowiedzialny detektor zdarzeń 'event detector' znajdujący się w torze przepływu sterowania w dół przez warstwę. Programowanie warstwy dotyczy między innymi wyboru źródła zdarzenia oraz dodatkowo charakterystyki sygnału w sytuacji, gdy do wyzwalania jest wybrany sygnał analogowy lub cyfrowy (SLOPe kierunek zmiany sygnału, COUPling rodzaj sprzężenia AC lub DC, FILTer filtracja sygnału, HYSTeresis
histereza, LEVel poziom sygnału itp.). Przykładowe określenia źródeł zdarzenia synchronizującego :
BUS - magistrala interfejsu (rozkaz GET lub polecenie *TRG);
EXT - sygnał zewnętrzny (analogowy, cyfrowy) doprowadzony na port wyzwalania;
INT - zdarzenie pochodzące z funkcji pomiarowych urządzenia lub bloku kondycjonowania sygnału;
LINE - sygnał napięcia zasilającego AC;
LINK - wybrane zdarzenie wewnętrzne określone poleceniem LINK (np. wybrane zdarzenie jednej z sekwencji wyzwalania);
TIM - zdarzenie pochodzące z licznika czasu. Zwykle pierwsze wykryte zdarzenie wystarcza do wyjścia z danej warstwy. Można jednak zadeklarować wystąpienie określonej liczby zdarzeń (ECOunt), po których nastąpi wyjście, np. po 10 kolejnych narastających zboczach sygnału wyzwalającego. Wyjście z warstwy można opóźnić o określony odcinek czasu (DELay). Istnieje też możliwość bocznikowania detektora zdarzeń, licznika zdarzeń lub opóźnienia (bypass). Służą do tego polecenia :IMMediate oraz :SIGnal obsługujące daną warstwę, np.: ARM[:SEQ][:LAY][:IMM] lub TRIG[:SEQ]:SIGN Przejście powrotne przez warstwę jest uwarunkowane stanem licznika powtórzeń akcji danej warstwy (COUnt). Blok 'event detector' znajdujący się na trasie powrotnej dotyczy sprawdzenia wykonania akcji zainicjowanej poprzedzającym wyjściem z tej warstwy. Wyjście w dół oraz wyjście w górę z warstwy generuje odpowiednie zdarzenie sekwencji :
ARM:SEQ:LAY[:DOWN] TRIG:SEQ[:DOWN]
ARM:SEQ:LAY:UP TRIG:SEQ:UP Działanie sekwencji warstw ARM oraz warstwy końcowej TRIGger można porównać do działania zagnieżdżonych pętli FOR języka programowania.
Wykorzystanie generowanych zdarzeń sekwencji wyzwalania. W modelu ARM-TRIGger zdarzenie DOWN generowane przez warstwę TRIGger jest wykorzystane do startowania akcji urządzenia. Typowo jest to wykonanie pomiaru lub wygenerowanie sygnału stymulującego. Zakończenie akcji urządzenia, na które czeka warstwa TRIGger, może być określone jako kompletne wykonanie pewnej operacji (np. przemiatania zadanego zakresu częstotliwościowego) lub jako zainicjowanie takiej operacji. W konsekwencji przejścia powrotne poprzez kolejne warstwy (np. powrót do stanu IDLE) wykonują się w różnych momentach czasowych w relacji do zleconej akcji. Jak widać generowane zdarzenia UP takiej sekwencji są uzależnione od cech urządzenia. Sposób sterowania urządzenia należy zatem dostosować do jego cech indywidualnych. Nazwa generowanego zdarzenia sekwencji wyzwalania odpowiada miejscu jego wygenerowania:
"TRIG:SEQ1:DOWN""TRIG:DOWN""TRIG" Uproszczenia pełnej nazwy określającej zdarzenie wynikają z opuszczania domyślnych słów kluczowych. Określenie sekwencji (:SEQuence<n>) można zastąpić zdefiniowaną przez użytkownika nazwą (:<sequence_name>). Generowane zdarzenia zaimplementowanej sekwencji wyzwalania wykorzystuje się w urządzeniach do synchronizacji działania określonych jego zasobów funkcjonalnych (np. skanowania kanałów wejściowych) lub synchronizacji innych sekwencji wyzwalających w przypadku stosowania rozbudowanego podsystemu TRIGger.
Przykładowe rozwiązania podsystemów TRIGger. Najprostsze rozwiązanie podsystemu wyzwalania stosuje tylko jedną sekwencję wyzwalającą z trzema warstwami: IDLE, INITiated oraz TRIGger i wykorzystuje zdarzenie DOWN warstwy TRIGger do startowania pomiaru.
Rys.5. Podsystem wyzwalania multimetru HP34401. Podsystem TRIGger multimetru HP34401 wykorzystuje tylko warstwę INIT oraz TRIGger. Można zaprogramować przyrząd do wykonania zadanej liczby <n> pojedynczych pomiarów : TRIGger:COUNt <n>;SAMPle:COUNt 1 lub serii pomiarów <s> po każdym wyzwoleniu : TRIGger:COUNt <n>;SAMPle:COUNt <s> inicjalizowanych wybranym zdarzeniem synchronizującym (BUS, IMM, EXT). Multimetr ( 2001 Keithley ) posiadający wewnętrzny moduł przełącznika kanałów pomiarowych wykorzystuje bardziej złożony model systemu wyzwalania (rys.6). Stosuje jedną sekwencję wyzwalania ale z dwiema warstwami ARM. Warstwa ARM:Layer1 jest wykorzystana do skanowania kanałów wejściowych urządzenia, natomiast warstwa ARM:LAYer2 do powtarzania cykli pomiarowych po zbiorze kanałów. Zdarzenia DOWN kolejnych warstw są wykorzystane następująco:
- warstwy ARM:LAYer2- warstwy ARM:LAYer1- warstwy TRIGger - do inicjalizacji procesu skanowania kanałów.- do włączenia kolejnego kanału z podanej listy;- do startu pomiaru w ustawionym kanale;
Rys.6. Model podsystemu TRIGger multimetru 2001 Keithley. 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 i pomiarów.
Rozszerzone modele systemu wyzwalania. Rozszerzonym systemem wyzwalania jest system, który implementuje kilka warstw typu ARM oraz/lub kilka sekwencji wyzwalających (rys.7).
rys.7. Rozszerzony model systemu wyzwalania. Stosowanie takich modeli dotyczy bardziej specyficznych przypadków synchronizowania akcji urządzenia. Większa liczba warstw typu ARM dostarcza dodatkowe poziomy detekcji warunków synchronizacji akcji przyrządu oraz daje większą liczbę zdarzeń danej sekwencji potrzebnych do synchronizacji akcji wewnątrz lub na zewnątrz urządzenia. Wielokrotne sekwencje wyzwalania mogą z kolei zapewnić współbieżne wyzwalanie różnych akcji urządzenia, np. równoczesne pomiary różnych wielkości sygnału. Sekwencje takie mogą być niezależne lub wzajemnie synchronizowane przez generowane zdarzenia tych sekwencji. Użytkownik może sam określić powiązania między poszczególnymi sekwencjami lub ich przeznaczenie jest pre-definiowane w urządzeniu. Konfigurowanie powiązań polega na wyborze źródła synchronizacji typu LINK (ARM:LAY<n>:SOUR LINK lub TRIG:SOUR LINK) dla danej warstwy oraz podaniu nazwy zdarzenia, które detektor warstwy ma wykryć . Np.:
ARM:SEQ2:LAY1:SOUR LINKARM:SEQ2:LAY1:LINK "ARM:SEQ1:LAY3:DOWN" Zdarzeniem oczekiwanym w warstwie ARM:LAY1 sekwencji drugiej jest zdarzenie DOWN warstwy ARM:LAY3 z sekwencji pierwszej. Sekwencja druga podejmuje dalsze działanie, gdy sekwencja pierwsza wyjdzie z warstwy ARM:LAYer3. Literarura. [1] SCPI 1995 - Command Reference; vol.2, SCPI Consortium, 1995.
15 grudzień 1999 r. opr. dr inż. Bogdan Kasprzakrys. Lidia Stańczyk