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
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ść
Odliczanie czasu
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: Odliczanie czasu
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. 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...
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. 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
Stworzyłem na podstawie twojego tylko nie działa
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

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
- Załączniki
-
- Timer.vi
- (12.94 KiB) Pobrany 342 razy
Re: Odliczanie czasu
OK zrobiłem, troche pomyslalem i jest.
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..."
Wersja poprawionaZałą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..."
- Załączniki
-
- Timer.vi
- (12.85 KiB) Pobrany 324 razy
- dajpanspokój
- Posty: 145
- Rejestracja: 05 lis 2015 08:15
- Wersja środowiska: LabVIEW 2016
Re: Odliczanie czasu
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
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