Agilent 34410A + LabView 8.5

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
Awatar użytkownika
conioo
Posty: 53
Rejestracja: 22 mar 2006 00:00
Wersja środowiska: LabVIEW 2014
Lokalizacja: Kraków

Agilent 34410A + LabView 8.5

Post autor: conioo »

Jeśli chcesz zrobić wiele pomiarów w krótkim czasie to możesz skorzystać z bloczka Read (Multiple Points) zamiast (Single Point). Dostaniesz wtedy tablicę pomiarów.
Drugą metodą jest wykorzystanie wbudowanego Data Loggera - szczegóły wraz ze składnią SCPI są tu: http://cp.literature.agilent.com/litweb ... -90001.pdf strona 78.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Re: Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

o multiplocie już pisałem, ale kolega chyba nie do końca zrozumiał jak ma to zrobić, więc pozwoliłem sobie przerobić trochę program. Jest dużo niedoróbek (w szczególności obsługa błędów), ale wydaje się działać. Tyle że jakoś program nie reaguje (może sterownik zły?) na parametr "liczba sampli na sekundę" w trybie multiplot, między innymi dlatego sposób ten jest nie do końca poprawny. Kolejna sprawa to ustawienie czasu integracji (uśrednianie w multimetrze), myślę że nie ma sensu robić szybciej niż te 50 pomiarów/s, gdyż zbyt dużo zakłóceń wchodzi z sieci zasilającej. A i zwróć uwagę na to, co się dzieje gdy włączysz "autorange".

A właśnie, swoją drogą to dlaczego nie chciałeś robić tego - jak proponuje conioo - na zasadzie sczytywania danych z dataloggera? - Możesz tam ładnie ustawić ile próbek i jak często, a później tylko to odczytać.
Załączniki
temperatura.vi
(32.04 KiB) Pobrany 382 razy
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

spec.kolombo pisze:o multiplocie już pisałem, ale kolega chyba nie do końca zrozumiał jak ma to zrobić, więc pozwoliłem sobie przerobić trochę program
Próbowałem użyć bloczka Read w opcji "Multi Points", ale mankament tego jest taki, że nie wiem z jaką częstotliwością zbierane są pomiary. Pomimo tego, że wpisuję wartości np. 1000 ms czy 5000 ms - niestety pomiar tyle nie trwa tylko zawsze dłużej nie wiem dlaczego? Poza tym gdybym wiedział z jaką częstotliwością opcja "Multi Points" zwraca pomiary - wszystko byłoby OK.
spec.kolombo pisze:Tyle że jakoś program nie reaguje (może sterownik zły?) na parametr "liczba sampli na sekundę" w trybie multiplot
Właśnie... czy zachowuje się tak jak piszę wyżej?
spec.kolombo pisze:Kolejna sprawa to ustawienie czasu integracji (uśrednianie w multimetrze), myślę że nie ma sensu robić szybciej niż te 50 pomiarów/s, gdyż zbyt dużo zakłóceń wchodzi z sieci zasilającej.
A i zwróć uwagę na to, co się dzieje gdy włączysz "autorange".
Jak wyraża się ten czas integracji? PLC (Power Lines Cycles) to jaka to jednostka? Jak to się ma do jakiegoś odniesienia/sekund?
Jak czas integracji wpływa na częstotliwość pomiarów?
Jak tylko będę przy multimetrze sprawdzę działanie Twojego programu spec.kolombo i zdam relację (jeszcze dzisiaj lub jutro ok. południa).
spec.kolombo pisze:A właśnie, swoją drogą to dlaczego nie chciałeś robić tego - jak proponuje conioo - na zasadzie sczytywania danych z dataloggera? - Możesz tam ładnie ustawić ile próbek i jak często, a później tylko to odczytać
.
Wcześniej niż teraz nie wiedziałem i istnieniu takiego narzędzia jak datalogger, toteż nie używałem go.

Masz na myśli taki vi (jego funkcjonalność) jak przedstawia to poniższy rysunek:
Obrazek
(http://cnx.org/content/m12273/latest/)
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

NPLC - ile cykli zasilania sieciowego ma uśrednić. Czyli jeśli jest to 1 to będzie mierzyć z częstotliwością 50Hz (w Polsce). Ma to duże znaczenie przy małych sygnałach, bo wpływ zakłóceń pochodzących od zasilania (a on jest jednym z większych problemów) jest niwelowany. Sprawdziłem, da się ustawić (za pomocą innego bloczka) co ile ms ma mierzyć, ale tutaj musisz wybrać (opiszę to na przykładach):
wariant 1. Ustawiasz pomiar co 10ms - masz szybkie pomiary, ale amplituda zakłóceń duża ze względu na uśrednienie mniej więcej połowy cyklu napięcia zasilania.
wariant 2. ustawiasz NPLC na 1. Otrzymujesz wyniki ze zredukowanymi zakłóceniami, ale z częstotliwościa 50Hz+-2% (bodajże takie są parametry sieci w polsce).
wariant 3. ustawiasz pomiar co 20ms - otrzymujesz częstotliwość próbkowania równą 20ms, ale ciut gorzej jeśli chodzi o zakłócenia.
najlepiej sam się pobaw tymi ustawieniami i zobacz co się dzieje.
Żeby mieć pomiary co zadany czas wymień bloczek "configure integration" na "configure aperture".
A i jeśli nie chcesz mieć dodatkowego błędu związanego z czasem, to też musisz wywalić główną pętlę i od razu odczytać te xxx próbek. Bo obliczenia po odczytaniu, otwarcie komunikacji + nieznane opóźnienie które generuje system operacyjny może generować opóźnienie między odczytaniem próbek a rozpoczęciu nowego pomiaru.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

Jak w Data Loggerze (przycisk Data Log na panelu przednim) ustawić parametr INTERVAL poniżej 369,05 ms? Na 78 stronie dokumentacji jest napisane:
The 34410A/11A/L4411A allows you to set the following data logging
parameters: START DELAY, INTERVAL, EVENTS/TIME (COUNT or DURATION).
• START DELAY is the delay time (0 to 3600 seconds) after initiating a trigger,
before the data logging function takes its first reading.
• INTERVAL is the time (20 μs to 3599.99999 s) between subsequent readings.
The minimum interval is configuration dependent and may be greater
than 20 μs.

• EVENTS/TIME is the total duration of the data logging session. You can set a
COUNT of total readings, with N SAMPLES settable from 1 to 50,000 readings.
Or, you can set a DURATION in hours, minutes and seconds. The maximum
duration that you can set is limited to that which results in 50,000 readings,
but in no event more than HH:MM:SS = 99:59:59 (just under 100 hours).[/b]
Natomiast nie jest napisane jak i gdzie w MENU multimetru zmienić tę wartość lub od czego ona jest uzależniona. Jak zmienić tę wartość na chociaż 1 ms?
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

Zmniejsz uśrednianie w multimetrze.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

OK, juz na to wpadłem. Ustawiłem NPLC na 0.006 i ustawiłem parametry Data Logger na:

Kod: Zaznacz cały

START DELAY = 0 us
INTERVAL = 800 us
NUMBER of SAMPLES = 50 000
oprócz tego:

Kod: Zaznacz cały

AUTO RANGE = No
RANGE = 100 mV
To wszystko ustawiłem z palca (z Panelu przedniego). Teraz chce to ustawić żeby robić to przy użyciu LV.
Czy są dostępne bloczki do ustawień Data Loggera z biblioteki Agilenta? Mam na myśli ustawienia parametrów o których piszę powyżej.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

A co z moim programem? Przecie opisałem Ci jak to zrobić normalnie, bez data loggera...
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

Twój program - spec.klombo:
Wymieniłem bloczek "configure integration" na "configure aperture" no i przy ustawieniu Configure aperture na 0,001 ms w okienku liczba pomiarów na sekundę pojawia się liczba 100, czyli rzekomo co 10 ms (w pliku jest 100 pomiarów) - ale tak czy inaczej wchodzą dodatkowo opóźnienia systemu operacyjnego więc wychodzi znacznie więcej niż 10 ms, poza tym to tak na słowo honoru ta wartość okresu. W Data Loggerze jest wszystko dokładnie ustawiane i nie ma ingerencji komputera (komunikacji z komputerem) podczas każdego pomiaru. Poza tym zmiana liczby wykonania pętli (okienko "liczba pomiarów") nie ma na nic wpływu.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

ojejciu... to jak modyfikujesz to trzeba spojrzeć też na inne rzeczy. Przecie tam trzeba jeszcze skonfigurować bloczek read multiple point. Tam ustawić pomiar 50k próbek, dać mu czasu na to 50000X10ms+opóźnienie 200ms (bodajże) na otwarcie komunikacji i masz program gotowy...
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

a właśnie, popatrz czy naprawdę ma sens robić tak szybko pomiary. Bo wątpię żeby termopara miała szybszą odpowiedź niż te 20ms, a przy czułości rzędu 50uV, błąd multimetru zdecydowanie popsuje Tobie "jak najdokładniejszy pomiar".
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

Więc:

vi jak w załączniku. Modyfikacja o 2 dodatkowe bloczki:

- Configure Aperture [wartość zadana: 0,001 s]
- Configure Integration [wartość zadana: 0,006 NPLC]

pozostałe parametry i wartości (Read Multi Points):

- Maximum Time: 50200 ms
- Number of Sample: 50 000 samples

I rezultat taki:
- liczba pomiarów na sekundę: 910,857 Hz, zatem pomiar co 1,09 ms
- liczba pomiarów zapisanych w pliku: 45725 wyników
- zgłoszony błąd: Maximum time has been exeeded. Increase Maximum time for larger count samples.... Zapewne trzeba zwiększyć czas z 50200 na więcej (no ale na razie nic...).
- czas pomiarów ze stoperem w dłoni: ~ 51 s

Jest bardzo bardzo dobrze! Zaraz większe czas Maximum time i puszę pomiar właściwy to zobaczymy jak będzie.
Załączniki
temperatura 2.vi
(34.91 KiB) Pobrany 359 razy
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Agilent 34410A + LabView 8.5

Post autor: spec.kolombo »

zmieniaj aperturę tylko, integration time nie musisz.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

No i jak już prawie jest dobrze, to nie mam termopary referencyjnej ;/, więc nic nie zmierzę sensownego. Muszę kupić nowe termopary. Ta wskazuje temperaturę pokojową na 31 st. C, a już wcześniej ktoś mi powiedział, że mu nie działała poprawnie... Zatem do poniedziałku.

Aaaa... nie tracąc czasu:
Dotychczas stosuje metodę kompensacji: dwie termopary typu K połączone w szereg. Jedna zanurzona jest w mieszaninie lodu z wodą i służy jako referencyjna (kompensuje napięcie zimnego końca drugiej termopary), a druga jest pomiarowa. Mankament może być taki, że mieszanina lodu z wodą nie koniecznie musi mieć zawsze te 0 st. C +/-0,5 st. C. Zauważyłem w LabView (jak wcześniej można przeczytać) bloczek "Convert Thermocouple Reading.vi". Ma jedno (z wielu) ciekawe wejście: CJC Sensor (albo IC Sensor albo Thermistor). Rozumiem, że chodzi tu o źródło referencyjne temperatury. Teraz mam pytanie: jaki to ma być układ scalony lub termistor i jak podłączony do LabView i jak podłączony do termopary?
teslabox
Posty: 80
Rejestracja: 24 mar 2010 15:27
Wersja środowiska: LabVIEW 2010

Re: Agilent 34410A + LabView 8.5

Post autor: teslabox »

Witam ponownie!

W weekend miałem możliwość dostępu do multimetru Fluke 8846A (z komunikacją RS232, niestety bez USB, ale...), z pomocą udało mi się komunikować z tym multimetrem po RS232 przy użyciu terminala i komend tekstowych. Muszę powiedzieć, że byłem zadowolony z tego rozwiązania w 100%. Chciałbym to rozwiązanie przełożyć na mojego Agilenta 34410A i USB.
Spec.kolombo - nieco zmodyfikowałem Twój program (read fast.vi) w oparciu o dokumentację Agilenta - Agilent 34410A/11A Command Quick Reference http://www.home.agilent.com/upload/cmc_ ... erence.pdf, jednakże nie wiem - nie jestem pewien czy wszystkie komendy wysyłać do multimetru zaraz za bloczkiem "Initialize.vi" (już na samym początku programu) czy trzeba je jakoś wysłać później przy użyciu bloczków VISA Write? Program też nic nie zwraca do pliku i podaje błąd: "VISA Read in read fast.vi" i tworzy pusty plik.

Tu są komendy, którymi komunikowałem się z Fluke:

Kod: Zaznacz cały

*cls                       /czyści
conf:volt:dc 0.1     /pomiar napięcia stałego z rozdzielczością 0,1V 
volt:dc:nplc 0.02    /uśrednianie NPLC ustawione na 0.02 
zero:auto 0            /autozerowanie wyłączone 
trig:sour imm        /źródło wyzwalania natychmiastowe 
trig:del 0               /opóźnienie wyzwalania 0 sekund
trig:coun 1            /ilość cykli wyzwolenia 1
disp off                 /wyświetlacz wyłączony 
syst:rem               /sterowanie zdalne (remote)
samp:coun 1000    /ilość próbek (pomiarów) 1000
:INIT; *OPC?          /włączenie wykonania pomiarów z odczytem rejestru OPC
:FETCH?               /odczyt 1000 pomiarów z pamięci multimetru
A tu komendy, które wg mnie trzeba wysłać do Agilenta, aby dobrze zrobić pomiary:

Kod: Zaznacz cały

*CLS                             /czyści
SYST:BEEP:STAT OFF    /wyłączenie głośniczka
DISP OFF                      /wyłączenie wyświetlacza

CONF:VOLT:DC 1, 0.001    /ustawienie pomiaru napięcia stałego
VOLT:APER 0.001             /okres wykonywania pomiarów co 1 ms
VOLT:NPLC 0.006             /czas uśredniania
VOLT:NULL OFF               /nie wiem dokładnie co to...
VOLT:RANG 1                  /zakres do 1 V
VOLT:RES 0.000001         /rozdzielczość do 1 mikrowolta
VOLT:ZERO:AUTO ONCE   /autozerowanie włączone jednorazowe

TRIG:SOUR IMM              /źródło wyzwalania natychmiastowe 
TRIG:DEL 0                     /opóźnienie wyzwalania 0 sekund
TRIG:COUN 1                  /ilość cykli wyzwolenia 1

SAMP:COUN 1000            /ilość próbek (pomiarów) 1000
INIT; *OPC?                     /włączenie wykonania pomiarów z odczytem rejestru OPC
FETCH?                          /odczyt 1000 pomiarów z pamięci multimetru
Jak skonstruować program (vi), aby wysłać do multimetru Agilent powyższe komendy (algorytm) - algorytm, który działał z multimetrem Fluke przez terminal?
Jaka jest składnia tego języka komend? Bo zauważyłem czasami średniki na końcu każdego wiersza.
Finał finałów mam nadzieje jest taki, że: zmniejszę APERTURE poniżej 1 ms (ile się da realnie) oraz uzyskam dokładność częstotliwości pomiaru.
Załączniki
read fast.vi
(17.72 KiB) Pobrany 383 razy
ODPOWIEDZ