BYD Batteriesteuerung mit SMA über Modbus

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • GeoPod
    LoxBus Spammer
    • 20.01.2021
    • 413

    #1

    BYD Batteriesteuerung mit SMA über Modbus

    Hallo,

    ich habe mit Spannung diesen Beitrag
    https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/342375-byd-batteriesteuerung-am-kostal-über-modbus?p=404290#post404290

    von Benjamin Jobst verfolgt und frage mich ob man eine Batteriesteuerung nicht auch über SMA hinbekommen könnte.

    Eine gewisse Batteriesteuerung in Zusammenhang mit SMA wurde hier gezeigt:
    Dieses Projekt in Riedwiese, realisiert von unserem Loxone Partner KSE Konzept GmbH - https://konzept.k-s-e.com - zeigt eindrucksvoll, wie stark das Energiem...


    Sollte also im Grunde funktionieren.
    Allerdings gibt es dazu leider keine Doku. Es wird nur auf SMA verwiesen... SMA hat leider kein großes Interesse hier zu helfen.

    Hat einer von euch eine Idee wie man dies realisieren könnte. Bzw. welche Register angesprochen werden müßten?
    Oder ist vielleicht die Firma vom Video (@KSE Konzept GmbH) hier im Forum vertreten?

    Viele Grüße,
    Georg
  • GeoPod
    LoxBus Spammer
    • 20.01.2021
    • 413

    #2
    Hallo, ich in der Zwischenzeit ein wenig versucht mich schlauer zu machen.

    Im Photovoltaikforum gibt es funktionierende Programmierungen über iobroker:
    ausgelagert von Warum wird eingespeist und nicht der Akku geladen? [URL:https://www.photovoltaikforum.com/thread/119955-warum-wird-eingespeist-und-nicht-der-akku-geladen/?postID=1987219#post1987219] Der Code ist online, die Installationsanleitung…


    Folgendes Szenario habe ich mir mal herausgepickt um dieses näher zu verstehen. Es handelt sich hier um die Umsetzung, dass die Batterie gestoppt wird. Um z.b. bie angestecktem Auto zu verhindern, dass das Auto aus der Batterie geladen wird:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1924
Größe: 18,6 KB
ID: 412596

    Ich habe einen SBS5.0 von SMA. Folgende Register wäre hier wohl wichig:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1836
Größe: 31,4 KB
ID: 412597
    Übersetzt würde dies wohl bedeuten:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1822
Größe: 15,0 KB
ID: 412598

    Diese Abfolge müßte man wohl alle 15 Sekunden schicken, damit der WR nicht in den ursprünglichen Zustand zurück geht.



    Kommen wir nun zu der Umsetzung in Loxone. Wie würdet Ihr eine solche Abfolge realisieren?

    Kommentar

    • Benjamin Jobst
      Lox Guru
      • 25.08.2015
      • 1196

      #3
      Hi,
      das mit der Dokumentation ist bei SMA so eine Sache, ja. Es gibt da eine Excel-Datei, in der alle Register drin stehen.


      Wie ich das Dokument lese, muss wohl über die Register 40151 ODER 44427 die Wirkleistungsvorgabe per Kommunikation freigeschaltet werden - der Wert 802 scheint für AKTIV zu stehen, 803 für INAKTIV.
      Dann kann über die Register 40149 ODER 44425 die Wirkleistungsvorgabe erfolgen. Warum es dafür jeweils zwei Register gibt kann ich nicht beantworten.

      Wichtig ist, dass es sich um einen signed 32-bit-Wert handelt. Das bedeutet, mann muss den Datentyp in Loxone entsprechend einstellen und dann die Register- und Byte-Reihenfolge finden, mit der das Ganze sauber funktioniert. Ich habe dafür aber im Moment leider keine Programmierung zur Hand - ich hätte mich jetzt an den Einstellungen aus der Loxone Library für den SBS 2.5 orientiert, denn normalerweise wechseln die Hersteller diese grundlegenden Details nicht zwischen verschiedenen Geräten...
      MfG Benny

      Kommentar

      • GeoPod
        LoxBus Spammer
        • 20.01.2021
        • 413

        #4
        Dank dir vielmals Benjamin Jobst für deine Denkanstöße.

        Ich habe den SBS2.5 aus der Loxone Library bei mir eingebunden und die Register für die Sensoren funktionieren soweit auch gut.
        Allerdings werden für die Aktoren nur 2 Register eingefügt:

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 44,9 KB ID: 412819

        Hast du vielleicht eine Idee wie ich die oben beschriebenen Register nacheinander übermitteln kann und dann vor allem nach 15 Sekunden wiederholen? Anscheinend müssen diese in regelmäßigen Abstand immer wieder gesendet werden.

        Kommentar

        • Benjamin Jobst
          Lox Guru
          • 25.08.2015
          • 1196

          #5
          Hi, bevor man da etwas automatisiert, würde ich erst einmal testen, ob das Ganze überhaupt so funktioniert wie wir uns das denken.
          welche Register sind denn diese beiden schreibbaren Datenpunkte? Ist das Register 40151 eines davon? 40149 wird keines davon sein, das müsste man noch anlegen.
          Und dann kann man ja an die Mode-GA per Analogwahlschalter zwischen den Werten 802 und 803 umschalten, in den Einstellungen der Register lässt sich ein zyklisches Senden einstellen.
          Und dann würde ich für das Leistungsvorgabe-Register (40149?) einen Virtuellen Eingang anlegen, mit dem man die Leistung zwischen -2000 W und +2000 W einstellen kann. Auch Hier kann man ja ein zyklisches Senden hinterlegen, um das Ganze zu testen.

          Dann kann man in der Visu ja mal mit den Schaltern spielen und beobachten, ob der WR annäherungweise das macht, was man erwartet. Wenn es so ist, kann man sich im Nachgang Gedanken machen, wie man das sauber umsetzt, wenn es hier schon hakt, gehts an die Fehlersuche...
          MfG Benny

          Kommentar

          • GeoPod
            LoxBus Spammer
            • 20.01.2021
            • 413

            #6
            Ich bin hier dank Benjamin Jobst und dem photovoltaikforum ein wenig weiter gekommen. Bin aber leider noch nicht am Ziel. Ich denke ich habe jetzt eine Art Kommunikation hinbekommen. Allerdings bin ich mir nicht so ganz sicher was das bedeutet.
            Mit diesen Einstellung bekomme ich keine Fehler im Modbus Kanal:​

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1753
Größe: 34,3 KB
ID: 420475



            Also habe ich jetzt erstmal nur die 2 Register angelegt:

            40151 und 40149
            40151 setze ich auf 802
            und mit 40149 gehe ich von -4000 bis +2000

            Folgendes passiert bei einer Batterie mit ca. 60%

            40149 auf 0:

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1740
Größe: 113,8 KB
ID: 420476

            40149 auf -4000:

            auf einmal habe ich 0.02 kw PV Erzeugung bei kompletter Dunkelheit

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1761
Größe: 118,5 KB
ID: 420477

            40149 auf +1000:

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1743
Größe: 123,9 KB
ID: 420478

            Bei 40151 zurück auf 802 scheint die interne Regulierung zu greifen:

            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1732
Größe: 107,8 KB
ID: 420479

            Aber was hat das alles zu bedeuten? Und warum kann ich keinen Strom beziehen für Batterieladung? Dafür aber regeln wie die Batterie entladen wird?​

            Kommentar

            • Benjamin Jobst
              Lox Guru
              • 25.08.2015
              • 1196

              #7
              Hi, ich habe noch einmal in die Modbus-Doku von SMA reingeschaut, das Register 40149 ist in diesem Dokument für die Leistungsvorgabe der Wirkleistungsbegrenzung benannt - also der Vorgabe der AC-Leistung, die die Anlage maximal erzeugen darf. Dass bei dieser Auffassung keine Ladung der Batterie aus dem Netz stattfindet, ist verständlich. bei der positiven Leistung begrenzt du nur die maximale Leistung, die der WR abgibt - gibst aber keinen direkten Wert vor. Dann scheint das nicht der richtige Ansatz zu sein.
              Allerdings habe ich keine anderen Register gefunden, die für die entsprechenden Leistungsvorgaben in Frage kommen...
              vielleicht hat jemand anders noch etwas gefunden?
              MfG Benny

              Kommentar

              • GeoPod
                LoxBus Spammer
                • 20.01.2021
                • 413

                #8
                Dank dir vielmals Benjamin Jobst .

                Dann ist der 1. Use-Case: "Batterie-Entladung zu stoppen beim Laden eine E-Autos über die Wallbox" schon gelöst:

                40151: auf 802
                40149: auf 0

                Dies läßt sich einfach realisieren und z.B. in der Nacht bei niedrigen Strompreisen und einem angehängten E-Auto an der Wallbox triggern.



                2. Use-Case: "Batterie-Laden in der Nacht bei niedrigem Strompreis und schlechter Prognose für den kommenden Tag":
                Dafür habe ich noch keine wirklich Lösung.

                Ich denke ich muß hier mit diesen 4 Registern rumspielen:
                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1779
Größe: 63,3 KB
ID: 421043

                Diese müßte man wohl alle 4 gleichzeitig zyklisch (15 Sekunden) senden. Allerdings ist mir noch nicht so ganz klar, wie ich dies realisieren kann. Am liebsten wäre mir ein Schalter, der das zyklische Senden aktiviert und bei Wunsch deaktiviert und somit zurück zum Ursprung geht. Den sobald die Register nicht mehr zyklisch geschrieben werden, kehrt der Wechselrichter in den Automatik-Modus zurück.

                Kommentar

                • zetor
                  Smart Home'r
                  • 04.01.2017
                  • 62

                  #9
                  Hi GeoPod

                  kannst du mal bitte einen Screenshot oder eine detaillierte Beschreibung machen wie du die Befehle über Modbus erzeugst und sendest? Ich habe verstanden das man beim Modbus Aktor das Wiederholungsintervall automatisch einstellen kann. Aktuell löse ich das bei mir über einen Statusbaustein:

                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1602
Größe: 17,6 KB
ID: 427560
                  Wenn eine der beiden Wallboxen aktiv ist, soll der BYD Speicher im Keller deaktiviert werden. Das Ganze will ich dann noch mit einer Logik hinterlegen, dass das ganze ja nur Nachts passieren soll oder wenn man die Autos Sofortladen möchte. Um Eure Anleitungen zu wiederholen:

                  1. Schritt das Register 40151 auf 802 um die manuelle Steuerung zu aktivieren, das klappt über den BMS operating mode und wird direkt aus dem Statusbaustein übergeben

                  aber wie mache ich das mit dem Wert 0? Der wird doch immer gesendet oder sehe ich das falsch? Wie kann ich einen 0 Wert anstupsen?
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1607
Größe: 14,9 KB
ID: 427561
                  Das sind meine Einstellungen beim 40149, Ich hoffe das 16 und 32 Bit signed integer richtig sind? Ich hab ihn so eingestellt das er beim Eingangswert 802 den Zielwert 0 übernehmen soll. Also wenn die Speichersperre aktiv wird

                  Angehängte Dateien

                  Kommentar

                  • GeoPod
                    LoxBus Spammer
                    • 20.01.2021
                    • 413

                    #10
                    Hallo zetor ,

                    oh super ich bin nicht allein :-)
                    Habe schon gedacht ich bin allein mit dieser Kombination.

                    Bis jetzt sperre ich die Batterie händisch. Also noch keine Intelligenz usw. Aber er scheint zu funktionieren. Aber nur Szenario 1.

                    So sieht es bei mir aus:
                    Ich schreibe über einen Schalter: Freigabe Kommunikation SMA in einen Statusbaustein entweder 802 oder 803 in den Register 40151

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1575
Größe: 16,5 KB
ID: 427649

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1591
Größe: 7,3 KB
ID: 427650

                    Register 40151 sieht so bei mir aus:

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1670
Größe: 33,8 KB
ID: 427648

                    Über den Register 40149 gebe ich über einen "Virtuellen Eingang" die Wirkleistungsvorgabe vor.
                    Wenn du Batterie "ausgeschaltet" werden soll: ein 0

                    So sieht der Virtuelle Eingang aus:

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1563
Größe: 35,8 KB
ID: 427651

                    Und so die Einstellungen für den Register 40149:

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1573
Größe: 34,0 KB
ID: 427652










                    Kommentar

                    • GeoPod
                      LoxBus Spammer
                      • 20.01.2021
                      • 413

                      #11

                      So sieht die Config aus:
                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 4,4 KB ID: 427658

                      So sieht der Normalzustand aus. Auto wird mit max 11kw geladen. Dabei wird die Batterie angezapft und leergesaugt:


                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 31,5 KB ID: 427655

                      Wirkleistungsvorgabe auf dem Register 40149 ist auf 0 gesetzt. Sobald ich über den Schalter "Freigabe Kommunikation" an den Statusbaustein eine 1 sende gibt dieser 802 auf den Register ​40151. Die Batterie wird nicht mehr entladen (und auch nicht mehr geladen):

                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 30,1 KB ID: 427656
                      So sieht das bei mir in der Visualisierung aus:

                      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 100,0 KB ID: 427657

                      Bei mir ist dies aber noch sehr händisch. Ich bin mir nicht ganz sicher wie ich die Logik aufbauen sollte. Es spielt ja auch der Strompreis (wir sind bei Tibber) eine Rolle und natürlich auch, ob das Auto morgen benötigt wird (und natürlich wieviele km). Hast du vielleicht eine Idee wie man dies alles miteinbeziehen könnte?​​

                      Kommentar

                      • zetor
                        Smart Home'r
                        • 04.01.2017
                        • 62

                        #12
                        Also es scheint zu funktionieren!

                        Ich habe wie du mir beschrieben hast die beiden Register eingerichtet. Erst habe ich es mit einem manuellen Schalter und Regler wie du umgesetzt, dann habe ich es in meine bestehende Automatik mit eingebaut. Dazu habe ich einen Statusbaustein eingefügt der die beiden Wallboxen auf Tätigkeit überprüft. Wenn hier eine der beiden eine 1 sendet, dann wird als Ausgangsvalue 802 gesendet, ansonsten 803. Beim 40151 wird die 802 geschrieben, beim 40149 "übersetze" ich die 802 mittels Eingangswert-Ausgangswert von 802 auf 0.

                        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1795
Größe: 16,9 KB
ID: 427663
                        Der Statusbaustein sieht innen so aus:
                        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1579
Größe: 10,9 KB
ID: 427664

                        Jetzt zur Logik wann meine Steuerung entscheidet warum der Akku pausiert werden soll:

                        Meine Wallboxen werden über den Energiemangager gesteuert, wenn Überschussstrom vorhanden ist. Das ist der Standardmodus (M = 1) der nach dem abkoppeln eines Ladekabels auch immer wieder geladen wird. Wenn ein Nutzer nun den Modus wechselt, also z.B. auf Sofortladen (M = 2) oder Laden bis Morgen früh (M = 3), dann Liefert der Statusbaustein Wallbox Pause Resume den Wert 1, der wiederum den Speicher deaktiviert.
                        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1613
Größe: 136,8 KB
ID: 427665Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1592
Größe: 14,9 KB
ID: 427666


                        Zur Info: Die Funktion "Laden bis Morgen Früh" verwendet dann den Spotpreisoptimierer und soll helfen Nachts den billigsten Zeitpunkt herauszufinden.

                        Was mir jetzt noch fehlt ist ein Vollautomatischer Modus, bei dem er zwischen Überschuss und Spotpreis wechselt, je nach Tageszeitpunkt. Aber das sollte auch machbar sein z.b. über einen Wechselschalter mit Sonnenuntergang / Sonnenaufgang. Habe ich etwas übersehen?

                        Achso, ich hab was von Schönheitsfehler gesagt. Trotz des Registerwertes "0" zeigt mir die Loxone App einen minimalen Stromfluss aus dem Speicher von 80 Watt oder so an, hast du eine Idee an was das liegen kann?​

                        Kommentar


                        • GeoPod
                          GeoPod kommentierte
                          Kommentar bearbeiten
                          Dank dir vielmals für deine Logik. Ich gehe da in Ruhe mal durch und kommentiere die Tage.

                          Zu deiner letzten Frage bzgl. der 80 Watt. Das habe ich auch. Bei mir sind es immer um die 30. Allerdings geht das nach ca. 5-10 Minuten auf komplett 0. Ist das bei dir auch so? Dann wird die Batterie im SMA Portal unter Aktueller Status grau (wie oben in meinem Screenshot).

                        • zetor
                          zetor kommentierte
                          Kommentar bearbeiten
                          Hab ich noch nicht länger überprüft, ich schaue es mir dann nochmal genauer an. In der SMA App ist der Speicher getrennt, ja. In der Loxone App spinnt es noch ein wenig, aber das ist schon fast normal. Leider bekomme ich die SMA Modbuswerte nicht so zuverlässig rein, bei mir schmiert die Verbindung weiterhin nach zu häufigen Configänderungen immernoch komplett ab. Dann hilft nur Wechselrichter neustarten
                      • fec
                        Smart Home'r
                        • 13.03.2021
                        • 77

                        #13
                        Hallo, tolle Doku, genau mein Ding, hätte ich die früher gefunden hätte ich nicht so lange lesen und ausprobieren müssen.
                        Eine Frage dazu: Wenn man sich nicht sicher ist ob der Parameter 40151 auf 802/803 steht bzw. kontrollieren will ob die Vorgabe auch ankommt, kann man den Ist Status mit dieser oder einer anderen Adresse als Readparameter auch abfragen?

                        Kommentar

                        • Benjamin Jobst
                          Lox Guru
                          • 25.08.2015
                          • 1196

                          #14
                          Hi, ja du kannst die Register als Read Holding Register auch auslesen - das kannst du auch am PC z.B. per Modbus Poll tun.

                          Zum zyklischen Senden alle 15s: Das regelmäßige Senden im Modbus Aktor bei Loxone lässt sich nicht ein- und ausschalten. Deshalb habe ich mir einen Workaround gebastelt. Bei Kostal muss die Leistungsvorgabe wie auch hier in Watt gesendet werden. Deshalb nehme ich meinen Wert der Leistungsvorgabe (z.B. 2.000 W) und setze mittels Imulsgeber-Baustein und Addierer einfach zyklisch 1 W dazu oder nicht. Wenn du den Impulsgeber auf 1s stellst, dann wird dein Leistungswert mit Abweichung von 1W regelmäßig gesendet.
                          Wenn die externe Leistungsvorgabe nicht mehr laufen soll, wird der Impulsgeber gesperrt und der Kostal fällt wieder in die interne Regelung zurück. Evtl. ist das bei euch ja genauso denkbar...
                          MfG Benny

                          Kommentar

                          • fec
                            Smart Home'r
                            • 13.03.2021
                            • 77

                            #15
                            Hi, vielen Dank
                            Also neuen Sensor anlegen IO 40151 ReadHoldind und fertig!?
                            Zykl Senden ist unbedingt erforderlich?
                            Habe eine ähnliche Anlage mit Loxone programmiert (Sungrow/BYD) da musste ich sonst nix tun.
                            zum Modbus Pol, kenn ich gar nicht, gibts ne Erklärung/Anleitung dazu? Danke Gruß

                            Kommentar

                            Lädt...