Error when control USB Test&Measurement Device using VISA - 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: Error when control USB Test&Measurement Device using VISA (/Thread-Error-when-control-USB-Test-Measurement-Device-using-VISA) |
Error when control USB Test&Measurement Device using VISA - r4Ak5 - 05.03.2017 18:30 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 RE: Error when control USB Test&Measurement Device using VISA - GerdW - 05.03.2017 18:40 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 - r4Ak5 - 08.03.2017 21:29 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 - Freddy - 09.03.2017 08:47 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. Gruß Freddy RE: Error when control USB Test&Measurement Device using VISA - r4Ak5 - 09.03.2017 11:19 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? Gibt es dazu irgendwelche Erfahrungen? Gruß Christian RE: Error when control USB Test&Measurement Device using VISA - jg - 09.03.2017 11:34 Probier mal: Öffne nur 1x die Schnittstelle, VOR der While Loop, und nicht bei jedem Aufruf des Read-Buffer State. Gruß, Jens RE: Error when control USB Test&Measurement Device using VISA - Freddy - 09.03.2017 11:42 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. Gruß Freddy RE: Error when control USB Test&Measurement Device using VISA - r4Ak5 - 09.03.2017 16:04 (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 RE: Error when control USB Test&Measurement Device using VISA - GerdW - 09.03.2017 16:26 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… |