Utrata pomiarów

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
welniak
Posty: 4
Rejestracja: 04 sie 2005 00:00
Lokalizacja: Warszawa
Kontakt:

Utrata pomiarów

Post autor: welniak »

Witam!

Mam system pomiarowy z kartą NI PCI-6143 i piszę (rysuję) do niego oprogramowanie w LabView 7.0. Sterowniki do karty to DAQmx v 7.3.

Karta prowadzi pomiary w dość nietypowy sposób: na jedno z wejść cyfrowych podane są impulsy taktujące pomiar, na drugie impulsy wyzwalające serię pomiarów, a na wejścia analogowe - wartości mierzone.
Impulsy taktujące i wyzwalające pojawiają się cały czas w następującej zależności: 720 impulsów taktujących / 1 impuls wyzwalający (są to przetworzone impulsy z enkodera przyrostowego). Maksymalna częstotliwość impulsów taktujących to ok 150kHz, a wyzwalających odpowiednio 720 razy mniejsza.

Chciałbym zebrać na dysk każdą serię pomiarów (i ew. pokazać na ekranie, może byc co któraś seria). Natomiast gdy robię po prostu "DAQ read" -> Graph, to widzę, że zapamiętuję mniej więcej co drugą. Tak jakby na czas transferu danych z karty do pamięci komputera przestawała ona robić kolejne pomiary.

Próbowałem juz różnych ustawień zadania pomiarowego w MAX-ie: 720 pomiarów "HW triggered" i Continous, ale nie udało mi się uzyskac zadowalającego efektu.

Czy jest na to rada?

Innym pomysłem było skonfigurowanie innego zadania pomiarowego, które zebrałoby mi dane np ze 100 obrotów (72000 punktów) i zapamiętanie tego na dysku. Nie sprawdziłem tego jeszcze, ale jak się do tego ma stwierdzenie w specyfikacji karty, że ma ona 2046 bajtów FIFO. Czy jest tak jak myślę, że takie "długie" zadanie pomiarowe nie będzie mogło być utworzone?

Z góry dziękuję za wszelkie rady.


Wełniak
PMaj
Posty: 231
Rejestracja: 04 sty 2004 00:00

Re: Utrata pomiarów

Post autor: PMaj »

Witaj

Przeczytałem Twojego posta i w sumie to mam jedną radę - staraj się budować problem z małych klocków, ale działających. Jest cala masa rzeczy które mogą wplywać na ten problem, eliminować je można pojedyńczo - ustawiać w MAXie test panel i sprawdzać powoli, potem pisane programy najpierw sprawdzaj punkt po punkcie, potem resztę.
Tak na prawde to my nie wiemy czy impusly z enkodera dochodzą poprawnie i w ogóle jak napisany jest kod? nie staram się tu być mr. smart ass - miałem podobne problemy i wyeliminowałem je właśnie w taki sposób, że robiłem coś krok po kroku - przy czym każdy miał działać poprawnie

Pozdrawiam
pmaj
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Re: Utrata pomiarów

Post autor: bogdani »

Witaj

Jak wygląda twój program, czy czasem on nie zatrzymuje się na czas pobierania próbek?
Wrzuć tu kod, jak możesz i się przyjrzymy temu. Mamy podaną przez ciebie kartę pomiarową, więc można ją sobie zaemulować na czas testów, jakby co.
Nowe sterowniki, są wielowątkowe i nie powinno być problemów z dąstępęm do karty, tylko zostaje pytanie czy sterowniki wspierają tą właśnie kartę.

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
welniak
Posty: 4
Rejestracja: 04 sie 2005 00:00
Lokalizacja: Warszawa
Kontakt:

Re: Utrata pomiarów

Post autor: welniak »

Jeśli chodzi o stronę sprzętową (impulsy z enkodera), to sprawdziłem to dosyc dokładnie na oscyloskopie, więc tutaj jest raczej pewność.

Jeśli zaś chodzi o program, to nie odważę się wystawic go tutaj w formie, którą ma w tej chwili, bo byłoby to wystawienie "na pośmiewisko" :) Przygotuję wersję okrojoną i tę podeślę. Ale mogę w skrócie opisać jak to wygląda:

Jedna pętla while z warunkiem podłączonym do klawisza STOP. Przed pętlą" DAQmx Start Task", a w pętli DAQmx Read z timeout=-1 bloczek ustawiony jest tak, żeby zwracał wyniki w postaci dwuwymiarowej tablicy. Wyjście tego bloczku rozdziela sie i wchodzi na Express VI zapisujący do pliku LVM oraz na Graph-a.

Docelowo odczytywane dane mają przechodzić jeszcze przez kilka etapów prostej obróbki (znajdowanie maksimum, filtracja, itp) i nawet to juz narysowałem, ale chyba nie to powoduje zacięcia o których wspominałem.

Czuję "przez skórę", że dobrze by było, gdyby odczyt z karty, wizualizacja i zapis odbywały się w niezależnych wątkach, a dane między nimi szły przez odpowiednie bufory lub kolejki. Wtedy np. wizualizacja nie blokowałaby pomiaru. Problem w tym, że jeszcze nie wiem jak taką strukturę zrealizować w LabView.

Pozdrawiam

Wełniak

PS. Dołączam jeszcze schemat mojego programu (uproszczony)
PMaj
Posty: 231
Rejestracja: 04 sty 2004 00:00

Re: Utrata pomiarów

Post autor: PMaj »

Witam
welniak pisze:Czuję "przez skórę", że dobrze by było, gdyby odczyt z karty, wizualizacja i zapis odbywały się w niezależnych wątkach, a dane między nimi szły przez odpowiednie bufory lub kolejki. Wtedy np. wizualizacja nie blokowałaby pomiaru. Problem w tym, że jeszcze nie wiem jak taką strukturę zrealizować w LabView.
Tak. Nalezy to robić w niezależnych wątkach. Jak? - wrzucić to do dwóch niezależnych pętli while, a dane przekazywać przez kolejkę FIFO - bo jest najpewniejsza. Proste zastosowanie kolejki (queue) znajdziesz w przykladowych programach lub na forum gdzies wczesniej zamiescilem prostrzy przyklad chyba ... jak sie nie myle w topiku o liczeniu impulsów - to i tak tylko schemat ideowy.

Pozdrawiam
Piotr Maj
Nie jestem leniwy
Mam zawyżone wymagania motywacyjne
ODPOWIEDZ