Maszyna stanów (State Machine) Automaty stanów są jednymi z podstawowych konstrukcji, jakie programiści NI LabVIEW używają do szybkiego pisania aplikacji. Programiści używają NI LabVIEW w aplikacjach, w których istnieją rozróżnialne stany. Każdy stan może prowadzić do innegopojedynczego lub wielokrotnego stanu i może zakończyć przebieg procesów. Zasada działania automatu stanów polega na wprowadzaniu danych przez użytkownika lub obliczeń wewnątrz stanu w celu określenia do jakiego stanu przejść. Wiele aplikacji wymaga stanu początkowego, po którym następuje stan domyślny w którym można wykonać wiele różnych operacji. Operacje te zależą od poprzednich i obecnych danych wejściowych jak również od stanów. Można użyć stanu shutdown -wyłączenia w celu wykonania operacji czyszczenia. W oprogramowaniu LabVIEW można stworzyć podstawowy automat stanów używając pętli while, rejestru przesuwnego, określenia przypadków i pewnej formy selektora przypadków (selektory przypadków zostały omówione w późniejszej części). Pętla while jest główną pętlą programu, która jest wykonywana dopóki nie zostaną spełnione warunki do wyjścia z programu. Głównym zadaniem pętli while jest wywołać selektor przypadków, a następnie wykonać odpowiedni przypadek. Rejestr przesuwny decyduje który przypadek powinien być wykonany jako następny. Wreszcie, każdy przypadek z instrukcji przypadków zawiera operację dla jednego konkretnego procesu wykonania. Często domyślny przypadek używany jest jako miejsce do sprawdzenia selektora przypadków (innymi słowy, jeśli użytkownik nie zrobił nic, sprawdź ponownie czy ten stan się nie zmienił). Diagram Stanów Podczas projektowania automatów stanów można stworzyć diagram stanów, aby graficznie przedstawić odmienne stany oraz to jak na siebie oddziałują. Używaj diagramów stanów, które są szkieletami projektu automatów stanu aby modelować algorytmy kontroli, których potrzebujesz w logicznych stanach dyskretnych. Diagramy stanów ułatwiają rozwijanie i rozumienie funkcjonalności aplikacji, którą używa automat stanów. str. 1
Ilustracja poniżej jest przykładem diagramu stanów. Kółka przedstawiają stany, strzałki przedstawiają możliwe przejścia między stanami. Wszystkie aplikacje wymagają stanu początkowego, czy też punktu startowego, po którym następują stany przejściowe, wykonujące różne operacje. Stan końcowy, czy też punkt końcowy jest ostatnim wykonywanym stanem i wykonuje akcje czyszczące. Diagramy stanów są przydatne w upraszczaniu procesu projektowania aplikacji używających skomplikowanych algorytmów decyzyjnych. Aby stworzyć efektywny diagram stanów, musisz znać różnorodne stany danej aplikacji, oraz wiedzieć jak są one ze sobą połączone. Dzięki wizualizacji różnych stanów wykonawczych aplikacji, poprawiasz całkowity projekt aplikacji. Zaprojektuj Automat Stanów z Diagramem Stanów Wyobraź sobie automat sprzedający colę, który przyjmuje monety 5 i 10 centowe, który nie wydaje reszty. Cola kosztuje 15 centów. Po pierwsze ustal stany, w jakich automat może się znajdować: - Start: brak pieniędzy w automacie. - 5 centów. - 10 centów. - Gotowe: 15 centów Teraz pomyśl o możliwych sposobach lub ścieżkach, dzięki którym automat zmienia stan. Nie zapomnij o tym że automat zaczyna pracę w punkcie początkowym. - Wrzucono 5 centów. - Wrzucono 10 centów. - Domyślnie: Nic nie wrzucono Z tych list można wywnioskować, że istnieją 4 stany i 3 możliwe drogi wyjścia z każdego stanu. Musisz przedstawić które stany połączone są jakimi ścieżkami. Na przykład kiedy automat jest w początkowym stanie całkowita wartość drobnych wewnątrz jest równa 0. Kiedy wrzucimy monetę pięciocentową, automat przechodzi w stan 5 centów. A zatem stan początkowy prowadzi do stanu 5 centów przez drogę pięciocentową. Po przeanalizowaniu wszystkich stanów i ścieżek, możesz stworzyć diagram stanów dla automatu do coli: str. 2
Z diagramem stanów łatwiej będzie ci zrozumieć jak stworzyć automat stanów. Budowanie Automatu Stanów Używając powyższego diagramu stanów, stwórz automat stanów. 1. Stwórz nowy pusty plik VI. 2. W głównym panelu umieść: - Dwa przyciski tekstowe nazwane pięciocentówka i dziesięciocentówka. - Wskaźnik tekstowy nazwany Zdeponowane Pieniądze. - Wskaźnik logiczny o nazwie Wydaj napój. 3. Umieść pętlę while na schemacie blokowym. 4. Umieść strukturę przypadków w pętli while. 5. Stwórz rejestr przesuwny na pętli while. 6. Stwórz Enum i podłącz go do rejestru przesuwnego aby go zainicjować. str. 3
7. Kliknij prawym przyciskiem myszy Enum, wybierz Edytuj Pozycje i dodaj następujące stany : - Start. - 5 centów. - 10 centów. - Wydaj napój. 8. Podłącz rejestr przesuwny do wejścia warunkowego struktury przypadków. 9. Kliknij prawym przyciskiem myszy na blok przypadków w górnej części struktury przypadków i wybierz Add Case for Every Value (dodaj przypadek do każdej wartości). str. 4
10. Podłącz odmienne przypadki tak jak zostało to przedstawione na następnych ilustracjach. str. 5
11. Podłącz Dispense coke (Wydaj napój) do wyjścia logicznego struktury przypadków. 12. Wewnątrz pętli while, umieść funkcję oczekiwania z określoną stałą. 13. Na zewnątrz pętli while, podłącz zmienną równą 0 do wskaźnika tekstowego Money Deposited (zdeponowane pieniądze). Ukończony plik VI powinien wyglądać tak: str. 6