Ankündigung

Einklappen
Keine Ankündigung bisher.

Gira X1 und Modbus TCP mit Logikbaustein

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    INT32 sagt der Auszug oben....

    Kommentar


      Hallo,
      also bei dem Int32 komme ich nicht weiter. Hier mal der Link zu den Registern, falls es wen interessiert.
      https://www.photovoltaikforum.com/co...finitions-pdf/

      Ich frage mehrere Int32 Register ab, bei allen bekomme ich entweder eine 8 oder 9 stellige Zahl. Zb aktuell der Strom auf Phase A: 59834368 ; das ist das Register 32072. Oder Spannung Phase A vom SmartMeter = 151257088 mit Register 37101.

      @Daniel: Kannst du bitte mal bei dir ein Int32 Register abfragen? Kommst du mit den Werten klar?

      sG

      Kommentar


        Zitat von alramlechner Beitrag anzeigen
        ah ... ok. sorry - hab ich in der tat falsch verstanden

        wegen der -43122689: das ist in der tat etwas eigenartig. nach dem es um 32bit register handelt, könnte byte order eine rolle spielen. aber auch wenn ich umdrehe, ergibt das nicht mehr sinn. eine idee wäre noch, die register davor/danach zu prüfen. vielleicht liegt hier ein off-by-one fehler vor.
        ein anderer modbus client gibt korrekte werte aus?
        Hi Alram, das war noch ein guter Hinweis. Ein Register danach bringt bei dem Programm Modbus Poll den richtigen Wert. ZB Register 37001 ist die Leistung aus dem Akku laut Anleitung. 37002 bringt den richtigen Wert in Modbus Poll! Aber leider nicht im X1.

        Kommentar


          Hallo, so, es war eine schwere Geburt, aber nun läuft es.

          Man muss schon die erste Registeradresse nehmen, also in meinem Fall zb. die 37001, ABER im Baustein muss bei "Register Reihenfolge" auf Big-Endian umgestellt werden.

          Werde das nun alles mal so durchtesten und @Alram: Ich melde mich bei dir wegen den Registern!
          sg

          Kommentar


            Hallo Alram,

            Danke für den Baustein zum Abfragen des Huawei Wechselrichters. Super.
            Du hast angeboten mehrere Register gleichzeitig auszulesen.

            Folgende Register würden mich stark interessieren:
            • Leistung PV-Anlage auf dem Dach in kW: 32064
            • Leistung aus dem Kraftwerk (egal ob PV oder Batterie) die ans Haus abgegeben wird in kW: 32080
            • Leistung ans Netzt abgegeben in kW (<0 aus Netz beziehen; >0 ans Netz abgeben): 37113
            • Batterieladung in kW: 37001
            • Heutiger Energieertrag in kWh: 32114
            • Gesamtenergieertrag in kWh: 32106
            • Temperatur Wechselrichter in C°: 32087
            • String 1 Spannung in V: 32016
            • String 1 Strom in A: 32017
            • String 2 Spannung in V: 32018
            • String 2 Strom in A: 32019
            • Summe Netztbezug in kWh: 37121
            • Summe Netzeinspeisung in kWh: 37119
            • Batterieladung in %: 37004
            Bis auf die Batterieladung in Prozent konnte ich alle Werte mit deinem Baustein abfragen und mit den Angaben der Fusion Solar Applikation abgleichen und bestätigen.

            Sag wenn ich ein angepasstest Modul testen darf.

            Viele Grüße,
            Alex
            Zuletzt geändert von Alzi; 16.03.2023, 07:14.

            Kommentar


              Hallo Alex,

              Ich lese fast die gleichen Werte wie du aus, auch den Akkustand. Ich kann am Abend schnell nachschauen, welche Parameter ich da gesetzt habe.
              Dann schreibe ich auch noch zwei, drei Register dazu in der Liste, die ich noch benötigen würde

              Lg Peter

              Kommentar


                Hallo,

                @Alex: Bezüglich Akkustand, Register 37004 passt, Read Holding Register, 16 bit integer, little endian. Dann den Wert durch 10 dividieren und du bist dabei

                @Alram: Zu den oben erwähnten Registern wären für mich noch folgende interessant: 32078 peak active power day, 32082 reactive power, 37000 Akku Status, 37015 Akku Tagesenergie geladen, 37017 Akku Tagesenergie entladen, 37022 Akku Temperatur

                LG
                Peter

                Kommentar


                  hi,
                  hatte heute abend grad zeit und lust einen baustein zu schreiben.
                  aber: ihr habt mir die datentypen verschwiegen. bitte schaut mal auf folgenden code:
                  https://github.com/alramlechner/Comm...Reader.cs#L242
                  und prüft die datentypen (ist wichtig auch wegen der registerlänge).

                  gerne könnte ihr auch die Bezeichnungen (sichtbar im GPA) prüfen:
                  https://github.com/alramlechner/Comm...Reader.cs#L124

                  sobald das korrigiert ist, kann ich den baustein bauen. vorher wäre es wohl ein glückspiel.

                  was habt ihr beim generischen baustein eingestellt?
                  device id 1 ist korrekt?
                  alle regsiter mit "read holding register" korrekt?
                  überall auch little endian?

                  vG Alram

                  Kommentar


                    Hallo zusammen,

                    ich hätte 2 offene Fragen. Vielleicht kann mir einer einen Tip geben.

                    1.) Ich lese die Außentemperatur der Wärmepumpe aus. Funktioniert super. Leider bekomme ich keine normale Anzeige sobald die Außentemperatur unter 0 fällt?

                    2.) ich lese bei mehreren Adressen die erzeugten KWH aus. Funktioniert super bis auf einen Kanal.. Hier sind die größten Zahlen vorhanden.. Kann es sein dass der Baustein bei der Zahlenlänge begrenzt ist..?

                    Danke Gruß

                    Kommentar


                      Zitat von SIMO Beitrag anzeigen
                      Leider bekomme ich keine normale Anzeige sobald die Außentemperatur unter 0 fällt?
                      vmtl. Datentyp falsch: unsigned int (uint) eingestellt, es handelt sich aber um signed (int).

                      Zitat von SIMO Beitrag anzeigen
                      Funktioniert super bis auf einen Kanal.. Hier sind die größten Zahlen vorhanden.
                      der baustein hat einen debug ausgang, der im GPA mehr details liefert. die wären hilfreich. meine glaskugel sagt: es handelt sich um 32bit register du liest aber nur ein ein modbus register (=16bit) aus (parameter: "anzahl register" oder typ auf UINT32 statt UINT16 - weiss ich gerade nicht auswendig). damit kommt nix brauchbares raus. ist die erwartete zahl grösser 32767 oder 65535 (je nach signed/unsigned), dann ist es ziemlich sicher so.

                      sonst kann nur helfen, in dem du herzeigst
                      - welche config du im GPA am baustein hast
                      - den entsprechenden auszug aus dem datenblatt/modbus beschreibung vom hersteller

                      vG Alram
                      Zuletzt geändert von alramlechner; 17.03.2023, 09:27.

                      Kommentar


                        Hi,

                        zu Punkt 2. Ein Beispiel bei dem der Wert richtig kommt Register 1575 hier kommt genau das an was auch am Regler hinterlegt ist. 51767 entspricht 5176,7 passt. Bei Register 1577 kommt 31938 an und sollte 29407,9. das sind alles 32bit Register.
                        Hab noch die Version 0.0.11 drauf.. ?

                        Gruß
                        You do not have permission to view this gallery.
                        This gallery has 3 photos.

                        Kommentar


                          Zitat von SIMO Beitrag anzeigen
                          Bei Register 1577 kommt 31938 an und sollte 29407,9. das sind alles 32bit Register
                          richtig - es sind 32 bit register.
                          da ein modbus register aber immer 16bit breit ist, musst du zwei lesen. "Anzahl Register" steht aber auf 1. also liest du nur die Hälfte aus ... trag eine 2 ein. wenn ergebnis nicht plausibel, dann stell noch die byte order um (big endian/little endian).

                          BTW: stell das für alle 32 bit register um - sobald der wert in diesen die 65535 überschreitet (wie beim 1577), hast du das gleiche problem.

                          vG
                          Zuletzt geändert von alramlechner; 17.03.2023, 15:24.

                          Kommentar


                            Zitat von alramlechner Beitrag anzeigen
                            hi,
                            hatte heute abend grad zeit und lust einen baustein zu schreiben.
                            aber: ihr habt mir die datentypen verschwiegen. bitte schaut mal auf folgenden code:
                            https://github.com/alramlechner/Comm...Reader.cs#L242
                            und prüft die datentypen (ist wichtig auch wegen der registerlänge).

                            gerne könnte ihr auch die Bezeichnungen (sichtbar im GPA) prüfen:
                            https://github.com/alramlechner/Comm...Reader.cs#L124

                            sobald das korrigiert ist, kann ich den baustein bauen. vorher wäre es wohl ein glückspiel.

                            was habt ihr beim generischen baustein eingestellt?
                            device id 1 ist korrekt?
                            alle regsiter mit "read holding register" korrekt?
                            überall auch little endian?

                            vG Alram


                            Hallo Alram,

                            Danke! Ich habe aus gituhb die Liste genommen und ergänzt. Was in der Huawei Dokumentation steht, habe ich unter „Doku“ aufgeführt. „Eingestellt“ bedeutet, was ich in deinem Logikbaustein eingestellt habe und für mich funktioniert. Wenn dahinter Division 10 steht, muss das Ergebnis noch durch zehn geteilt werden. Bei mir ist fast alles auf big-endian eingestellt wobei ich gestehen muss den Unterschied nicht zu kennen und daher auch nichts anderes probiert zu habe. So wie unter „Eingestellt“ gelistet geht es bei mir. Device ID ist immer 1. Alle mit read holdig register.

                            • currentPVPower, 32064 | Doku: INT32 Signed | Eingestellt: big-endian, INT32
                            • currentACPower, 32080 | Doku: INT32 Signed | Eingestellt: big-endian, INT32
                            • currentGridPower, 37113 | Doku: INT32 Signed | Eingestellt: big-endian, INT32
                            • currentBatteryPower, 37001 | Doku: INT32 Signed | Eingestellt: big-endian, INT32
                            • todayPVEnergy, 32114 | Doku: INT32 Unsigned | Eingestellt: big-endian, INT32, Division by 100
                            • totalPVEnergy, 32106 | Doku: INT32 Unsigned | Eingestellt: big-endian, INT32, Division by 100
                            • inverterTemperature,32087 | Doku: INT16 Signed | big-endian, INT16 Signed, Division by 10
                            • mppt1Voltage, 32016 | Doku: INT16 Signed | Eingestellt: big-endian, INT16 Signed, Division by 10
                            • mppt1Current, 32017 | Doku: INT16 Signed | Eingestellt: big-endian, INT16 Signed, Division by 100
                            • mppt2Voltage, 32018 | Doku: INT16 Signed | Eingestellt: big-endian, INT16 Signed, Division by 10
                            • mppt2Current, 32019 | Doku: INT16 Signed | Eingestellt: big-endian, INT16 Signed, Division by 100
                            • totalGridImportedEnergy, 37121 | Doku: INT32 Signed | Eingestellt: big-endian, INT32, Division by 100
                            • totalGridExportedEnergy, 37119 | Doku: INT32 Signed | Eingestellt: big-endian, INT32, Division by 100
                            • currentBatterySOC, 37004 | Doku: INT16 Unsigned | Eingestellt: little-endian, INT16, Division by 10
                            • todaysPeakPVPower.Value, 32078 | Doku: INT32 Signed
                            • currentReactivePower, 32082 | Doku: INT32 Signed
                            • currentBatteryStatus, 37000 | Doku: INT16 Unsigned
                            • todayBatteryChargedEnergy, 37015 | Doku: INT32 Unsigned
                            • todayBatteryDischargedEnergy, 37017 | Doku: INT32 Unsigned
                            • batteryTemperature, 37022 | Doku: INT16 Signed

                            Vielen Dank,
                            Alex

                            Kommentar


                              Hallo,
                              Ich würde die Divisionen nicht direkt in der Abfrage mitintegrieren, sondern nachher per Hand im Logikblatt mittels Divisionsbaustein ergänzen. Hätte den Vorteil, dass es jeder individuell machen kann wie er möchte. Einer möchte zb die Leistung in Watt, der andere in Kilowatt. Wie seht ihr das? Sg Peter

                              Kommentar


                                Zitat von 1retro Beitrag anzeigen
                                Einer möchte zb die Leistung in Watt, der andere in Kilowatt.
                                so eine logik gehört schon in den Baustein. Es geht idR. nicht darum, W in KW umzurechnen. sondern um die darstellung von dezimalzahlen:
                                die temperatur 31,5°C wird bspw. durch die zahl 315 im Register dargestellt. diese muss durch 10 dividiert werden damit sie sinn ergibt. das ist einfach dem umstand geschuldet, dass der INT datentyp (Ganzzahl) keine dezimalzahl darstellen kann. um nicht auf die relativ rechenintensiven FLOAT/DOUBLE varianten umsteigen zu müssen, arbeitet man oft mit solchen faktoren.

                                Alzi: danke - schaut gut aus. hab es einmal eingepflegt. erste Version findest du anbei. bitte um feedback. github wird gleich aktualisiert ...

                                btw: es wäre sehr ungewöhnlich, wenn die inverter temperatur und battery temperatur unteschiedlich angegeben wären. also einmal in zentel grad, einmal in grad. hab daher div/10 zur battery temp auch eingebaut. bei den unteren registern fehlt mitunter noch etwas eine entsprechende anpassung.

                                leider hab ich auch feststellen müssen, dass ich im baustein gar kein UINT32 eingebaut habe ... daher sind sind die aktuell auch INT32. das wird aber erst zum problem, wenn
                                der wert grösser als 2.147.483.647 wird ...

                                jetzt geht's erstmal auszutesten, ob der baustein überhaupt (stabil) funktioniert ...

                                vG Ali
                                Angehängte Dateien

                                Kommentar

                                Lädt...
                                X