NEWS
[gelöst] Benötige Hilfe MODBUS TCP: Hoymiles HM-1500/DTU-PRO
-
Hallo,
Danke, jetzt komme ich schon weiter. Da bin ich wohl auch an den komischen Offset der Adressen aus der DTU gescheitert. So wie es aussieht hat die DTU-Pro die selben Adressen/Register wie die DTU-Pro-S.Mit der Anleitung aus deiner Konfiguration und Eintrag in die Holdingregister, sehe ich jetzt auch Werte (nicht alle, weil schon finster und die Micros off sind ...) Aber den Error habe ich jetzt endlich weg.
Eine DTU spezifische Frage hätte ich noch, vielleicht bist du auch schon darüber gestolpert:
Nachdem die RS484 Schnittstelle auf "Remote Control" geändert wurde, funktioniert dann das "Export Management" noch? Ich verwende in meiner DTU eine Nulleinspeisung. Ist die dann noch aktiv, oder muss ich die jetzt ständig selber über den ioBroker abgleichen?
Und wie schaut es mit der Verbindung zur Cloud aus, die ist mit der Umstellung des modbus auch nicht mehr aktiv, oder? -
Hallo,
ich habe mich seit gestern auch einmal mit den Modbus Datenpunkten der DTU befasst und an mir selbst gezweifelt. (DTU-Pro-S mit HMS-800-2T)
Schuld ist die Adressierung, die die DTU verwendet. diese ist Byte-orientiert. Das führt dazu, dass die Adressen zwischen DTU und ioBroker (und anderen Modbus Clients) abweichen: die DTU zählt die Bytes ab der Startadresse hoch. ioBroker und andere zählen die Worte ab der Startadresse hoch. Und da die Register immer als Block (function code 0x03) gelesen werden...Wichtig ist in den Allgemeinen Einstellungen noch die Blockgröße von 40 (oder einem Mehrfachen davon) Registern:

Hier einmal beispielhaft meine Datenpunkte für die Holding-Register:
_address name description unit type len factor offset formula role room poll wp cw isScale 4096 Inverter.1.SN.0 uint8be 1 1 0 x.toString(16) value true false false false 4097 Inverter.1.SN.1 uint8le 1 1 0 x.toString(16) value true false false false 4097 Inverter.1.SN.2 uint8be 1 1 0 x.toString(16) value true false false false 4098 Inverter.1.SN.4 uint8be 1 1 0 x.toString(16) value true false false false 4098 Inverter.1.SN.3 uint8le 1 1 0 x.toString(16) value true false false false 4099 Inverter.1.SN.5 uint8le 1 1 0 x.toString(16) value true false false false 4099 Inverter.1.Port uint8be 1 1 0 value true false false false 4100 Inverter.1.PV.Spannung V uint16be 1 0.1 0 value true false false false 4101 Inverter.1.PV.Strom A uint16be 1 0.01 0 value true false false false 4102 Inverter.1.Netz.Spannung V uint16be 1 0.1 0 value true false false false 4103 Inverter.1.Netz.Frequenz Hz uint16be 1 0.01 0 value true false false false 4104 Inverter.1.PV.Leistung W uint16be 1 0.1 0 value true false false false 4105 Inverter.1.Energie.heute Wh uint16be 1 1 0 value true false false false 4106 Inverter.1.Energie.gesamt Wh uint32be 2 1 0 value true false false false 4108 Inverter.1.Temperatur °C int16be 1 0.1 0 value.temperature true false false false 4109 Inverter.1.Status int16be 1 1 0 state true false false false 4110 Inverter.1.Alarm.Code int16be 1 1 0 state true false false false 4111 Inverter.1.Alarm.Count int16be 1 1 0 value true false false falseErgebis:

@s8472 mit welcher Adresse würde es denn mit Inverter 2 weitergehen?
Das ist ja echt irgendwie tricki das Ganze 🙈
Danke dir.
Gruß
-
Hallo,
ich habe mich seit gestern auch einmal mit den Modbus Datenpunkten der DTU befasst und an mir selbst gezweifelt. (DTU-Pro-S mit HMS-800-2T)
Schuld ist die Adressierung, die die DTU verwendet. diese ist Byte-orientiert. Das führt dazu, dass die Adressen zwischen DTU und ioBroker (und anderen Modbus Clients) abweichen: die DTU zählt die Bytes ab der Startadresse hoch. ioBroker und andere zählen die Worte ab der Startadresse hoch. Und da die Register immer als Block (function code 0x03) gelesen werden...Wichtig ist in den Allgemeinen Einstellungen noch die Blockgröße von 40 (oder einem Mehrfachen davon) Registern:

Hier einmal beispielhaft meine Datenpunkte für die Holding-Register:
_address name description unit type len factor offset formula role room poll wp cw isScale 4096 Inverter.1.SN.0 uint8be 1 1 0 x.toString(16) value true false false false 4097 Inverter.1.SN.1 uint8le 1 1 0 x.toString(16) value true false false false 4097 Inverter.1.SN.2 uint8be 1 1 0 x.toString(16) value true false false false 4098 Inverter.1.SN.4 uint8be 1 1 0 x.toString(16) value true false false false 4098 Inverter.1.SN.3 uint8le 1 1 0 x.toString(16) value true false false false 4099 Inverter.1.SN.5 uint8le 1 1 0 x.toString(16) value true false false false 4099 Inverter.1.Port uint8be 1 1 0 value true false false false 4100 Inverter.1.PV.Spannung V uint16be 1 0.1 0 value true false false false 4101 Inverter.1.PV.Strom A uint16be 1 0.01 0 value true false false false 4102 Inverter.1.Netz.Spannung V uint16be 1 0.1 0 value true false false false 4103 Inverter.1.Netz.Frequenz Hz uint16be 1 0.01 0 value true false false false 4104 Inverter.1.PV.Leistung W uint16be 1 0.1 0 value true false false false 4105 Inverter.1.Energie.heute Wh uint16be 1 1 0 value true false false false 4106 Inverter.1.Energie.gesamt Wh uint32be 2 1 0 value true false false false 4108 Inverter.1.Temperatur °C int16be 1 0.1 0 value.temperature true false false false 4109 Inverter.1.Status int16be 1 1 0 state true false false false 4110 Inverter.1.Alarm.Code int16be 1 1 0 state true false false false 4111 Inverter.1.Alarm.Count int16be 1 1 0 value true false false falseErgebis:

@s8472 Hi.
Also ich hab das jetzt mal so eingetragen.
Sieht soweit auch recht gut aus.
Nur bei der PV Leistung wird mir nur die Leistung von einem Solarmodul angezeigt. (Habe 2 Stück installiert)
Weißt du eventuell warum das so sein könnte?
Danke dir.
-
@s8472 Hi.
Also ich hab das jetzt mal so eingetragen.
Sieht soweit auch recht gut aus.
Nur bei der PV Leistung wird mir nur die Leistung von einem Solarmodul angezeigt. (Habe 2 Stück installiert)
Weißt du eventuell warum das so sein könnte?
Danke dir.
Moin @shakesbier ,
ein Wechselrichtereingang belegt 1 Datenblock.
Ein Dualwechselrichter de entsprechen 2.
Das kann man auch an der Seriennummer erkennen. -
Moin @shakesbier ,
ein Wechselrichtereingang belegt 1 Datenblock.
Ein Dualwechselrichter de entsprechen 2.
Das kann man auch an der Seriennummer erkennen.@s8472 Hi.
Danke schon mal.
Wie muss ich das denn in den Registern eintragen?
Bin da sehr unerfahren 🙈
Gruß Shakesbier
-
@s8472 Hi.
Danke schon mal.
Wie muss ich das denn in den Registern eintragen?
Bin da sehr unerfahren 🙈
Gruß Shakesbier
Es sind immer 40er Datenblöcke.
deswegen ist es auch wichtig in den Allgemeinen Einstellungen die Blockgröße auf 40 Byte zu stellen.4096 Inverter.1.SN.0 4097 Inverter.1.SN.1 4097 Inverter.1.SN.2 4098 Inverter.1.SN.3 4098 Inverter.1.SN.4 4099 Inverter.1.SN.5 4099 Inverter.1.Port 4100 Inverter.1.PV.Spannung 4101 Inverter.1.PV.Strom 4102 Inverter.1.Netz.Spannung 4103 Inverter.1.Netz.Frequenz 4104 Inverter.1.PV.Leistung 4105 Inverter.1.Energie.heute 4106 Inverter.1.Energie.gesamt 4108 Inverter.1.Temperatur 4109 Inverter.1.Status 4110 Inverter.1.Alarm.Code 4111 Inverter.1.Alarm.Count 4112 Inverter.1.Link 4136 Inverter.2.SN.0 4137 Inverter.2.SN.1 4137 Inverter.2.SN.2 4138 Inverter.2.SN.3 4138 Inverter.2.SN.4 4139 Inverter.2.SN.5 4139 Inverter.2.Port 4140 Inverter.2.PV.Spannung 4141 Inverter.2.PV.Strom 4142 Inverter.2.Netz.Spannung 4143 Inverter.2.Netz.Frequenz 4144 Inverter.2.PV.Leistung 4145 Inverter.2.Energie.heute 4146 Inverter.2.Energie.gesamt 4148 Inverter.2.Temperatur 4149 Inverter.2.Status 4150 Inverter.2.Alarm.Code 4151 Inverter.2.Alarm.Count 4152 Inverter.2.Link 4176 Inverter.3.SN.0 4177 Inverter.3.SN.1 4177 Inverter.3.SN.2 4178 Inverter.3.SN.3 4178 Inverter.3.SN.4 4179 Inverter.3.SN.5 4179 Inverter.3.Port 4180 Inverter.3.PV.Spannung 4181 Inverter.3.PV.Strom 4182 Inverter.3.Netz.Spannung 4183 Inverter.3.Netz.Frequenz 4184 Inverter.3.PV.Leistung 4185 Inverter.3.Energie.heute 4186 Inverter.3.Energie.gesamt 4188 Inverter.3.Temperatur 4189 Inverter.3.Status 4190 Inverter.3.Alarm.Code 4191 Inverter.3.Alarm.Count 4192 Inverter.3.Linkund immer so weiter je Eingang
-
Es sind immer 40er Datenblöcke.
deswegen ist es auch wichtig in den Allgemeinen Einstellungen die Blockgröße auf 40 Byte zu stellen.4096 Inverter.1.SN.0 4097 Inverter.1.SN.1 4097 Inverter.1.SN.2 4098 Inverter.1.SN.3 4098 Inverter.1.SN.4 4099 Inverter.1.SN.5 4099 Inverter.1.Port 4100 Inverter.1.PV.Spannung 4101 Inverter.1.PV.Strom 4102 Inverter.1.Netz.Spannung 4103 Inverter.1.Netz.Frequenz 4104 Inverter.1.PV.Leistung 4105 Inverter.1.Energie.heute 4106 Inverter.1.Energie.gesamt 4108 Inverter.1.Temperatur 4109 Inverter.1.Status 4110 Inverter.1.Alarm.Code 4111 Inverter.1.Alarm.Count 4112 Inverter.1.Link 4136 Inverter.2.SN.0 4137 Inverter.2.SN.1 4137 Inverter.2.SN.2 4138 Inverter.2.SN.3 4138 Inverter.2.SN.4 4139 Inverter.2.SN.5 4139 Inverter.2.Port 4140 Inverter.2.PV.Spannung 4141 Inverter.2.PV.Strom 4142 Inverter.2.Netz.Spannung 4143 Inverter.2.Netz.Frequenz 4144 Inverter.2.PV.Leistung 4145 Inverter.2.Energie.heute 4146 Inverter.2.Energie.gesamt 4148 Inverter.2.Temperatur 4149 Inverter.2.Status 4150 Inverter.2.Alarm.Code 4151 Inverter.2.Alarm.Count 4152 Inverter.2.Link 4176 Inverter.3.SN.0 4177 Inverter.3.SN.1 4177 Inverter.3.SN.2 4178 Inverter.3.SN.3 4178 Inverter.3.SN.4 4179 Inverter.3.SN.5 4179 Inverter.3.Port 4180 Inverter.3.PV.Spannung 4181 Inverter.3.PV.Strom 4182 Inverter.3.Netz.Spannung 4183 Inverter.3.Netz.Frequenz 4184 Inverter.3.PV.Leistung 4185 Inverter.3.Energie.heute 4186 Inverter.3.Energie.gesamt 4188 Inverter.3.Temperatur 4189 Inverter.3.Status 4190 Inverter.3.Alarm.Code 4191 Inverter.3.Alarm.Count 4192 Inverter.3.Linkund immer so weiter je Eingang
@s8472 ahhhh jetzt verstehe ich.
Inverter 1 ist der 1. Eingang und Inverter 2 der 2. Eingang.
Jeder Eingang hat 40 Blöcke.
Wenn ich einen 2. Wechselrichter habe.
Beginnt der dann beim Block Inverter 3?
Gruß
-
@s8472 ahhhh jetzt verstehe ich.
Inverter 1 ist der 1. Eingang und Inverter 2 der 2. Eingang.
Jeder Eingang hat 40 Blöcke.
Wenn ich einen 2. Wechselrichter habe.
Beginnt der dann beim Block Inverter 3?
Gruß
@shakesbier genau 👍
-
@shakesbier genau 👍
-
@shakesbier
So du bist der Beste.Klappt einwandfrei.
Kann man den Chint Zähler auch per Modbus (Iobroker) auslesen?
-
@shakesbier
So du bist der Beste.Klappt einwandfrei.
Kann man den Chint Zähler auch per Modbus (Iobroker) auslesen?
@shakesbier
Ist der Zähler für Einspeisemanagement an die DTU angeschlossen? Dafür stehen keine Register in der Liste.
Eventuell direkt in ioBroker einbinden? -
Bei firmware V00.02.23 von DTU, geht es nicht mehr mit diese daten.
Poll error count: 1 code: {"errorCode":132,"exceptionCode":1,"message":"ILLEGAL FUNCTION"}
Auf altere firmware, lief alles perfect
-
Hallo zusammen,
ich habe eine generelle Frage zu den Daten.
Ihr verwendet Uint16 (generell) und Uint32 (für Total Production)Aber hat nicht ein Register 2 Byte, also füllt das Uint16 schon aus?
Mein Gedanke: müssten nicht alle Daten Uint32 sein und Total Production Unit64?
Vielleicht habe ich einen Denkfehler - gern korrigieren ;)Gruß Faddl