Maszyna stanów a pętla while

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
zaz
Posty: 12
Rejestracja: 01 paź 2009 15:02
Wersja środowiska: LabVIEW 2013
Lokalizacja: Wałbrzych
Kontakt:

Maszyna stanów a pętla while

Post autor: zaz »

Witam wszystkich.
Piszę program w do zbierania danych z karty NI USB 6008.
Algorytm wygląda następująco.
1. Oczekiwanie na start pomiaru (zbocze wstępujące na wejściu 1).
2. Pomiar nr 1 napięcia z wejścia analogowego przez czas kiedy na wejściu 1 mamy logiczne 1(zbocze zstępujące oznaczenia przejście do punktu 3),
3. Analiza odebranych danych i wysterowanie wyjść,
4. Pomiar nr 2 (punkty analogiczne do 3 i 4),
5. Pomiar nr 3 jak wyżej
6. Powrót do punktu 1.
7. Stop jeżeli został wciśnięty przycisk "stop".

Warunek dodatkowy pojawienie się sygnału na wejściu 2 zatrzymuje którykolwiek pomiar, wysterowuje wyjście i powoduje powrót do punktu 1 algorytmu.

Postanowiłem wykonać program używając maszyny stanów. Mam jednak problem z zaimplementowaniem warunku dodatkowego. Tzn. nie wiem jak w będąc w stanie 2, 4 lub 5 (pomiar), zatrzymać pętlę odpowiednimi stanami wejść while (w niej odbywa się zbieranie napięcia).


Dołączyłem przykładowy VI (bez zbierania danych, samą maszynę stanów).
StandardStateMachine 1.vi
(9.78 KiB) Pobrany 343 razy
Certified LabVIEW Developer
http://www.araval.pl
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Maszyna stanów a pętla while

Post autor: jogurt_owocowy »

Tzn. nie wiem jak w będąc w stanie 2, 4 lub 5 (pomiar), zatrzymać pętlę odpowiednimi stanami wejść while
Nie da się w ten sposób.
Pętle (tak jak i inne struktury) działają w ten sposób, że dostają dane na tunele wejściowe, wykonuje się kod w ich wnętrzu po czym dane pojawiają się na ich tunelach wyjściowych.
Jeśli chcesz z zewnątrz pętli przekazać dane do wewnątrz, musisz to zrobić inaczej np. poprzez zmienną lokalną (Local Variable).

Nie do końca jasno napisałeś...
pojawienie się sygnału na wejściu 2 zatrzymuje którykolwiek pomiar
nie wiem jak (...) zatrzymać pętlę odpowiednimi stanami wejść while
A więc warunek dodatkowy zatrzymujący pomiar pochodzi z wejścia nr 2 czy z wejścia pętli while?

PS. Zapisz zamieszczonego VIaja do niższej wersji LV. Nie wiem jak wyglądają forumowe statystyki, ale chyba ciągle mniej, niż więcej ludzi korzysta z LV 2009.
Ostatnio zmieniony 10 paź 2009 02:15 przez jogurt_owocowy, łącznie zmieniany 1 raz.
ODPOWIEDZ