Podsystem wyzwalania Sterowanie wyzwalaniem akcji urządzenia.

Slides:



Advertisements
Podobne prezentacje
Przetworniki pomiarowe
Advertisements

Zerowanie mikroprocesorów Cel: wprowadzenie mikroprocesora w określony stan początkowy Zwykle realizowany poprzez: inicjalizację licznika rozkazów (PC)
Programowanie obiektowe
Związki w UML.
Modelowanie aktywności
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Diagramy stanów i diagramy aktywności
DYSKRETYZACJA SYGNAŁU
Liczniki.
PRZERZUTNIKI W aktualnie produkowanych przerzutnikach scalonych TTL wyróżnia się dwa podstawowe rodzaje wejść informacyjnych: - wejścia asynchroniczne,
Maciej I Stanisław Jedlińscy
Sprzężenie zwrotne Patryk Sobczyk.
Wykład 5 Przerwania w systemie SAB80C537 dr inż. Andrzej Przybył
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Standard Commands for Programmable Instruments (SCPI)
Tablice.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Magistrala & mostki PN/PD
Temat nr 10: System przerwań
Zasilacze.
Projektowanie i programowanie obiektowe II - Wykład IV
Komunikaty programowalnych urządzeń pomiarowych
Urządzenia systemów pomiarowych
Polecenia wykonania pomiaru ( grupa MEASure )
Projekt urządzenia z interfejsem GPIB
Protokół wymiany komunikatów w systemie pomiarowym
Interfejs IEEE 488 Funkcja żądania obsługi. Struktura systemu raportowania stanu urządzenia.
ZARZĄDZANIE PROCESAMI
Inżynieria Oprogramowania
ogólne pojęcia struktury
Podstawy programowania
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowalny układ we/wy równoległego.. Wyprowadzenia układu.
Seminarium 2 Krzywe kalibracyjne – rodzaje, wyznaczanie, obliczanie wyników Równanie regresji liniowej Współczynnik korelacji.
Instytut Tele- i Radiotechniczny WARSZAWA
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Poznaj bliżej program Microsoft Office Word 2007
Wielozadaniowowść systemu operacyjnego Linux
Elementy Rachunku Prawdopodobieństwa i Statystyki
Systemy wspomagania decyzji
Częstotliwość próbkowania, aliasing
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Elżbieta Fiedziukiewicz
Modelowanie obiektowe Diagramy czynności
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Wykład 7 Synchronizacja procesów i wątków
W ą t e k (lekki proces) thread.
Bariery synchronizacyjne Bariery są obiektami synchronizacyjnymi pakietu pthread służącymi do wyrównywania czasów pracy wątków wykonujących wspólne zadanie.
Pudełko Urządzenia Techniki Komputerowej
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Diagram aktywności (czynności)
Przerzutniki Przerzutniki.
Przerzutniki bistabilne
Koło ROBOTyki Technikum nr 2 im. E.Kwiatkowskiego w Starachowicach.
Diagram czynności Diagram czynności (activity diagram) służy do modelowania dynamicznych aspektów systemu. Diagram czynności przedstawia sekwencyjne lub.
Procesy, wątki Program a proces Proces: Przestrzeń adresowa, kod, dane, stos (część pamięci do przechowania zmiennych lokalnych i niektórych adresów) Otwarte.
Przegląd i budowa zaworów specjalnego przeznaczenia.
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
Pętle – instrukcje powtórzeń
Przerwania timera i przerwania zewnętrzne
PWM, obsługa wyświetlacza graficznego
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
POLITECHNIKA POZNAŃSKA
Układy asynchroniczne
Mikrokontrolery System przerwań
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Zapis prezentacji:

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

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.

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.

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

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.

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.

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

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

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

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.

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.

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.

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.

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

Polecenia MEAS? oraz READ?:

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.

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.

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

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.

Relacje czasowe:

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.

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

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

Flaga operacji :

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

Standardowy rejestr zdarzeń :

Zastosowanie bitu OPC :

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);

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); ?

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);