Jump to content

Modbus TCP und Simply Modus Client. Keba klappt, aber Tinkerforge leider nicht?


Blahhuber

Recommended Posts

Hi,

ich versuche meine Wallbox via Modbus TCP anzusteuern. Dies möchte ich am "Ende" mit dem Gira Homeserver machen. Um die Modbus TCP Anbindung zu testen, verwende ich den Simply Modbus TCP Client: https://www.simplymodbus.ca/TCPclient.htm

Leider klappt das nicht, ich kriege als Antwort immer, egal was ich einstelle:

02 = Illegal Data Address

Ich habe es mit Register 2004 probiert. Auch mit Einstellungen wie Offset -1 usw, aber ich kriege nur die Verbindung her und keine Antwort. Auf Keba umgestellt, klappt die Modbus TCP Verbindung wie in der Keba Modbus TCP Beschreibung dargestellt und das klappt auch mit dem Gira Homeserver.

Welche Fragen, ich nicht so richtig sicher beantworten kann:

Slave ID?, minus offset? Register länge ist 16 bit vermute ich?

Mit freundlichen Grüßen

Blahhuber

Link to comment
Share on other sites

Die Keba-Register sind (obwohl du sie nur lesen, nicht schreiben kannst) Holding Register, die du mit Function Code 3 (Read Multiple Holding Registers) lesen kannst. Bei unserem Registersatz sind Register, die du nur lesen kannst Input Register, die du mit Function Code 4 (Read Input Registers) lesen musst.

Edit: Die Register sind in der Tat 16 Bit lang, aber fast alle Werte sind 32 Bit lang und liegen deshalb in zwei Registern hintereinander. Das ist bei dem Keba-Registersatz aber auch so.

Link to comment
Share on other sites

On 12/4/2023 at 9:38 AM, Blahhuber said:

Oh doch doch, die Keba Register kann ich sogar perfekt schreiben um den Ladestrom vor zugeben oder die Ladung zu starten/stoppen. Das klappt bereits ohne Probleme.

Ah, sorry. Ich meinte z.B. Register 1000 (der Ladezustand). Den zu schreiben ergibt keinen Sinn, deshalb hat das keinen Effekt wenn du das tust.

On 12/4/2023 at 9:38 AM, Blahhuber said:

Eure Register habe ich versucht mit Funktionscode 3 und 4 zu lesen. Es muss also 4 sein, alles klar. Wie schreibt ihr Register? 06 oder 16?

Das sind alles 32-Bit-Werte also brauchst du 16 (Write Multiple Holding Registers). Wenn der Wert, den du schreiben willst nur 16 Bit groß ist, kannst du aber auch 06 benutzen, wenn die anderen 16 Bit (also das andere Register) schon auf 0 steht.

Also wenn du z.B. 6000 (in Hex 0x1770) auf das Holding Register 1003 schreibst (mit 06) dann setzt es den Ladestrom auf 6 Ampere. "Korrekter" wäre aber auf Register 1002 mit Code 16 eine 0x00001770 zu schreiben. Funktionieren sollte beides.

  • Thanks 1
Link to comment
Share on other sites

Der Hinweis mit Functions Code 4, wäre super wenn die bei der Registe Anzeige in der Wallbox stehen würde. Auch die lese/schreib Folge wäre super (Also Little oder Big Endian?). Welche Slave ID wäre noch interessant? SMA will z.b. will 3, andere 255. Welche wollt ihr?

Edited by Blahhuber
Link to comment
Share on other sites

On 12/4/2023 at 10:03 AM, Blahhuber said:

Der Hinweis mit Functions Code 4, wäre super wenn die bei der Registe Anzeige in der Wallbox stehen würde. Auch die lese/schreib Folge wäre super.

Guter Punkt. Füge ich gleich ein.

On 12/4/2023 at 10:03 AM, Blahhuber said:

Welche Slave ID wäre noch interessant? SMA will z.b. will 3, andere 255. Welche wollt ihr?

Die ist egal. Die Modbus-TCP-Implementierung ignoriert die Slave-ID komplett.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...