Fronius Wechselrichterdaten über Modbus TCP/IP in Loxone einlesen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #16
    das ist mir schon klar, nur hat "DC Power" die Startadresse 40285 und ist "uint16". In Loxone somit die Adresse 40284.
    Wenn jetzt "LifeTimeEn1" auch 40284 bekommt, beisst sich das nicht
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Gen24_MB_RegisterAuszug.png Ansichten: 48 Größe: 54,1 KB ID: 394471

    Korrektur:
    Registeradresse Loxone = Registeradresse Registerverzeichnis -1
    Type > 16 Bit = Häkchen bei Loxone Registerreihenfolge​
    Somit hat "DC Power" die Loxone IO Adresse 40284 und "LifeTimeEn1" die Loxone IO Adresse 40285
    Zuletzt geändert von romildo; 19.06.2023, 22:23.
    lg Romildo

    Kommentar


    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Ich habe es jetzt ohne es zu verstehen, trotzdem mal bei mir so eingebunden.
      Mal sehen, welche Ergebnisse bei mir rauskommen.
      Werde in ein paar Tagen berichten.

    • Bogenhaus
      Bogenhaus kommentierte
      Kommentar bearbeiten
      super, bin gespannt

      eventuell ist diese „Überlappung“ ja auch das Problem
      Ich wüsste nur nicht wie man sonst addressiert - wenn man nicht -2 rechnet stimmts ja gar nicht

    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Bei "AC Energy" Register 40102 float32 (Loxone Register 40100) gibt es ja auch Unstimmigkeiten, obwohl es hier keine Registerkonflikte gibt.
      Kann gut sein, dass es da mehrere Probleme gibt.
  • SPS-Guru
    Smart Home'r
    • 27.12.2022
    • 64

    #17
    Hallo zusammen

    Ich bekomme meinen SymoGEN24 leider erst in ein paar Wochen aber das Thema interessiert mich natürlich.
    Wahrscheinlich stehe ich einfach auf dem Schlauch aber die Registeradresse beim Modbus-Protokoll setzt sich
    doch eigentlich aus Funktionscode und Registeradresse zusammen. Der Unterschied zwischen RTU und TCP besteht
    eigentlich nur aus einem speziellen Header für TCP. Die Registeradressierung steht in der "PDU" und sollte für beide Varianten die selbe sein.

    Also hier für "Lifetime Energy" Funktionscode(03) = Offset 40000, Adresse des ersten Registers 40286 - 40001 = 285, Offset 40000 vorgegeben durch Funktionscode

    Dann gibt es auch keine Adressüberlappung weil immer nur -1.
    Hat das schon mal jemand so ausprobiert?

    Kommentar


    • Bogenhaus
      Bogenhaus kommentierte
      Kommentar bearbeiten
      Ich verwende Modbus TCP zum Fronius SymoGen und Modbus über die ModBus Extension über RS485 zu meiner Wärmepumpe.
      Bei der Wärmepumpe ist es tatsächlich so dass die Offsets nicht mitgerechnet werden.

      Beim Modbus TCP zum Fronius gehts aber nur so dass man die gesamte Nummer angibt und 1 oder 2 abzieht je nach 16bit/32bit - ich hab das mehr/weniger auch experimentel ermittelt - anders bekommt man keine Werte
      Ich könnte mir eventuell auch vorstellen dass das an der Implementierung von Loxne liegt - soweit bin ich dabei aber einfach nicht im Thema.
      Ich hab glaube ich auch schon im Kontext iOBrocker gelesen dass dort die kompletten register und -1 angegeben werden.

    • romildo
      romildo kommentierte
      Kommentar bearbeiten
      Beim "Shelly Pro 3EM" muss über Modbus TCP bei Funktionscode "4-Reading input register(3x)" der Offset auch nicht mitgerechnet werden.
      Es muss aber auch nichts abgezogen werden.
      Beispiel:
      Shelly Register: 31020 float Phase A voltage, V
      Loxone IO Adresse: 1020

    • SPS-Guru
      SPS-Guru kommentierte
      Kommentar bearbeiten
      Das mit dem "-1" kommt daher weil die Daten eines Moduls in 4 Tabellen gespeichert werden.
      Jede Tabelle hat jeweils ihren eigenen Offset --> 1,10001,30001,40001.
      Ein Holding Register mit der Nummer 40001 hat aber die Adresse 0000 also -1.

      Deshalb verstehe ich eben auch die -2 bei den 32bit Werten bei Fronius nicht.
      Da müsste mir dann auch einer erklären welche Adresse das Register 40001 "SID" (32bit) dann bekommen soll.
      39999 kann es ja nicht sein weil kein Holding-Register mehr.
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #18
    Hallo SPS-Guru

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

Name: Gen24_MB_RegisterOhne40.png
Ansichten: 1376
Größe: 83,7 KB
ID: 394502
    lg Romildo

    Kommentar


    • SPS-Guru
      SPS-Guru kommentierte
      Kommentar bearbeiten
      Ja dann hält sich da wohl einer von den Herstellern nicht an das offizielle Modbus-Protokoll.
      Wie gesagt ich warte noch auf den Fronius und habe aktuell kein ModbusTCP Gerät hier.
      Wenn ich meinen MS mit einem ModbusTCP-Simulator verbinde funktioniert das mit 285 für Register 40286.
  • romildo
    Lebende Foren Legende
    • 25.08.2015
    • 5144

    #19
    SPS-Guru bezugnehmend auf Post 17.3
    Tja, so wie du schreibst steht es ja auch in der Doku von Fronius

    Ähnliche Werte kommen auch mit -1, wenn man die Registerreihenfolge setzt, so dass zuerst das LowWord und dann das HighWord gelesen wird.
    Das ist vermutlich auch die einzig richtige Einstellung.
    Bei mir war es nur so, dass so die Werte in Loxone täglich etwas höher ausgefallen sind wie die von der API, was bei -2 nicht der Fall war.

    Mir ist aber schon auch klar, dass nur eine Variante die Richtige sein kann.

    Vielleicht habe ich bei meinen vielen Versuchen auch einfach sonst noch was falsch gemacht.
    Ich werde das jetzt nochmals mit -1 und Häkchen bei Registerreihenfolge testen und mit den API Werten vergleichen.​
    lg Romildo

    Kommentar


    • SPS-Guru
      SPS-Guru kommentierte
      Kommentar bearbeiten
      Ja schauen wir mal.
      In KW28 sollte ich meinen WR bekommen 😎
  • Bogenhaus
    LoxBus Spammer
    • 24.05.2020
    • 264

    #20
    Hallo romildo und SPS-Guru

    ihr seit nun meine beiden Helden

    das war es, bei 32 oder 64 Bit Werten - Adresse -1 und die Registerreihenfolge anhaken - damit sind die Werte plausibel, schwanken auch nicht mehr
    Und damit ist erstmalig auch ein Wert im acc64 Format lesbar Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1234
Größe: 6,6 KB
ID: 394550

    Das alleine bestätigt schon das es so richtig sein muss.

    Irgendwie ja erstaunlich dass es anders auch "irgendwie" ging was mich leider auf die falsche Spur führte.
    Danke euch !!


    LifeTimeEn1 - alte Variante register -2
    LifeTimeEn1-2 - neu Variante -1, und Refgisterreihenfolge
    PV-API-PV_ENERGYACTIVE_ACTIVE_SUM_01_U64 kommt über die API
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1191
Größe: 116,3 KB
ID: 394551

    Kommentar

    • Bogenhaus
      LoxBus Spammer
      • 24.05.2020
      • 264

      #21
      Noch ein Nachtrag - schneller als im 10s Raster werden die Werte über Modus TCP bei mir auch nicht abgefragt - trotz Einstellung 5s (minimaler Wert laut Config)
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1207
Größe: 65,1 KB
ID: 394560

      Kommentar


      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Kann ich so nicht bestätigen, bei mir kommen die im 5s Takt.
        Miniserver Gen2
        Config Version 14.1.5.9

      • Bogenhaus
        Bogenhaus kommentierte
        Kommentar bearbeiten
        spannend

        hab gleiche HW, gleiche SW,alle 5 derzeit verwendeten Sensoren auf 5s gestellt.
        Miniserver nun gerade mit Power aus/ein gestartet -immer noch 10s

        Langsamer kann ich einstellen - aber unter 10 wird nicht gesendet

      • Tico
        Tico kommentierte
        Kommentar bearbeiten
        Jeder Modbus-TCP-Sensor benötigt eine endliche Zeit, um interagiert zu werden. Ein hypothetisches Beispiel: Wenn romildo 10 Sensoren hat, könnte dies gerade noch innerhalb der Grenze für 5-Sekunden-Aktualisierungen liegen. Wenn Bogenhaus 20 Sensoren hat, fragt der Miniserver nacheinander jeden Sensor mit der gleichen Rate ab, aber es dauert doppelt so lange, bis er fertig ist.

        Die Einstellung "Timeout" hat einen erheblichen Einfluss auf die Aktualisierungsrate der Sensoren. Hier ist ein Link, wenn Sie die Modbus-TCP-Rate optimal einstellen möchten - Optimising Modbus Polling

    • Bogenhaus
      LoxBus Spammer
      • 24.05.2020
      • 264

      #22
      Danke Tico, es lag tatsächlich am Timeout - auch wenn ich das Verhalten nciht nachvollziehen kann.

      Ich habe derzeit 5 Sensoren - bei allen ist 5s Abtastrate eingestellt.
      Timeout ursprünglich 1000ms
      Sensoren wurden alle 10s abgefragt

      Ich hab Tineout auf 500ms geändert - tatsächlich wurden Sensoren in 5s abgefragt.
      Dann das timeout im 100ms Ratser erhöht bis zu den ursprünglichen 1000ms - immer noch Abfrage im 5s Raster

      Egal - ich werde dies solle ich die ModBus Schnittstelle erweitern jedenfalls in Erinnerung behalten ;-)

      Danke nochmals

      Kommentar


      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Ich habe zurzeit ca. 30 Sensoren mit 5s Abtastrate mit einem Timeout von 300ms
        Der ModbusMonitor zeigt schon, dass da reger Verkehr herrscht.
        Dies nur zur Info.
        Auch einen Dank an @Tico
        "Liken" kann man Kommentare ja leider nicht
        Zuletzt geändert von romildo; 20.06.2023, 08:39.
    • Tico
      Lox Guru
      • 31.08.2016
      • 1035

      #23
      romildo - Das ist interessant mit 30 Sensoren bei 5 Sekunden Aktualisierungsrate.Ich hatte das Wiki mit der Erfahrung des Miniserver Gen 1 geschrieben, der wäre bei so vielen Sensoren im Eimer gewesen.
      Damals habe ich die Fronius-Kommunikation auf den "Push"-Dienst innerhalb des Wechselrichters übertragen (Fronius FTP to Node-Red to MQTT to Loxberry to Miniserver Virtual Input).
      Vielleicht werde ich Modbus jetzt mit einem Miniserver Gen2 als Gateway wieder aufgreifen.
      Zuletzt geändert von Tico; 20.06.2023, 14:04.
      Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

      Kommentar

      • romildo
        Lebende Foren Legende
        • 25.08.2015
        • 5144

        #24
        ...ja da geht schon was ab

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Gen24_MB_Monitor.png Ansichten: 0 Größe: 272,4 KB ID: 394674 Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Gen24_MB_Monitor40091.png Ansichten: 0 Größe: 245,5 KB ID: 394675

        Hier noch der Vergleich wie in Post 19 geschrieben.
        Die Kurven laufen absolut parallel, Für die unterschiedlichen Werte zwischen API und ModBus habe ich jedoch keine Erklärung
        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Gen24Vergleich_API_MB.png Ansichten: 0 Größe: 74,2 KB ID: 394677 Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Gen24Vergleich_API_MB_1.png
Ansichten: 1258
Größe: 82,4 KB
ID: 394683 Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Gen24Vergleich_API_MB_2.png
Ansichten: 1254
Größe: 97,6 KB
ID: 394684
        Zuletzt geändert von romildo; 20.06.2023, 17:43.
        lg Romildo

        Kommentar

        • Tico
          Lox Guru
          • 31.08.2016
          • 1035

          #25
          Ich sehe einen ungewöhnlichen Unterschied zwischen E_Total, wenn ich den folgenden Endpunkt aktualisiere (ich verwende ein anderes System im Fronius Symo Hybrid) -

          Code:
          http://Inverter_IP/solar_api/v1/GetPowerFlowRealtimeData.fcgi
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: E_Total.png Ansichten: 0 Größe: 21,4 KB ID: 394716

          Die E_Total (Inverters) hinkt der E_Total (Site) hinterher. Wenn der Endpunkt mehrfach aktualisiert wird, holt die E_Total (Inverters) manchmal auf und stimmt mit der E_Total (Site) überein.

          E_Total (Site) hat eine höhere Granularität als E_Total (Inverters), manchmal mit mehreren Dezimalstellen.

          Ich frage mich, welche E_Total Sie von der API verwenden? Ich würde mich auf den Modbus-Stream als maßgeblichen Wert verlassen. AlexAn schrieb auch etwas über eine Verschiebung in diesem Beitrag -

          Hallo, ich besitze einen Fronius Symo GEN24 Wechselrichter inkl. Fronius Smart Meter und möchte die Erzeugungswerte und den Netzbezug/-einspeisung über Modbus TCP/IP auslesen. Die Modbus Schnittstelle wurde von meinem Elektriker freigeschaltet und der Sunspec Model Type ist auf "int+SF" eingestellt. Ich lese folgende
          Zuletzt geändert von Tico; 21.06.2023, 00:25.
          Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

          Kommentar


          • romildo
            romildo kommentierte
            Kommentar bearbeiten
            Danke für die Info.
            Mein API-Wert "TOTAL_ENERGY" kam von "GetInverterRealtimeData.cgi".
            Die Info von AlexAn habe ich anders verstanden. Wenn der Scale-Faktor falsch wäre, müssten die Werte um Potenzen verschieden sein.
            Aber egal, ich verwende eh die Modbuswerte
        • Bogenhaus
          LoxBus Spammer
          • 24.05.2020
          • 264

          #26
          Tico
          weißt du über welches ModBus Register man die Fronius Fehlercodes auslesen kann ?

          Bin gerade dabei den Baustein EnergieMonitor zu eliminieren (gibt irgendwie keinen Sinn mehr wenn man den Energieflussmonitor auch nutzt).

          Ich hab alle Werte nun per Modus wie z.B. StVnd als Status statt Ausgang Sci.
          Nun suche ich was ich statt dem Ausgang Eci verwenden kann.

          Derzeit so ausgewertet
          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 31,7 KB ID: 394837

          Dank schon mal

          Kommentar

          • Tico
            Lox Guru
            • 31.08.2016
            • 1035

            #27
            Soviel ich weiß, gibt es kein Modbus-Register für Fehlercodes. Das nächstgelegene, das ich habe, ist der StVnd-Eintrag. Diese Liste für den Symo Hybrid ist möglicherweise nicht auf den Gen24 anwendbar.
            Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

            Kommentar


            • Bogenhaus
              Bogenhaus kommentierte
              Kommentar bearbeiten
              Danke dir,
              mindestens die Werte bis 8 passen - hab ich in Doku gefunden.
              Bei Status Fault wird auf Register Evt verwiesen , die gibt es ja - mal nachsehen was da ankommt
              letztlich ja auch nicht so wichtig das Loxone den Fehler genau anzeigt
          • Bogenhaus
            LoxBus Spammer
            • 24.05.2020
            • 264

            #28
            Hallo

            noch ergänzend die Rückmeldung von Fronius zu Status und Fehlercodes am SymoGen24 über Modbus

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

Name: image.png
Ansichten: 1174
Größe: 39,3 KB
ID: 394919​:

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

Name: image.png
Ansichten: 1133
Größe: 6,7 KB
ID: 394921​​
            Angehängte Dateien

            Kommentar

            • Bogenhaus
              LoxBus Spammer
              • 24.05.2020
              • 264

              #29
              Hi Tico

              funktioniert das mit den Werten über Modus wirklich fehlerfrei bei dir ?

              Ich denke ich habe grundsätzlich das System verstanden - auch dein Wiki dazu studiert und ähnlich umgesetzt.

              Allerdings habe ich bei den Leistungswerten sporadisch für einen Lesezyklus einfach Fehler
              Ich schreibe die gelesenen Rohwerte direkt per HTTP Ausgang in eine Influx DB . dazu der Screenshot der 3 aktiven DC Leistungswerte und dem Scale Faktor.
              Aktuell lese ich mit 10s Abfrage Intervall

              Wie du sehen kannst ist für einen Abfragezyklus der Wert DCW2 (Fronius Register 40305) um Faktor 10 größer - der Skale Factor unverändert - auch die anderen Werte fast unverändert.

              Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 136,2 KB ID: 395750
              Ich lese in Summe 24 Werte vom Modus, eine Lesezyklus der 24 Wert dauert aktuell ca. 4.8s , Timeout steht auf 1000ms
              Nachtrag : hab grad den Miniserver neu geladen, jetzt ist der Zyklus in 200ms durch ?! (so flott hatte ich es zuletzt eigentlich auch beobachtet)

              Ich gehe davon aus dass ich alle Werte auch empfange - sonst würde der HTTP Ausgang nicht getriggert werden

              um solche Fälle auszufiltern fehlt mir auch die Idee - bei den Leitungen wäre es mir ja noch irgendwie egal - aber wenn das bei den Zählerständen passiert sind die Loxone Energiezähler ja beleidigt was ich echt nicht brauchen kann


              Aktuell von heute morgen - um 06:16:43 machte DCW2 einen Sprung von 609 auf 5712. DCW1 blieb unverändert,
              erst um 6:16:53 (nächster Abfragezyklus) änderte sich auch DCW1 von 6530 auf 65019 und DCW_SF von -1 auf -2
              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1064
Größe: 57,7 KB
ID: 395767​​

              als das ganze wieder retour ging hat es gepasst
              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1063
Größe: 52,0 KB
ID: 395768

              Anmerkung - Grafana zeigt beim SF immer nur einen Punkt weil in dieser Auflösung kein anderer Datenpunkt vorkommt



              Danke für deine / eure Tips
              Angehängte Dateien
              Zuletzt geändert von Bogenhaus; 30.06.2023, 07:31.

              Kommentar

              • Bogenhaus
                LoxBus Spammer
                • 24.05.2020
                • 264

                #30
                Noch ergänzend
                aus dem Monitor ein aktuelles Screenshot (werden diesen heute dauernd laufen lassen um hoffentlich auch einen Fehlerfall im Monitor zu haben
                auffällig - das Timing hat sich wieder verändert von gestern 21 Uhr auf Heute ist eine Afragedurchlauf deutlich langsamer geworden -ohne jegliche Änderungen in der Config

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

Name: image.png
Ansichten: 1083
Größe: 149,7 KB
ID: 395771
                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1088
Größe: 153,0 KB
ID: 395772

                Timeouts finde ich im Debug Monitor keine aber dennoch eigenartiges - kommt unregelmäßig immer wieder mal SEQ_ERROR
                Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image.png
Ansichten: 1087
Größe: 69,3 KB
ID: 395773
                Angehängte Dateien

                Kommentar

                Lädt...