Error when control USB Test&Measurement Device using VISA
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!
Error when control USB Test&Measurement Device using VISA
Hallo Zusammen
ich habe ein USB Test&Measurement Device bestehend aus ADCs und DACs zur Ausgabe von Steuersignalen und Aufnahme von Messignalen. Das Gerät kann mit Hilfe von NI VISA gesteuert werden. Ich kenne auch alle Kommandos, die das Gerät akzeptiert. Beispielsweise möchte ich mit Hilfe des Kommandos "GETDAC?" die aktuelle Spannung aller 8 Kanäle auslesen. Im angehängten Bild ist das mit VISA Interactive Control gezeigt. Das funktioniert. In meiner LabVIEW Applikation bekomme ich jedoch ein Fehler zurück: "VISA: (Hex 0xBFFF0015) Timeout expired before operation completed." Im zweiten angehängten Bild ist mein Beispiel gezeigt. Wo liegt das Problem? Selbst im Instrument Assistant kann ich mit diesem Befehl Daten von meinem Gerät bekommen. Mit dem InstrTimeout habe ich bereits herumgespielt.
Vielen Dank für eure Hilfe!
Christian
Anzeige
05.03.2017, 18:40 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2017 18:41 von GerdW.)
RE: Error when control USB Test&Measurement Device using VISA
Hallo r4AkS,
es gibt einen Unterschied zwischen \n und "\n"…
Der Unterschied wird sichtbar, wenn du den Anzeigemodus deiner Stringkonstanten sichtbar machst und dann zwischen "normal" und "\-Codes" wechselst!
Dein Gerät erwartet ein LF (=\n aka newline] als Kennung für das Befehlsende und den musst du auch schicken. Das macht man mit "\n", wenn der String auf "\-Code"-Anzeige gestellt ist…
(Das sollte im Manual deines Gerätes erklärt sein!)
RE: Error when control USB Test&Measurement Device using VISA
Hallo GerdW,
vielen Dank für deine Antwort. Ich hab jetzt gedacht dass ich das so machen sollte, wie im angehängten Bild. Klappt leider auch nicht.
Wie sollte der String denn nun konkret aussehen? Ich steh irgendwie auf dem Schlauch...
RE: Error when control USB Test&Measurement Device using VISA
Hallo R4Ak5,
in Deinem Programm sehe ich einen Fehler. Die Ausgabe des Schreib VIs "Ausgabezählwert" ist mit dem Lese VI "Byte-Anzahl" verbunden. Damit begrenzt Du die Anzahl der zu lesenden Bytes auf 8.
Denn das Schreib VI gibt an der Stelle die Anzahl der geschriebenen Bytes aus.
RE: Error when control USB Test&Measurement Device using VISA
Hallo Freddy,
danke für den Hinweis. Das ist absolut korrekt.
Ich hatte eben einmal die Ausgabe, wie ich sie gern hätte. Es hat also funktioniert!! Allerdings nur einmal. Ist das ein Timing Problem? Sollte ich eine gewisse Zeit warten bevor ich den Lesevorgang auslöse?
RE: Error when control USB Test&Measurement Device using VISA
Hallo Christian,
wenn die Anzahl Bytes immer gleich groß ist (im Beispiel 110 Bytes) , kannst Du dem Read VI dies übergeben. Dann werden alle Daten gelesen.
Warum es nur einmal funktioniert hat liegt wohl daran, dass Du vorher abbrichst. Das Messsystem will noch schreiben und liest den Anfang des nächsten Befehls nicht.
RE: Error when control USB Test&Measurement Device using VISA
(09.03.2017 11:42 )Freddy schrieb: Warum es nur einmal funktioniert hat liegt wohl daran, dass Du vorher abbrichst. Das Messsystem will noch schreiben und liest den Anfang des nächsten Befehls nicht.
Ich habe nun eine kurze Wartezeit eingefügt. Damit funktioniert es jetzt.
Vielen Dank euch!
Christian
09.03.2017, 16:26 (Dieser Beitrag wurde zuletzt bearbeitet: 09.03.2017 16:27 von GerdW.)
RE: Error when control USB Test&Measurement Device using VISA
Hallo Christian,
es gilt immer noch die "Bitte": nimm das VISAOpen aus der Schleife raus!
(Alternativ könntest du die VISA-Verbindung auch wieder schließen, ist aber ineffizient. Grundregel: jede geöffnete Referenz auch wieder schließen!)
Die Wartezeit sollte irrelevant sein: das VISARead wartet selbst schon auf die angefragten 110 Bytes oder das TermChar (und nebenbei auf den Timeout oder einen Fehler in dieser VISA-Verbindung). Du musst da nicht extra vorher warten…