Problem z wydobyciem danych z pętli

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Strider
Posty: 2
Rejestracja: 11 mar 2009 17:11
Lokalizacja: Wrocław
Kontakt:

Problem z wydobyciem danych z pętli

Post autor: Strider »

Witam wszystkich!

Jestem nowy na forum, a za razem w samym temacie środowiska LabVIEW, więc proszę o wyrozumiałość.

Aktualnie pracuję nad programem sterującym zasilaczem Agilent E3631A. Wersja LabVIEW 8.5. Program składa się z części głównej ('zasilacz_ster_main.vi') oraz jednego subVI ('zasilacz_ster_core.vi').


WPROWADZENIE DO TEMATU:

Pierwsze okno struktury Flat Sequence programu 'zasilacz_ster_main.vi' to moja koncepcja sterowania pojedynczą linią karty pomiarowej, wykorzystywana w innej części projektu. Drugie okno zawiera podprogram 'zasilacz_ster_core.vi' i wyprowadzenia na panel czołowy. Cały program wykonuje się dwukrotnie dzięki pętli While Loop.

Jeśli chodzi o program 'zasilacz_ster_core.vi', służy on do zmiany napięcia w kanale +25V w zakresie (0-2)V (w przyszłości do 15V) z przyrostem 0.2 V/s. Tyle tytułem wprowadzenia.


MOJE PYTANIE:

Wszystko działa poprawnie z punktu widzenia zasilacza, jednak mam problem z wyświetlaniem aktualnych wartości napięcia i prądu na panelu czołowym głównego programu. Odświeżenie następuje dopiero po zakończeniu pracy pętli While Loop wewnątrz subVI (tudzież samego subVI), skutkiem czego obserwuję na panelu głównym jedynie osiągnięcie wartości ~2 V, zamiast regularnego przyrostu co 0.2 V. Na panelu podprogramu wartości te zmieniają się na bieżąco.

Z moich poszukiwań na forum wywnioskowałem, że sprawę mogłyby załatwić zmienne globalne, lub opcja Property Node. Niestety wszystkie moje próby zakończyły się niepowodzeniem - nie potrafię wyciągnąć bieżących wartości z pętli/podprogramu przed jej/jego zakończeniem. Domyślam się, że mogę popełniać jakiś elementarny błąd... tylko jaki? :|

W załączniku oprócz mojego programu dodaję używane przeze mnie sterowniki (Agilent E363X Series).
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

Problem z wydobyciem danych z pętli

Post autor: coolfon »

Jako że SubVI jest raczej nieskomplikowany, najłatwiej po prostu... nie zamykać jego zawartości w SubVI ;) Wtedy będziesz miał bezpośredni dostęp do indykatorów znajdujących się w pętli While w nim.

W załączniku masz przykład jak wyciągnąć wartość z SubVI przy pomocy Property Node.

A tak na zupełnym już marginesie - te Property Node które masz w zasilacz_ster_main.vi odnoszą się do indykatorów w tym własnie VI'ju, a nie w SubVI - nadanie tych samych nazw nic tu nie pomoże.
Ostatnio zmieniony 13 mar 2009 20:08 przez coolfon, łącznie zmieniany 1 raz.
Awatar użytkownika
Strider
Posty: 2
Rejestracja: 11 mar 2009 17:11
Lokalizacja: Wrocław
Kontakt:

Re: Problem z wydobyciem danych z pętli

Post autor: Strider »

Sęk w tym, że ten subVI to dopiero zalążek większego programu - aktualnie jest już ponad 3 razy większy i ciągle się rozrasta...

Natomiast bardzo dziękuję za przykład pokazujący jak rozwiązać mój problem. Jest to zrobione w taki sposób, że sam chyba nigdy bym na to nie wpadł :)

Zbudowałem w oparciu o Twoją konstrukcję odwołania w moim programie ale poprawność działania będę mógł sprawdzić dopiero w poniedziałek. Dam znać jak tylko się dowiem czy na pewno wszystko gra.

------------------------

Potwierdzam - sposób działa bez zarzutów, dokładnie o to mi chodziło :D/ Jeszcze raz dziękuję za pomoc.
Ostatnio zmieniony 16 mar 2009 11:12 przez Strider, łącznie zmieniany 1 raz.
_Amon_
Posty: 2
Rejestracja: 03 gru 2010 17:24
Wersja środowiska: LabVIEW 2010

Problem z wydobyciem danych z pętli

Post autor: _Amon_ »

coolfon pisze: W załączniku masz przykład jak wyciągnąć wartość z SubVI przy pomocy Property Node.
a gdzie ten załącznik?
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

Re: Problem z wydobyciem danych z pętli

Post autor: coolfon »

_Amon_ pisze:a gdzie ten załącznik?
Nie wiem, najwyraźniej zaginął w akcji :) Czego konkretnie Ci trzeba?
_Amon_
Posty: 2
Rejestracja: 03 gru 2010 17:24
Wersja środowiska: LabVIEW 2010

Re: Problem z wydobyciem danych z pętli

Post autor: _Amon_ »

Muszę wykonać pomiar charakterystyki częstotliwościowej "czarnej skrzynki". Stworzyłem sobie więc flat sequence: 1 część - inicjalizacja multimetru i generatora, druga: pomiary, trzecia - zamknięcie sprzętu. Pomiary wykonują się w pętli for, odpowiednią ilość razy, dla odpowiedniej ilości punktów z charakterystyki (podawane przez użytkownika). Mój problem polega na tym, że jeden punkt z charakterystyki jest zdejmowany kilkukrotnie (Multipoint w sterownikach HP) i ma być liczona jego średnia z tej serii pomiarowej. Średnia nie może być liczona w pętli pomiarowej, więc sprawa siękomplikuje. Próbowałem już wyciągać te wyniki zmiennymi lokalnymi, property nodem, itp. Jakieś hinty? (Dodatkowe utrudnienie: Seria pomiarowa dla jednego punktu jest wrzucana do tablicy po pewnym czasie, czyli po takim, po jakim multimetr zmierzy całą serię, chciałbym, żeby wyniki wywalane były za pętle właśnie po takiej serii - na bieżąco, a nie jak już się wykonają wszystkie pomiary)

Z góry dzięki za help ;)
ODPOWIEDZ