Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fronius Modbus Batteriesteuerung fehlerhaft bei Netzladen der Hausbatterie #17583

Closed
1 task done
mweihberg opened this issue Dec 4, 2024 · 24 comments · Fixed by #18386
Closed
1 task done

Fronius Modbus Batteriesteuerung fehlerhaft bei Netzladen der Hausbatterie #17583

mweihberg opened this issue Dec 4, 2024 · 24 comments · Fixed by #18386
Labels
devices Specific device support

Comments

@mweihberg
Copy link

Describe the bug

Ich verzeichne ein komisches Verhalten mit meinen zwei Fronius Wechselrichtern. siehe Diskussion #17505

Steps to reproduce

Beispiel:
Hausverbauch 0,5kw
Fronius Gen24 mit Batterie Produktion 0,4kw
Fronius Symo über SolarApi Produktion 0,8kw
Kein Auto angeschlossen.

Erwartetes Verhalten:
Batterieladung 0,7kw.

  1. Frisches System. Binde 2x Fronius Wechselrichter ein. Einer über Modbus mit aktiver Batteriesteuerung und einer über SolarApi. Dann wird erwartetes Verhalten erreicht.
  2. Netzladen der Hausbatterie testen, dadurch aktive Batteriesteuerung und bei meinem einphasigen WR Gen24 wird dann auch korrekterweise mit 4,2kw aus dem Netz in die Batterie geladen => aktive Batteriesteuerung funktioniert.
  3. Deaktivierung des Netzladens. Erwartetes Verhalten 0,7kw in Hausbatterie. Verhalten stattdessen: 0,4kw in Hausbatterie (von Gen24). 0,2kw Einspeisung (Rest von 0,7kw Symo abzgl. Hausverbauch 0,5kw).

Es scheint mir, als würde sich die Batteriesteuerung irgendwie nicht richtig zurücksetzen.

Ich würde gerne mit Logs helfen, weiß aber nicht was ich da collecten soll.

Configuration details

Database Konfiguration

Log details

Bitte um Hilfestellung was konkret collected werden soll. Alles?

What type of operating system are you running?

HomeAssistant Add-on

Nightly build

  • I have verified that the issue is reproducible with the latest nightly build

Version

0.131.8

@mweihberg
Copy link
Author

mweihberg commented Dec 4, 2024

Btw. funktioniert die aktive Ladung aus dem Netz für die Hausbatterie über die fronius-solarapi-v1 NICHT.
Eine Aktivierung des Netzladens führt zwar zur korrekten Anzeige auf der UI, aber die Batterie wird trotzdem nicht aus dem Netz geladen.

Das Template setzt unter charge auch einfach nix.
https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/fronius-solarapi-v1.yaml

@mweihberg
Copy link
Author

mweihberg commented Dec 4, 2024

Und ich habe glaube ich die betroffene Stelle direkt gefunden.
https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/fronius-gen24.yaml

batterymode: # model 124
    source: switch
    switch:
    - case: 1 # normal
      set:
        source: sequence
        set:
        - source: const
          value: 0 # off
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:ChaGriSet
        - source: const
          value: 0
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:StorCtl_Mod
        - source: const
          value: 100 # %
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:OutWRte

Hier wird offensichtlich im normal Mode die Ladeleistung auf den Output den Wechselrichters beschränkt. Besser wäre es den Output gar nicht zu beschränken und das SmartMeter diesen Job erledigen zu lassen.

EDIT: Stimmt nicht, habe die Werte falsch interpretiert. OutWRte ist die Entladeleistung und StorCtl_Mod = 0 sollte eigentlich sämtliche Limits abschalten. Aber WR berappelt sich nicht.

@mweihberg
Copy link
Author

Wobei hier steht die Value bezieht sich immer auf WchaMax
https://manuals.fronius.com/html/4204102649/de.html#0_m_0000016557

Die Frage ist ja wie sieht es aus, wenn sich das System normal verhält bzw. gar keine Register von außen gesetzt wurden. Ich muss mal schauen ob ich es heute Abend hinbekomme den Modbus auszulesen.

@andig andig added the devices Specific device support label Dec 4, 2024
@andig
Copy link
Member

andig commented Dec 5, 2024

Da du die Register gefunden hast und lesen kannst gerne PR falls dort etwas falsch ist. Ich sehe aktuell kein Todo.

@mweihberg
Copy link
Author

Hast du einen Tipp für eine Tool zum Auslesen und Setzen der Register? Ich komme immer erst abends dazu, könnte also dauern.

@mweihberg
Copy link
Author

Ich könnte parallel mal schauen ob ich nebenher die Solarapi ertüchtigen kann die Batterie via Netz zu laden. Da bin ich deutlich fitter 😬

@andig
Copy link
Member

andig commented Dec 7, 2024

Ich mache zu bis es einen Vorschlag zur Änderung der Register gibt.

@andig andig closed this as completed Dec 7, 2024
@mweihberg
Copy link
Author

Ich habe den Fehler mit evcc sunpec herausfinden können.
Wenn evcc an ist, dann wird im ChaGriSet bei normal und hold auf den Wert 0 gesetzt.

Image

Wenn ich Modbus kurzzeitig am WR ausschalte um es dann wieder einzuschalten um das Default Verhalten wieder herzustellen, dann ist ChaGriState IMMER = 1.

Image

Es gibt in Fronius WR in der WebUI eine Einstellung zum Thema Laden von Batterien aus anderen Quellen. Egal welche Einstellung ich dort setze, ChaGriState ändert sich nicht und ist immer = 1.

Image

@mweihberg
Copy link
Author

Somit wäre mein Vorschlag im Modus normal den ChaGriState auf = 1 zu belassen.
https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/fronius-gen24.yaml

@premultiply
Copy link
Member

PR welcome

@andig
Copy link
Member

andig commented Jan 22, 2025

Wir setzen das ja nur bei charge. Wenn es eh immer auf 1 ist könnten wir uns komplett sparen, da irgendwas zu setzen. Input kam damals unter anderen von @MikeTheTux in #10912.

Wie @premultiply schon sagte: PR welcome, bitte unbedingt vorher testen.

@mweihberg
Copy link
Author

mweihberg commented Jan 22, 2025

Ich kann es versuchen demnächst lokal mal zu bauen und zu testen - da ich beruflich wirklich stark eingebunden kann ich da nix versprechen.

Allerdings würde ich gerne nochmal veranschaulichen was aktuell im Template passiert (https://github.com/evcc-io/evcc/blob/master/templates/definition/meter/fronius-gen24.yaml):

batterymode: # model 124
    source: switch
    switch:
    - case: 1 # normal
      set:
        source: sequence
        set:
        - source: const
          value: 0 # off
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:ChaGriSet
        - source: const
          value: 0
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:StorCtl_Mod
        - source: const
          value: 100 # %
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:OutWRte
    - case: 2 # hold
      set:
        source: sequence
        set:
        - source: const
          value: 0 # off
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:ChaGriSet
        - source: const
          value: 2
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:StorCtl_Mod
        - source: const
          value: 0 # %
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:OutWRte
        - source: const
          value: 0 # s
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:InOutWRte_RvrtTms
    - case: 3 # charge
      set:
        source: sequence
        set:
        - source: const
          value: 1 # off
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:ChaGriSet
        - source: const
          value: 2
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:StorCtl_Mod
        - source: const
          value: -{{ .maxchargerate }} # %
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:OutWRte
        - source: const
          value: 0 # s
          set:
            source: sunspec
            uri: {{ .host }}:{{ .port }}
            id: 1
            value: 124:0:InOutWRte_RvrtTms

Fall 1 normal:

  • ChaGriSet = 0 => Keine Ladung weiterer Erzeuger möglich
  • StorCtl_Mod =0 => Keine Grenzwerte der Ladung/Entladung aktiv
  • OutWRTe = 100% => Theoretisch 100% Ladung möglich

Fall 2 hold (keine Entladung):

  • ChaGriSet = 0 => Keine Ladung weiterer Erzeuger möglich
  • StorCtl_Mod = 2 => Entladegrenzwert aktiv
  • OutWRTe = 0% => Entladegrenzwert = 0%

Fall 3 charge (Ladung je nach maxchargerate):

  • ChaGriSet = 1 => Ladung Netz und weitere Generatoren aktiv
  • StorCtl_Mod = 2 => Entladegrenzwert aktiv
  • OutWRTe => -maxchargerate negative Entladung und somit Ladung

Selbst wenn jetzt im Modus normal ChaGriSet = 1 ist, dann heißt dass nicht, dass aus dem Netz geladen wird. Das macht der Fronius nicht. Nur wenn man dann aktiv Batterieprogramme setzt. Aber ohne ChaGriSet = 1 wird es auch weiteren Erzeugern im AC Netz des Hauses nicht erlaubt ihren Überschuss in die Batterie einzuspeisen. Der verfügbare Überschuss wird durch das Smart Meter automatisch geregelt.

@andig
Copy link
Member

andig commented Jan 22, 2025

Also einfach ChaGriSet komplett weg lassen wenns das eh nicht braucht (oder es sowieso 1 ist)...

@TomF79
Copy link
Contributor

TomF79 commented Jan 22, 2025

Eventuell passt das hier dazu:

#18277

@mkrill Womöglich funktioniert deshalb das Netzladen nicht mehr.

@MikeTheTux
Copy link

Input kam damals unter anderen von @MikeTheTux in #10912.

Ich habe damals den Issue #10912 gestellt, da ich Interesse am Discharge Control (Hold) hatte.
Um die Entwicklung zu enablen, habe ich dem EVCC Team Zugang zu meinem Inverter gegeben und Dokumente (PDF und Modubus-Register) zur Verfügung gestellt.
Im Anschluss habe ich nur den UseCase Discharge Control (Hold) getestet. Keine gezwungene Ladung aus dem Netz, keine Ladung mit maxChargeRate, usw.. Evtl. erklärt das, warum diverse Szenarien nicht funktionieren.

Also einfach ChaGriSet komplett weg lassen wenns das eh nicht braucht (oder es sowieso 1 ist)...

In dem in #10912 referenzierten Dokument, kommt bei den einzelnen UseCases ChaGriSet ebenfalls nicht vor.

@mweihberg
Copy link
Author

Eventuell passt das hier dazu:

#18277

Ist interessant, die Zwischenspannungsfehler hatte ich auch vermehrt in letzter Zeit. Ich habe gerade nochmal in das Solarweb von Fronius geschaut. Die Zwischenspannungsfehler sind erst seitdem ich evcc benutze. Kann das aber gerade nicht in Korrelation mit einem bestimmten Zustand setzen.

Input kam damals unter anderen von @MikeTheTux in #10912.

Ich habe damals den Issue #10912 gestellt, da ich Interesse am Discharge Control (Hold) hatte. Um die Entwicklung zu enablen, habe ich dem EVCC Team Zugang zu meinem Inverter gegeben und Dokumente (PDF und Modubus-Register) zur Verfügung gestellt. Im Anschluss habe ich nur den UseCase Discharge Control (Hold) getestet. Keine gezwungene Ladung aus dem Netz, keine Ladung mit maxChargeRate, usw.. Evtl. erklärt das, warum diverse Szenarien nicht funktionieren.

Also einfach ChaGriSet komplett weg lassen wenns das eh nicht braucht (oder es sowieso 1 ist)...

In dem in #10912 referenzierten Dokument, kommt bei den einzelnen UseCases ChaGriSet ebenfalls nicht vor.

Das Dokument kenne ich auch - daher habe ich die Informationen. Hier ist noch ein interessanter Link: libe.net - von dort kommt man hierhin https://forum.iobroker.net/topic/65205/modbus-fronius-gen24 und da gibt es eine Excel mit allen Modbus Registern.

Image

Da es der Default Wert ist, wenn man Modbus deaktiviert und wieder aktiviert gehe ich davon aus, dass es keinerlei Auswirkung hat das grundsätzlich auf = 1 zu lassen.

@TomF79
Copy link
Contributor

TomF79 commented Jan 22, 2025

Ist interessant, die Zwischenspannungsfehler hatte ich auch vermehrt in letzter Zeit. Ich habe gerade nochmal in das Solarweb von Fronius geschaut. Die Zwischenspannungsfehler sind erst seitdem ich evcc benutze. Kann das aber gerade nicht in Korrelation mit einem bestimmten Zustand setzen.

Bei mir kam der Fehler hauptsächlich zu Ladebeginn sobald die Batteriesperre aktiv wurde.

@MikeTheTux
Copy link

MikeTheTux commented Jan 22, 2025

aus https://www.fronius.com/~/downloads/Solar%20Energy/Operating%20Instructions/42,0410,2649.pdf

Image

das erklärt folgende Beobachtung von oben:

Es gibt in Fronius WR in der WebUI eine Einstellung zum Thema Laden von Batterien aus anderen Quellen. Egal welche Einstellung ich dort setze, ChaGriState ändert sich nicht und ist immer = 1.

Bei meinem WR ist "Laden von Batterien aus anderen Quellen" deaktiviert. Somit habe ich beim Testen der initialen Implementierung auch keine Unregelmäßigkeiten festgestellt.

@andig
Copy link
Member

andig commented Jan 22, 2025

…es erklärt aber nicht, warum eine 0 dazu führen sollte, dass nicht aus anderen Quellen als dem Netz geladen werden kann?

@MikeTheTux
Copy link

Hmm. Wo hängt der SmartMeter vom 1. WR mit der Batterie? Hat er eine Möglichkeit zu erkennen, dass der 2. WR gerade die 0,2 kw einspeist?

@mweihberg
Copy link
Author

mweihberg commented Jan 22, 2025

Natürlich, denn er hängt am Einspeisepunkt. Daher ist der Gesamtsaldo des Haues bekannt. Es funktioniert ja auch einwandfrei ohne die Einmischung von evcc über das Modbus Register.

Wenn die beiden Eigenschaften ChaGriSet und die Einstellung aus der UI UND Verknüpft sind, dann ist es doch klar.
ChaGriSet = 0 UND UI = 1 => 0
ChaGriSet = 1 UND UI = 1 => 1
ChaGriSet = 1 UND UI = 0 => 0

Somit muss beides erlaubt sein, damit es überhaupt funktioniert.

Den letzten Fall könnte ich morgen mal testen. Ich erzwinge das Netzladen über evcc und stelle das Laden aus dem Netz in der UI aus. Ergebnis müsste somit keine Ladung aus dem Netz sein.

Ich habe es außerdem gerade geschafft, die Solution zu bauen und werde das Setzen von ChaGriSet = 1 im Modus normal einmal in den nächsten Tagen durchtesten.

Reicht es dafür einmal das Template zu ändern, dann zu kompilieren und es zu starten? Ich bin C# Dev - habe keine Ahnung von Go und Node. Außerdem bin ich nicht so tief in den Source Code eingestiegen.

@TomF79
Copy link
Contributor

TomF79 commented Jan 23, 2025

Natürlich, denn er hängt am Einspeisepunkt. Daher ist der Gesamtsaldo des Haues bekannt. Es funktioniert ja auch einwandfrei ohne die Einmischung von evcc über das Modbus Register.

Wenn die beiden Eigenschaften ChaGriSet und die Einstellung aus der UI UND Verknüpft sind, dann ist es doch klar. ChaGriSet = 0 UND UI = 1 => 0 ChaGriSet = 1 UND UI = 1 => 1 ChaGriSet = 1 UND UI = 0 => 0

Somit muss beides erlaubt sein, damit es überhaupt funktioniert.

Den letzten Fall könnte ich morgen mal testen. Ich erzwinge das Netzladen über evcc und stelle das Laden aus dem Netz in der UI aus. Ergebnis müsste somit keine Ladung aus dem Netz sein.

Ich habe es außerdem gerade geschafft, die Solution zu bauen und werde das Setzen von ChaGriSet = 1 im Modus normal einmal in den nächsten Tagen durchtesten.

Reicht es dafür einmal das Template zu ändern, dann zu kompilieren und es zu starten? Ich bin C# Dev - habe keine Ahnung von Go und Node. Außerdem bin ich nicht so tief in den Source Code eingestiegen.

Das erklärt dann natürlich auch was @mkrill und ich festgestellt haben, dass nach benutzen der Batteriesperre von evcc die Laderegeln für das Netzladen in der WebUi des Gen24 ohne Funktion sind und erst nach manuellen Reset der Modbus Einstellungen wieder funktioniert, da ChaGridSet Standard wieder auf 1 gesetzt wird.

@Wisley7
Copy link

Wisley7 commented Jan 24, 2025

Bei der Steuerung meines Akkus über den Fronius Symo-Hybrid setze ich einfach den OutWrte auf folgende Werte:
Normal: 100
Hold: 0
Aus Netz laden : -100

StorCtl_Mod steht bei mir immer auf 3

Sonst wurde und wird nix verändert.
Ich denke das wird beim Gen24 auch funktionieren

@mweihberg
Copy link
Author

Heute getestet mit Nightly: Funktioniert wunderbar!

Erst Netzladen erzwungen mit hohem Strompreis, dann ausgeschaltet und festgestellt, dass sämtlicher Überschuss (nicht nur der des WR mit der Batterie) in die Batterie geladen wird.

Batteriesperre während schnellem Laden funktioniert auch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
devices Specific device support
Projects
None yet
6 participants