Opóźnienie w maszynie stanów
Opóźnienie w maszynie stanów
Witam
Mam taki problem:
Na zdjęciu widać kawałek kodu programu. Chciałbym, żeby dioda (jeżeli ma się zapalić) świeciła przez jakieś 5 sekund. Teraz ta część pętli case jest realizowana bardzo szybko, a świecenie diody jest niezauważalne. Dodanie bloczka wait ms nie pomogło, gdyż teraz ta część pętli czeka 5 sekund, a potem zapala diode tak że jest to niezauważalne :/
Czy macie jakiś pomysł co z tym zrobić ?
Mam taki problem:
Na zdjęciu widać kawałek kodu programu. Chciałbym, żeby dioda (jeżeli ma się zapalić) świeciła przez jakieś 5 sekund. Teraz ta część pętli case jest realizowana bardzo szybko, a świecenie diody jest niezauważalne. Dodanie bloczka wait ms nie pomogło, gdyż teraz ta część pętli czeka 5 sekund, a potem zapala diode tak że jest to niezauważalne :/
Czy macie jakiś pomysł co z tym zrobić ?
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Opóźnienie w maszynie stanów
Musisz ustawic ten wait wtedy jak sygnal dojdzie do diody, teraz robisz to przed
Mozesz wyciagnac to czekanie poza petle, albo dac je do stanu czuwania, bo to chyba o to chodziło
Mozesz wyciagnac to czekanie poza petle, albo dac je do stanu czuwania, bo to chyba o to chodziło
Opóźnienie w maszynie stanów
Dzięki dajpanspokój za pomysł, ale:
1. Po dodaniu waita do "stan czuwania" dioda świeci dłużej, jednakże wyjście ze stanu czuwania także jest opóźnione.
2. Dodanie waita poza pętlą powoduje opóźnienie wykonania każdego case :/
Ma ktoś jeszcze jakiś pomysł???
1. Po dodaniu waita do "stan czuwania" dioda świeci dłużej, jednakże wyjście ze stanu czuwania także jest opóźnione.
2. Dodanie waita poza pętlą powoduje opóźnienie wykonania każdego case :/
Ma ktoś jeszcze jakiś pomysł???
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Opóźnienie w maszynie stanów
Mozesz w stanie czuwania ustawic event z timeoutem na 5 sekund, który wylaczy diody i stamtad z powrotem do czuwania
albo wstawic tego waita w osobny case i regulowac kiedy ma sie czekac a kiedy nie. Ale to jest troche nieeleganckie
Mozesz napisac jak ma dzialac stan czuwania?
albo wstawic tego waita w osobny case i regulowac kiedy ma sie czekac a kiedy nie. Ale to jest troche nieeleganckie
Mozesz napisac jak ma dzialac stan czuwania?
Opóźnienie w maszynie stanów
Nie wiem, jaki jest sens działania całego programu, co tam się dzieje w pozostałych case'ach, ale można to zrobić całkiem łopatologicznie.
Po wyjściu z event structure dajesz flat sequence, a w nim wait. W zależności od case'a podpinasz różne wartości. Trochę lepszym rozwiązaniem jest zrobienie VIa "Wait with error in/out". Nie wiem, czemu nie wpadli jeszcze, żeby taki bloczek umieścić w podstawowych paletach... ---___---
Na pewno bardziej eleganckim rozwiązaniem byłoby wrzucenie waita do stanu czuwania, zwłaszcza jeżeli wait występuje tylko w jednej z możliwych sytuacji/kombinacji stanów, ale bez całego kodu nie stwierdzę, czemu u Ciebie to nie działa.
Po wyjściu z event structure dajesz flat sequence, a w nim wait. W zależności od case'a podpinasz różne wartości. Trochę lepszym rozwiązaniem jest zrobienie VIa "Wait with error in/out". Nie wiem, czemu nie wpadli jeszcze, żeby taki bloczek umieścić w podstawowych paletach... ---___---
Na pewno bardziej eleganckim rozwiązaniem byłoby wrzucenie waita do stanu czuwania, zwłaszcza jeżeli wait występuje tylko w jednej z możliwych sytuacji/kombinacji stanów, ale bez całego kodu nie stwierdzę, czemu u Ciebie to nie działa.
Re: Opóźnienie w maszynie stanów
Szczerze to już się trochę pogubiłem i nie ogarniam.
Program dołączyłem, możecie sobie popatrzeć
Program dołączyłem, możecie sobie popatrzeć
- Załączniki
-
- Program sterujący.vi
- (218.67 KiB) Pobrany 378 razy
-
- Posty: 20
- Rejestracja: 03 kwie 2013 11:26
- Wersja środowiska: LabVIEW 8.0
Re: Opóźnienie w maszynie stanów
Wrzuć odmierzanie czasu do maszyny stanów i w momencie kiedy uruchamiasz diodę generuj czas zadany=czas aktualny + 5 sekund. W stanie idle sprawdzaj, czy czas aktualny jest większy lub równy czas zadany. Jeśli tak ... wyłączasz diodę.
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: Opóźnienie w maszynie stanów
Jest time delay. Ale tez właśnie go odkryłem ;Dkoofaya pisze:"Wait with error in/out". Nie wiem, czemu nie wpadli jeszcze, żeby taki bloczek umieścić w podstawowych paletach... ---___---
Opóźnienie w maszynie stanów
O, zapomniałem o tym bloczku.
Tyle, że on przyjmuje delay w sekundach i typu double.
Dlatego zawsze wolę mieć w zanadrzu bloczek "Wait with error", który przyjmuje wartość w ms is od razu w U32.
Tyle, że on przyjmuje delay w sekundach i typu double.
Dlatego zawsze wolę mieć w zanadrzu bloczek "Wait with error", który przyjmuje wartość w ms is od razu w U32.
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Opóźnienie w maszynie stanów
http://forums.ni.com/t5/LabVIEW-Idea-Ex ... 856#M26878koofaya pisze:Trochę lepszym rozwiązaniem jest zrobienie VIa "Wait with error in/out". Nie wiem, czemu nie wpadli jeszcze, żeby taki bloczek umieścić w podstawowych paletach... ---___---