Akwizycja danych temperatur w Labview

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
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Akwizycja danych temperatur w Labview

Post autor: aaddaas »

Dokładnie stworzenie programu pozwala Ci struktura Producent-Consumer, o której Ci wcześniej wspominałem, a którą możesz znaleźć File-> New... ->VI->From Template->Frameworks->Design Patterns-> Producer/Consumer Design Pattern (Events)
Obrazek
lockdown9
Posty: 12
Rejestracja: 19 lis 2014 23:09
Wersja środowiska: LabVIEW 2013

Akwizycja danych temperatur w Labview

Post autor: lockdown9 »

Jak przyspieszyć odpowiadanie programu do 100ms ?
Nadal nie wiem jak się do tego zabrać. Nie potrafię zrozumieć jak działają te kolejki. Nie mógłbyś mnie jakoś nakierować co mam teraz zrobić. Nadal jestem na etapie tego programu do zapisu danych w jednej pętli.
Niestety nie znam tego programu.
Sądzę że po utworzeniu drugiej pętli, muszę za pomocą bloku "obtain queue" wyprowadzić do niej "task out", "data" i "error out", z pierwszej pętli. A dalej nie wiem.
Ostatnio zmieniony 23 lis 2014 16:36 przez lockdown9, łącznie zmieniany 1 raz.
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Akwizycja danych temperatur w Labview

Post autor: aaddaas »

W załączniku masz BARDZO podstawową wersję programu, który Ciebie interesuje. Nie jest odporny na błędy, ani zbudowany zbyt profesjonalnie, ale robi robotę.
By mieć odpowiedź na poziomie 100ms musisz mieć częstotliwość próbkowania 10 razy większą od ilości próbek na kanał.
Załączniki
Resistance.vi
(107.93 KiB) Pobrany 331 razy
Obrazek
lockdown9
Posty: 12
Rejestracja: 19 lis 2014 23:09
Wersja środowiska: LabVIEW 2013

Akwizycja danych temperatur w Labview

Post autor: lockdown9 »

Witam ponownie po bardzo długiej przerwie, niestety ostanio byłem bardzo zajęty i niektóre sprawy musiałem odłożyć na później. Dziękuję bardzo za program która Pan stworzył, jednak nie do końca rozumiem w jaki sposób działa. Rozumiem że zostały ustalone pewne progi do których porównywana jest wyliczona średnia wartość z kilku kolejnych pobranych wartości. Następnie po wyliczeniu i w zależności czy wartości są większe bądź równe od progu zapala się czerwona ikona w przypadku przekroczenia lub zostaje zielona jezeli data może być zapisywana. Mam nadzieję że wszystko dobrze zrozumiełem do tej pory.
Dalej zaczyna się etap którego nie rozumiem. Odczytane dane trafiają do tej małej pętli i nie wiem co tam się dzieje. Nie rozumiem również jaką funckję pełni bloczek "array of waveforms" i tego co po nim się dzieje.

Jeszcze jedno pytanie, czy funkcja sample compression jest odpowiednia aby wyliczyć mi średnią z kilku kolejnych próbek odczytanej temperatury.

Dziękuję serdecznie za udzieloną pomoc i przepraszam za długi okres bez odzewu.
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Akwizycja danych temperatur w Labview

Post autor: aaddaas »

Dobrze rozumujesz.
Bloczek po "array of waveforms" jest inicjacją kolejki. Kolejka, to taki system przesyłania danych z jednego miejsca programu do drugiego i ustawiania go w kolejce. "Array of Waveforms" jest deklaracją typu danych, jakie będzie obsługiwać dana kolejka. Dane do kolejkujemy przy pomocy bloczka, który znajduje się w Case Structure sterowanym przyciskiem "zapisz". Jeśli jest on wciśnięty, to dane są kolejkowane. Druga pętla While zawiera w sobie bloczek "dequeue element", który odbiera po począwszy od najstarszego elementu z kolejki. Wszystko dokładniej wytłumaczone masz w kursach LabView (przypuszczalnie Core 2), polecam się mu przyglądnąć.
Co jest istotne w takiej konstrukcji - Druga pętla czeka aż uzyska dane od pierwszej kolejki, ale działają one z niezależnymi prędkościami (wieeeelka zaleta programowania w LabView) ;)

Odpowiadając na drugie pytanie: W pomocy do bloczka Sample Compression jest zapis, że wykorzystywana metoda, to średnia. Zatem przypuszczam, że jak najbardziej może zostać wykorzystana do tego zadania;)

Wesołych!
Obrazek
lockdown9
Posty: 12
Rejestracja: 19 lis 2014 23:09
Wersja środowiska: LabVIEW 2013

Akwizycja danych temperatur w Labview

Post autor: lockdown9 »

1. A jeżeli chodzi o bloczek, który nazywa się "release queue" to jaką funkcję pełni ? (opisy bloków w programie Labview dla laika mogą być czasem trochę nie zrozumiałe) ;)

2. Również, nie rozumiem dlaczego, kiedy chcę aby akwizycja danych była zakończona po wciśnięciu przycisku stop to nie odbywa się to od razu. Mam tu na myśli to, że później pojawia się błąd o próbie akwizycji próbrek, które nie są dostępne.

3. "Co jest istotne w takiej konstrukcji - Druga pętla czeka aż uzyska dane od pierwszej kolejki, ale działają one z niezależnymi prędkościami (wieeeelka zaleta programowania w LabView) "
Czyli w moim przypadku np. jest ustawiona funckja Wait, która powoduje że zakończenie pracy "Producent Loop" odbywa się po 100 ms (tak jest ustawione) co pozwala na szybszą pracę "Consumer Loop" i tym samym szybsze odbieranie danych z kolejki, prawda ?
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Akwizycja danych temperatur w Labview

Post autor: Jamal79 »

Witaj.
Dalej masz problem z tym pomiarem??
1. Relese ma za zadanie zamkniecie kolejki, raczej niezbedne aby poprawnie zamknac program. Flushem mozesz oczyscic kolejke i dalej z niej kozystac. Np w kolejnym pomiarze, tescie.
2. Tu pojawia sie flush, powinienes go uzyc aby oczyscic kolejke, np do pliku. Kolejka ma funkcje FI-FO, jezeli zamkniesz logowanie (zapis do pliku i uwolnisz do tych plikow np. referencje) to program bedzie pokazywal blad.
3. WIIEEEEEELKA zaleta jest to, ze kolejka ma FIFO, wiec predkosc zapisu nie wplywa na predkosc pomiaru. Jezeli twoj kod jest poprawny (sam go nie ogladalem) to predkosc akwizycji danych jest taka jak w DAXsie. Petla akwizycji wrzuca dane do kolejki, kolejna petla je sobie zapisuje w takim tepie na jaki jej twoj sprzet pozwala. Kolejnym plusem jest, to ze mozesz rowniez wyswietlic te dane live np, uzywajac sygnalizacji (notifieria), bez wiekszego wplywu na predkosc akwizycji...

Ignorujac te wszystkie teoretyczne wywody, do podanej karty jest ciezko podpiac dokladny sprzet pomiarowy, wiec nie rozumiem tej paniki w glosie. Im wiecej danych tym wiecej ich obrobki...
lockdown9
Posty: 12
Rejestracja: 19 lis 2014 23:09
Wersja środowiska: LabVIEW 2013

Re: Akwizycja danych temperatur w Labview

Post autor: lockdown9 »

Dziękuje za odpowiedź na moje pytania, program już działa tak jak chciałem. Duże podziękowania za wszelką pomoc z Pana strony, mam nadzieję że już wszystko będzie dla mnie jasne.

Pozdrawiam
ODPOWIEDZ