Opóźnienie w maszynie stanów

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
RafalFCB
Posty: 6
Rejestracja: 19 lis 2015 22:41
Wersja środowiska: LabVIEW 2014

Opóźnienie w maszynie stanów

Post 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ć ? :)
Załączniki
Bez tytułu.jpg
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Opóźnienie w maszynie stanów

Post 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
Obrazek
RafalFCB
Posty: 6
Rejestracja: 19 lis 2015 22:41
Wersja środowiska: LabVIEW 2014

Opóźnienie w maszynie stanów

Post 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ł??? :)
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Opóźnienie w maszynie stanów

Post 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?
Obrazek
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Opóźnienie w maszynie stanów

Post 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.
RafalFCB
Posty: 6
Rejestracja: 19 lis 2015 22:41
Wersja środowiska: LabVIEW 2014

Re: Opóźnienie w maszynie stanów

Post autor: RafalFCB »

Szczerze to już się trochę pogubiłem i nie ogarniam.

Program dołączyłem, możecie sobie popatrzeć :)
Załączniki
Program sterujący.vi
(218.67 KiB) Pobrany 377 razy
Daniel PCL
Posty: 20
Rejestracja: 03 kwie 2013 11:26
Wersja środowiska: LabVIEW 8.0

Re: Opóźnienie w maszynie stanów

Post 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ę.
Awatar użytkownika
dajpanspokój
Posty: 145
Rejestracja: 05 lis 2015 08:15
Wersja środowiska: LabVIEW 2016

Re: Opóźnienie w maszynie stanów

Post 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
delay.png (24.37 KiB) Przejrzano 10997 razy
Ale tez właśnie go odkryłem ;D
Obrazek
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Opóźnienie w maszynie stanów

Post 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.
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Opóźnienie w maszynie stanów

Post 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
ObrazekObrazekObrazekObrazek
ODPOWIEDZ