Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia.

Podobne prezentacje


Prezentacja na temat: "Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia."— Zapis prezentacji:

1 Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia

2 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.

3 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.

4 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.

5 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

6 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.

7 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.

8 Źródła zdarzeń : BUS Zdarzenie jest generowane przez rozkaz wyzwolenia charakterystyczny dla danego interfejsu (dla GPIB rozkaz GET) lub polecenie wspólne *TRG. INTernalZdarzenie wyzwalające pochodzi z sygnału z jednego z kanałów przyrządu. EXTernalZdarzenie pochodzi z sygnału doprowadzonego do specjalnego gniazda przyrządu. IMMediateBrak oczekiwania na zdarzenie. Natychmiastowe wyjście z układu detekcji. HOLD Wszystkie zdarzenia są wyłączone. Tylko polecenie IMMediate może spowodować wyjście z warstwy w stanie HOLD. MANualWyzwolenie ręczne z płyty czołowej urządzenia. TIMerSygnał wyzwolenia jest generowany przez układ czasowy przyrządu. LINESygnał wyzwolenia pochodzi z sygnału AC zasilającego przyrząd. LINK Sygnał wyzwolenia określony poleceniem LINK. Może to być dowolne zdefiniowane zdarzenie występujące w urządzeniu.

9 Kwalifikacje sygnału wyzwolenia : COUPlingSprzężenie z przenoszeniem składowej stałej (DC) lub bez niej (AC). FILTerZasoby filtracji sygnału (rodzaj filtru, częstotliwość odcięcia, stan włączenia). LEVel Definiuje zdarzenie, które wystąpi, gdy sygnał wejściowy przekroczy określony poziom sygnału. HYSTeresisOkreśla histerezę obowiązującą dla zdarzenia określonego przez LEVel. SLOPe Określa zbocze sygnału przy, którym jest generowane zdarzenie ( POSitive, NEGative, EITHer). ECL lub TTL Ustawia LEVel, HYSTeresis, COUPling oraz Delay stosownie do własności sygnału wyzwalającego ECL lub TTL. TIMer Ustawia okres zegara generującego cyklicznie zdarzenia czasowe. Zasób dotyczy wyłącznie podsystemu TRIGger i ma znaczenie po wyborze źródła wyzwalania TIMer. LINK Okreś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).

10 Ź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.

11 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.

12 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.

13 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.

14 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: np.: INITiated:DOWN INITiated: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:SEQuence2 TRIGger:SEQuence2:UP– wyjście w dół oraz w górę z warstwy TRIGger sekwencji drugiej.

15 Podsystem TRIGger multimetru HP34401 : Podsystem TRIGger multimetru HP34401 wykorzystuje tylko warstwę IDLE oraz TRIGger. Przykład zaprogramowania przyrządu do wykonania zadanej liczby pojedynczych pomiarów inicjalizowanych sygnałem zewnętrznym bez dodatkowego opóźnienia : TRIGger:Source EXT TRIGger:COUNt TRIGger:Delay 0 SAMPle:COUNt 1 Lub podobnie, ale z założeniem wykonania po każdorazowym wyzwoleniu serii pomiarów w odstępach 1sekundowych: TRIGger:Source EXT TRIGger:COUNt TRIGger:Delay 1 SAMPle:COUNt Równoważne polecenie złożone: TRIGger:Source EXT; COUNt ; Delay 1; :SAMPle:COUNt

16 Polecenia MEAS? oraz READ?:

17 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.

18 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.

19 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 :DEFine TRIGger:SEQuence :DEFine 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).

20 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.

21 Relacje czasowe:

22 Zaleta poleceń nakładkowych : Ustawienie podsystemu TRIGger: TRIGger:Source IMM TRIGger:COUNt 100 TRIGger:Delay 0.1 SAMPle: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.

23 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ź.

24 Synchronizacja : viPrintf(vi, MEAS?\n); do { viReadSTB (vi, &stb); } while (!(stb & 0x10)); // bit MAV viScanf(vi, %t, buffor);

25 Flaga operacji :

26 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ń.

27 Standardowy rejestr zdarzeń :

28 Zastosowanie bitu OPC :

29 Przykład wykorzystania bitu OPC : Ustawienie podsystemu TRIGger: TRIGger:Source IMM TRIGger:COUNt 100 TRIGger:Delay 0.1 SAMPle:COUNt viPrintf(vi, *CLS; *ESE 1; INIT;*OPC\n); do { viReadSTB (vi, &stb); } while (!(stb & 0x20)); viPrintf(vi, FETCH?\n); viScanf(vi, %t, buffor);

30 Przykład wykorzystania bitu OPC : Ustawienie podsystemu TRIGger: TRIGger:Source IMM TRIGger:COUNt 100 TRIGger:Delay 0.1 SAMPle:COUNt 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); ?

31 Przykład wykorzystania polecenia *OPC? : Ustawienie podsystemu TRIGger: TRIGger:Source IMM TRIGger:COUNt 100 TRIGger:Delay 0.1 SAMPle:COUNt 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);


Pobierz ppt "Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia."

Podobne prezentacje


Reklamy Google