![]() |
Labview-Kommunikation mit Jumo über RS232 - 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: Labview-Kommunikation mit Jumo über RS232 (/Thread-Labview-Kommunikation-mit-Jumo-ueber-RS232) |
RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 25.10.2013 14:27 (25.10.2013 13:14 )jg schrieb: Entschuldige die harten Worte, aber das ist doch jetzt "Blödsinn". Dein VI passt jetzt zufällig genau auf das 1 Bsp. im Dokument, nämlich auf die Abfrage der 2 Sollwerte auf Adresse 0x3100 und 0x3102. Und selbst hier hast du einen Fehler, die Rückmeldung ist 13 Byte lang, nicht 12. Harte Worte sind kein Thema ![]() Ich will auch garkeine 8 Register abfragen. Ich will zunächst mal eines richtig auswerten! Dein VI funktioniert und liefert auch die selben Werte die ich mir über einen Konverter außerhalb von LI "von Hand" berechnen. Vermutlich stimmt dann innerhalb des Jumo etwas nicht. (25.10.2013 13:18 )GerdW schrieb: also wirklich...Ich erwarte nicht das mir jemand etwas programmiert, keine Sorge ![]() Ich bin nur immernoch ein Neuling auf dem Gebiet und versuche mich durchzukämpfen. Du kennst bestimmt auch das Zitat:"Nicht der, der fragt ist der Dumme, sondern der, der nicht fragt";) RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 25.10.2013 16:02 Zum Abschluss hier: Juhu ich habs ![]() Ich hab das richtige Register gefunden und es geht, erstmal vielen Dank euch!! ![]() Noch etwas zum Schluss weil ich es auch verstehen will: Jens, du benutzt zur Umwandlung 1D-Array dezimieren -> 1D-Array überführen -> TypeCast (siehe Bild) Was machen (vorallem die ersten 2 Elemente) mit dem Array. Lesen sich die VI's intelligent genau die Teile des Antwortstrings heraus welche ausgewertet werden müssen oder wie muss ich mir das vorstellen? Und wie bekomme ich die "Holding String"-Konstante über dem Umwandler hin? Das Register womit es jetzt funktioniert, funktioniert wie das Register mit der Adresse 0x3100 aus deiner Beispiellösung. Also 2 Werte sind aus dem Antwortstring zu entnehmen. Vergleiche ich den Antwortstring des Registers womit es jetzt funktioniert (Analogeingang) mit dem Register, mit dem ich die ganze Zeit gearbeitet habe (Istwert), bekomme ich den selben Hex-Code als Antwort. (In meinem VISA-VI, wo ich den Hex-Code "von Hand" auswerten muss) Wieso bekomme ich, wenn ich den Teil des Strings, welcher mir meinen Wert liefert, via IEE754 in einen Dezimalwert übersetzte nicht den selben Wert wie du in deinem VI? Außerdem frage ich mich, warum das eine Register (mit dem es jetzt geht) in deinem VI richtig ausgelesen wird aber das andere, welches eigentlich die gleiche Hex-Antwort liefert nicht? Beide Register sind Datentyp Float. Register mit dem es geht: Zugriff R/O; Anderes Register: Zugriff: W/O Danke und schönes Wochenende ![]() RE: Labview-Kommunikation mit Jumo über RS232 - jg - 25.10.2013 16:30 (25.10.2013 16:02 )redhand schrieb: Zum Abschluss hier: Juhu ich habsAha, das ist jetzt das erste Mal, dass du erwähnst, dass du eigentlich ein anderes Register als in der Doku auslesen willst. Und da wunderst du dich, dass du andere Werte als im Display des Jumo siehst. ![]() Der Vollständigkeit halber, welche Register-Adresse fragst du ab? (25.10.2013 16:02 )redhand schrieb: Jens, du benutzt zur Umwandlung 1D-Array dezimieren -> 1D-Array überführen -> TypeCast (siehe Bild)Lies dir die Hilfe zu den "Array"-VIs durch. Das kaue ich jetzt nicht vor. (25.10.2013 16:02 )redhand schrieb: Und wie bekomme ich die "Holding String"-Konstante über dem Umwandler hin?Meinst du das "Single-Array" am Anschluß vom Typecast? Leeres Array anlegen. Dann eine Numeric-Konstante reinlegen. Dann Datentyp von Double auf Single ändern. Hast du schon die Links in Gerds Signatur gesehen? (25.10.2013 16:02 )redhand schrieb: Das Register womit es jetzt funktioniert, funktioniert wie das Register mit der Adresse 0x3100 aus deiner Beispiellösung. Also 2 Werte sind aus dem Antwortstring zu entnehmen.Logisch, ein FLOAT Wert muss in 2 Registern übertragen werden. (25.10.2013 16:02 )redhand schrieb: Vergleiche ich den Antwortstring des Registers womit es jetzt funktioniert (Analogeingang) mit dem Register, mit dem ich die ganze Zeit gearbeitet habe (Istwert), bekomme ich den selben Hex-Code als Antwort. (In meinem VISA-VI, wo ich den Hex-Code "von Hand" auswerten muss) ![]() ![]() (25.10.2013 16:02 )redhand schrieb: Außerdem frage ich mich, warum das eine Register (mit dem es jetzt geht) in deinem VI richtig ausgelesen wird aber das andere, welches eigentlich die gleiche Hex-Antwort liefert nicht?s.oben, ich habe keine Ahnung, mit welchen Registern du rumgespielt hast. R/O = Read-Only, hier musst du also mit Function 3 oder 4 (Read Input oder Read Holding Register) arbeiten. W/O = Write-Only, das Register lässt sich nicht lesen, sondern kann nur per Funtion Code 6 (bzw. 10) (Write Multiple Register) geschrieben werden. Gruß, Jens P.S.: Es ist löblich, Fragen zu stellen und auch das Protokoll zu verstehen. Aber etwas Eigeninitiative beim Nachlesen, was LabVIEW-Funktionen machen und vollständige Fragestellungen sind ebenso löblich. RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 28.10.2013 09:38 (25.10.2013 16:30 )jg schrieb: Aha, das ist jetzt das erste Mal, dass du erwähnst, dass du eigentlich ein anderes Register als in der Doku auslesen willst. Und da wunderst du dich, dass du andere Werte als im Display des Jumo siehst.Ich wusste ja nicht welches Register ich auslesen muss, dass ich die Werte auf dem Display sehe, deshalb musste ich rumprobieren. Die Register-Adresse mit der ich jetzt die Display-Werte sehe ist: Signalbezeichnung: Analogeingang1: 0x0035 (FLOAT; R/O) Wobei ein Wert die aktuelle Temperatur darstellt, wie auf dem Display. Der andere Wert ist konstant 200001. (25.10.2013 16:30 )jg schrieb: Lies dir die Hilfe zu den "Array"-VIs durch. Das kaue ich jetzt nicht vor.Ich hatte nur gefragt weil ich es nicht 100% verstanden habe. Ich versuch mir schon alles durchzulesen und es selbst herauszubekommen bevor ich überhaupt hier frage. (25.10.2013 16:30 )jg schrieb: Meinst du das "Single-Array" am Anschluß vom Typecast? Leeres Array anlegen. Dann eine Numeric-Konstante reinlegen. Dann Datentyp von Double auf Single ändern. Hast du schon die Links in Gerds Signatur gesehen?genau das, danke! (25.10.2013 16:30 )jg schrieb: Über VISA kriege ich folgenden Hex-Code als Antwort des Registers 0x0035: 0103 08F0 5C41 B350 01 03 08 steht ja hier für: Slave-Adresse, Funktion und Anzahl gelesener Bytes. F05C 41B3 muss ich dann in den Temperatur-Wert umkonvertieren. Mittlerweile weiß ich, dass wenn ich 41B3 F05C (also genau umgekehrt) umwandle, den richtigen Temperatur-Wert bekomme. Warum das so ist, kp.. RE: Labview-Kommunikation mit Jumo über RS232 - jg - 28.10.2013 09:44 (28.10.2013 09:38 )redhand schrieb: Über VISA kriege ich folgenden Hex-Code als Antwort des Registers 0x0035: 0103 08F0 5C41 B350Weil das so in der Anleitung von Jumo steht! Hatten wir schon. Jumo überträgt/erwartet bei einem 4-Byte-Wert (also z.B. Single oder U32) zuerst das Low-Word und dann das High-Word, deshalb das Tauschen der Reihenfolge! Gruß, Jens RE: Labview-Kommunikation mit Jumo über RS232 - GerdW - 28.10.2013 09:45 Hallo redhand, Zitat:Mittlerweile weiß ich, dass wenn ich 41B3 F05C (also genau umgekehrt) umwandle, den richtigen Temperatur-Wert bekomme. Warum das so ist, kp..Warum das so ist? Das haben wir doch schon geschrieben: - hier von Jens - das steht garantiert auch in der ModBus-Dokumentation! |