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!
Wenn ich ein VI (mit einer For-Schleife) laufen lasse, funktioniert es bis zur letzten Iteration fehlerfrei. Dann taucht immer folgende Meldung auf: " bei VISA: Lesen aufgetreten: Zeitüberschreitung, bevor der Vorgang abgeschlossen werden konnte." Wie gesagt, dass taucht immer nur im letzten Durchlauf der Schleife auf. Habe es schon mit dem VISA Timeout versucht, was aber leider nichts gebracht hat. Das war bisher auch der einzige brauchbare Ansatz den ich beim durchsuchen anderer Threads und Seiten finden konnte.
Etwas nähere Beschreibung des VI's: Vor der Schleife hab ich ein VISA Open und ein VISA: seriellen Port öffnen. In der Schleife schicke ich ersten einen Befehl mit VISA Write, lese dass Gerät dann mit VISA Read aus und setze es mit VISA Zurücksetzen zurück. Wenn die Schleife nachher fertig ist, ist außerhalb noch ein VISA Close. Die oben genannte Fehlermeldung wird für das letzte Leitungsstück in der Schleife(hinter VISA zurücksetzen) und dann für das VISA Close angezeigt.
Ich hoffe, dass jemand weiß woran das liegen kann.
Wenn sonst nichts weiter stört außer der Meldung selbst, dann kannst Du den Fehler auch löschen. Dafür gibt es ein Vi. Es genügt aber auch, an den Fehlerausgang einen Draht anzuschließen und den z.B. blind an irgendeiner Struktur enden zu lassen.
Das Beste ist natürlich, den Fehler zu behandeln: Er wird an einen Case angeschlossen, und bei Fehler "Timeoeut" wird etwas getan: z.B immer wieder versuchen zu lesen, oder die Lesescheife für immer verlassen.
Eine solche Fehlerbehandlung sollte immer vorhanden sein, denn dieser Fehler ist gar kein richtiger Fehler, zumindest ist es kein Fehler des Programms. Zeitüberschreitung weil keine Daten mehr kommen ist ein ganz normaler Vorgang. Ein professionelles Programm sollte auf diesen Fehler vorbereitet sein und nicht gleich panisch mit Abbruch reagieren.
ich habe ein ganz ähnliches Problem. Ich habe jetzt grade neu mit LabView angefangen und versuche mit dem Super-Thermometer 1595A den zuletzt gemessenen Widerstandswert auszugeben. Selten funktioniert es, hauptsächlich gibt er mir den Fehler:
"Fehler -1073807339 bei VISA: Lesen in Versuch1.vi
Mögliche Ursachen:
VISA: (Hex 0xBFFF0015) Timeout ist vor Vervollständigung der Operation abgelaufen."
Hat jemand eine Idee warum manchmal der Messwert ausgegeben wird, aber hauptsächlich ein Timeout Problem auftritt? Falls ja, wie kann man den Fehler beheben?
10.10.2019, 08:35 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2019 08:39 von GerdW.)
anbei habe ich versucht, das VI als ältere Version abzuspeichern, ansonsten habe ich ein Bild meines Blockdiagramms mit hochgeladen.
Soweit ich das Handbuch verstanden habe, müsste ich die Gerätekommunikation richtig gemacht haben. Ich habe ein USB Anschluss benutzt. Das MAX zeigt mir das Superthermometer an. Wenn ich mir über das VISA-Testpanel die ID des Gerätes ausgeben möchte klappt das auch. Also sollte der Computer, meines erachtens nach, mit dem Gerät kommunizieren.
10.10.2019, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 10.10.2019 09:00 von GerdW.)
ich sehe nirgends, wo du den Passus zum TermChar umsetzt!
Deine Befehle müssen mit einem CR oder LF beendet werden! (Siehe voriger Beitrag…)
Lösung:
String-Konstante mit dem Befehl auf \-Code-Anzeige umschalten. Dann am Ende ein \n anhängen…
(Oder per ConcatenateString eine LF-Konstante anhängen.)