Strona 1 z 1

Maszyna stanów a pętla while

: 09 paź 2009 23:17
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 344 razy

Maszyna stanów a pętla while

: 10 paź 2009 00:02
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.