« Heizung, Lüftung, Klima  |

KNV S1155/S1255 Modbus TCP - erste Schritte

Teilen: facebook    whatsapp    email
Zusammenfassung anzeigen (Beta)
 1  2 ... 3 ... 10  11  12  13 ... 14 ... 32  33  34 
  •  dkmh
9.12.2019 - 23.12.2024
679 Antworten | 91 Autoren 679
26
705
Bei mir läuft seit letzten Freitag eine neue KNV S1255 und ich wollte mal über meine Erfahrungen zum Thema Modbus TCP berichten, weil es ja eine der Neuerungen im Vergleich zum Vorgänger ist und vielleicht den einen oder anderen interessiert.

Allzu weit bin ich noch nicht gekommen, aber grundsätzlich läuft es, man kann jetzt ohne extra Zubehör direkt übers lokale Netzwerk die Betriebsparameter abfragen (ändern habe ich noch nicht versucht)

Ablauf: 
1. Wärmepumpe ins Netzwerk bringen (WLAN oder Kabel)
2. Modbus TCP im Menü aktivieren
3. IP Adresse der Wärmepumpe herausfinden (Hab ich im Menü nirgends gefunden, also entweder übers Routerinterface oder per Netzwerkscanner)
4. Mit Modbus TCP client verbinden (ich hab https://www.modbustools.com/modbus_poll.html verwndet zum testen ob die Verbindung grundsätzlich klappt)
  - beim verbinden einfach "Modbus TCP/IP" und die IP Adresse und port 502 einstellen.
  - über das selbe tool kann man auch register abfragen siehe https://www.modbustools.com/quickstart.html

Was man dazu noch braucht ist die Registerbeschreibung, da hab ich mich an folgendes gehalten (Beitrag von sisasole):

https://www.haustechnikdialog.de/Forum/t/221748/Neue-Nibe-S-Serie-Wer-hat-Infos-Lohnt-sich-das-warten-?page=2

Bei den Registern ist der typ zu beachten (holding/input)
Allerdings bekomme ich bei manchen Registern keine Werte, bin mir nicht sicher ob die Liste korrekt und komplett ist.

Aber auf den ersten Blick schaut das alles gut aus, eine gute Lösung für die lokale Einbindung der Wärmepumpe.

  •  DerTod2
24.6.2021  (#221)
Stimmt natürlich... SMA nimmt Standardmäßig die 126 als Unit ID für Sunspec (Unit ID für Modbus + 123). 
Die Unit ID kann ich bei der Regelung von Nibe natürlich nicht angeben :/ Auf welche Unit ID achtet die Regelung überhaupt?

Gibt es sonst eine Möglichkeit einen Modbus Server bereitzustellen der einfach die Daten 1 zu 1 umsetzt auf die passende Unit ID? Ich vermute die 1 wenn das nicht weiter von Nibe beachtet wurde ^^


1
  •  Leo_B
27.6.2021  (#222)

zitat..
passra schrieb:

Gibt ja noch nicht mal ein Change-Log, der Link geht immer noch auf das Dokument von 2.4.3.

Bervor ich das nicht gelesen habe, wird da gar nicht upgedated 😉

Bei mir verweist der Link in myUplink noch immer auf das Changelog von 2.4.3.
https://www.nibe.eu/myuplink_changelog
Habt Ihr vielleicht einen besseren Link für mich?
Die Sunspec Modbus Funktionalität würde mich schon sehr reizen.. 😀
Habt Ihr schon irgendwo Doku dazu gefunden? Eine technische Beschreibung wäre praktisch. Mein Fronius kann seine Werte z.B. in zwei Modi publizieren: Als Float oder als Integer mit Skalierungsfaktor in einem eigenen Register...


1
  •  ThomasLevering
27.6.2021  (#223)
Ich Finde die auch nicht mehr.
Ich kann auch keinen Verbindungsversuch der WP WP [Wärmepumpe] zum WR WR [Wechselrichter] festellen (Wireshark)

1
  •  ds50
  •   Silber-Award
28.6.2021  (#224)

zitat..
Leo_B schrieb: Bei mir verweist der Link in myUplink noch immer auf das Changelog von 2.4.3.

Hab genau wegen diesem Thema schon letzte Woche dem Nibe-Support geschrieben, bekam das hier zurück:

"We have unfortunately received a bug which means that the version history is not displayed correctly, our developers are working on it and expect it to be fixed soon."


1
  •  Pretorianer
  •   Bronze-Award
28.6.2021  (#225)
Same. Wenn die schon devs brauchen um release-notes upzudaten und sich hier ein "bug" einschleichen kann verstehe ich so manchen quirks mit den firmware-releases ^^

1
  •  passra
  •   Gold-Award
30.6.2021  (#226)
Eine Woche vergangen und die "developers" haben es immer noch nicht geschafft, EINE Datei auf dem Server auszutauschen, was für ein trauriger Verein...
Technik Note 1, Software Note 5

1
  •  ds50
  •   Silber-Award
1.7.2021  (#227)
Hab deswegen Anfrage geschickt, heute das bekommen:

"Hi

we must apologize for the delay, the the release note is now published"

Vielleicht hatten sie es einfach vergessen. emoji

1
  •  passra
  •   Gold-Award
1.7.2021  (#228)
So, heute war's bei mir dann auch so weit, aus heiterem Himmel ist die Steuerung abgestürzt, kein Werte mehr über Modbus, am Display kein Datum mehr, keine Anzeigen...
hab jetzt erst mal neu gestartet, da selbst auf "Firmwareupdate" keine Reaktion mehr kam...
Firmware V2.4.3

1
  •  Pedaaa
  •   Gold-Award
1.7.2021  (#229)
und nach Neustart alles wieder gut?
Ich bin nun schon eine Weile auf 2.2.1 weil bei der schießt sich die WW WW [Warmwasser]-Ladung bei mir nicht ins aus, und ich kanns auf Auto laufen lassen.
Bisher zum Glück keine Abstürze noch

1
  •  passra
  •   Gold-Award
1.7.2021  (#230)
ja, jretzt läft sie wieder ganz normal...

1
  •  ThomasLevering
7.7.2021  (#231)
Der Changelog ist Aktualisiert

1
  •  Leo_B
7.7.2021  (#232)

zitat..
passra schrieb:

So, heute war's bei mir dann auch so weit, aus heiterem Himmel ist die Steuerung abgestürzt, kein Werte mehr über Modbus, am Display kein Datum mehr, keine Anzeigen...
hab jetzt erst mal neu gestartet, da selbst auf "Firmwareupdate" keine Reaktion mehr kam...
Firmware V2.4.3

Ich hab schon gehofft, ich bleib verschont...
... aber heute war ich auch dran - sie hat sich aufgehängt.
Die Start-Screens haben noch funktioniert aber beim Aufruf der Menüs nur mehr ein leerer Schirm. Keine Modbus-Daten mehr.
Ich hatte FW 2.4.3. Nach einem Reboot war zum Glück wieder alles da.
Hab die Gelegenheit gleich genutzt um auf 2.5.1 upzugraden.
Proceeding with fingers crossed...


1
  •  Leo_B
8.7.2021  (#233)

zitat..
ThomasLevering schrieb:

Der Changelog ist Aktualisiert

Bei den Neuerungen wird ein neues Modbus-Register erwähnt:
 • Possibility to read out instantaneous power use via modbus register 2157
Funktioniert bei mir aber nicht.
Wenn ich es als Input-Register ansprechen will (wäre logisch), erhalte ich eine Illegal function Modbus Exception, so wie bei den anderen nicht belegten Registern.
Wenn ich es als Holding-Register auslese, kommt 0 zurück, obwohl gerade Warmwasser gemacht wird.
Hat hier schon jemand Erfolg gehabt?

1
  •  Leo_B
14.7.2021  (#234)
Ich hab mir das neue (nicht funktionierende) Modbus-Sunspec Feature mal genauer angesehen...

zitat..
ThomasLevering schrieb:
Ich kann auch keinen Verbindungsversuch der WP WP [Wärmepumpe] zum WR WR [Wechselrichter] festellen (Wireshark)

Wenn man richtig mitsnifft (Port Mirroring oder RSPAN), sieht man schon die Modbus-Requests zum Wechselrichter und dann erkennt man auch gleich, dass Eure Vermutung mit der falschen Unit-ID stimmt.
Das Problem ist, dass der Wechselrichter fix mit der Modbus Unit-ID 0 angesprochen wird:

Frame 1: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface 0
Ethernet II, Src: 58:7a:62:80:ba:4e (58:7a:62:80:ba:4e), Dst: FroniusS_24:70:c7 (00:03:ac:24:70:c7)
Internet Protocol Version 4, Src: 10.0.0.11 (10.0.0.11), Dst: 10.0.0.12 (10.0.0.12)
Transmission Control Protocol, Src Port: 59310 (59310), Dst Port: mbap (502), Seq: 1, Ack: 1, Len: 12
Modbus/TCP
    Transaction Identifier: 31473
    Protocol Identifier: 0
    Length: 6
    Unit Identifier: 0
Modbus
    Function Code: Read Holding Registers (3)
    Reference Number: 40000
    Word Count: 2

Viele Modbus Devices ignorieren die Unit-ID, aber mein Fronius braucht die Unit-ID 1, sonst antwortet er nicht.

Basierend auf den von der Nibe mitgesnifften Daten kann ich das Verhalten mit modpoll reproduzieren:

Nibe request (Unit ID 0)

$ modpoll -0 -r 40000 -t4 -c2 -1 -o 5 -a0 10.0.0.12
modpoll 3.9 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2020 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: MODBUS/TCP, FC3
Slave configuration...: address = 0, start reference = 40000 (PDU), count = 2
Communication.........: 10.0.0.12, port 502, t/o 5.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave...
Reply time-out!

Funktionierender Request (Unit ID 1)

$ modpoll -0 -r 40000 -t4 -c2 -1 -o 5 -a1 10.0.0.12
modpoll 3.9 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2020 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: MODBUS/TCP, FC3
Slave configuration...: address = 1, start reference = 40000 (PDU), count = 2
Communication.........: 10.0.0.12, port 502, t/o 5.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave...
[40000]: 21365
[40001]: 28243

👉 Nibe sollte also die Modbus-Unit-ID konfigurierbar machen.

In der Zwischenzeit könnte ich mir vorstellen, dass man mit einem "Rewriting-Modbus-Reverse-Proxy" zu einem recht schnellen Erfolg kommen könnte. Z.B. schaut es so aus, als könnte man diesen Python Proxy mit wenig Aufwand aufbohren, so dass er die Unit-ID umschreibt:

https://github.com/tiagocoutinho/modbus-proxy

Wenn mir irgendwann an einem Wochenende fad ist, probier ich das vielleicht. Mal schauen, wie weit man dann kommt.

1
  •  sisasole
20.7.2021  (#235)
Anbei meine aktuelle iobroker Modbus Liste für v3.4.9

_address name description unit type len factor offset formula role room cw isScale
7 BT3 Rücklauf °C uint16be 1 0.1 0  value  false false
8 BT7 Brauchwasser Oben °C uint16be 1 0.1 0  value  false false
9 BT6 Brauchwasser °C uint16be 1 0.1 0  value  false false
10 BT10 Sole in °C int16be 1 0.1 0  value  false false
11 BT11 Sole aus °C int16be 1 0.1 0  value  false false
12 BT12 Kondenstaorvorlauf °C uint16be 1 0.1 0  value  false false
13 BT14 Heissgas °C uint16be 1 0.1 0  value  false false
14 BT15 Flüssigkeitsleitung °C uint16be 1 0.1 0  value  false false
37 BT25 Temperatur °C uint16be 1 0.1 0  value  false false
38 BT50 Raumtemperatur °C uint16be 1 0.1 0  value  false false
1046 Inverterfrequenz Inverterfrequenz hz uint16be 1 0.1 0  value  false false
1047 Invertertemperatur Invertertemperatur °C uint16be 1 0.1 0  value  false false
1084 Kompressorstarts Kompressorstarts  uint16be 1 1 0  value  false false
1102 GP1 Heizungspumpe % uint8be 1 1 0  value  false false
1533 GP2 Solepumpe % uint8be 1 1 0  value  false false
1536 Betriebszeit Betriebszeit Gesamt h uint16be 1 1 0  value  false false
1690 Vorlauf Vorlauf °C uint16be 1 0.1 0  value  false false

Leider habe ich ein Problem mit Register 40/41 Volumenstrom... Sobald ich 40 oder 41 eintrage mit egal welchem Datentyp steigt der Adapter aus :(

1
  •  DerTod2
24.7.2021  (#236)

zitat..
Leo_B schrieb:

Ich hab mir das neue (nicht funktionierende) Modbus-Sunspec Feature mal genauer angesehen...

ThomasLevering schrieb:
Ich kann auch keinen Verbindungsversuch der WP WP [Wärmepumpe] zum WR WR [Wechselrichter] festellen (Wireshark)
Wenn man richtig mitsnifft (Port Mirroring oder RSPAN), sieht man schon die Modbus-Requests zum Wechselrichter und dann erkennt man auch gleich, dass Eure Vermutung mit der falschen Unit-ID stimmt.
Das Problem ist, dass der Wechselrichter fix mit der Modbus Unit-ID 0 angesprochen wird:

Frame 1: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface 0
Ethernet II, Src: 58:7a:62:80:ba:4e (58:7a:62:80:ba:4e), Dst: FroniusS_24:70:c7 (00:03:ac:24:70:c7)
Internet Protocol Version 4, Src: 10.0.0.11 (10.0.0.11), Dst: 10.0.0.12 (10.0.0.12)
Transmission Control Protocol, Src Port: 59310 (59310), Dst Port: mbap (502), Seq: 1, Ack: 1, Len: 12
Modbus/TCP
    Transaction Identifier: 31473
    Protocol Identifier: 0
    Length: 6
    Unit Identifier: 0
Modbus
    Function Code: Read Holding Registers (3)
    Reference Number: 40000
    Word Count: 2

Viele Modbus Devices ignorieren die Unit-ID, aber mein Fronius braucht die Unit-ID 1, sonst antwortet er nicht.

Basierend auf den von der Nibe mitgesnifften Daten kann ich das Verhalten mit modpoll reproduzieren:

Nibe request (Unit ID 0)

$ modpoll -0 -r 40000 -t4 -c2 -1 -o 5 -a0 10.0.0.12
modpoll 3.9 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2020 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: MODBUS/TCP, FC3
Slave configuration...: address = 0, start reference = 40000 (PDU), count = 2
Communication.........: 10.0.0.12, port 502, t/o 5.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave...
Reply time-out!

Funktionierender Request (Unit ID 1)

$ modpoll -0 -r 40000 -t4 -c2 -1 -o 5 -a1 10.0.0.12
modpoll 3.9 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2020 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.

Protocol configuration: MODBUS/TCP, FC3
Slave configuration...: address = 1, start reference = 40000 (PDU), count = 2
Communication.........: 10.0.0.12, port 502, t/o 5.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table

-- Polling slave...
[40000]: 21365
[40001]: 28243

👉 Nibe sollte also die Modbus-Unit-ID konfigurierbar machen.

In der Zwischenzeit könnte ich mir vorstellen, dass man mit einem "Rewriting-Modbus-Reverse-Proxy" zu einem recht schnellen Erfolg kommen könnte. Z.B. schaut es so aus, als könnte man diesen Python Proxy mit wenig Aufwand aufbohren, so dass er die Unit-ID umschreibt:

https://github.com/tiagocoutinho/modbus-proxy

Wenn mir irgendwann an einem Wochenende fad ist, probier ich das vielleicht. Mal schauen, wie weit man dann kommt.

Habe einen Proxy auf Java-Ebene geschrieben. Soweit klappt es auch bis darauf das die Nibe auf den Register 40102 + 40103 zugreift. Die Register sind alle hierbei +1...

24-07-2021 17:51:55:317 | Fetched Multiple Registers 40000 counting 2
24-07-2021 17:51:55:361 | Fetched Multiple Registers 40004 counting 16
24-07-2021 17:51:55:391 | Fetched Multiple Registers 40098 counting 2
24-07-2021 17:51:55:423 | Fetched Multiple Registers 40107 counting 1
24-07-2021 17:51:55:457 | Fetched Multiple Registers 40108 counting 1
24-07-2021 17:51:55:496 | Fetched Multiple Registers 40083 counting 2
24-07-2021 17:51:55:530 | Fetched Multiple Registers 40103 counting 2
24-07-2021 17:51:55:539 | Fetched Multiple Registers 40103 counting 2

Die beiden letzten scheinen ein Problem aktuell :(

Update:
----

Nun greift die WP WP [Wärmepumpe] die Werte sekündlich bei mir ab, die beiden fehlenden Register bei SMA habe ich ersteinmal mit -1 zurückgegeben. 

24-07-2021 18:48:01:444 | Fetched Multiple Registers 40000 counting 2
24-07-2021 18:48:01:481 | Fetched Multiple Registers 40004 counting 16
24-07-2021 18:48:01:512 | Fetched Multiple Registers 40098 counting 2
24-07-2021 18:48:01:543 | Fetched Multiple Registers 40107 counting 1
24-07-2021 18:48:01:580 | Fetched Multiple Registers 40108 counting 1
24-07-2021 18:48:01:612 | Fetched Multiple Registers 40083 counting 2
24-07-2021 18:48:01:643 | Fetched Multiple Registers 40103 counting 2
24-07-2021 18:48:01:670 | Fetched Multiple Registers 40093 counting 3
24-07-2021 18:48:01:750 | Fetched Multiple Registers 40052 counting 16

Komisch ist das obwohl ich Anfragen nur weiterleite und nicht selber bearbeite die Werte in der Heizung nicht passen. Einige sind meine ich an der Character Grenze und andere anscheinend nicht richtig sortiert. 

Die PV Leistung ist aktuell 901W und die WP WP [Wärmepumpe] meldet 39321W
Die Seriennummer des Wechselrichters ist durcheinander gewürfelt.
Die Temperatur zeigt 6553,5 an genau wie die Spannung VPV-1.

Das ist mir alles zu blöd so langsam :(

1
  •  DerTod2
24.7.2021  (#237)
Habe es soweit :)
Klappt nun alles, die Temperatur wird von meine Wechselrichter nur leider nicht ausgegeben.  
Und der Produzierte Strom ist nicht fertig da ich nicht weiß welcher Zeitraum hier gemeint ist :(
Und der zweite String wird auch nicht abgerufen ^^


2021/20210724149733.jpg

1
  •  ThomasLevering
9.8.2021  (#238)
So weit bin ich jetzt auch, Die Werte von der PV stehen jetzt in der Wärmepumpe.
Durch/mit einer S7-1200
Die Nibe hält sich aber noch nicht an die Sunspec. Ich musste die Werte einzeln zuweisen

Hier kann man die Modbus Adressen vom SunSpec ableiten
hxxp://github.com/sunspec/models/tree/master/smdx

Die Adressen sind nicht bei allen Wechselrichtern fix.
Wenn man sich aber an das Protokoll hält müsste es aber bei allen SunSpec Wechselrichtern direkt klappen. Ohne Offset/Faktoren usw. Die können auch ausgelesen werden

die kwh werden auch Falsch zusammengerechnet. Die Wörter musste ich schon drehen. Aber wenn das 2. wort über 32768 ist. Ist dieser in der Nibe Negativ. Also int anstatt uint verwendet

1
  •  debabbe
13.8.2021  (#239)
Hi,
ich möchte mich jetzt dann auch an der Sunspec-Integration versuchen. Das ganze soll bei mir über eine S7-1500 laufen, da mein WR WR [Wechselrichter] kein Sunspec kann.
Wo finde ich denn in dem github-Beitrag die Sunspec-Spezifikationen? Bin da irgendwie nicht fündig geworden.

1
  •  ThomasLevering
15.8.2021  (#240)
Bei 40000 fängt es mit den 4 chars "SunS" an.

Dann folgt https://github.com/sunspec/models/blob/master/smdx/smdx_00001.xml

Dann
https://github.com/sunspec/models/blob/master/smdx/smdx_00101.xml

40000 = S
40001 = u
40002 = n
40003 = S
40004 = 1  (für Datenblock in smd _00001xml)
40005 = 66 (Datenblock hat 66 Byte)
...


Normal weiter mit beliebigen Datenblöcken. 
Am Anfang immer die Nr und die länge.
daran hält sich die WP WP [Wärmepumpe] aber noch nicht.
Ich habe hinter dem CommonBlock einfach ein Array mit Integer angelegt. Die mit Zahlen hochgezählt. Und dann geschaut je nach Nr welche Adresse die Richtige ist.

wichtig beim Siemens Baustein den Offset von 40000 einstellen. Bei den kWh die Wörter tauschen.

Von ein paar XML hab ich schon UDT's gemacht, gerade Laptop nicht an...
 


1
  •  debabbe
16.8.2021  (#241)
Vielen Dank für deine Erklärungen.
Ich hatte heute leider nicht viel Zeit und hab mich nur noch ein Bisschen zum Thema Sunspec umgesehen.
Dabei bin ich auf folgende Seite gestoßen: https://sunspec.org/certified-registry/ Hier findet man verschiedene Geräte, die Sunspec unterstützen und zu den Geräten auch, welche Sunspec-Modelle diese unterstützen. Dort gibt’s dann auch die entsprechende Excel, in der die Parameter + Adresse aufgeführt sind.
Gibt’s von Nibe denn schon nähere Infos, mit welchen Sunspec-Modellen sie überhaupt arbeiten? Ich meine, es würde ja keinen Sinn machen, Modelle bereit zu stellen, die später nicht genutzt werden.
 
Gruß
debabbe

1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]


next