« Heizung, Lüftung, Klima  |

KNV S1155/S1255 Modbus TCP - erste Schritte

Teilen: facebook    whatsapp    email
 <  1  2 ... 3  4  5  6  7 ... 8 ... 29  30  31  > 
  •  dkmh
9.12.2019 - 22.4.2024
619 Antworten | 86 Autoren 619
25
644
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.

  •  Peter2
  •   Bronze-Award
19.12.2020  (#101)
Richtig. Das sollte eigentlich "mehr Brauchwasser" auslösen. Register 225 ist die Dauer für die Aktivierung von "mehr Brauchwasser" in Sekunden. Wird zumindest eqivalent kleiner. (obwohl Division Faktor für das Register 10 ist) default ist 7180. Wenn es Sekunden sind ergibt das ziemlich genau 2 Stunden. Würde so also Sinn machen. Das müsste sich aber von selbst einstellen sobald 697 aktiviert wird. 
Eventuell ist das Register ja auch gesperrt von nibe. 
MfG 
Peter 


1
  •  Peter2
  •   Bronze-Award
22.12.2020  (#102)
Interessante Erkenntniss. 
Status "mehr Brauchwasser" ( input Register 1078)ist auch bei zeitgesteuertem umschalten auf "Bedarfsmodus hoch" aktiv.
Auf Nachfrage bei knv wurde mir holding Register 56 für "mehr Brauchwasser" genannt was aber nur die Umschaltung zwischen den Brauchwasser Modi ist. Die automatische Rückstellung ist dann wahrscheinlich nicht aktiv was für eine Brauchwassererhöhung zwei Schreibvorgänge bedeutet und nicht der ursprüngliche Bedarfsmodus wieder aktiviert wird. Würde heißen das man dann eine Automatisierung programmieren muss die zuerst den aktuellen Modus abfragt und eine eventuelle Zeitsteuerung auch berücksichtigen muss. Doof weil es ja eigentlich dafür eben die Option mit "mehr Brauchwasser" gibt.
Ich habe zwar die ID 7086 aus dem Änderungsprotokoll. Leider ist dafür in der Register Liste nichts hinterlegt. Die ID hört in der Liste bei 6758 auf und geht bei 8002 weiter. Leider sind die Register auch nicht logisch mit den ID verbunden.
Also genau so schlau wie vorher. 🤨
MfG 
Peter

1
  •  Peter2
  •   Bronze-Award
27.12.2020  (#103)
Gute Nachrichten!
Holdingregister 697 funktioniert grundsätzlich.
Leider funktioniert es über Homeassistant nicht. Warum bin ich erst am suchen. Eventuell wird das Register falsch beschrieben. Ich bleibe drann.
MfG
Peter

Edit: Der Modbusswitch von Homeassistant kann nur einen Registertyp auf einmal nutzen. Das heißt ich nutze das selbe Register zum verifizieren wie zum ansteuern (Holding 697).
Anders gesagt: man kann kein Holding Register schreiben und über ein Input Register den Status abfragen. 
Jetzt funktioniert es.

1
  •  derLandmann
  •   Silber-Award
30.12.2020  (#104)

zitat..
Peter2 schrieb: Ich bin etwas verwirrt. 
Die S hat modbus TCP IP. 
Das heißt du benötigst Netzwerk Zugriff auf beiden Geräten und die IP Adresse der Wärmepumpe. Die einzelnen Register Adressen kann man über den USB exportieren. (hinter dem S1155 Logo ist der USB Port).

Die Verbindung steht.
In der Lox Config erscheinen auch alle Parameter, ebenso in der App, nur es werden keine Werte übermittelt außer "Freigabe Heizung 1,0".

Im Menü kann man ja nur Modbus aktivieren, sonst nichts einstellen. Lox Config hat aber bei Einstellungen ein Feld Modbus Adresse zusätzlich zu IP und Port, wir finden aber nicht den richtigen Wert.


2020/20201230748001.jpg


2020/20201230507767.jpg


2020/20201230445877.jpg

Die Verbindung steht soweit dass die S1255 in den Kühlmodus etc wechselt wenn ich den Befehl schicke aber die ganzen Werte bekomme ich nicht ausgelesen!

lg
Landmann

1
  •  Pedaaa
  •   Gold-Award
30.12.2020  (#105)

zitat..
Peter2 schrieb: Gute Nachrichten!
Holdingregister 697 funktioniert grundsätzlich.

sehr gut.
Sobald das mit dem Senden über TA CMI besser geht, will ich die Funktion auch unbedingt einbinden.
Wie machst du das nun?
Einmalig kurz auf Register 697 den Status 4 senden und fertig?
Oder sendest du das öfter oder länger in einem Intervall? 

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#106)
@Pedaaa :
Einmalig 4 auf 697 holding schreiben. Funktioniert dann genauso wie wenn man auf der Wärmepumpe auf "mehr Brauchwasser" klickt. Wird auch so angezeigt. 
@derLandmann:
Ich sehe leider nicht wie du holding und input Register auseinander halten kannst. Wird das vordefiniert? 
Eventuell brauchst du sonst die vollständige modbus Adresse.
Das heißt holding Register 11 hat die Adresse 40012 etc.
Das modbus Protokoll ist aus den 60ern und eigentlich unnötig kompliziert. Die meisten Programme haben daher bereits Vereinfachungen implementiert damit man nur noch die Adresse und den Register Typ braucht. Die vollständige Adresse wird dann entsprechend im Hintergrund zusammengefasst. Manche tun das aber nicht und dort muss man die Adresse noch selbst mit den entsprechenden Anfangszahlen (offset) selbst zusammenstellen. Dazu muss zur eigentlichen Registernummer der Offset von 30001 für input Register und 40001 für holding Register addiert werden. Die beiden anderen Register Typen werden von der Nibe ohnehin nicht unterstützt und sind daher auch uninteressant.
MfG 
Peter 

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#107)
Für die Interessierten:
Ich habe jetzt einige kleine Tools für Modbus und MQTT zur Verfügung.
Voraussetzungen sind: Linux basiertes System mit Python 3.9 oder höher. Mosquito für MQTT. Bei einigen wird ein Rasberry Pi benötigt (GPIO Steuerung und Sensoren).
Es handelt sich um Opensource Software. Diese darf gerne geteilt, verändert oder sonst was werden. Sie darf jedoch nicht als Produkt komerziell vertrieben werden, siehe Copyright Info in den einzelnen Tools. Der Copyrightinhaber übernimmt keinerlei Haftung für eventuelle Schäden die durch Verwendung der Tools entstehen.
Was ich jetzt noch brauche ist ein Webspace oder ähnliches um die Tools zu teilen oder ich sende sie an die Interressenten per Mail.
MfG
Peter

1
  •  derLandmann
  •   Silber-Award
30.12.2020  (#108)
Was wäre denn die "vollständige Modbus Adresse" zB?

Ich kann hier jeden Wert links einstellen. 

Beispiel hier:


2020/20201230319676.jpg


2020/202012306384.jpg

Hier am Beispiel Betriebsstunden gesamt mit Read Holding register und IO-Adresse 43420.
Immer kommt jedoch oben "Liefert keine Werte".

Ich kann hier eine Modbus Adresse einstellen, von 1-255, welcher der Connection_ID des Bausteins entsprechen sollte, dieser hat aber leider diese ID nicht. 
In der aktuellsten KNV Software kann ich nur Modbus ein-/ausschalten sonst nichts... 


1
  •  JoJa1101
30.12.2020  (#109)
Hallo zusammen,

ich dreh hier grade am Rad ... 😣

Ich besitze die VVM S320 (Softwareversion 2.0.29) und F2120-8. Die Anlage ist via Modbus in meine Home Assistant Instanz eingebunden. Ich bekomme nun Werte für Rücklauftemp., Lüfterdrehzahl oder auch den Volumenstrom.

Bsp. meiner config:
sensor:
  - platform: modbus
    registers:
    - name: BT1 Außenlufttemperatur
      hub: VVMS320
      slave: 255
      scale: 0.1
      precision: 1
      unit_of_measurement: °C
      register: 1
      register_type: input

    - name: BT2 Vorlauftemperatur
      hub: VVMS320
      slave: 255
      scale: 0.1
      precision: 1
      unit_of_measurement: °C
      register: 5
      register_type: input

    - name: BT3 Rücklauftemperatur
      hub: VVMS320
      slave: 255
      scale: 0.1
      precision: 1
      unit_of_measurement: °C
      register: 7
      register_type: input

Allerdings liefern die meisten Register (z.B. 1, 5, 8, 9 usw.) bei mir einfach nichts zurück. Halten tue ich mich an folgende Liste: https://up.picr.de/38821944lh.pdf

Ist diese outdated oder bin ich einfach zu blöde? 🤨

Viele Grüße

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#110)
"Außen": {
        "name": "Außen",
        "register": 108,
        "register_type": "input",
        "scale": 0.1,
        "signed": 1,
        "unit_of_measurement": "°C",
        "Val": -1000000,
        "OldVal": -1000000,
        "NextCheckTime": 0

    "Vl": {
        "name": "Vl",
        "register": 1690,
        "register_type": "input",
        "scale": 0.1,
        "signed": 0,
        "unit_of_measurement": "°C",
        "Val": -1000000,
        "OldVal": -1000000,
        "NextCheckTime": 0    },
    "RL": {
        "name": "RL",
        "register": 1520,
        "register_type": "input",
        "scale": 0.1,
        "signed": 0,
        "unit_of_measurement": "°C",
        "Val": -1000000,
        "OldVal": -1000000,
        "NextCheckTime": 0
    },
    "BW o": {
        "name": "BW o",
        "register": 1689,
        "register_type": "input",
        "scale": 0.1,
        "signed": 0,
        "unit_of_measurement": "°C",
        "Val": -1000000,
        "OldVal": -1000000,
        "NextCheckTime": 0
    },
Nur als Beispiel aus meinen MQTT Dämon.
In Homeassistant wäre das dann:
modbus:
    name: s1155 (oder wie man die Wärmepumpe nennen will)
    type: tcp
    host: 192.168.8.105 (die IP Adresse der Wärmepumpe)
    port: 502 (Standard)
sensor:
  - platform: modbus
    registers:
     - name: Außen
       hub: s1155
       slave: 1
       scale: 0.1
       precision: 1
       unit_of_measurement: °C
       register: 108
       register_type: input
und so weiter.

@JoJa1101 : Warum Slave 255? Normal ist dort 1. Oder hast du 255 Modbusgeräte unter der selben IP?

Ihr könnt euch eine vollständige Liste selbst aus der Wärmepumpe über den USB port ziehen. Dort kann man dann alternative Adressen suchen. Es ist bereits bekannt das die ersten Register probleme bei der S machen und deswegen die alternativen genutzt werden müssen. Das ist auch zu empfehlen weil die ersten Adressen vor zwei Firmwareupdates noch funktioniert haben. 
@derLandmann :
Betriebszeit gesamt ist input Register 1536 faktor 0,1
unter einem holding Register habe ich das noch garnicht gefunden.

MfG
Peter

1
  •  JoJa1101
30.12.2020  (#111)
@Peter2 Danke für deine schnelle Antwort.

Wie lese ich denn die vollständige Liste der Register an meiner WP WP [Wärmepumpe] aus bzw. speichere diese auf einem USB-Stick? Ich vermute im Bereich "Installateur" ?

Viele Grüße

1
  •  derLandmann
  •   Silber-Award
30.12.2020  (#112)
Wenn du einen USB Stick angeschlossen hast erscheint ein Punkt im Modbus Menü soweit ich das weiß.

@Peter2 :

In der Lox Config kann man vordefinierte Geräte hinzufügen, so auch die KNV Topline. 


2020/20201230814285.jpg

Dann erscheint folgende Aktoren und Sensoren Liste automatisch, mit den Werten voreingestellt wie in dem Screenshot oben, nur leider bekomme ich keine Werte raus - "Liefert keine Werte".


2020/20201230387544.jpg

Fast alle Parameter haben eine Fehlermeldung, bis auf:
Freigabe Heizung, Freigabe Kühlung, Heizkurve, Raumtemperatur Verschiebung und Warmwasser Modus.

Am Beispiel Freigabe Heizung ist hier Folgendes vermerkt:


2020/20201230640816.jpg

Würde der mit deinen Registernummern übereinstimmen?

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#113)
Korrekt.
USB anstecken, dann Menü: 7.5.9
Ich empfehle alle Register zu exportieren da sonst nur knapp 30 Register enthalten sind die zum Teil seit einem Update nicht mehr funktionieren.
Die Option zum exportieren der Register erscheint nur wenn ein USB stick im Port steckt!
MfG
Peter

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#114)
@derLandmann 
Ich Befürchte das sind die Register der alten F serie. Die Register der F und der S unterscheiden sich zum teil stark.
Welche Wärmepumpe hast du denn?
MfG
Peter

1
  •  derLandmann
  •   Silber-Award
30.12.2020  (#115)
Hier läuft ne Nibe S-1255-6 E PC EM.
Softwarestand 2.0.29

och ne.. würde heißen alles händisch umschreiben.

die 3 Parameter sind entscheidend wenn ich das richtig verstanden habe? :
IO-Adresse -- Registeradresse

Befehl

2020/20201230162773.jpg

Datentyp


2020/20201230435294.jpg

Das wären ne Menge Einstellungen bei all den Variablen...


2020/20201230762305.jpg

Aktoren laufen alle im Soll, Sensoren liefert keiner einen Wert.

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#116)
@derLandmann 
Wenn alle deine Sensoren auf Holding Register zugreifen wundert mich das nicht.
Du Benötigst nur Input und Holding Register.
Coils und Inputstatus funktionieren grundsätzlich nicht bei der Nibe.
Ich kopiere hier mal eine Liste rein und hoffe es hilft weiter.
Du mußt unbedingt wo Input steht beim Befehl auch Punkt 4 (Read Input Register) auswählen. 
Der Befehl Ändert die Registeradresse. Falsche Adresse gibt natürlich nur error Meldungen.
MfG
Peter

1
  •  derLandmann
  •   Silber-Award
30.12.2020  (#117)
Eine Tabelle mit diesen 3 Einstellungen für die Sensoren wäre super :)

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#118)
{
"Außen": {
"name": "Außentemperatur",
"register": 108,
"register_type": "input",
"Vl": {
"name": "Vorlauf",
"register": 1690,
"register_type": "input",
"RL": {
"name": "Rücklauf",
"register": 1520,
"register_type": "input",
"BW o": {
"name": "Brauchwasser Oben Bt7",
"register": 1689,
"register_type": "input",
"BW m": {
"name": "Brauchwasser Mitte",
"register": 1688,
"register_type": "input",
},
"WQ ein": {
"name": "Wärmequelle Eingang",
"register": 1521,
"register_type": "input",
"WQ aus": {
"name": "Wärmequelle Ausgang",
"register": 1522,
"register_type": "input",
"GW ein": {
"name": "Grundwasser Eingang",
"register": 743,
"register_type": "input",
"GW aus": {
"name": "Grundwasser Ausgang",
"register": 744,
"GM": {
"name": "Gradminuten",
"register": 11,
"register_type": "holding",
"WT P": {
"name": "WT Pumpe",
"register": 1532,
"register_type": "input",
"WQ P": {
"name": "WQ Pumpe",
"register": 1533,
"register_type": "input",
"Innen": {
"name": "Innentemperatur BT50",
"register": 116,
"register_type": "input",
"Vol": {
"name": "Volumenstrom Bf1",
"register": 40,
"register_type": "input",
"Verdichter": {
"name": "Verdichter",
"register": 1817,
"register_type": "input",
"BZG": {
"name": "Betriebszeit gesamt",
"register": 1536,
"register_type": "input",
"BZWW": {
"name": "BetriebszeitWarmwasser",
"register": 1538,
"register_type": "input",
"WMWW": {
"name": "Wärmemengenzähler Warmwasser",
"register": 1583 ,
"register_type": "input
"WMHZ": {
"name": "Wärmemengenzähler Heizung",
"register": 1585,
"register_type": "input",
"Verdichterstarts": {
"name": "Verdichterstarts",
"register": 1083,
"register_type": "input",
"Verdichterleistung": {
"name": "Verdichterleistung",
"register": 1048,
"register_type": "input",

1
  •  Peter2
  •   Bronze-Award
30.12.2020  (#119)
Den Rest musst du selbst herausfinden. Die Input Register sind allerdings alle gleich. Nur die Holding Register sind anders.
Ach ja Holding Register 697 nicht zu vergessen. Aber ich denke das hast du ja schon oben gesehen.
MfG 
Peter

1
  •  derLandmann
  •   Silber-Award
31.12.2020  (#120)
Danke dir, ich werd mich mal draufstürzen.

Wieso ist ausgerechnet der Gradminuten Register ein r/w?

lg

1
  •  Peter2
  •   Bronze-Award
31.12.2020  (#121)
Weil man die Gradminuten auch selbst setzen kann um nach einem Neustart der Wärmepumpe keine kalten Füße zu bekommen 😉
MfG 
Peter 

1


Beitrag schreiben oder Werbung ausblenden?
Einloggen

 Kostenlos registrieren [Mehr Infos]


next