DAQ - dopasowanie wykresu do kanalu

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

DAQ - dopasowanie wykresu do kanalu

Post autor: Harnas »

Czesc,

dzis sprawa rozchodzi sie o dopasowanie wskaznikow, wykresow itp do odpowiednich kanalow wybranych przy bloczku DAQmx -Create Channel.
Kanaly sa zczytywane z pliku txt, ktory wyglada przykladowo tak:

50000 Abtastfrequenz in [Hz]
Dev1/ai10 Strom A-Seite Radiallager V-Achse
Dev1/ai0 Strom A-Seite Radiallager W-Achse
Dev1/ai11 Strom B-Seite Radiallager V-Achse
Dev1/ai3 Strom B-Seite Radiallager W-Achse
Dev1/ai15 Reglerausgang Axiallager
Dev1/ai1 Reglerausgang Radiallager B-Seite V-Achse
Dev1/ai2 Reglerausgang Radiallager B-Seite W-Achse
Dev1/ai5 POS Rotor Axiallager oben
Dev1/ai7 POS Rotor Axiallager unten
Dev1/ai2 Strom Axiallager

Na Frontpanel mam wykresy odpowiadajace wszystkim pozycjom z prawej kolumny. Strumien z bloczka DAQmx Read przekazuje do Index Array (tutaj wybieram wiersz w pliku txt) i nastepnie do odpowiedniego wskaznika.
Przykadowo chce kanal ai2 wyswietlac na wykresie "Strom Axiallager" to w Index Array wybieram index 9 (pierwsza linijka jest wczesniej juz usunieta z arraya).

Problem:
Mam przykladowo 2 kanaly w pliku txt:
50000 Abtastfrequenz in [Hz]
Dev1/ai10 Strom A-Seite Radiallager V-Achse
Dev1/ai2 Strom Axiallager

W takim przypadku nie moge dla wykresu "Strom Axiallager" zostawic Index 9 tylko bedzie to wtedy index 1 (przypominam, ze pierwszego wiersza nie licze).

Czy macie jakis pomysly jak to obejsc? Program bedzie uzywany w roznych doswiadczeniach, beda sie zmienialy kanaly i ich ilosc. Przez to tez tylko niektore wskazniki beda aktywne. Tylko jak dopasowac, zeby zawsze te wlasiwe pokazywaly wartosci z odpowiednich kanalow?



Pozdrawiam i dziekuje za jakiekolwiek wskazowki ;)
Harnas

PS. w pliku txt kolumny sa oddzielone tabulatorem. Tutaj cos mi go wcielo :P
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: PiDi »

A możesz pokazać ten front panel?
ObrazekObrazekObrazekObrazek
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: Harnas »

Ogolnie front panel jest w wersji czysto roboczej, zebym ogolnie wiedzial co sie gdzie wyswietla ;)

Wrzucam pare screenow zarowno z frontpanel jak i blockdiagramm.
Załączniki
Przekazywanie pomiarow na wskazniki. Bardzo roboczo bo tylko dla dwoch wybralem pozycje w arrayu.
Przekazywanie pomiarow na wskazniki. Bardzo roboczo bo tylko dla dwoch wybralem pozycje w arrayu.
Uruchamianie bloczkow DAQ z danymi odczytanymi z pliku txt
Uruchamianie bloczkow DAQ z danymi odczytanymi z pliku txt
block2.PNG (9.85 KiB) Przejrzano 14332 razy
Odczytywanie pliku txt i przekazywanie danych dalej
Odczytywanie pliku txt i przekazywanie danych dalej
Roboczy frontpanel
Roboczy frontpanel
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: PiDi »

No dobrze, to jak to się ma do tego, co pisałeś? Rozumiem, że kolejne elementy Kanalbeschreibung odpowiadają kolejnym tablicom data... I w czym teraz rzecz?
ObrazekObrazekObrazekObrazek
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

DAQ - dopasowanie wykresu do kanalu

Post autor: Harnas »

Jeden program musi miec zastosowanie przy roznych doswiadczeniach z rozna iloscia kanalow. Czasem wykorzystujemy tylko 3, czasem 11. W ten sposob mamy raz mniejszy array a raz wiekszy. Zauwazylem, ze jezeli przykladowo kanal do pomiaru napiecia w pliku znajduje sie w trzecim wierszu to po DAQmx Read tez trzeba wybrac trzeci wiersz (liczac od 0 bedzie to akurat index 4), zeby wskaznik pokazywal pomiary dla napiecia a nie przykladowo temperatury, ktora jest tez mierzona. Problem pojawia sie wtedy, kiedy usuniemy poprzedni wiersz. Pomiar napiecia spada wtedy z wiersza trzeciego na drugi. Po bloczku DAQmx Read dalej mam ustawione, ze kanal mierzacy napiecie jest w trzecim wierszu, mimo ze przesunal sie na druga pozycje.

Jezeli niektorych pomiarow nie robimy. Przykladowo nie potrzebujemy mierzyc tego nieszczesnego napiecia, wtedy wskaznik pokazujacy napiecie pozostaje na 0 a inne znajdujace znajdujace sie w pliku kanaly sa normalnie na wlasciwym wskazniku pokazywane.


Nie potrafie tego chyba lepiej opisac.
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

DAQ - dopasowanie wykresu do kanalu

Post autor: Jamal79 »

hmmm, czemu chcesz mieszac w DAXie?? musisz fizycznie tez odlaczac te kanaly??
Jak nie to lepiej zrobic opcje wyboru, ktory wskaznik ma program ewentualnie kopiowac do loga.

Mam podobne rozwiazanie w moim programie. Mam zrobiona tabele w ktorej sa przedstawiane dane z mozliwoscia wyboru indeksu danego kanalu. Do tego mozliwosc zapisania ustawien tabel w pliku tekstowym.
W ten sposob mozesz stworzyc konfiguracje do kilku typow powtarzajacych sie doswiadczen.
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

DAQ - dopasowanie wykresu do kanalu

Post autor: Harnas »

moglbys jakis prosty przykladowy VI podrzucic, bo srednio potrafie sobie to wyobrazic?
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: PiDi »

Ja za to nadal nie do końca umiem sobie wyobrazić, co Ty potrzebujesz - nie wiem, co Ty chcesz gdzie wyświetlać. Pokaż mi jeden obrazek, na który mam patrzeć i co mam na nim zobaczyć.

A póki co strzał...
Załączniki
daqmx.vi
LV2009
(21.56 KiB) Pobrany 595 razy
ObrazekObrazekObrazekObrazek
Awatar użytkownika
Harnas
Posty: 152
Rejestracja: 16 mar 2011 09:56
Wersja środowiska: LabVIEW 2009

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: Harnas »

Zrobilem to troszke inaczej. Kazdy wskaznik ma swoj numer i ten numer jest szukany w pliku tekstowym. Jak zostaje znaleziony to dostaje informacje w ktorym wierszu on jest i ta informacje przekazuje do wskaznika. Jezeli w ogole danego pomiaru nie robimy, to nie ma tego numeru wskaznika w pliku i wskaznik mozna zrobic np. niewidocznym.

Na zalaczonych screenach probowalem jeszcze raz na przykladzie opisac co sie dzieje. Moze troche wczesniej namieszalem, przepraszam. Dzieki za zaangazowanie i pomoc.
Załączniki
Przez Local Variable dane numer odpowiedni numer wiersza wybierany jest z arraya i pomiar pokazywany jest na wybranym wskazniku. W ten sposob, obojetnie czy "napiecie" bedzie na poczatku czy na koncu pliku z ktorego czytamy, obojetnie jaki kanal bedzie mu odpowiadal i obojetnie czy w ogole "napiecie" bedzie mierzone, wskaznik bedzie pokazywal wlasciwe wartosci.
Przez Local Variable dane numer odpowiedni numer wiersza wybierany jest z arraya i pomiar pokazywany jest na wybranym wskazniku. W ten sposob, obojetnie czy "napiecie" bedzie na poczatku czy na koncu pliku z ktorego czytamy, obojetnie jaki kanal bedzie mu odpowiadal i obojetnie czy w ogole "napiecie" bedzie mierzone, wskaznik bedzie pokazywal wlasciwe wartosci.
przekazanie do wskaznikow.PNG (7.9 KiB) Przejrzano 14250 razy
Wskaznik, ktory ma pokazywac napiecie ma numer 5. Przed startem pomiaru stalane jest w czy mierzone bedzie napiecie. Czyli czy wskaznik 5 w ogole znajduje sie w pliku. Jezeli tak, to w ktorym wierszu.
Wskaznik, ktory ma pokazywac napiecie ma numer 5. Przed startem pomiaru stalane jest w czy mierzone bedzie napiecie. Czyli czy wskaznik 5 w ogole znajduje sie w pliku. Jezeli tak, to w ktorym wierszu.
odczyt.PNG (9.34 KiB) Przejrzano 14252 razy
Wiersz "napiecie" moze byc w pliku tekstowym w dowolnym wierszu lub moze go w ogole nie byc. Wtedy wskaznik nie pokazuje nic.
Wiersz "napiecie" moze byc w pliku tekstowym w dowolnym wierszu lub moze go w ogole nie byc. Wtedy wskaznik nie pokazuje nic.
Plik tekstowy.PNG (2.14 KiB) Przejrzano 14252 razy
Jamal79
Posty: 289
Rejestracja: 01 maja 2012 14:14
Wersja środowiska: LabVIEW 2012
Lokalizacja: Farum

Re: DAQ - dopasowanie wykresu do kanalu

Post autor: Jamal79 »

Harnas pisze:moglbys jakis prosty przykladowy VI podrzucic, bo srednio potrafie sobie to wyobrazic?
Ciezko tak na szybko wyciac kawalek kodu, a no i dane beda niedostepne. Ja kozystam DataSocketa.

Wklejam PrtScrenna z tabelami i kodem czytajacym te tabele.
Moge wkleic snippeta do zapisu/odczytu tabel do pliku...

Architektura niejest powalajca, ale sposob jest bardzo praktyczny i jeszcze bardziej elastyczny. W tym przykladzie moge wybrac sobie dane z dwoch roznych DataSocketow (np. z dwoch roznych komputerow, adresow IP, itd). Dokonac obliczen na poszczegonych indeksach (np, z V na temp, z dPa na flow...itd) i zapisac wszystkie te dane do plikow pomiarowych oraz zapisac "zawartosc tabeli" do UCF (user configuration file), tak aby po kolejnym odpaleniu systemu wczytac te konkretne ustawienia...(np. dla kilku roznych typow pomiarow)...
Załączniki
aaa
aaa
ODPOWIEDZ