Opóźnienie

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.
kolarz20
Posty: 3
Rejestracja: 03 sty 2011 14:07
Wersja środowiska: LabVIEW 2010

Opóźnienie

Post autor: kolarz20 »

Witam

Mam zagwostkę. W moim programie potrzebuję wykonać opóźnienie czasowe dopóki jest wartuść true tzn. mam na wejściu typ bolean i próbuje zrobić opóźnienie które po kilku sekundach wartościu true na wejściu poda wartość true na wyjście. Problem moim jest to że nie mogę użyć struktury while bo w między czasie wykonywane są inne struktury i po jej użyciu program się zawiesza. Próbowałem użyć struktury case z elementem "elapsed time" jak w załączniku ale mam problem bo program działa tylko za 1 razem. Licznik nie chce mi się resetować. Zależy mi na tym aby przy każdej zmianie case loop elapsed time się resetował. Czy mogę liczyć na jakiś wskazówki z waszej strony?

Pozdrawiam

Obrazek
Awatar użytkownika
Labqu
Posty: 71
Rejestracja: 19 mar 2010 23:33
Wersja środowiska: LabVIEW 2010
Lokalizacja: Gliwice

Re: Opóźnienie

Post autor: Labqu »

Licznik będzie się resetował, jeżeli do wejścia Autoreset będzie podpięta wartość TRUE.

Dlaczego nie możesz użyć struktury while ? Możesz mieć dwie lub więcej "niezależnych" pętli while.
You don't need a reason to help people.
kolarz20
Posty: 3
Rejestracja: 03 sty 2011 14:07
Wersja środowiska: LabVIEW 2010

Re: Opóźnienie

Post autor: kolarz20 »

Niestety po podpięciu do wejścia autoreset nic się nie zmienia nadal licznik się nie resetuje. Cały program znajduje się już w jednej pętli while gdzie poza nią jest warunek reset=true. Problem w moim przypadku z pętlami while jest następujący: jeżeli wykorzystywana była by pętla while wszystko poza nią nie działa, dopiero jak zatrzymam ją całość ruszy, a poza tym mam dosyć mocno obciążony procesor i obawiam się że jak użyję w tym przypadku jeszcze jednej to się zapcha.

Działanie wygląda na chwilę obecną w ten sposób, że licznik resetuje się po zmianie głównej struktury case której na obrazku nie widać. Licznik po zmianie struktury case na false zatrzymuje się i po zmianie na true startuje na nowo od wartości ostatno zapamiętanej.
Awatar użytkownika
Labqu
Posty: 71
Rejestracja: 19 mar 2010 23:33
Wersja środowiska: LabVIEW 2010
Lokalizacja: Gliwice

Re: Opóźnienie

Post autor: Labqu »

Pętle zapychają Ci całego procka, ponieważ wykonują się z maksymalną możliwą częstotliwością. Ogranicz ją np. do 1 Hz i od razu odczujesz różnicę :)

Przeanalizuj sobie załączony przykład. Jest to VI z mojego projektu, w którym jest zastosowane opóźnienie czasowe, wykorzystujące właśnie Time Elapsed.
Załączniki
WriteImage.vi
(34.51 KiB) Pobrany 292 razy
Ostatnio zmieniony 03 sty 2011 15:37 przez Labqu, łącznie zmieniany 1 raz.
You don't need a reason to help people.
kolarz20
Posty: 3
Rejestracja: 03 sty 2011 14:07
Wersja środowiska: LabVIEW 2010

Re: Opóźnienie

Post autor: kolarz20 »

Dzięki za odpowiedzi, lecz niestety nic. Podłączone mam dobrze Time Elapsed. Niestety pętle while mam już ograniczone a mocniej nie mogę gdyż mam do nich podłączony serwo silnik który na na bardzie spowolnionych pętlach nie działa za szybko :P. Mój problem polega na resetowaniu po każdym zmianie z true na false i na odwrót. Szukam rozwiązania jak na jeden cykl wprowadzić true a na resztę false tak aby na samym początku działania był reset (nie zależnie czy wcześniej zegar skończył odliczać czy nie).

Pozdrawiam
ODPOWIEDZ