Wykonywanie się petli while

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.
gooooo
Posty: 7
Rejestracja: 25 mar 2013 12:13
Wersja środowiska: LabVIEW 8.6

Wykonywanie się petli while

Post autor: gooooo »

Witam!
Mam problem a raczej pytanie odnośnie wykonywania się pętli "while". Moim zadaniem jest zmierzenie charakterystyki anteny. Steruję dwoma przyrządami: rotorem do obracania anteny oraz miernikiem. Pomiar ma się wykonywać automatycznie, tzn:

- obrót anteny np. o 20*
- pomiar
- zapis położenia anteny i pomiaru do tablicy
- do aktualnej pozycji anteny dodać kolejne 20*
- pomiar
- zapis
- itd...

Do tego celu wykorzystałem pętlę "while" (foto w załączniku). Wykorzystując rejestry, uzyskuję zadany skok obrotu (np co 20*). Podczas pojedynczej iteracji wartość ta podawana jest do rotora ("komenda obrotu anteny" na foto). Rotor zaczyna się obracać i po osiągnięciu pozycji ("sprawdzenie bieżącej pozycji" na foto) następuje pomiar. Moje pytanie brzmi: czy podczas tego działania pętla nie zacznie wykonywać kolejnej iteracji? Czy zaczeka na wykonanie pomiaru ("pomiar" na foto)?
Załączniki
lv.jpg
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

Re: Wykonywanie się petli while

Post autor: milten »

Iteracja pętli While skończy się jedynie wtedy, kiedy wszystkie VI-e się wykonają.
W twoim przypadku, jeżeli dasz jakieś sprawdzanie aktualnej pozycji (co masz), to ono będzie Ci blokować iterację zewnętrznej pętli.
Pętla w pętli nie jest najlepszym rozwiązaniem jak antena się zatnie i nie dojdzie do pozycji, bo w tej sytuacji, jeżeli będziesz chciał zatrzymać program (jedynie czerwony stop zadziała) zerwiesz połączenie VISA, które będzie nadal zajęte i nie podłączysz się kolejny raz (chyba, że całe LV zrestartujesz).
Podsumowując to co napisałeś powinno działać tak jak chcesz, ale jest okropnie podatne na wszelkie błędy połączenia, albo zacięcia się sprzętu.
Obrazek
ODPOWIEDZ