Pozwala na sekwencyjne wykonywanie zadań. Wykorzystuje się struktury Case umieszczone w pętli While. Wywołanie konkretnej struktury Case jest zdeterminowane wyjściem z poprzednio wykonanej struktury Case. Najlepiej prześledzić to na przykładzie. Zanim zrealizujemy przykład, poznamy definicje typów (Type Definitions) w LabVIEW. Type Definitions jest bardzo przydatne, gdy dana kontrolka wykorzystywana jest w wielu programach, a od czasu do czasu zmieniamy ją (np. dodajemy kolejne zmienne itp.) Prześledźmy na przykładzie. Tworzymy klaster, a następnie wywołujemy menu podręczne, a z niego Advanced > Customize. W nowym oknie możemy edytować kontrolkę (zrobimy to później). Trzeba jeszcze wybrać opcję Type Def. z rozwijalnego menu na belce narzędziowej. Dalej zamykamy okno, w tym momencie LabVIEW zapyta czy zapisać zmiany. Zapisujemy pod nazwą My Cluster.ctl odpowiadając twierdząco na pytanie zadane przez LabVIEW.
Otwieramy nową aplikację (Ctrl + n) i umieszczamy na panelu naszą kontrolkę (All Controls > Select a Control i wybieramy My Cluster.ctl). Prawym przyciskiem myszy dla kontrolki wybieramy Open Type Def. W otwartym oknie dodajemy do klastera dodatkową kontrolkę Siglan length. Zamykamy okno i zapisujemy zmiany. Proszę zauważyć, że na panelu czołowym poprzedniej aplikacji nastąpiła automatyczna zmiana kontrolki.
Prostą maszynę stanu utworzymy korzystając z szablonu oferowanego przez LabVIEW. Z menu File (lub z przycisku New, jeśli nie mamy otwartej żadnej aplikacji) wybieramy New Otworzy się okno, w którym z VI from Template > Frameworks > Design Patterns wybieramy Standard State Machine.
Panel czołowy nowej aplikacji będzie pusty, natomiast diagram blokowy wygląda jak na slajdzie. W dalszej części będziemy go modyfikować.
1. Zapisujemy aplikację pod nazwą State Machine przyklad1.vi 2. Wskaźnik obecnego stanu (Current State) umieszczamy wywołując w pętli While na diagramie Create > Indicator. Na panelu umieszczamy go tak jak zamieszczono obok na slajdzie nad wskaźnikiem pojawiać się będą okna dialogowe, a zależy nam na tym aby nie przysłaniały wskaźnika. 3. Na stałej Beginning State prawym przyciskiem myszy wybieramy Open Type Def. 4. W otwartym oknie na kontrolce wybieramy prawym przyciskiem myszy Edit Items i dopisujemy do listy dwa stany: State1 oraz State2. 5. Zamykamy panel czołowy i zapisujemy zmiany pod sugerowaną nazwą w katalogu, w którym zapisaliśmy naszą aplikację. Maszyna stanu State Machine
6. Wracamy na diagram blokowy naszej maszyny stanu i prawym przyciskiem na strukturze Case wybieramy dwukrotnie polecenie Duplicate Case, aby utworzyć dodatkowe struktury dla stanów State1 i State2. 7. Uzupełniamy diagram blokowy jak pokazano na slajdzie. Odpowiedni stan w stałej Next State wybieramy z rozwijalnej listy. 8. Zapisujemy zmiany, przechodzimy na panel czołowy i uruchamiamy aplikację.
Kolejny przykład wykorzystywać będzie również strukturę Event. 1. Zamykamy poprzednie aplikacje i otwieramy nowy szablon (menu File > New i dalej jak w poprzednim przykładzie). Zapisujemy aplikację pod nową nazwą State Machine przyklad2.vi. 2. W pętli While dla stałej Beginning State wywołujemy Create Indicator (za rejestrem przesuwnym) 3. Dla stałej Beginning State modyfikujemy listę (prawy przycisk > Open Type Def.) stanów, dodając: Acquire, FFT Power Spectrum oraz Wait for User Event. 4. Usuwamy z pętli While ograniczenie czasowe (Wait (ms)). 5. Uzupełnianie struktury Case zaczniemy od stanu Acquire. " Acquire" 4 5 10 Round To +Infinity Multitone Generator.vi signal out W aveform Graph W ykres na panelu czoł owym Next State Wait for User Event Wywoł ane jako Create > Constant na wyjściu z Multitone Generator.vi
Kolejny przykład cd. 6. Dalej zmodyfikujemy strukturę Case dla stanów FFT Power Spectrum i Stop " FFT Power Spectrum" zmienna lokalna signal out Unbundle By Name f0 df magnitude FFT Power Spectrum.vi To Time Stamp Build W aveform zmienna lokalna t0 W aveform Graph dt Y Beginning State Wait for User Event " Stop" Stop
Kolejny przykład cd. 7. Przed modyfikacją struktury Case dla stanu Wait for User Event przejdźmy na panel czołowy i skonfigurujmy go jak pokazano na tym slajdzie. Wykorzystano przyciski OK odpowiednio je modyfikując. Sprawdzamy czy akcja mechaniczna przycisków ustawiona jest na Latch When Released.
Kolejny przykład cd. 8. Wskaźnik signal out jest wykorzystywany jedynie do przetrzymania danych w aplikacji, tak aby można je było wykorzystać w stanie FFT Power Spectrum. Chcielibyśmy go w takim razie ukryć na panelu czołowym. Wywołujemy więc na wskaźniku signal out menu podręczne i wybieramy Advanced > Hide Indicator. Efekt końcowy powinien być jak poniżej. Wskaźnik zniknął
Kolejny przykład cd. 9. Wracamy na diagram blokowy i modyfikujemy stan Initialization " Initialize", Default stał e 00:00:00.000 YYYY-MM-DD 0 0 0 Build W aveform t0 dt Y W aveform Graph signal out Zmienne lokalne UWAGA! Kontrolki dla tych zmiennych znajdują się w strukturze Case - Acquire Next State Wait for User Event
Kolejny przykład cd. 10. Czas na modyfikację stanu Wait for User Event. Wykorzystamy tutaj strukturę Event. Struktura będzie miała kilka stanów, każdy odpowiadał będzie reakcji na naciśnięcie przycisku na panelu czołowym. Dla wszystkich stanów definiujemy zdarzenie Value Change. Na tym slajdzie widać zawartość dla zdarzenia związanego z przyciskiem Stop. Wygląd struktury Event dla pozostałych przycisków pokazano na kolejnym slajdzie.
Kolejny przykład cd.