LabVIEWForum.de
VISA Read will nicht immer - 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: VISA Read will nicht immer (/Thread-VISA-Read-will-nicht-immer)

Seiten: 1 2


VISA Read will nicht immer - Peter04 - 02.11.2008 13:47

Hallo,

ärgerliches Problem.
Ich steuere ein Keithley Multimeter über RS232 mit VISA an. Die Kommunikation senden/empfangen (SCPI) klappt prinzipiell.
Irgendwann taucht aber Fehler 1073807339 auf, soll heißen, ich will Daten lesen obwohl nichts anliegt. Es wird auch angezeigt, dass 0 bytes anstatt 16 Bytes ausgelesen werden.
Da zum K2000 und Fehler 1073807339 schon im Forum/Netz einiges zufinden ist, habe ich auch einiges ausprobiert:
- Timeout zwischen Schreiben und Lesen erhöht (ändert nix)
- Baudrate, Flußkontrolle, Abschlusszeichen variiert (ja, an Hard- und Software) (hilft nix)
- NI Treiber für KE2000 probiert (error im subsubsubsub...-vi)
- erst in Gerätespeicher schreiben und dann auslesen (ebenfalls nix)

Im angehängten vi habe ich bspw. "fetch?" in der Schleife laufen. Das geht mal 50, mal 200 mal gut, und dann kommt die Fehler-Meldung.

Mir fällt dazu nix mehr ein.

Schönen Gruß

PeterLv80_img

[attachment=15146]


VISA Read will nicht immer - macces - 07.11.2008 12:44

Das folgende beruht nur auf Halbwissen und behebt auch die Ursache nicht (ohne das Gerät eh schwierig), aber vielleicht hilfts ja:

Bricht die Kommunikation komplett ab, oder sind das nur einmalige Ausfälle? Wenn bei 1000 Messwerten mal einer verloren geht, ists ja ned so schlimm.
Vielleicht hilfts ja wenn Du ein Event einfügst, dass er bis zum Eintreten mit dem Lesen wartet.
Oder aber Du verringerst die Schleifenanzahl und lässt häufiger initialisieren.

Jaja, keine eleganten Lösungen. Wenns nich hilft, einfach ignorieren.


VISA Read will nicht immer - Achim - 07.11.2008 12:56

Hast du schon mal das READ zwischen "Synchron" und "Asynchron" (rechtsklick...) gewechselt...?


VISA Read will nicht immer - Achim - 07.11.2008 12:58

Hast du schon mal versucht, mit dem Property "Bytes at Port" die Anzahl zu lesen?


VISA Read will nicht immer - RoLe - 07.11.2008 13:10

Noch ein Tipp:

Error-Cluster durchverbinden, mit Shiftregister.


VISA Read will nicht immer - eg - 07.11.2008 13:26

' schrieb:Noch ein Tipp:

Error-Cluster durchverbinden, mit Shiftregister.

Ich weiss nicht was das bringen soll.

Aber mein Vorschlag ist die Wartezeit wegzumachen und stattdessen das Timeout z.B. auf 1000 zu erhöhen. Und falls so ein Fehler kommt den Befehl noch Mal zu senden.


VISA Read will nicht immer - RoLe - 07.11.2008 13:38

' schrieb:Ich weiss nicht was das bringen soll.

Richtigen LV-Code (Errorhandling) Wink


VISA Read will nicht immer - eg - 07.11.2008 13:43

Aber wenn er das macht und ein Error auftritt wird er doch niemals etwas lesen können weil der Fehler im Schieberegister erhalten bleibt. Oder soll er am Ende den Fehler quittieren? Wenn ja, wozu soll der Nichtfehler dann zur nächsten Iteration durchgeschliffen werden?

Ich mache es z.B. immer so und verstehe immer noch nicht wozu der Fehler im Schieberegister:


VISA Read will nicht immer - RoLe - 07.11.2008 14:18

' schrieb:Aber wenn er das macht und ein Error auftritt wird er doch niemals etwas lesen können weil der Fehler im Schieberegister erhalten bleibt. Oder soll er am Ende den Fehler quittieren? Wenn ja, wozu soll der Nichtfehler dann zur nächsten Iteration durchgeschliffen werden?

Es kommt halt darauf an, ob es was ausmacht, wenn Daten fehlen.
Was ist, wenn schon vor der For-Schleife ein Fehler auftritt?
Ich vermute, dass der Befehl nicht geschrieben werden konnte, und daher das lesen Fehler macht.
Ich gehe weiter davon aus, dass er kein Wait mehr hat, ich weis nicht wer sowas macht. Schauen ob es Daten hat, und dann lesen ist meiner Meinung nach das einzig richtige Vorgehen.
Wenn dann ein Fehler auftritt, wird die For-Schleife (??) ohne schreiben, lesen noch die Anzahl N gemacht, da die Funktionen bei Fehlereingang nichts mehr machen.

Aber, dein Vorschlag geht auch und ist einfacher.

EDIT: So wie in deinem Bild, braucht es das SR nicht, da gebe ich dir Recht, Peter04 macht es aber "noch" nicht so


VISA Read will nicht immer - Lucki - 07.11.2008 15:18

Das kann doch auch an der Gegenstelle liegen, daß sie manchmal nichts sendet. Wenn es so selten ist, dann ist doch die Frage für Dich: brauche ich dieses eine Datenelement wirklich, oder kann ich mir leisten, dieses Datenelemant auzuslassen.
Hier zwei Beispiele zur Fehlerbehandlung:
[attachment=15223][attachment=15224]

Zitat:Irgendwann taucht aber Fehler 1073807339 auf, soll heißen, ich will Daten lesen obwohl nichts anliegt.
Die Formulierung gefällt mir gar nicht, und in Verbindung mit der überflüssigen Wartezeit vor dem Lesen (Worauf Eugen schon hinwies), beweist es, daß Du die Funktion Lesen noch nicht richtig verstanden hast.

Also: Daß im Moment des Aufrufs des Lesen-VI noch kein Daten im Buffer sind, ist ganz normal und kein Grund für eine Fehlermeldung. Das VI wartet dann geduldig, und zwar so lange, bis eines von dem geschieht:
1.) das Abschlußzeichen wird detektiert
2.) die vorgegebene Anzahl von Bytes ist erreicht
3.) Timout ist erreicht.
Bei 3.) kommt eine Fehlermeldung und man hat keine gültigen Daten am Ausgang.

Ich würde auch mal die Reaktionszeiten protokollieren und sehen, ob sie stark schwanken, und das Timout sehr hoch nehmen:
[attachment=15225]