LabVIEWForum.de - RS-485 to USB

LabVIEWForum.de

Normale Version: RS-485 to USB
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LabViewgemeinde,
ich bin Neuling und benötige mal eure Hilfe. Ich baue gerade eine Anlage auf, die einen RS485 besitzt. Über diesen sollen bestimmte Messgrößen abgefragt werden. Als physikalische Schnittstelle benutze ich einen RS485 to USB Konverter. Das Bauteil, welches die Signale sendet, arbeitet nach dem Master-Slave Prinzip. Mit einem anderen Programm funktioniert das auch schon. Hierbei schicke ich Hexadezimalzahlen z.B. (ee e1) über den Bus und erhalte eine Antwort in Hex, die in entschlüssele und in einen Wert umrechne. Leider funktioniert das nicht in LabView. Im Anhang befindet sich das Programm von mir. Vielleicht kann mir einer der Experte sagen, was ich falsche gemacht habe. Im Voraus schon mal vielen Dank.

Gruß CS

P.s. Die Baudrate ist 38400, 8 Datenbits, kein Paritätsbit und 1 Stoppbit
Hallo CS,

herzlich willkommen im Forum!

Zitat: Hierbei schicke ich Hexadezimalzahlen z.B. (ee e1) über den Bus und erhalte eine Antwort in Hex, die in entschlüssele und in einen Wert umrechne. Leider funktioniert das nicht in LabView.
Das funktioniert ganz sicher auch "in LabVIEW", wenn man es richtig macht… Big Grin
Momentan verschickst du leider keine "HEX-Werte", sondern ASCII-Strings, die als HEX-Zahl formatierte Werte enthalten. Ich nehme aber an, dass du die entsprechenden Bytes verschicken willst: erstelle eine String-Konstante, stelle ihren Displaymodus auf "Hex" und tippe dann deine zu verschickenden Werte ein…

Wenn es programmatisch laufen soll: erstelle ein U8-Array und wandle diese mit der passenden Funktion in einen String um (U8-Array zu String). Umgekehrt geht es ebenso: man kann einen String auch in ein U8-Array umwandeln lassen…
Außerdem liegen einmal wieder die Standard-Fehler / Probleme in deinem VI vor:

- Termination-Char VISA-Read ist aktiviert. Ist das wirklich korrekt?
- Direkt nach Write hast du sicherlich noch keine Antwort vorliegen (Gerade bei RS-485, der Bus ist in der Regel nur Simplex). Logischerweise ist direkt danach der Lesebuffer noch leer.

Gruß, Jens
Wenn wir schon bei Standardfehlern sind:
- Sequenzstruktur ist unnötig (THINK DATAFLOW!)
- Terminal ohne Label: ganz schlechter Style!
- fehlende Wartezeit in der Schleife
Schon mal vielen Dank für die vielen Antworten. Aber wie gesagt, ich fange gerade erst an mit LabView und kenn mich mit dem Fachchinesisch noch nicht ganz so aus. Blink

Die Antwort des anderen Programms habe ich mit dem Oszi angeguckt und die kommt unmittelbar nach dem senden. Es ist kein zeitlicher versatz zwischen senden und empfangen.

Was ist denn bitte ein U8 Arrey? Zumindest die Arreys hab ich gefunden. Vielleicht kann einer von euch das Programm ein bißchen umschreiben. Ich denke für euch is das ein Klacks
Da wird das Kommunikationsprotokoll deiner Gegenstelle nicht kennen, ist das eben kein Klacks. Die offenen Fragen zu TerminationChar, Darstellung der Zeichen (sollen wirklich HEX-ASCII-Zeichen versandt werden oder nicht) kannst nur du beantworten.

Gruß, Jens
(19.10.2015 11:01 )LabView-CS schrieb: [ -> ]Es ist kein zeitlicher versatz zwischen senden und empfangen.
Die Antwort kommt sicher nicht zur selben Zeit wie das Anfrage. Somit besteht schon ein zeitlicher Versatz.

Gruß, Jens
Gruß, Jens
(19.10.2015 11:01 )LabView-CS schrieb: [ -> ]Es ist kein zeitlicher versatz zwischen senden und empfangen.
Die Antwort kommt sicher nicht zur selben Zeit wie das Anfrage. Somit besteht schon ein zeitlicher Versatz.

Nein, nicht zur gleichen zeit. direkt im Anschluss.


Bezüglich TerminationChar und ASCII kann ich nichts sagen. Ich habe den serial port monitor 6.0 benutzt und stelle der Nachricht auf hex. Huh
Moin Männer, der Tipp mit der String Konstante war super. Anlage arbeitet 2hands Vielen Dank
Referenz-URLs