Forum: PC-Programmierung Agilent Multimeter über LAN bedienen


von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich möchte gerne mein Multimeter Keysight 34461A vom PC aus über LAN mit 
VisualBasic5 ansprechen.
Habe bereits von Keysight IO-Library version 16 (als Treiber) 
installiert.
Mein Betriebssystem ist W7.
Daten zum Messgerät senden geht bereits.
Unten ein Beispiel, wie er von 100 V AC Bereich in den 1000  V DC 
Bereich umschaltet. Funktioniert soweit auch.
Aber sobald ich Messdaten vom Gerät zum PC empfagen möchte (letzte 
Programmzeile) , dann gibt es einen Fehlermeldung (s.Anlage)


Private Sub Command4_Click()

Dim ioMgr As VisaComLib.ResourceManager
Set ioMgr = New VisaComLib.ResourceManager
Dim instrument As VisaComLib.FormattedIO488
Set instrument = New VisaComLib.FormattedIO488
Set instrument.IO = 
ioMgr.Open("TCPIP0::A-34461A-05403.fritz.box::5025::SOCKET")
Dim idn As String
instrument.IO.Timeout = 5000

Dim dblData As Double
Dim strReply As String
instrument.WriteString "MEAS:VOLT:AC? 100"
instrument.WriteString "MEAS:VOLT:DC? 1000"
instrument.WriteString "READ?"
idn = instrument.ReadString()

Kann das ein Fehler von VB5 seine ? VB6 habe ich leider nicht.

von Lukas K. (carrotindustries)


Lesenswert?

Funktionieren die Befehle mit dem 'Send commands to this 
instrument'-Fenster von der IO Library?

von Clemens S. (zoggl)


Lesenswert?

Was sagt wireshark?
Geht das read raus und was kommt vom gerät?

von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Ja, das geht.... s.Anlage

von Dirk F (Gast)


Lesenswert?

Clemens S. schrieb:
> Was sagt wireshark?

Muss ich erst noch installieren.  Kleinen Moment bitte.

von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

So, hier die Ergebnisse von Wireshark.

Was soll ich machen ?

von Clemens S. (zoggl)


Lesenswert?

Verglei mal das test mit deinem programm

von Lukas K. (carrotindustries)


Lesenswert?

Seh dir mal den IO Monitor an, der den IO Libraries beiliegt und 
vergleiche die VISA-Aufrufe von deinem Programm und dem Interactive 
IO-Fenster.

Möglicher Fehler: falsches Zeilenende beim Schreiben oder falscher 
'termination character' beim Lesen.

Probiere auch mal folgendes aus: Lasse dein Programm laufen und mach 
danach mit dem interactive IO "SYST:ERR?"

: Bearbeitet durch User
von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

16106:  Befehl 100 V AC
16107:  Befehl MEAS?
16108:  Befehl 1000 V DC
16108:  Befehl READ?
16110-16114:  Leerer Block mit Len = 0
16120:  Das sind die Messdaten....  ????

von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Lukas K. schrieb:
> Seh dir mal den IO Monitor an, der den IO Libraries beiliegt und
> vergleiche die VISA-Aufrufe von deinem Programm und dem Interactive
> IO-Fenster.

von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Lukas K. schrieb:
> Probiere auch mal folgendes aus: Lasse dein Programm laufen und mach
> danach mit dem interactive IO "SYST:ERR?"

von Dirk F (Gast)


Lesenswert?

So wie ich das sehe, liegt der Fehler auf der PC Seite, da die Messdaten 
ja vom Messgerät gesendet werden.

von Lukas K. (carrotindustries)


Lesenswert?

Dirk F schrieb:
> Lukas K. schrieb:
>> Seh dir mal den IO Monitor an, der den IO Libraries beiliegt und
>> vergleiche die VISA-Aufrufe von deinem Programm und dem Interactive
>> IO-Fenster.

Und jetzt nochmal vom Interactive IO-Fenster.

Ach, ich sehe erst jetzt: Du hast ja VB5 von 1997. Muss das wirklich 
sein?

von DirkF (Gast)


Lesenswert?

Lukas K. schrieb:
> Und jetzt nochmal vom Interactive IO-Fenster.
>
Mach ich dann morgen, OK ?


> Ach, ich sehe erst jetzt: Du hast ja VB5 von 1997. Muss das wirklich
> sein?
Ich finde VB5 und VB6 einfach und gut.
Das VB.net ist mir viel zu aufgeblasen.

Wenn ich wüsste, das es mit VB6 funktioniert, dann würde ich mit diese 
Version kaufen.....

von Whitespace (Gast)


Lesenswert?

Musst du die VISA/Agilent/etc. libs verwenden?
Ich benutze regelmäßig Agilent Funktionsgeneratoren sowie 34410A 
Multimeter mit LAN. Bei diesen gibt es einen Port (siehe Handbuch), über 
den man die Geräte mit SCPI Befehlen ganz ohne irgendwelche Treiber 
verwenden kann (d.h. Auf NW-port verbinden, Text-Command-Strings 
schicken und die Ergebnisse kommen als Strings im Klartext zurück. 
fertig.).
Das funktioniert prinzipiell auch mit irgend einem Netzwerkterminal 
(netcat, putty, etc.) was super zum Testen ist.
Außerdem braucht man überhaupt keine Treiber. Nur Ethernet, aber das 
kann das OS sowieso. D.h. es ist automatisch auch cross-platform.

(Ich habe ehrlich gesagt noch nie verstanden, warum man für LAN 
Messgeräte irgendeinen Treiber brauchen sollte, wenn man keine wirlich 
komplexen Sachen wie synchronisierte Trigger von mehreren Geräten o.ä. 
braucht und der Hersteller ordentlich gearbeitet hat.)

von DirkF (Gast)


Lesenswert?

Hallo Whitespace,
ja das hört sich ja gut an.
Ist das denn dann UDP oder TCP ?
Ein 34410A habe ich auch noch zum testen.....

von Whitespace (Gast)


Lesenswert?

Das ist TCP.
Laut http://literature.cdn.keysight.com/litweb/pdf/5989-9868EN.pdf S.9 
Fußnote 14 sollte 5025 der richtige Port sein. Ich kann aber morgen 
nochmal in meinen Skripten nachsehen.

Wichtig ist übrigens die Befehle über eine TCP connection mit dem 
Entsprechenden Terminator (üblicherweise ein newline) abzuschließen, 
damit das Geräte weiß, dass der Befehl zu Ende ist, denn eine TCP 
Verbindung ist ja nur ein Stream wo man an einem Ende Daten reinschiebt 
die am anderen wieder rauskommen. Wo da ein Befehl anfängt oder aufhört 
ist ohne Terminator nicht klar und kann zu seltsamen bzw. sporadischen 
Fehlern führen.

von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Whitespace,
also das war wirklich ein sehr guter Hinweis von Dir !!!
Super vielen Dank.

Man kann in der Tat auf das Messgerät ohne irgendwelche Treiber 
zugreifen.
Man braucht nur die IP Adresse und die Port Nummer (5025) und dann per 
TCP/IP darauf zugreifen.
Klappt bei beiden Messgeräten 34461A und 34410A super.
Als Anlage mein Source Code für VB5 (VB6)  und ein Exe file.....
Falls es jemand braucht.

Allgemein bin ich begeistert, wie schnell man hier im Forum selbst bei 
Spezialfragen geholfen bekommt.
Gruß Dirk

von DirkF (Gast)


Lesenswert?

Ein kleiner Schönheitsfehler hat das Programm aber noch:
Nach dem Beenden bleibt das Messgerät im Remote-Modus.

Kennt jemand hierfür eine Lösung ?

von Dirk F (Gast)


Lesenswert?

sorry for pushing...

von Lukas K. (carrotindustries)


Lesenswert?

DirkF schrieb:
> Ein kleiner Schönheitsfehler hat das Programm aber noch:
> Nach dem Beenden bleibt das Messgerät im Remote-Modus.
>
> Kennt jemand hierfür eine Lösung ?

Handbuch Seite 82:
> Press the [Local] key or execute the IEEE-488 GTL (Go To Local)
> command from the remote interface to return to the local state.

Das geht allerdings mit der Socket-Lösung (Port 5025) nicht, dafür musst 
du dann schon VXI-11 oder HiSLIP verwenden.

Das geht wohl mit viGpibControlREN aus VISA.

von Dirk F (Gast)


Lesenswert?

Danke Lukas !!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.