Strona 1 z 1

Odliczanie czasu

: 16 kwie 2018 15:38
autor: Jjay
Witam,
Jestem początkujący w LabView. Mój program opiera się na sterowaniu 0,1

Potrzebuje zrobić odliczanie czasu. Wygląda to tak że po podaniu sygnału A=1 Włącza się wentylator, który ma pracować przez 2 minuty i się wyłączyć.
Zrobiłem coś takiego
kod.png
kod.png (26.34 KiB) Przejrzano 5984 razy
Problem polega na tym, że mam pętle w petli. Duża zewnętrzna i ta mała w tym Case. Problem jest taki że jak się mała uruchomi(odliczanie) To ta duża czeka na jej wynik. Chciałbym żeby ta duża nie czekała aż 2 minuty na zmianę innych sygnałów.

Kombinowałem jeszcze z "Elapsed time" ale nie wyszło.

///EDIT pierwszy problem sam rozwiązałem wiec edytowałem treść

Re: Odliczanie czasu

: 16 kwie 2018 19:10
autor: dajpanspokój
Hej

Odliczanie czasu w LabVIEW to jest podstawowy problem w CLD :)
Jest pare sposobow jak to zrobic, jeden z nich to event structure z timeoutem, ktory obsluguje wszystkie przyciski a w timeoucie wyswietla uplyw czasu.
2 shift registery, jeden do sprawdzenia czy wentylator dziala, a drugi do zapisania czasu w ktorym wystartowal.
Po nacisnieciu start zapisujesz czas startu do shift registera, a w timeoucie porownujesz terazniejszy czas z tym zapisanym. Jesli roznica tych czasow przekroczy iles tam, to wylaczamy wentylator.
wentylator.png
Dodatkowo, mozesz dolozyc kolejny shift register ktory bedzie przechowywal Timeout. Inicjalizujesz jako -1. Po nacisnieciu start, ustawiasz timeout na 100, po nacisnieciu stop, albo uplywie okreslonego czasu, ustawiasz Timeout = -1. W ten sposób jesli wentylator nie dziala, to petla czeka na event a nie kreci sie w kolko...

Re: Odliczanie czasu

: 17 kwie 2018 12:14
autor: Jjay
Stworzyłem na podstawie twojego tylko nie działa :D
kod2.png
Tak patrząc na czas, to chyba coś nie tak zrobiłem. Chyba nie bardzo rozumiem co miało być w linii czas startu. Bo bez wejściowego "constant czy control" cała linia w tym shift register zakreśla się na czarno.

Z góry dzięki za pomoc :)
Wrzucam .Vi

Re: Odliczanie czasu

: 17 kwie 2018 12:50
autor: Jjay
OK zrobiłem, troche pomyslalem i jest.
kod23.png
Wersja poprawiona

Załączam start i wentylator załącza się na 10 sekund po czym sie wyłącza. Problem jest gdy chce powtórzyć cykl kolejne naciśniecie startu załacza znów liczenie ale czas jest odliczany tam gdzie skonczył czyli na tej 10 sekundzie. Możemy jakoś zresetować ten czas w case structure gdy jesteśmy na false?

Możemy go zatrzymać stopem po upływie 10 sekund ale wtedy stopujemy cały loop, a tego nie chce. Timer jest tylko częścią programu. Ten zewnętrzny tick count liczy czas od startu programu, a ja chciałbym żeby dopiero zaczął liczyć po naciśnięciu booleanu "start" (policzy te 10 sekund przez, które pracuje wentylator i się zresetuje i będzie czekał na kolejne wyzwolenie startem)


Jeżeli odpowiedz jest w tym to chyba nie rozumiem.
"Dodatkowo, mozesz dolozyc kolejny shift register ktory bedzie przechowywal Timeout. Inicjalizujesz jako -1. Po nacisnieciu start, ustawiasz timeout na 100, po nacisnieciu stop, albo uplywie okreslonego czasu, ustawiasz Timeout = -1. W ten sposób jesli wentylator nie dziala, to petla czeka na event a nie kreci sie w kolko..."

Re: Odliczanie czasu

: 17 kwie 2018 14:13
autor: dajpanspokój
Nacisniecie startu daj jako nowy event i wtedy na shift register ustawiaj tick count.
Tak w ogole to mozesz drag and dropnac ten obrazek ktory wrzucilem na swoj vi i on sie wklei jak bloczki labview.
Dlatego ma taki znaczek
Capture.PNG
Capture.PNG (3.86 KiB) Przejrzano 5940 razy