NEWS
Modbus adapter Danfoss ECL Comfort 310 auslesen
-
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
-
@rossi73 laut Hotline ja aber ich traue dem ganzen net . Hab mir jetzt ne 310er bestellt
-
wie immer lag die hotline doch falsch.
ich konnte jetzt mit meiner ecl210 die parameter lesen.
-
Verrätst du uns wie?War gedanklich noch wo anders... -
gekauft habe ich ein USRCN Usr-Tcp232-410S RS232 bei amazon.
nach gefühlten 100 Tests konnte ich dann über die Software befehle von oben probieren und bekam immerhin ein illegal Function Error anzeigt ( dat erste mal überhaupt was... hurra - warum hab ich jetzt nen ecl310 gekauft gedanke...) .
ich würde behaupten die mod bus scan software kann nicht die richtigen Register pullen die wir eigentlich brauchen.nachdem dat ging und ich immer gesehen habe dat irgendwas kommt hab ich die Werte nochmals vom Iobroker pullen lassen und dann kam sogar was.
ich habe jetzt über die ECL Tool App mir die Modbus Nummern besorgt z.B:
10200 S1 ( warum die jetzt 20 °c statt ~7°c Außentemp Anzeigt liegt vllt am Sensor )
10202 S3
10204 S5
10205 S6
11179 Gewünschte Temp aka T Komfort Soll
12189 Warmwasser Temp SollDie Werte sind alle unter Holding Registers und lassen sich dann ändern über das Interface
Ich lade die Tage mal noch die Settings vom Iobroker und TCP232-410S hoch -