Sterowanie pętlą While Loop

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.
Awatar użytkownika
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Sterowanie pętlą While Loop

Post autor: rafal »

Czy jest możliwe, aby zmianą wartości kontrolera DIGITAL CONTROL wysterować pętlę WHILE LOOP tzn. skokowa zmiana z wartości np. z 6 na 7 miałaby być przyczyną zatrzymania w/w pętli dla warunku STOP IF TRUE. Jednak po chwili pętla miałaby dalej wystartować. Innymi słowy zmiana wartości DIGITAL CONTROL (skok w górę lub w dół) musiałaby być przyczyną wygenerowania na pewien czas wartości TRUE, po której stan wróciłby do FALSE. Potrzebuję to do aktualizowania konfiguracji multimetru po zmianie zakresu pomiarowego, aby program działał „na żywo”.
Dzięki
tomekw
Posty: 22
Rejestracja: 23 kwie 2004 00:00
Lokalizacja: Koziegłowy k/Poznania

Re: Sterowanie pętlą While Loop

Post autor: tomekw »

[quote="rafal"]Czy jest możliwe, aby zmianą wartości kontrolera DIGITAL CONTROL wysterować pętlę WHILE LOOP tzn. skokowa zmiana z wartości np. z 6 na 7 miałaby być przyczyną zatrzymania w/w pętli dla warunku STOP IF TRUE. Jednak po chwili pętla miałaby dalej wystartować. Innymi słowy zmiana wartości DIGITAL CONTROL (skok w górę lub w dół) musiałaby być przyczyną wygenerowania na pewien czas wartości TRUE, po której stan wróciłby do FALSE. Potrzebuję to do aktualizowania konfiguracji multimetru po zmianie zakresu pomiarowego, aby program działał „na żywo”. Dzięki[/quote]
zawsze mozesz przeciez uzyc struktury "case" do wygenerowania TRUE lub FALSE w zaleznosci czy to bedzie 6 lub 7, a jezeli chodzi o petle to mozesz zastosowac druga petle w petli po case bo nie ma mozliwosci zatrzymania petli, jezeli dostanie TRUE na warunek to petla sie skonczy i juz, a ile dobrze Cie rozumiem.
:)
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Funkcja Select

Post autor: bogdani »

Witam
Czasem zamiast struktury Case lepiej zastosować funkcję Select, która umożliwia wybieranie strumienia danych w zależności od zmiennej logicznej.
Co do podanego problemu to możesz pętlę umieścić w sekwencji (Sequence Structure), w której po wyjściu będziesz aktualizować swoje zmienne. Żeby ta sekwencja była wykonywana ciągle to może ona być umieszczona w jakiejś głównej pętli while.
Można by też pomyśleć nad obsługą zdarzeń, czy to nie było by lepsze rozwiązanie.
bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
Awatar użytkownika
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Post autor: rafal »

Dziękuje za pomoc, ale chyba niezbyt jasno przedstawiłem, o co mi chodzi.
Ten diagram jest tylko wycinkiem, ale powinien wystarczyć do opisania problemu.
Jest to aplikacja, która sczytuje wartość aktualnie wyświetlaną na wyświetlaczu multimetru i aktualizuje na bieżąco jego konfigurację (tzn. po wciśnięciu przycisku ACV przyrząd przestawia się na pomiar napięcia przemiennego, po wciśnięciu AUTO ustawia się automatyczny dobór zakresu itd.). Przyrząd ustawia się w dany tryb (pętla nr 2, CONF MEAS) w naszym przypadku na zakres X. Następnie zaczyna sczytywać wartość mierzoną (pętla nr 1, READ MEAS) dopóki nie zostanie to przerwane jakimś czynnikiem – zmianą zakresu na wyższy lub niższy (ZAKRES GÓRA/DÓŁ w pętli nr 3). Zmiana zakresu powinna spowodować zatrzymanie pętli nr 1. Po zmianie konfiguracji w pętli nr 2, ponownie powtarzane by było sczytywanie wartości mierzonej z miernika, poprzez ponowne zapętlenie się pętli nr 1. Moim zdaniem (ale może są lepsze rozwiązania) można by było to zrobić na jeden z 2 sposobów:
1. zmiana wartości przełącznika ZAKRES GÓRA/DÓŁ powodowałaby wygenerowanie impulsu, który na krótki czas zatrzymywałby pętlę nr 1,
2. układ, który porównywałby stan przełącznika ZAKRES GÓRA/DÓŁ z chwili t i t-1 i jeżeli byłyby inne to wystawiałby np. TRUE, co zatrzymałoby pętlę nr 1, ale jak nic by się nie zmieniało to byłoby FALSE i pętla by działała.
p.s. Działanie pętli nr 3: przełącznikiem zmieniamy skokowo zakres pomiarowy przyrządu, przy czym zakresy są różne dla różnych funkcji tzn. np. dla ACi 1 i 3 dla DCV: 0,1 1 10 100 i 1000. Zakres ten jest podłączony jako zmienna lokalna do sterownika przyrządu. Sterownik jest tak zrobiony, że należy do niego wprowadzić konkretną wartość a on sam ustawia przyrząd w odpowiedni zakres. Pętla nr 3 działa prawidłowo i wystawia wartość zakresu na wejście sterownika CONF MEAS za pomocą przełącznika ZAKRES GÓRA/DÓŁ (dla DCV: 0-0,1V 1-1V 2-10V 3-100V 4-1000V, co widać na diagramie). Tak jest też w rzeczywistym przyrządzie.
Może trochę się rozpisałem, ale chyba teraz będzie wiadomo, o co mi chodzi.
Dzięki
[img]http://www.labview.pl/images/forum/whil ... iagram.png[/img]
tomekw
Posty: 22
Rejestracja: 23 kwie 2004 00:00
Lokalizacja: Koziegłowy k/Poznania

Post autor: tomekw »

[quote="rafal"]
1. zmiana wartości przełącznika ZAKRES GÓRA/DÓŁ powodowałaby wygenerowanie impulsu, który na krótki czas zatrzymywałby pętlę nr 1,
[/quote] moze tak: [img]http://www.labview.pl/images/forum/tomekw01.jpg[/img]
przy kazdej zmianie dioda sie zaswieci, co dalej to mozesz uzyc zmiennej w celu przekazania wartosci do petli (ale to ja zatrzyma, trzeba by srobic jakis sleep jeszcze).
PS prosze admina o przezucenie tego obrazka moze na serwer i zmiane linku :)
Awatar użytkownika
rafal
Posty: 39
Rejestracja: 12 lip 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Grudziądz

Post autor: rafal »

Też wpadłem na podobny pomysł.
Dzięki
ODPOWIEDZ