LabVIEWForum.de
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)

Seiten: 1 2 3 4


RE: Labview-Kommunikation mit Jumo über RS232 - jg - 22.10.2013 18:01

"Dokument von JUMO": Reden wir von der Modbus-Schnittstellen-Beschreibung von JUMO?

Schritt 1: Schau dir Abschnitt 2.8 an zwecks Schnittstellen-Parameter an (Baudrate, Slave-Adresse etc.)

Schritt 2: Das Bsp. Modbus-Serial-Master mag als Einstieg nützlich sein.

Gruß, Jens


RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 23.10.2013 08:12

(22.10.2013 18:01 )jg schrieb:  "Dokument von JUMO": Reden wir von der Modbus-Schnittstellen-Beschreibung von JUMO?

Schritt 1: Schau dir Abschnitt 2.8 an zwecks Schnittstellen-Parameter an (Baudrate, Slave-Adresse etc.)

Genau das Dokument meine ich. Abschnitt 2.8 habe ich schon angeschaut.

(22.10.2013 18:01 )jg schrieb:  Schritt 2: Das Bsp. Modbus-Serial-Master mag als Einstieg nützlich sein.

Was mein großes Verständnisproblem ist:
Ich habe irgendwelche hex-codes um das Gerät anzusprechen. Wo und in welcher Form gebe ich diese ein?


RE: Labview-Kommunikation mit Jumo über RS232 - jg - 23.10.2013 08:53

(23.10.2013 08:12 )redhand schrieb:  Was mein großes Verständnisproblem ist:
Ich habe irgendwelche hex-codes um das Gerät anzusprechen. Wo und in welcher Form gebe ich diese ein?
Welche HEX-Codes hast du denn?

Gruß, Jens


RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 23.10.2013 09:03

(23.10.2013 08:53 )jg schrieb:  Welche HEX-Codes hast du denn?

Beispielsweise: Startbefehl: 01 06 00 6F 00 08


Wie die Anweisungen aufgebaut sind kann man im "Dokument von JUMO" ab Punkt 3 'Funktionen' sehen.
Hier sind auch Beispiele gegeben
Bsp: Schreiben eines Wortes:
Anweisung: Schreiben des ersten Teils des Wertes: 01 06 00 77 80 00 5810

Im weiteren Verlauf des Dokuments gibt es ab Punkt 5 'Adresstabellen' mit dem entsprechenden Hex-Code.

Was ich aber mit den Codes anfangen soll kann ich mir im Moment nicht vorstellen.
Ich dacht ich muss genau den Hex-Code(den der JUMO auch kennt) abschicken um eine Antwort zu bekommen.
Construction


RE: Labview-Kommunikation mit Jumo über RS232 - jg - 23.10.2013 10:22

Aha, also die Hex-CODE Strings brauchen dich eigentlich nicht zu interessieren. Das macht die API für dich.

Zum Verständnis:
Der String 01 06 00 77 80 00 58 10 bedeutet:
1) Abfrage des Gerätes mit Slave-Adresse 1
2) Funktionscode 06, also Setzen eines Registers
3) 00 77: Schreiben des Registers mit der Adresse 0x0077. Hier kommt die Tabelle in Abschnitt 5 ins Spiel. Auf den Adressen 0x0077 und 0x0078 kann ein FLOAT-Wert gesetzt werden (2 U16-Register, da ein Float-Wert 4 byte groß ist). Es soll der Float-Wert 275 gesetzt werden. Die HEX-Darstellung dieses Wertes nach IEEE754 ist 0x43898000. Laut Doku muss zuerst das "Low-U16-Register" geschrieben werden, also 0x8000 auf Adresse 0x0077.
[attachment=46888]
4) 80 00: Das ist der Wert im Register 0x0077 (vgl. Punkt 3)
5) 58 10: Das ist die Checksumme, die berechnet die API für dich.
Dieses Bsp. entspricht in LabVIEW dem folgenden Kommando:
[attachment=46890]

Sinnvollerweise setzt man natürlich hier gleich beide Register mit einem Kommando, ist ja ein Wert. Das sieht dann so aus:
[attachment=46893]

Gruß, Jens


RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 23.10.2013 11:16

Erstmal vielen Dank für die ausführliche Hilfestellung!! Super!

(23.10.2013 10:22 )jg schrieb:  Aha, also die Hex-CODE Strings brauchen dich eigentlich nicht zu interessieren. Das macht die API für dich.
Das ist schonmal gutWink

(23.10.2013 10:22 )jg schrieb:  Zum Verständnis:
Der String 01 06 00 77 80 00 58 10 bedeutet:
1) Abfrage des Gerätes mit Slave-Adresse 1
2) Funktionscode 06, also Setzen eines Registers
3) 00 77: Schreiben des Registers mit der Adresse 0x0077. Hier kommt die Tabelle in Abschnitt 5 ins Spiel. Auf den Adressen 0x0077 und 0x0078 kann ein FLOAT-Wert gesetzt werden (2 U16-Register, da ein Float-Wert 4 byte groß ist). Es soll der Float-Wert 275 gesetzt werden. Die HEX-Darstellung dieses Wertes nach IEEE754 ist 0x43898000. Laut Doku muss zuerst das "Low-U16-Register" geschrieben werden, also 0x8000 auf Adresse 0x0077.

4) 80 00: Das ist der Wert im Register 0x0077 (vgl. Punkt 3)
5) 58 10: Das ist die Checksumme, die berechnet die API für dich.

Bei Punkt 3 verstehe ich nicht wieso ein Wert (hier 275) gesetzt werden soll.
Weitere Fragen Bahn
-Ich habe nur den Start-String gegeben (01 06 00 6F 00 08). Hier fehlen die letzten Stellen, welche im Beispiel von dir die Check-Summe war. Wieso fehlt diese hier?
-Wenn ich das MB Serial Master VI erstelle und möchte die Registeradresse (bei Dir x77) und x8000 eintragen erscheint kein vorangestelltes 'x'.
-Möchte ich bei der Registeradresse '6F' (Datentyp ist Bit, nicht FLOAT), was ändert sich dann?
Muss ich da etwas umstellen?
-In welcher Form erhalte ich eine Antwort vom Gerät?

Grüße


RE: Labview-Kommunikation mit Jumo über RS232 - jg - 23.10.2013 12:08

(23.10.2013 11:16 )redhand schrieb:  Bei Punkt 3 verstehe ich nicht wieso ein Wert (hier 275) gesetzt werden soll.
Ist halt das Beispiel in der Doku. Sie setzen diesen einen Wert. Wieso auf 275? KA
(23.10.2013 11:16 )redhand schrieb:  -Ich habe nur den Start-String gegeben (01 06 00 6F 00 08). Hier fehlen die letzten Stellen, welche im Beispiel von dir die Check-Summe war. Wieso fehlt diese hier?
KA, wahrscheinlich ein Fehler in der Doku. Würde ich ignorieren.
(23.10.2013 11:16 )redhand schrieb:  -Wenn ich das MB Serial Master VI erstelle und möchte die Registeradresse (bei Dir x77) und x8000 eintragen erscheint kein vorangestelltes 'x'.
Rechtsklick auf die Controls/Konstanten -> Visble Items -> Radix. Dann kannst du von Dezimal auf Hex-Darstellung der Zahl umstellen.
(23.10.2013 11:16 )redhand schrieb:  -Möchte ich bei der Registeradresse '6F' (Datentyp ist Bit, nicht FLOAT), was ändert sich dann?
Muss ich da etwas umstellen?
Da verstehst du etwas falsch. Du schreibst das gesamte U16-Register 0x006F.
Jedes Bit der U16-Zahl bedeutet aber etwas anderes. Hier lohnt es sich mglw. die Darstellung der U16-Zahl auf Binär umzustellen (s. oben).
(23.10.2013 11:16 )redhand schrieb:  -In welcher Form erhalte ich eine Antwort vom Gerät?
Als U16-Zahlen, bei Fehlern eine Meldung im Fehlercluster.

Gruß, Jens


RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 23.10.2013 12:40

Danke!

also wenn ich meinen Startbefehl (01 06 00 6f 00 08) senden möchte, kann ich das dann so machen wenn ich eine Antwort vom Jumogerät 'sehen' möchte?


RE: Labview-Kommunikation mit Jumo über RS232 - jg - 23.10.2013 15:03

Im Prinzip ja (wenn du die Standard-Einstellungen am Jumo hast, also z.B. 9600 Baud). Das Serial-Read brauchst du aber nicht, die Protokoll-Rückmeldung wertet schon das "Write Single Register" aus.

Gruß, Jens


RE: Labview-Kommunikation mit Jumo über RS232 - redhand - 24.10.2013 07:43

Super! Schonmal vielen Dank!

(23.10.2013 15:03 )jg schrieb:  Das Serial-Read brauchst du aber nicht, die Protokoll-Rückmeldung wertet schon das "Write Single Register" aus.

Wo sehe ich dann den vom Gerät zurückgegebenen String?
Das "Write Single Register" hat ja dann nur noch den "Exception Code" als Ausgang.
Oder muss ich, wenn ich zb die aktuelle Temperatur will, etwas "lesen" über "MB Serial Master Read"?


Nochmal zu den Punkten 1 und 2 von oben:
Der String 01 06 00 77 80 00 58 10 bedeutet:
1) Abfrage des Gerätes mit Slave-Adresse 1
2) Funktionscode 06, also Setzen eines Registers

zu 1) -> Woher weiß das "Write Single Register" das es mit der Slave Adresse1 kommuniziert? Ich wähle ja über das "MB Serial Init" den COM-Port aus den ich ansprechen möchte oder?

zu 2) -> Steht "WRITE Single Register" für SETZEN eines Registers´?