Strona 1 z 1
Opóźnienie w maszynie stanów
: 26 sty 2016 18:36
autor: RafalFCB
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ć ?

Opóźnienie w maszynie stanów
: 26 sty 2016 18:59
autor: dajpanspokój
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
Opóźnienie w maszynie stanów
: 26 sty 2016 19:23
autor: RafalFCB
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ł???

Opóźnienie w maszynie stanów
: 26 sty 2016 19:36
autor: dajpanspokój
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?
Opóźnienie w maszynie stanów
: 26 sty 2016 20:30
autor: koofaya
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.
Re: Opóźnienie w maszynie stanów
: 26 sty 2016 23:47
autor: RafalFCB
Szczerze to już się trochę pogubiłem i nie ogarniam.
Program dołączyłem, możecie sobie popatrzeć

Re: Opóźnienie w maszynie stanów
: 27 sty 2016 11:48
autor: Daniel PCL
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ę.
Re: Opóźnienie w maszynie stanów
: 28 sty 2016 10:32
autor: dajpanspokój
koofaya pisze:"Wait with error in/out". Nie wiem, czemu nie wpadli jeszcze, żeby taki bloczek umieścić w podstawowych paletach... ---___---
Jest time delay.

- delay.png (24.37 KiB) Przejrzano 11852 razy
Ale tez właśnie go odkryłem ;D
Opóźnienie w maszynie stanów
: 28 sty 2016 23:03
autor: koofaya
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.
Re: Opóźnienie w maszynie stanów
: 29 sty 2016 14:28
autor: PiDi
koofaya 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... ---___---
http://forums.ni.com/t5/LabVIEW-Idea-Ex ... 856#M26878