LabVIEWForum.de - Messgerätansteuerung mit Visa über RS232

LabVIEWForum.de

Normale Version: Messgerätansteuerung mit Visa über RS232
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich versuche gerade ein Messgerät über die RS232 Schnittstelle mit Hilfe von Visa zu implemetieren.
Ziel ist es, auf einen Steuerbefehl (ASCII-Zeichenkette) einen Wert vom Messgerät ausgegeben zu bekommen.
Dieser Wert liegt ebenfalls in Form einer ASCII-Zeichenkette vor.
Mit dem Rechner ist das Gerät über einen USB<-->RS485<--->RS232 Verbunden. Dieses braucht keinen
LabView Treiber. Messwertausgabe mit einem kleinen Perlprogramm funktionierte mit den Steuerbefehlen
tadellos: z.B. x00x02abcd F Ax03xf9 (Anfrage hier geändert, soll ja nur das Prinzip zeigen). Das Leerzeichen
zwischen d und F ist wichtig und darf nicht vernachlässigt werden.
Ein weiteres Linefeed (Carrige return etc.) wird nicht gesendet. Und ist denk ich sogar schädlich.

Grundaufbau ist angehängt.

Das Messgerät braucht für das bereitstellen einer Antwort 5ms- 300 ms ( je nach Befehl)-> Es ist zwingend notwendig
zu warten bis der Wert eingetroffen ist.
Aber soweit komm ich als blutiger Anfänger nicht mal.
Was ich bisher sagen kann:
Ich sehe, an dem Konverter, dass Daten gesendet werden (hab ich mir auch mal ausgeben lassen in
der Case) ... Die Anfrage geht dann in den nächsten Case dort bleibt sie jedoch im Visa lesen "stecken" und ich bekomme eine lustige
Fehlermeldung:

Fehler: -1073807339 .... Zeitüberschreitung, bevor der Vorgang abgebrochen werden konnte.
Das passiert auch, wenn ich mir das ganze in der Highlightfuntkion anschaue.

Ich persönlich gehe davon aus, dass das Leerzeichen im Steuerstring mit dafür verantwortlich ist. Ebenso hab ich die dumme Befürchtung
das es hier an den Linefeed caracters liegt. Ich hab nu schon einiges versucht.... steh aber leider völlig auf dem Schlauch.

Noch eine weitere Angabe:
Eigenschaften meines Stingbedienelementes ist Backslashcodes ( wo ja leider immer die Option: Am Wortende umbrechen
gesetzt ist).

Ein weiterer Versuch mit einem Stringarray in und ausserhalb der Case wurde auch schon versucht... führte aber zur selben Fehlermeldung.

Ich hoffe mir kann einer helfen.

LabView Version 8.6

LG tierchen
' schrieb:und ich bekomme eine lustige
Fehlermeldung:
Fehler: -1073807339 .... Zeitüberschreitung, bevor der Vorgang abgebrochen werden konnte.
Das passiert auch, wenn ich mir das ganze in der Highlightfuntkion anschaue.
Das ist völlig normal. Das VI Read wartet, und zwar so lange, bis eine von drei Bedingungen erfüllt ist:[list=1]
[*]Es wurde TerminalChar in der Konfig aktiviert, mit Standardwert x0A. VI Read wartet, bis dieses Zeichen im Buffers ist und liest dann den Buffer (d.h. den kompletten Antwortstring) aus.<>
[*]Es sind die mindestens die Zahl Zeichen im Buffer, die am Engang "bytes to read" als Anzahl eingegeben wurde. Wenn das mehr Zeichen sind, als was als Antwort zu erwarten ist, dann ewiges Warten. Sind es weniger, wird die Antwort nicht vollständig gelesen.<>
[*]Das Warten wird durch den in der Konfig eingestellten Timeout beendet. Standardwert ist 10s.<>
[st]Wenn Du den TerminalChar x0A nicht als String-Abschluß hast, und außerdem eine zu große Anzahl von zu lesenden Zeichen angegeben hast, dann kommt es zum Timeout.

Eine einfache Methode in Deinem Fall wäre:
TerminalChar deaktivieren.
Nach Schreiben warten (200ms)
Die Anzahl von Bytes im Buffer lesen
Diese Anzahl an das VI Read anschließen und den Buffer auslesen.
Danke für die schnelle Antwort:

Zitat:Eine einfache Methode in Deinem Fall wäre:
TerminalChar deaktivieren.

Das habe ich mehrfach versucht ;( (in dem Subvi Serielle Schnittstelle) Er setzt es immer wieder. Wie kann ich das verhindern?

Zitat:Nach Schreiben warten (200ms)
Werde ich morgen direkt testen, wenn ich die Messgeräte wieder in den Händen hab. Trag ich das direkt in der Case lesen ein oder im Visa Serielle Schnittstelle? (blush, tschuldigung dumme Frage....)

Zitat:Die Anzahl von Bytes im Buffer lesen
Diese Anzahl an das VI Read anschließen und den Buffer auslesen.

Das hab ich in einer weiteren Version auch schon mal versucht. Es werden max. 35 Bytes ausgegebe.Damit hab ich es auch schon vesucht. Leider nichts ( Ich hab es aber auch schon mit 2000 dort versucht, da ich mal gelesen hatte, dass dieser Wert
weitaus höher sein sollte als der Wert der tatsächlich gesendet wird. Wollte auch nicht).... versuch es aber mal im
Zusammenspiel mit der Wartezeit.
Zitat:Das habe ich mehrfach versucht ;( (in dem Subvi Serielle Schnittstelle) Er setzt es immer wieder. Wie kann ich das verhindern?
Wenn Du an Deinem VI "VISA confugure Serial Port" ein false-Konstante am richtigem Eingang anschließt, dann ist das außerhalb meiner irdischen Erfahrungen, daß sich das von selbst auf true ändert.
' schrieb:Wenn Du an Deinem VI "VISA confugure Serial Port" ein false-Konstante am richtigem Eingang anschließt, dann ist das außerhalb meiner irdischen Erfahrungen, daß sich das von selbst auf true ändert.


Ok ich versuchs morgen mal ... Danke schön.
' schrieb:Mit dem Rechner ist das Gerät über einen USB<-->RS485<--->RS232 Verbunden.
Bist du sicher, dass du hier die Reihenfolge richtig beschrieben hast? Wo ist die RS-232? Am Computer? Am Gerät? Oder hat das Gerät eine RS-485? RS485 ist nicht RS232!

Ich verstehe das gerade so: Da ist ein USB auf RS485 Konverter an deinem PC, und den hast du an der RS232 deines Messgerät angeschlossen. Das wird IMHO nicht gut laufen.

Gruß, Jens
Zitat:Bist du sicher, dass du hier die Reihenfolge richtig beschrieben hast? Wo ist die RS-232? Am Computer? Am Gerät? Oder hat das Gerät eine RS-485? RS485 ist nicht RS232!

Ich verstehe das gerade so: Da ist ein USB auf RS485 Konverter an deinem PC, und den hast du an der RS232 deines Messgerät angeschlossen. Das wird IMHO nicht gut laufen.

Moin,

Das ist ein eine W&T 38211. http://www.wut.de/e-38211-ww-dade-000.php
Ist intern gejumpert. Wurde auch schon mit einem anderen graphischen Programmiertool von mir über einen RS232 Monitor angesprochen ... funktionierte einwandfrei. Computer geht mit USB an den Konverter.

Ich hänge mal noch das Manual an: Ab S19.

RS485 2-Draht-Betrieb ohne Echo. Schnittstelle wird immer über den Com dann angesprochen. Wie gesagt. Ich sehe das die Schnittstelle arbeitet, aber nur im Sendebetrieb *blush*
Messgerät kann 3 Modi. Analog, RS232 und RS485. Wir nehmen RS485. Halt nur mit Busprotokoll ... das intern gejumpert ist.
Zitat:

Ich hoffe das hilft noch weiter. Vielen Dank schonmal
Moin,

So ich habe die Änderungen eingepflegt, bekomme aber immer noch keine Rückmeldung.
Sad
' schrieb:Moin,

So ich habe die Änderungen eingepflegt, bekomme aber immer noch keine Rückmeldung.
Sad


x00x02abcd F Ax03xf9 da die letzten zwei ASCII- Zeichen nur eine Prüfsumme sind habe ich ebenfalls
veruscht diese mit x0d und x0a zu ersetzen (natürlich mit der dazugehörigen Änderung im SubVi Serielle
Schnittstelle) leider auch nichts. Darauf hin in den Testprogrammen geschaut: Lief. '*seuftz*
Läuft. Ich danke allen für die Unterstützung. Lag im Endefekt dann an der
endgültigen Formatierung.
Vielen vielen Dank
Referenz-URLs