Wykonanie pętli While

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Piotr83
Posty: 16
Rejestracja: 10 lut 2008 19:58
Lokalizacja: Białystok
Kontakt:

Wykonanie pętli While

Post autor: Piotr83 »

Hej,

Napisalem taki prosty program (nie jestem pewny czy nie ma błędów), który ma zatrzymywać sie po wykonaniu dwóch wewnętrznych pętli While.
Np. regulator jest ustawiony na wartość =2, y=1, górna pętla sie zatrzymuje i potem nie ma reakcji na zmianę ustawień regulatora

Czy możecie podpowiedzieć gdzie jest błąd?

Pozdrawiam
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Wykonanie pętli While

Post autor: Nowszy »

Jeszcze musiałbyś napisać, co się dzieje w Case'ach gdy jest False. Ale generalnie wygląda na to, że problem jest następujący:
- duża pętla kończy się w momencie, gdy zakończą się wewnętrzne pętle, czyli będzie miała tylko 1 iteracje, która będzie czekała na zakończenie wewnętrznych pętli (pętla while przekaże dane do tuneli wyjściowych dopiero po zakończeniu)
- wartość kontrolki 'regulator' zostanie więc odczytana tylko 1 raz przez każdą z małych pętli - przed pierwszą iteracją. Duża pętla będzie uruchomiona tylko raz, więc odczyta wartość regulatora tylko 1 raz.
Ostatnio zmieniony 28 kwie 2009 20:38 przez Nowszy, łącznie zmieniany 1 raz.
Pozdrawiam, Maciek Antonik
Edu4Industry
Piotr83
Posty: 16
Rejestracja: 10 lut 2008 19:58
Lokalizacja: Białystok
Kontakt:

Re: Wykonanie pętli While

Post autor: Piotr83 »

Nowszy pisze:Jeszcze musiałbyś napisać, co się dzieje w Case'ach gdy jest False.
Casy są puste
Nowszy pisze: - duża pętla kończy się w momencie, gdy zakończą się wewnętrzne pętle, czyli będzie miała tylko 1 iteracje, która będzie czekała na zakończenie wewnętrznych pętli (pętla while przekaże dane do tuneli wyjściowych dopiero po zakończeniu)
o to mi własnie chodzilo zeby wykonała sie tylko raz
Nowszy pisze: - wartość kontrolki 'regulator' zostanie więc odczytana tylko 1 raz przez każdą z małych pętli - przed pierwszą iteracją. Duża pętla będzie uruchomiona tylko raz, więc odczyta wartość regulatora tylko 1 raz.
czy da się to zmienic zeby wartość regulatora nie była odczytywana tylko raz?

pozdrawiam
Awatar użytkownika
Nowszy
Posty: 504
Rejestracja: 30 maja 2008 08:33
Wersja środowiska: LabVIEW 2011
Lokalizacja: Katowice
Kontakt:

Re: Wykonanie pętli While

Post autor: Nowszy »

Wrzuć regulator do 1 pętli a do drugiej wrzuć zmienną lokalną powiązaną z tym regulatorem. Musisz tylko zadbać, żeby kontrolkę regulatora dobrze inicjować.

A tak swoją drogą, to po co chcesz zmieniać wartość regulatora skoro duża pętla działa tylko 1 raz? No i po co w ogóle jest ta duża pętla w takim razie?
Pozdrawiam, Maciek Antonik
Edu4Industry
mariush
Administrator
Posty: 5
Rejestracja: 19 kwie 2009 17:39
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gliwice

Wykonanie pętli While

Post autor: mariush »

Podobnie jak wyżej, skoro pętla ma się wykonać raz, to po co w ogóle robić to w pętli? ;)
Jeżeli wartość wchodzi do tych małych pętli while, to nie można jej już zmienić, dopóki, pętle się nie zakończą. Chyba że kontrolka znajdzie się wewnątrz tych małych pętli, albo znajdzie się tam zmienna ją reprezentująca. Obrazek [Pal licho, że operacje są inne - idea ta sama :)]
Swoją drogą, po co ten Time Delay poza pętlą? 100% użycia procesora będzie tak czy siak, dopóki opóźnienia nie będzie w każdej z pętli.
Ostatnio zmieniony 29 kwie 2009 20:31 przez mariush, łącznie zmieniany 1 raz.
Piotr83
Posty: 16
Rejestracja: 10 lut 2008 19:58
Lokalizacja: Białystok
Kontakt:

Wykonanie pętli While

Post autor: Piotr83 »

Ten vi zrobilem w domu i jest on "symulacją" (symulacją bo brak kart itp)tego co chce wykorzystać w pracy.
Spróbuje zmienić diagram zgodnie z waszymi wskazówkami albo w ogóle stworzyc wszystko od nowa.

Pozdrawiam i życzę miłego weekednu
ODPOWIEDZ