LabVIEWForum.de
Kontinuierliche Temperaturerfassung (Agilent 34970A) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Instrument IO & VISA (/Forum-Instrument-IO-VISA)
+---- Thema: Kontinuierliche Temperaturerfassung (Agilent 34970A) (/Thread-Kontinuierliche-Temperaturerfassung-Agilent-34970A)

Seiten: 1 2


Kontinuierliche Temperaturerfassung (Agilent 34970A) - dbuckl - 31.01.2014 09:01

Hi Leute,

ich arbeite momentan an einer Temperaturregelung und verwende dazu das Agilent 34970A und das dafür erhältliche Treiberpaket (Agilent Treiberpaket).

Zudem habe ich mir auch das Handbuch mit den einzelnen SCPI Befehlen dazu (Handbuch) angesehen und damit auch schon eine funktionierende Temperaturmessung programmiert über den "MEAS:TEMP? TC,K, (@107)"-Befehl.

Doch die Messung ist vergleichsweise langsam mit dem was das Gerät eigentlich kann (dauert hier 160ms zwischen zwei Werten), da das Gerät mit diesem Befehl über das Relais jedesmal neu auf den Kanal 107 umschaltet.
Nun habe ich aber gesehen das man über den ROUT:SCAN (@107) Befehl schon im Vorraus eine feste Scanliste festlegen kann und es bei nur einem gewählten Kanal dann dementsprechend auch nicht mehr umschalten sollte. Außerdem kann man scheinbar auch noch einen relativen Zeitstempel je Messung auslesen was für eine Regelung zur ermittlung der Einschwingzeit relativ wichtig wäre.

Leider sind in dem Handbuch viel zu wenig Beispiele für mich um zu verstehen in welcher Reihenfolge ich die Syntax anordnen muss und welcher Teil in eine Schleife soll. Also wer ähnliche Messung mit einem Agilent (denke die Befehle sind auch bei anderen Modellen gleich!?) gemacht hat und die syntax besser versteht, ich wäre sehr dankbar über eine Hilfe. Ich würde es am liebsten direkt über die SCPI-Befehle machen da ich so keine unnötigen Funktionen wie im Treiber integriert habe und auch komplett verstehe was ich da mache.

Andere Möglichkeit ist über den Treiber. Hier habe ich mich an das, im Treiber enthaltene Beispiel "Agilent 34970A AdvancedScan" gehalten und anstelle der Bausteine zur Config von Widerstand und Spannung den der Temperatur verwendet.
Komischerweise funktioniert es im Highlighting Modus und gibt mir auch keinen Error-Code aus, in Echtzeit piept das Gerät einfach nur zweimal und die Error lampe leuchtet. Zudem wird mit diesem VI scheinbar auch nur ein Wert gelesen und nicht kuntinuierlich.
Falls jemand schön öfter mit dem Gerät gearbeitet hat? Ich wäre sehr dankbar über eure Hilfe! VIs sind im Anhang

lv11_img


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - GerdW - 31.01.2014 09:54

Hallo domi,

hier hatte ich dir vor zwei Tagen schon mal vorgeschlagen, das Gerät nur einmal zu konfigurieren und dann nur noch neue Messwerte abzufragen.

Hast du das probiert? Was kam dabei heraus?
Warum machst du das im aktuellen Beispiel-VI nicht?

Zitat:Komischerweise funktioniert es im Highlighting Modus und gibt mir auch keinen Error-Code aus, in Echtzeit piept das Gerät einfach nur zweimal und die Error lampe leuchtet.
Erste Vermutung: das Gerät soll Befehle ausführen, die eine gewisse Zeit benötigen. Diese Zeit ist im Highlight-Modus gegeben, aber nicht bei normaler Ausführung.
Also: welche Befehle führen zum Fehler? Hast du schon mal probiert, dies z.B. mit Breakpoints zu ermitteln?


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - dbuckl - 31.01.2014 11:14

(31.01.2014 09:54 )GerdW schrieb:  Hallo domi,

hier hatte ich dir vor zwei Tagen schon mal vorgeschlagen, das Gerät nur einmal zu konfigurieren und dann nur noch neue Messwerte abzufragen.

Hast du das probiert? Was kam dabei heraus?
Warum machst du das im aktuellen Beispiel-VI nicht?

Genau das wollte ich jetzt machen Blush Ja um es in das aktuelle VI zu programmieren bräuchte ich am besten die richtigen SCPI Befehle. Oder aber ich mache das eben doch über die Treiberbausteine, da ich mir hier allerdings auch nicht sicher war wie das funktioniert wollte ich es erst mal eigenständig, in dem ich das Treiberbeispiel verändere, versuchen. Später hätte ich das umbebaute Bsp dann in Initialisierung und Messung aufgeteilt und wieder in das Hauptprogamm eingebaut.........wenn es dann funktioniert.

Habe nun aber über die Supporthotline von Agilent schon eine Befehlsanordnung die zumindest gerade im MAX funktoniert hat, sie macht aber noch nicht ganz das was ich will:

*RST %Reset
CONF:TEMP\sTC,K,(@107) %Configuration der Messung
ROUT:SCAN\s(@107) %festgelegt das nur dieser Kanal gelesen werden soll
FORM:READ:TIME\sON %Zeitstempel an
FORM:READ:TIME:TYPE\sREL %Relativer Zeitstempel
TRIG:COUN\sINF %Trigger Count (Trigger Source ist Default auf Intern)
INIT %Initialisieren
{
R? 1 %Abfrage 1 Wert aus dem Buffer
}
ABOR %Abbrechen der Messung

Im MAX habe ich denn hinter jeden Befehl noch \n und dann hat es funktioniert, allerdings liest er nun so oft er kann und ich habe über klicken auf Query viel langsamer ausgelesen, so kam es mir vor als würde ich z.B. gerade den 50 Wert auslesen wobei schon der 900ste in den Buffer geschrieben wurde. Also fehlt noch ein Befehl indem festgelegt wird das erst wieder geschrieben wird wenn ausgelesen wurde, was allerdings nicht so einfach ist, da die Messung auf jedenfall nicht neugestartet werden darf da mir sonst die Zeitstempel verloren gehen Sad alles nicht so einfach.

Nunja ich lese mal weiter im Programmierhandbuch, falls jemand zu der Syntax eine Anmerkung hat oder weiß wie ich das mache bitte hier antworten Guru1 . In dem Treiberbeispiel wird das irgendwie über *ESE , *ESR und *OPC gemacht aber mit diesen Status Registern kenn ich mich leider null aus Sad

Gruß Domi

PS: die geschweiften Klammern sollen die Whileschleife darstellen Wink


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - GerdW - 31.01.2014 11:37

Hallo domi,

dann lies dir doch mal die Hilfe zu FETCH? und READ? durch. Da geht es um das Auslesen des kompletten Read-Buffers und nicht nur des aktuellen Messwerts…


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - dbuckl - 31.01.2014 12:26

(31.01.2014 11:37 )GerdW schrieb:  Hallo domi,

dann lies dir doch mal die Hilfe zu FETCH? und READ? durch. Da geht es um das Auslesen des kompletten Read-Buffers und nicht nur des aktuellen Messwerts…

Habe ich beide schon ausprobiert, FETCH? hat bei mir nicht funktioniert und bei READ? werden zwar sauber die Messwerte ausgelesen aber auch jedesmal eine neue Messung gestartet weshalb mir die Zeitstempel verloren gegangen sind.

Naja mit dem oben gegebenen Code funktioniert das soweit gut bis auf das ich momentan noch veraletete Werte lese solange ich nicht so schnell lese wie das Gerät in den Speicher schreibt. Aber das bekomme ich hoffentlich auch noch in den Griff Blush


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - dbuckl - 03.02.2014 13:23

So ich habe es jetzt doch mit dem READ? Befehl gemacht. Damit konnte ich einfach festlegen das nur einmal je Schleifendurchlauf gemessen werden soll.

Für Leute die das gleiche Problem haben und das Thema später lesen:

*RST
CONF:TEMP TC,K,(@<Kanalnummer>)
ROUT:SCAN (@<Kanalnummer>)
FORM:READ:TIME ON
FORM:READ:TIME:TYPE (ABS|REL)
INIT
{
READ?
}
ABOR

Damit kann man die Temperatur und die Absolute Zeit messen (Relativ macht hier wenig Sinn da die Messung für jeden Wert neu gestartet wird).

Ansonsten hätte ich jetzt noch eine Frage, ich bekomme nun je Schleifendurchlauf einen Temperaturwert und die Zeit seitdem die Messung schon läuft (in Sekunden). Beide als einzelne DBL-Werte je Schleifendurchlauf (siehe Bild).
Wie kann ich die beiden jetzt in einen Waveform Graphen oder einen XY-Graphen schreiben? sodass Temperatur Y und Zeit X ist?

Der XY-Graph nimmt nur Arrays an und bei meinen bisherigen Versuchen daraus ein Array zu machen wird nur immer die erste Stelle im Array neu beschrieben. Blink

Gruß Domi


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - jg - 03.02.2014 13:26

Zwecks Graph, du hattest erst kürzlich den passenden Hinweis:
http://www.labviewforum.de/Thread-Temperaturverlauf?pid=161547#pid161547

Gruß, Jens


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - GerdW - 03.02.2014 13:27

Hallo domi,

Zitat:Der XY-Graph nimmt nur Arrays an und bei meinen bisherigen Versuchen daraus ein Array zu machen wird nur immer die erste Stelle im Array neu beschrieben.
Der XY-Graph erwartet entweder einen Cluster aus X- und Y-Array oder ein Array of Cluster of X-/Y-Wert (aka Points). Du hast Einzelwerte, die du in Arrays sammeln musst. Dazu nimmt man Schieberegister, die du sicherlich schon kennst! Smile

Wie Jens belegt, bist du deutlich vergesslicher als wir… Big Grin


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - dbuckl - 03.02.2014 13:33

OK tut mir leid Blush wusste doch das ich das letztens schon mal gesehen hatte. Ich hab eben fast drei Studen herumgedoktort das ich einen String mit HH,MM,SS einen DBL-Wert aus nur Sekunden bekomme, kann sein das mich das etwas verwirrt hat Angel_not


RE: Kontinuierliche Temperaturerfassung (Agilent 34970A) - GerdW - 03.02.2014 13:36

Hallo domi,

dafür benötigst du 3 Stunden?
[attachment=48365]
Hat mich ~1min gekostet, inkl. testen…