Strona 1 z 1

Wykres XY Graph

: 21 lut 2005 22:11
autor: labview
Do akwizycji danych z dwóch kanałów pomiarowych (NI PCI 6014) wykorzystuję poniższy diagram
[img]http://republika.pl/labview/akw00.png[/img] [img]http://republika.pl/labview/akw01.png[/img]
Zadaniem programu jest wyświetlenie pętli histerezy. Porównując wyniki uzyskane za pomocą programu Virtual Bench Scope (oficjalny program NI) oraz mój program "petle.vi" - można zauważyć pewne rozbieżności i dokładnie nie wiem z czego one wynikają.
Na poniższym rysunku przedstawiłem wyniki pomiarów dla sygnału 2Hz generowanego przez wyjście analogowe karty pomiarowej - po lewej stronie to wyniki uzyskane z Virtual Bench Scope z prawej strony wyniki uzyskane za pomocą programu "petle.vi" dla ustawionej podstawy czasu 1 sekunda w obu tych programach.
[img]http://republika.pl/labview/2Hz.png[/img]
Jak widać z powyższego rysunku wyświetlana pętla w programie "petle.vi" jest odwrócona. Częstotliwości generowanego sygnału się zgadzają w obu programach. Dla programu "petle.vi" jest o 200 pkt mniej ale to raczej nie wpływa na "odwrócenie pętli".
Częściowo problem można rozwiązać zmieniając przesunięcie fazowe pomiędzy przebiegiem A (czarny) i przebiegiem B (czerwony). W ten sposób przesuwając przebieg B w programie petle.vi o 200 pkt [poniższy rysunek] do przodu uzyskuje się pętlę wyświetloną tak jak dla programu Virtual Bench Scope
[img]http://republika.pl/labview/2Hz_przes.png[/img]
Jednak dla różnej wartości podstawy czasu są różne wartości o jakie trzeba przesunąć przebieg B. I tak przykładowo dla podstawy czasu 1 sekundy dla 1Hz = 400 pkt, 5Hz = 45 pkt, 10Hz = 190 pkt, 20Hz = 206 pkt.
Gdy pętle while odpowiedzialne za akwizycję na powyższych diagramach graficznych są umieszczone równolegle (bez pętli sekwencyjnej) to również nie rozwiązuje problemu "odwracania pętli"
Jeżeli ktoś zna sposób w jaki można zrealizować stałe przesunięcie fazowe między dwoma przebiegami prosiłbym o odpowiedź. Jeżeli ktoś miałby jakiś pomysł jak rozwiązać ten problem prosiłbym o odpowiedź.
http://republika.pl/labview/24.htm

: 24 lut 2005 14:50
autor: PMaj
Witaj

Mała prośba - napisz:
1. co chcesz zrobić (tylko bardziej całościowo) - co to są za sygnały ? - spodziewam się iż jeden to sygnał z generatora, a drugi to przetworzony ... ?
2. co chcesz uzyskać - na podstawie tego co mierzysz - ciągle nie wydaje mi się, że jest to histereza !! - chociaż tak wygląda - przecież nie mierzysz tego samego przebiegu tylko dwa - wykreślasz ch-kę zależności dwóch przebiegów

Po wykresach widać, że analizujesz inną liczbę próbek niż w drugim programie. Ważne jest aby mieżyć całkowitą liczbę okresów, więc musisz dostosować albo liczbę zbieranych próbek do częstotliwości mierzonej, albo odwrotnie. Poza tym widze jedną rzecz, która również moze mieć duży wpływ na przebieg, ale wstrzymam się aż do odpowiedzi co masz tak na prawde zrobić, żebym głupoty nie napisał.
Jeżeli mierzysz coś to należy analizować wynik a nie dopasowywać go - takie przesuwanie w fazie sygnałów tylko po to zeby pasowały lepiej to wiesz ...

Napisz co masz zrobić i co masz dostępne

PS. Aby ktoś miał analizować program, który przedstawiasz to posprzątaj go troszkę, ok? :wink:

Pozdrawiam

: 02 mar 2005 19:13
autor: labview
Problem już rozwiązałem - przyczyną było to że zczytywanie dwóch kanałów nie odbywało się w tym samym momencie. Do akwizycji używałem dwóch obiektów AI Wave i to stanowiło główny problem. Wystarczyło dołączyć do wejścia obiektu AI Wave jednowymiarową tablicę channels z elementami 0 i 1. Po takiej zmianie programu przesunięcie fazowe już nie występuje. Jednak pojawił się kolejny problem - może bardziej błachy ale o tym napiszę później.

: 02 mar 2005 20:12
autor: labview
O ile w poprzednim programie mogłem dokonywać wyboru kanałów za pomocą przełączników jak na poniższym diagramie: [img]http://www.republika.pl/labview/przelaczniki01.png[/img]
Każdej innej pozycji przełącznika odpowiadał inny numer kanału pomiarowego i za pomocą tego kodu możliwe było wybranie wszystkich kombinacji jakie mogły być pomiędzy kanałami A i B.
O tyle teraz jest z tym pewien kłopot – próbowałem rozwiązać ten problem w taki sposób [img]http://www.republika.pl/labview/przelaczniki02.png[/img]
Kod tego diagramu (chanels.zip) jest do ściągnięcia na stronie http://republika.pl/labview/ pod linkiem channels.vi
Jednak ten powyższy schemat nie funkcjonuje – cały czas w okienku channels (0) jest wpis 0,1 a powinien być dla przełącznika kanału A ustawionego na 0 i kanału B ustawionego na 2 – wpis w okienku channels (0) powinien być 0,2.
Nie chciałbym aby sterowanie wyborem kanałów odbywało się przez wpis do okienka channels (0) tylko za pomocą przełączników lub Booleanów.
Jeżeli ktoś wiedziałby jak rozwiązać taki problem to prosiłbym o odpowiedź.

: 03 mar 2005 01:29
autor: PMaj
Witam
Program działa poprawnie!
Nie działa tak jak trzeba - oto dlaczego: na diagramie są ukryte wartości
[img]http://www.ds14.agh.edu.pl/~pmaj/images ... anelsd.png[/img]
Jeżeli ustawisz Kanał A na zero to za każdym razem do zerowego indexu tablicy zostanie wpisana wartość 0,1 - czyli kanał zerowy i kanał pierwszy, natomiast do indexu 1 - wartość kanału B - czyli np. 2 ... index 2 to już pusty element:
[img]http://www.ds14.agh.edu.pl/~pmaj/images ... anelsp.png[/img]
Jeżeli chcesz rozwiązać problem bez wpisywania tylko przełączając to rzeczywiście "case" jest dobrym rozwiązaniem - tylko trzeba troche podrutować
:wink:
Pozdrawiam

: 04 mar 2005 10:43
autor: labview
I po problemie - dzięki PMaj za podpowiedź.