Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
23.02.2012, 12:52 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2012 12:59 von marcson.)
Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Hallo zusammen!
Ich benutze LabVIEW 2011 mit einem Agilent 82357b USB/GPIB Adapter und dieser ist mit einem vier-quadrantenmesser von Keithley 228a verbunden. Dort am GPIB steckt noch das Keithley 199 Digital Multimeter drüber. Windows 7 Professional wird benutzt.
Die NI Visa Treiber 5.0.1 und 5.1.1 Runtime Treiber, sowie Agilent Suite 16.1 (Sekundär) sind installiert. Auch die VISA Einstellungen im MAX ( Passport - Tulip aktivieren ) wurden gemacht.
Ich hänge jetzt schon ein paar Tage an dem Problem. Wenn ich im MAX die Instrumente betrachte, sagt MAX mir, dass die Geräte funktionieren. Bei einer einfachen Abfrage bekomme ich den Displaywert ausgegeben. Also in dem Fall z.B. NDCV-000.0002E+0. Ich hab daraus ein Array gemacht ob dieser Wert gleich bleibt oder etwas schwankt. Also 5 mal einen Wert ausgeben lassen in einer Schleife und habe dann festgestellt, dass er sich wirklich ändert und somit einfach regelmäßig die Displaywerte ausgibt. Egal was ich abfrage, die Geräte geben mir ausschließlich die Werte aus, die gerade auf dem Display stehen. Auch wenn ich nach *IDN? frage.
Wenn ich dem Keithley 199 manuell eine Spannung gebe, Bsp 1,9 V, dann erhalte ich auch diese Werte. Also Im Anhang findet ihr jede Menge Bilder, die das veranschaulichen.
Vielleicht war mein Agilent USB/GPIB Adapter falsch installiert. Also habe ich von Tektronix den Funktionsgenerator AFG3102 angeschlossen. Mit ihm kann ich aber problemlos kommunizieren und ihn auch via LabVIEW steuern. Auch via Agilent 82357b verbunden. Scheint also, dass der Adapter korrekt funktioniert und installiert ist.
Der Clou an der Sache ist dann noch. Es ist noch ein Uraltrechner vorhanden mit Windows 3.11 und ich glaube Labview 4. Dort wird das ganze ohne USB Adapter an einer noch vorhandenen GPIB Karte angeschlossen und es funktioniert alles tadellos. Ich sollte im Rahmen einer Abschlussarbeit das Programm modernisieren und auch den Versuchsstand anpassen. Mein Betreuer kommt dem Problem leider auch nicht auf die Spur, weswegen ich mich hier an Euch wende.
Es ist einfach keine Kommunikation mit den beiden Keithley Geräten möglich, auch die Beispielprogramme ( via Treiber ) funktionieren nicht und LV 2011 zeigte mir an, dass beim Herstellen der Verbindung mit Treiber oder GPIB eben fehlgeschlagen sei. Die Geräte nehmen auch keine SCPI Befehle an, geben halt immer wieder das gleiche aus. Das Problem muss sich ja auf den USB/GPIB Adapter beziehen, wenn es mit einer normalen Karte funktioniert an einem Windows 3.11 Rechner. Der Adapter scheint aber richtig zu funktionieren, was die Verbindung mit dem Tektronix zeigt. Oder bin ich auf der falschen Spur? Hoffe jemand kann mir helfen.
Mein LV Kenntnisstand beruht auf den ersten 2 BASIC Kursen von NI mit Übungen. Ich hoffe ich konnte alles so detailliert wie möglich angeben.
Da nur 5 Bilder angehängt werden können muss ich einen Doppelpost erstellen. Tut mir leid deswegen!
Hier die restlichen Bilder.
Edit: Ok, eine Antwort wird also direkt an meinen Eröffnungsbeitrag angehängt.
Bild1: MAX übersicht Keithley 199
Bild2: MAX IDN Abfrage Keithley 199
Bild3: MAX IDN Abfrage KEithley 228a
Bild4: Read Programm mit 0,000 Ausgabe
Bild5: Read Programm mit 1,9v Ausgabe bei manueller Spannung
Bild6: IDN Programm mit 0,000 Ausgabe
Bild7: Agilent IO Control Übersicht Keithley 199
Bild8: Agilent IO Control Übersicht Keithley 288a
Bild9: Beispielprogramm durch Treiber ( Einzelmessung )
RE: Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Hallo marcson,
Zitat:Die Geräte nehmen auch keine SCPI Befehle an, geben halt immer wieder das gleiche aus
Schon mal daran gedacht,
- das Handbuch zum Keithley in die Hand zu nehmen und darin zu lesen?
- passende Treiber bei NI zu suchen und zu verwenden?
Ja, die alten Keithleys (dreistellige Typnummer) verstehen kein SCPI, deren Befehle bestehen aus einem Buchstaben und einer Zahl. "Fx" stellt beispielsweise den Messtyp ein, "Rx" den Range...
Man könnte natürlich auch mal das alte LabVIEW-Programm nehmen und schauen, wie es dort gelöst wurde.
Aber naja, Fragen hier zu stellen geht schneller als einfach mal ein bisschen Lesen...
RE: Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Danke für die schnelle, wenn auch etwas überspannte Antwort.
Die Treiber hab ich von NI und Diese verwende ich auch. Dennoch funktionieren sie nicht, wie im Beispielprogramm aufgeführt. Ein Screenshot ist da auch dabei, müsste der Letzte sein. Dort lese ich diese Fehlermeldung bei dem offiziellen Treiber von NI für das Keithley 199.
Ich arbeite halt erst mit LV seit Januar diesen Jahres, mein Wissen bezog ich aus den Grundkursen BASIC1 und 2 von NI. Ich habe hier im Forum viel gelesen und habe mich in den letzten Tagen mit den SCPI Befehlen auseinander gesetzt, weil ich diese häufig hier in Verbindung mit den Keithley Geräten gelesen habe. Und ich habe mehr als nur das gelesen. Es gibt nur keine Themen mit den gleichen Geräten wie ich sie hier habe.
Ich habe auch das Handbuch aus dem Internet auf Englisch da und auch durchforstet (für beide Keithley Geräte), aber gleich alles zu verstehen, obwohl man vorher noch nie was von SCPI Befehlen oder sonstiges gehört hat, ist wohl nicht einfach. Kann man aber wohl nicht mehr verstehen, wenn man schon so viel Erfahrung mit den Programmen etc hat und sich nicht erst seit gut einem Monat in etwas völlig Neues einzufinden versucht. Kann dann schon verstehen, dass Anfängerfragen wohl auch nerven können. Denke aber dennoch, dass das hier ein Forum ist, in dem man Hilfe bekommt, wenn man fast auf sich allein gestellt ist. Mein Betreuer selbst hatte lediglich ein Tutorial besucht und kann mir in LV Angelegenheiten weniger helfen unterstützt mich aber wo er nur kann.
Danke für die Information, dass die alten Keithleys keine SCPI Befehle annehmen. Damit ist mir ja schonmal ein Stück weiter geholfen, wenn ich mit den Geräten kommunizieren möchte. Im Manual des 228A sind z.b. jeweils Beispiele von einem HP-85 oder IBM BASIC enthalten, was mir nicht weitergeholfen hat. Um damit halt ein wenig zu experimentieren sollten ja zumindest die Beispielprogramme funktionieren über die offiziellen Treiber von NI. Eine einfache Messung mit GPIB Adressangabe und einem Anzeigeelement wie im letzten Screenshot aufgeführt. Und selbst das funktioniert nicht.
Das alte LabVIEW Programm hatte ich auch schon aufgesucht und versucht zu öffnen. Aber es öffnet mir dort nicht das Blockdiagramm, sondern lediglich die Ausführung des Programms und ich kann das Blockdiagramm weder mit STRG+E öffnen, noch über das Menü. Vielleicht finde ich auch das eigentliche "VI" nicht. Wenn ich versuche eine Datei mit LabVIEW zu öffnen und gehe in den Ordner sind auch neben dem Dateinamen ein paar Symbole mit "VI" gekennzeichnet. Diese sind eine *.llb und dort finde ich auch die VIs, aber mit dem gleichen Effekt. Nur die Ausführung selbst, kein Blockdiagramm oder ein bearbeitbares Frontpanel.
Der Versuchsstand und auch das Programm wurde etwa '95 aufgebaut. Ich kann hier leider nicht mehr den Leiter des damaligen Projektes kontaktieren.
RE: Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Hallo marcson,
Zitat:Ich habe auch das Handbuch aus dem Internet auf Englisch da und auch durchforstet (für beide Keithley Geräte), aber gleich alles zu verstehen...
Ich habe mir auch mal schnell das Manual zum K199 aus dem Internet geholt und habe gleich auf den ersten Seiten eine insgesamt 2-seitige Übersicht aller Gerätebefehle unter der Überschrift "IEEE488 command set" (oder so ähnlich) gefunden...
Hab den oberen Treiber runtergeladen und eingefügt. Hab dass dann im LV aufgerufen unter Instrumenten I/O und Gerätetreiber. Dort befindet sich unter der Kathegorie ke199 ein Beispielprogramm namens "Keithley 199 Single Meas". Das habe ich eingefügt und hat genau 4 Anschlüsse. error in, error out, GPIB adress und measurement. Ich erstelle eine Konstante bei GPIB adress und ein Anzeigeelement bei measurement. Nachdem ich dann auf play drücke kommt die Fehlermeldung aus dem letzten Screenshot. Ich hab ja nicht nur SCPI Befehle benutzt. Er nimmt einfach gar nix an. Im Handbuch steht z.b. auch dass man eine 10stelligen String anzeigen lassen kann am Display. Wenn es nicht so viel Mühe macht, könnten Sie mir ein Beispielprogramm geben, wie ich dem ke199 irgendwas übertragen kann, sodass ich erkenne ob er auf die Befehle reagiert? Das würde mir sehr helfen. Muss nicht unbedingt ein String sein, kann auch gerne einfach nur das Umstellen der Anzeige vorne am Display sein. Wenn das nämlich funktionieren sollte, dann weiß ich, dass alles richtig installiert ist und ich mich nur mehr mit der Kommunikation auseinandersetzen muss, was ich letzten Endes ohnehin tun werde.
24.02.2012, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2012 10:07 von GerdW.)
RE: Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Hallo marcson,
ganz einfache Antwort (zumindest meine starke Vermutung):
Der verwendete Treiber ist ebenso uralt (1994) wie dein K199... Er ist noch mit den "echten" GPIB-Befehlen programmiert, und nicht, wie heutzutage empfohlen, mit VISA. Da du aber keine NI-Hardware, sondern den Agilent GPIB-USB-Umsetzer verwendest, funktionieren die GPIB-Befehle nicht. VISA dagegen dürfte arbeiten...
Also:
Einfach selbst mit VISA nachprogrammieren!
Ich habe weder deinen Agilent-Umsetzer noch ein K199 zur Verfügung, kann also nichts präsentieren, was ich nicht auch vorher testen könnte. Aber das Ersetzen von GPIB-Read/Write-Aufrufen durch VISA-Read/Write ist auch nicht so schwierig... (SRQs waren meiner Erfahrung (mit einem K196) nach nur in Ausnahmefällen nötig und können mit dem entsprechenden Befehl ausgeschaltet werden. Einfach einen neuen Messwert mit "eXecute" anfordern...)
RE: Kommunikation zwischen LV und Keithley 199+228a fehlgeschlagen
Vielen Dank für Ihre Hilfe und die Erklärung. War ein Volltreffer.
Hab jetzt ein Simples VI geschrieben mit "DhalloX" als Schreibpuffer und es erscheint auch vorne am Display auch ein "hallo". Mir waren die Befehle nicht bekannt, bzw ich wusste nicht wie ich sie umsetzen soll. X für eXecute kommt also ans Ende. Und die anderen Befehle davor.
Nun, da ich weiß, dass alles korrekt funktioniert, kommt der schwere Teil.
Dem ke228a (4 Quadranten-Messgerät) Befehle zu geben mit dem ke199 zu kommunizieren.
Die Reichweite von -0,1-0,65 V und Auflösung in 0,01V Schritten soll der ke228a vorgeben und der DMM den Strom messen. Aber bis dahin ist es noch ein langer Weg. Bin erstmal froh, dass ich jetzt mit den Befehlen experimentieren kann.
Noch eine kleine Nebenfrage zum Abschluss. Da der ke228A die Spannungsschritte vorgibt, muss ich den als talker und den ke199 als listener einstellen, oder?