NEWS
Modbus adapter Danfoss ECL Comfort 310 auslesen
-
Hallo,
ich möchte über den IOBroker Modbus adapter Werte aus dem Danfoss ECL Comfort 310 auslesen können. Ich mache noch Fehler bei der richtigen Konfiguration des Modbus adapters
https://assets.danfoss.com/documents/63854/AQ074886472234en-010501.pdf
Was muss ich bei "Typ" und "Rolle" im IOBroker Modbus Adapter einstellen um die Werte richtig auslesen zu können?
Die Protokolleinträge sehen wie folgt aus:
Schon mal vielen Dank im Vorraus für eure Hilfe.
VG
Takahara -
Ich kenne Danfoss nicht , kann dir nur ein paar Tips geben .
Auf der Seite ist einiges beschrieben .:
https://www.loxwiki.eu/pages/viewpage.action?pageId=18219266
Aus der Anleitung von deinem Gerät , dieses einstellen:
Modbus adr. 1
Baud 19200
MODBUS Adresse ist dann 1
den Haken daraus , du hast kein weiteren Teilnehmer
.
..
.... weiter mußt du Probieren .
Ich mache es auch immer so , nutze das Programm CAS Modbus Scanner :
https://forum.iobroker.net/topic/44990/gavazzi-victron-zähler-mit-modbus-via-rs485/4?_=1622034758230
-
Vielen Dank für deine Nachricht.
Ich habe die Baud rate auf 19200 umgestellt. Weitere Einstellungen wie 1 start bit, 8 data bits, even parity und 1 stop bit konnte ich im Danfoss ECL 310 Comfort Regler noch nicht finden.
Bei Abfrage der Modbus-Adressen 278 (IP adr. 1) und 281 (IP adr. 4) erhalte ich die richten Werte. Nur bei Abfrage der Sensorwerte (10201, 10203 und 10205) erhalte ich 19200 und diese Werte verändern sich auch nicht.
Warum hast du in deinem Modbus Adapter die DISKRETE EINGÄNGE gewählt? Wenn ich hier die Modbus Adresse 10201 angeben, erhalte ich im Log eine Fehlermeldung.
Ich habe versucht mit dem CAS Modbus Scanner weitere Informationen zu bekommen. Leider ohne Erfolg.
Wenn du noch weitere Tipps hast, bin ich dir sehr dankbar
VG
Takahara -
@takahara sagte in Modbus adapter Danfoss ECL Comfort 310 auslesen:
Warum hast du in deinem Modbus Adapter die DISKRETE EINGÄNGE gewählt?
Das war nur ein Beispiel von mir wie es sein könnte , wie schon ober erwähnt kenne ich Danfoss nicht.
Bei Abfrage der Modbus-Adressen 278 (IP adr. 1) und 281 (IP adr. 4) erhalte ich die richten Werte.
Was meinst du mit richtige Werte ?
Hast du die Verbindung mit einem TCP Modbus , also nicht über USB ?
Nur bei Abfrage der Sensorwerte (10201, 10203 und 10205) erhalte ich 19200 und diese Werte verändern sich auch nicht.
fd035fac-dc73-497c-aec1-ec6fcb507406-2021-09-05 20_15_43-instances - smarthomeraspi.png
dann gehe eine Register rauf / runter , also +1 / -1
Beispiel : Laut Doku 10201 dann im Adapter 10200 probieren oder 10202
-
Bei Abfrage der Modbus-Adressen 278 (IP adr. 1) und 281 (IP adr. 4) erhalte ich die richten Werte.
Was meinst du mit richtige Werte ?
Der Datenpunkt 278_IP_adr_1 ist ein Teil der IP des Danfoss Gerätes (Wert = 23) sowie 281_IP_adr_4 (Wert = 83).
Hast du die Verbindung mit einem TCP Modbus , also nicht über USB ?
Ja das ist richtig verstanden. Ich gehe direkt über das Netzwerk. Bzw. Ich versuche es noch.
Leider habe ich deine Anweisung zum CAS Modbus Scanner nicht verstanden.
VG
Takahara. -
Weißt du wie ich den Datentyp für empfangene Daten auf Integer stellen kann? Laut Danfoss Handbuch werden sämtliche read-only paramater als Integer Werte empfangen.
VG
Takahara -
@takahara Hi Takahara, ich habe genau diese Danfoss Steuerung bei mir an ioBroker angebunden und lese z.B. die Sensorwerte und die Aktorwerte (Status der Pumpen und der Ventile aus. Ich habe es allerdings noch nicht hinbekommen die Daten auch zu schreiben d.h. also z.B. die Kesseltempertur zu setzen. Wenn ich heute Abend wieder Zuhause bin poste ich mal meine Einstellungen von IOBroker und auch dem Danfos Ding
Viele Grüße,
Loxley -
@loxdus Hi LoxDUS, dann bin ich schon mal gespannt. Bis später
VG Takahara -
Hi, sorry, habe gerade gesehen das bei mir ein ECL210 in die Heizung eingebaut ist.
Aber ich denke die Kommunikation sollte die gleiche sein:Bei mir sieht das Setup so aus:
ioBroker (Server) <- Ethernet -> Raspberri PI als USB-Server (USB to RS485 Adapter) <- RS485 -> Danfoss ECL210
So, hier sind meine Einstellungen
ioBroker:
Allgemeine Einsellungen Modbus:
Holding Register Einstellungen:
Raspberry PI (als USB Server):
D.h. die RS485 Schnittstelleneinstellungen sind:
38400 Baud
8 Databits
EVEN Parity
1 StopbitECL210 Einstellungen:
Vielleicht hilft das ja weiter.
Viele Grüße,
Artur
-
Das hier ist die Javascript Routine um den Status der Pumpen und Ventile aus dem 16Bit Wort zu dekodieren:
on({id: 'modbus.1.holdingRegisters.3998_Output'}, function (obj) { var b16 = getState('modbus.1.holdingRegisters.3998_Output').val; var v; // Bit Funktion Aktor // 0 1 Triac 1 M1 Auf // 1 2 Triac 2 M1 Zu // 2 4 Triac 3 M2 // 3 8 Triac 4 M2 // 4 16 Triac 5 // 5 32 Triac 6 // 6 64 Relais 1 P1 // 7 128 Relais 2 P2 // 8 256 Relais 3 P3 // 9 512 Relais 4 // 10 1024 Relais 5 // 11 2048 Relais 6 // P1 if(b16 & 64) v = true; else v=false; setState('javascript.0.Sonderfunktionen.Heizung.P1', v); // P2 if(b16 & 128) v = true; else v=false; setState('javascript.0.Sonderfunktionen.Heizung.P2', v); // P3 if(b16 & 256) v = true; else v=false; setState('javascript.0.Sonderfunktionen.Heizung.P3', v); // M1 Motorventil if(b16 & 1) v = "Auf"; else if(b16 & 2) v = "Zu"; else v="0"; setState('javascript.0.Sonderfunktionen.Heizung.M1', v); });
Und hier runde ich die Sensorwerte:
on(['modbus.1.holdingRegisters.10200_S1'/*Aussentemperatur*/, 'modbus.1.holdingRegisters.10202_S3'/*Vorlauftemperatur*/, 'modbus.1.holdingRegisters.10204_S5'/*Rücklauftemperatur*/, 'modbus.1.holdingRegisters.10205_S6'/*Obere Speichertemperatur*/], function (obj) { var AT16 = getState('modbus.1.holdingRegisters.10200_S1'/*Aussentemperatur*/).val; var AT; if(AT16>32767) AT16 = AT16-65535; AT = (AT16/100).toFixed(1); // Auf 1 Stelle nach Komma runden setState('javascript.0.Sonderfunktionen.Heizung.ATStrg', AT); setState('javascript.0.Sonderfunktionen.Heizung.Aussentemperatur'/*Aussentemperatur*/, AT16 / 100); setState('javascript.0.Sonderfunktionen.Heizung.Vorlauftemperatur'/*Vorlauftemperatur*/, getState('modbus.1.holdingRegisters.10202_S3'/*Vorlauftemperatur*/).val / 100); setState('javascript.0.Sonderfunktionen.Heizung.Ruecklauftemperatur'/*Ruecklauftemperatur*/, getState('modbus.1.holdingRegisters.10204_S5'/*Rücklauftemperatur*/).val / 100); setState('javascript.0.Sonderfunktionen.Heizung.Speichertemperatur'/*Speichertemperatur*/, getState('modbus.1.holdingRegisters.10205_S6'/*Obere Speichertemperatur*/).val / 100); });
-
@loxdus Hallo Loxdus, wie ich sehe, hast du deinen Raspberry über RS485 an den Danfoss ECL Regler angeschlossen.
Ich wollte eigentlich über die Modbus Schnittstelle eine Verbindung herstellen.Raspberry (Iobroker) <> Netzwerkswitch <> Danfoss ECL 310
Die Holding Register habe ich bei mir auch so eingetragen.
Nur leider werden die Modbus.0 Objekte nicht abgeholt. So bleiben die Sensorwerte (Temperaturen immer bei 19.2°C).
Ich würde gern die Temperaturwerte in den Objekten haben, damit ich mit Blockly weitere Logikbefehle wie z.B. Push notifications erstellen kann.
Hast du noch einen Tipp?
VG
Takahara -
@glasfaser sagte in Modbus adapter Danfoss ECL Comfort 310 auslesen:
dann gehe eine Register rauf / runter , also +1 / -1
Beispiel : Laut Doku 10201 dann im Adapter 10200 probieren oder 10202hast das schon gemacht ?
@LoxDUS hat sie
-
@glasfaser @LoxDUS : Super herzlichen Dank an euch beide
Ich weiß zwar nicht warum die Modbus Adressen in der offiziellen Danfoss Anleitung nicht stimmen, aber mit 10200; 10202 und 10204 kann ich die Sensorwerte auslesen.
Nochmals vielen Dank an euch beide. Großartiger Support
VG
Takahara -
Deleted…
-
Sorry, komme mit den Forum noch nicht ganz zurecht
Servus, darf ich fragen welchen USB TO RS485 Adapter du verwendest?
Grüße
Rossi
-
@rossi73
Ich nutze den
DSD TECH USB to RS485 RS422 ...WS
-
@rossi73
Sieht bei mir dann so aus:
-
Super, Danke für die schnelle Antwort!
-
Habt ihr alle ecl310 ? Weil laut Hotline soll mein ecl210 damit net gehen und ich Frage mich gerade wer Recht hat
-
Servus, ich habe eine ECL Comfort 210...
Aber ich bin noch lange nicht soweit da irgendwas an Daten abzugreifen.
Soll das etwa gar nicht gehen laut Hotline?
Grüße