Write-Read funktioniert erst ab drittem Schleifendurchgang
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!
Write-Read funktioniert erst ab drittem Schleifendurchgang
Hallo,
ich möchte ein Messgerät (Keyence LT) ansprechen und hab mir dazu ein Test-VI erstellt. Dieses hab ich mir aus dem Beispiel Advanced Serial Write and Read.vi abgeguckt und die Teile weggelassen, die ich nicht brauche.
So wie ich das Beispiel angehängt hab, funktioniert es zwar aber immer erst ab dem zweiten oder dritten Schleifendurchgang. In den ersten Durchgängen bekomme ich entweder beliebige Buchstaben (a, j oder auch mal ein Zeichenkette wie Á1j) oder einen korrekten Fehlercode vom Messgerät. Der ist dann entweder "Befehlsfehler" oder "Framing-Fehler". Baudrate etc. müssten aber passen.
Lasse ich die Schleife weg und wähle "Wiederholt ausführen", funktioniert es gar nicht bzw. zufällig ab und zu (ich wechsle am Bildschirm des Geräts zwischen zwei Ansichten und das wird eben ab und zu ausgeführt). Dann bekomme ich auch manchmal den Fehler 1073807253 "Während der Übertragung ist ein Rahmensynchronisations-Fehler (Framing Error) aufgetreten."
RE: Write-Read funktioniert erst ab drittem Schleifendurchgang
Hallo,
wenn ich zwischen write und read die "Bytes at Port" auslese, ist diese Anzahl 0. Wie kann das sein? Danach sage ich ja, dass 20 Bytes abgeholt werden sollen und erhalte die Antwort, dass xyz Bytes abgeholt wurden.
Philipp
23.04.2012, 10:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.04.2012 10:40 von GerdW.)
RE: Write-Read funktioniert erst ab drittem Schleifendurchgang
Hallo Philipp,
Zitat:wenn ich zwischen write und read die "Bytes at Port" auslese, ist diese Anzahl 0. Wie kann das sein? Danach sage ich ja, dass 20 Bytes abgeholt werden sollen und erhalte die Antwort, dass xyz Bytes abgeholt wurden.
Im Gegensatz zu deinem PC ist der RS232 ziemlich langsam. Wenn du also direkt nach dem VISA-Write die Anzahl der Bytes im Buffer abfragst, ist der noch leer: dein Gerät konnte gar nicht so schnell antworten. Das VISA-Read wartet dagegen, bis die gewünschte Anzahl an Bytes (oder das TermChar) gesendet wurde - oder der TimeOut eintritt...
Framingfehler treten auf, wenn das Gerät fortlaufend sendet und man "mitten" im Byte auf die RS232 zugreift. RunContinuous hilft dir da auch nicht weiter...
RE: Write-Read funktioniert erst ab drittem Schleifendurchgang
Diesen Eigenschaftsknoten "Instr" brauchst Du doch gar nicht, warum initialisierts Du die Com-Schnittstelle nicht ganz normal? TermChar ist da Default, da mußt Du gar nichts machen. Auf richtigen TermChar achten (Labview- default ist \n, nicht \r - es kommt darauf an, was die Gegeenstelle will/macht)
Frame-Error ist ganz normal, wenn die Schnittstellenparameter (Baudrate, Stopp-Bits usw.) nicht genau übereinstimmen. Wieso sollten sie, wenn die Initialisierung fehlt?
Zu Bytezahl=0: Visa write ist quasi unendlich schnell, es macht aber nichts anderes als den Write-String in den Sendepuffer zu schieben. Wenn du unmitelbar danach die Anzahl der Bytes im Empfangspuffer abfragt, dann hat ja das Senden des Strings zum Gerät gerade erst begonnen, an Befehlverarbeitung auf der Gegenstelle und Empfang von ihr ist da überhaupt noch nicht zu denken.
RE: Write-Read funktioniert erst ab drittem Schleifendurchgang
Hallo,
ich kann jetzt Framing-Fehler vermeiden und konnte nachvollziehen warum "Bytes at Port" 0 ist. Danke schonmal.
Das Programm habe ich geändert (siehe Anhang) und rausgefunden, dass die Konfiguration des Ports Zeit braucht. Da ich nicht gewartet hatte, wurden irgendwelche Zeichenketten erzeugt.
Das neue Programm macht jetzt folgendes:
Es gibt beim einfachen Ausführen eine Fehlermeldung vom Gerät zurück. Diese ist nicht in der Anleitung beschrieben, hat aber das gleiche Format wie die anderen Fehlermeldungen. Ich warte noch auf Antwort vom Hersteller.
Gehe ich auf "wiederholt ausführen" bekomme ich beim ersten Durchlauf auch die Fehlermeldung, ab dem zweiten Durchlauf funktioniert es.
Woran könnte das denn liegen?
Philipp
P.S. Ich benutze nicht "Visa: Seriellen Port konfigurieren" weil ich zusätzliche Einstellungen brauche (zumindest hab ich's mit dem fertigen VI nicht zum Laufen bekommen).
RE: Write-Read funktioniert erst ab drittem Schleifendurchgang
(23.04.2012 15:32 )DrHoas schrieb: P.S. Ich benutze nicht "Visa: Seriellen Port konfigurieren" weil ich zusätzliche Einstellungen brauche (zumindest hab ich's mit dem fertigen VI nicht zum Laufen bekommen).
Du solltes Dich mal von der Vorstellung befreien, daß es sich bei Deiner Aufgabe um einen schwierigen Sonderfall handelt. Es ist etwas ganz und gar Einfaches und funktioniert ohne Sequenzrahmen, ohne Waits, ohne bytes at Bord und ohne extra Eigenschaftsknoten. Zumindest hat es 1000e Male vorher schon so funktioniert.
Man kann dir allerdings kein VI posten, denn dazu brauchte man die Schnittstellenbeschreibung des Gerätes, und jedes Wort kann da wichtig sein.
Das Konfigurations-VI enthält auch nur diesen von Dir benutzten Eigenschaftknoten, mit sogar etwas mehr Eigenschaften, die evtl. entscheidend sein könnten. (ASRL End Out brauchst Du nicht):