Skip to content

[Summary] Hoymiles HMS / Firmware 1.1.12 & 2.0.4 / 'ActivePowerControl'-Kommando aka. 'Limits' #2784

Description

@OutdoorRob

Inhalt

Übersicht

Dieser Issue behandelt die Erkenntnisse zum abweichenden Verhalten der Hoymiles HMS-Wechselrichter mit 'Power Distribution Logic' / ab Firmware 1.1.12 bzw. 2.0.4 bezüglich des ActivePowerControl-Kommandos.

Die damit verbundene, abweichende SystemConfigPara-Antwort ('Typ' 0x0003) wird in einem separaten Issue behandelt.

Erkenntnisse:

  • Die Umsetzung des ActivePowerControl-Kommando wurde ursprünglich auf Basis der HM-Serie zurückentwickelt.
  • Es funktionierte bis zur WR-Firmware 1.0.x auch bei der HMS-Serie identisch.
  • Seit WR-Firmware 1.1.12 bzw. 2.0.4 gibt es damit aber Abweichungen im Verhalten der WR (keine persistenten Limits mehr möglich / abweichende SystemConfigPara-Antwort).
  • Die notwendige Modifikation des ActivePowerControl-Kommando bzw. des damit gesendeten PowerLimitControlType zum Setzen eines relativen, persistenten Limits ist bekannt (0x0003 statt 0x0101). Die Werte für die anderen drei Kombinationen für nicht-persistente und absolute Limits nicht.
  • Wichtig dabei ist:
    • Dieses modifizierte ActivePowerControl-Kommando wird von der Hoymiles DTU-S-Serie für HMS-Wechselrichter schon immer so gesendet (Trace von Februar 2023 vorhanden / Danke an Lukas) und funktioniert deshalb auch korrekt mit den WR-Firmware Versionen 1.0.x (siehe letzte Spalte in Analyse des Verhaltens)
    • Es wurde bisher nur noch nie beachtet, da die für die HM-Serie verwendeten Kommandos bis jetzt auch für die HMS-Serie funktionierten.
  • Das Problem ist also:
    • Die Verwendung von eigentlich 'falschen' ActivePowerControl-Kommandos für die HMS-Serie.
    • Das geänderte Verhalten der WR, welches sich aber erst mit Hoymiles Firmware-Versionen ab 1.1.12 (bzw. 2.0.4) bemerkbar macht.

Analyse des Verhaltens WR-Firmware 1.0.27 vs. 2.0.4

relative Limits / Vergleich PowerLimitControlType 'HM' vs. 'HMS'

ActivePowerControl-Command (aka Limit)
Firmware rel. temp. 'HM' (0x0001) rel. pers. 'HM' (0x0101) rel. pers. 'HMS' (0x0003)
1.0.27
- Power output is adjusted to limit.
- Limit is not persistent.
- SystemConfigPara response contains the actual limit.

- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response contains the actual limit.

- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response contains the actual limit.
2.0.4
- Power output is adjusted to limit.
- Limit is not persistent.


- SystemConfigPara response does NOT contain the actual limit.

- Power output is adjusted to limit.


- Limit is not persistent.
- SystemConfigPara response does NOT contain the actual limit.

- Power output is adjusted to limit.
- Limit is persistent after restart / power cycle.
- SystemConfigPara response (type 0x0003) does contain the actual limit.

Vergleich PowerLimitControlType 'HMS' vs. Firmware

ActivePowerControl-Command (aka Limit)
Firmware abs. temp. (0x00) rel. temp. (0x01) abs. pers. (0x02) rel. pers. (0x03)
1.0.27 ✅ Power output
✅ Limit temp.
✅ SystemConfigPara
✅ Power output
✅ Limit temp.
✅ SystemConfigPara
✅ Power output
✅ Limit pers.
✅ SystemConfigPara
✅ Power output
✅ Limit pers.
✅ SystemConfigPara
1.1.12 ✅Power output
✅ Limit temp.
✅ SystemConfigPara
✅Power output
✅ Limit temp.
✅ SystemConfigPara
❓Power output
❓ Limit pers.
❓ SystemConfigPara
✅Power output
✅ Limit pers.
✅ SystemConfigPara
2.0.4 ✅ Power output
✅ Limit temp.
❌ SystemConfigPara
✅ Power output
✅ Limit temp.
❌ SystemConfigPara
✅ Power output
✅ Limit pers.
✅ SystemConfigPara
✅ Power output
✅ Limit pers.
✅ SystemConfigPara

Lösung: Ideen / Vorschläge

  • Ermittlung der noch unbekannten ActivePowerControl-Kommandos für die nicht-persistenten und absoluten Limits.
    • Die Hoymiles-Cloud erlaubt nur das direkte Senden des relativen, persistenten Limits.
    • Für die Analyse der anderen Limits könnte die Hoymiles Zero-Export-Funktion geeignet sein. Zumindest die nicht-persistenten Limits sollten dort verwendet werden.
  • Die Kommandos für die relativen Limits (0x01 und 0x03) der HMS-Serie konnten per Hoymiles DTU-Pro-S + Modbus ermittelt / bestätigt werden (für Details siehe diesen Kommentar).
  • Die Kommandos für die absoluten Limits der HMS-Serie wurden 'geraten' und durch Tests verifiziert. Das Bit für die Persistenz ist im Gegensatz zur HM-Serie (dort niederwertigstes Bit im zweiten Byte) jetzt im zweiten Bit des ersten Byte zu finden.
    typedef enum {
        AbsolutNonPersistent = 0x0000,
        RelativNonPersistent = 0x0001,
        AbsolutPersistent = 0x0002,       // 0b10 statt 0x0100
        RelativPersistent = 0x0003        // 0b11 statt 0x0101
    } PowerLimitControlType;
  • Der einzige Unterschied im Verhalten der Hoymiles Firmware 1.0.27 vs. 2.0.4 zeigt sich jetzt noch darin, dass die temporären / nicht persistenten Limits nicht mehr in der SystemParaConfig-Response 'gespiegelt' werden. Ob das ein Bug oder bewusstes Feature seitens Hoymiles ist, muss noch herausgefunden werden.
  • Es muss beim Senden des ActivePowerControl-Kommandos dann entsprechend der Wechselrichterserie (HM / HMS) unterschieden werden.

weiterführende Informationen / Sammlung von Links:

Woher stammen die Werte für den PowerLimitControlType, welche mit dem ActivePowerControl-Kommando gesendet werden?


Liste der damaligen Hauptakteure (to be continued)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstale

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions