Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: 19001030: Modbus TCP Master Read

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

    So, LBS steht bereit in V0.1... hier

    Kommentar


      Zitat von saegefisch Beitrag anzeigen
      Mein LBS ist sicher/hoffentlich eine gute Ausgangsbasis für jedwede ModBus-Abfragen, aber definitiv für SMA ausgelegt hinsichtlich der Interpretation der gelesenen Daten, als auch des Eingangsparameters passend zur SMA-Struktur. AUch wenn ich ein Freund von "generisch" bin, erschien mir hier diese Lösung zweckdienlicher.

      Ich nehme mal an, das Fronius eine ähnliche Doku anbietet, wie SMA. Vergleichen und anpassen, wenn der LBS da ist. Ist alles gut im Code dokumentiert, was wo und wofür passiert. Zu SunSpec kann ich nichts sagen.
      Wäre toll, wenn noch jemand einen Fronius Wechselrichter hätte und dazu das LBS umschreiben könnte

      Kommentar


        kannst Doku zuliefern?
        * Also Input (Register + Format + Datentyp) für einen/Deinen WR.
        * Ausgabe, also die dazugehröigen Infos, die ich in der Hilfe auch notiert habe, Länge, Nachkommastellen,..., um damit die Logik anzupassen.

        Wenn Du das halbwegs mundgerecht aufbereitest, schau ich mal... Vielleicht ist ja auch vieles ähnlcih und es ergäbe mehr Sinn, nur den Input vorab in Excel von Fronius -> SMA umzusetzen. Dann wäre es doch gänzlich generisch...

        Also: Schau Dir mal die Beispiel-Input-Zeilen in der Hilfe an und suche mal bei Fronius das Gegenstück.

        -----
        Nachtrag: Hier scheint doch alles notwendige zu stehen:
        http://www.fronius.com/~/downloads/S...410%2C2049.pdf

        Zu den Datentypen steht was auf Seite 17.
        Und aus dieser Zeile auf Seite 30:
        40092 40093 2 R 0x03 W float32 W AC Power value

        würde ich mal den Aufruf mit meinem LBS zu Deinem Fronius WR an E9 mit dieser einen Zeile versuchen:
        40092;AC Power value;S32;FIX0;W;RO

        Vielleicht kommt schon was und im besten Fall sogar das richtige...

        Bitte gib' mir dann mal Rückmeldung. Wenn es am Ende nur eine etwas geänderte Eingangsstruktur und vielleicht etwas andere Zahlenformate/Datentypen sind...Am Ende könnte man noch einen EIngang E11 für den Hersteller ergänzen und vielleicht SMA, Fronius und andere damit abdecken. Denk' ich dann mal drüber nach, wenn wir die Unterschiede abschätzen können...
        Zuletzt geändert von saegefisch; 08.05.2018, 19:23. Grund: Nachtrag

        Kommentar


          Hi saegefisch,

          danke für Dein SMA LBS, habe es heute ausprobiert, leider kriege ich keine vernünftigen Werte mit meinem STL 8000TL-20 Wechselrichter.


          LBS.JPG

          Die Liste besteht im Moment aus einem Eintrag: 30775;Power;S32;FIX0;W;RO;;
          Ich habe auch andere Register probiert, leider sind die Werte immer falsch (und viel zu klein...)
          Mit einem Modbus Master Windows Programm kann ich die richtigen Werte lesen...

          Update:
          Hier Auszug aus dem Logfile (für Daily yield)
          EXE19001580 [v0.1]: SPT8000TL20 | 30535 | U32 | FIX0 | | [0,0,103,0] | HEX: 00670 | RAW: 1648 | Daily yield ==> 1648 | 1648Wh (81)
          Erstens anscheinend wir der Hex Wert falsch berechnet 0x0670 statt 0x6700
          Und dann ist der Low Byte 0 (wenn ich diesen Register aber mit dem Windows Programm auslese bekomme ich 0x674A)

          Grüße
          Thomas
          Zuletzt geändert von kobza; 10.05.2018, 22:58.

          Kommentar


            In meiner SMA ModBus-Doku findet sich keine STL-Serie... passt die Bezeichnung und hast Du einen Link zur ModBus-Doku des WR? Passt das Register zu Deinem WR?

            Passt die IP-Adresse?

            Schalte doch mal - geht auch im LiveView - auf LogLevel 8. Dann kann man genau sehen, was ausgelesen und wie es interpretiert wurde. Bei einem WR macht das um diese Zeit natürlich weniger Sinn, als bei eine SunnyIsland. Aber zumindest eine sicher Null sollte kommen. Bei mir kommt jetzt z.B. vom 7000er das an:
            LBS19001580 [v0.1]: WR-7000 | 30775 | S32 | FIX0 | | [0,0,0,0] | HEX: 0000 | RAW: 0 | Power ==> 0 | 0W

            Was liefert Deiner? Und vor allem, was liefert Deiner Morgen, wenn der WR produziert? Und am besten auch den Erwartungswert, damit ich eine Abweichung verstehen kann. Den Erwartungswert nach Möglichkeit nicht nur aus einem ModBus-Programm, sondern unbedingt zeitnah auch aus SMA-Quelle (Portal, App,...), damit wir von der Größenordnung keinen Geist jagen.

            Es sollte z.B. etwas wie dies kommen:
            S32 | FIX0 | | [0,0,3,200] | HEX: 003c8 | RAW: 968 | Power ==> 968 | 968W

            Kommentar


              Sorry Wechselrichter ist der STP 8000TL-20 ...
              Logview wie oben schon beobachtet Daily Yeld passt so 0x674A (gelesen mit Windows Modbus Master) -> 26442Wh (passt so auch im Sunny Portal)

              Wie oben geschrieben 2 Probleme: Low Byte ist 0x00 sollte aber 0x4A sein. Und mit 0x00 scheint die Umrechnung nicht zu klappen
              Code:
              EXE19001580 [v0.1]: SPT8000TL20 | 30535 | U32 | FIX0 | | [0,0,103,0] | HEX: 00670 | RAW: 1648 | Daily yield ==> 1648 | 1648Wh (81)

              Kommentar


                Hm, bin ein wenig ratlos - weil mein 7000 liefert mir für
                Code:
                30529    Total yield    U32    FIX0    Wh    RO
                wunderbar Daten. Daily Yield ist nach 0:00 halt leer...
                Eigentlich kann es nur noch an der verwendeten Include-PHP-Datei liegen - dazu gesitern ja unterschiedliche Versionen herum. Da es eine Weil eher ist, dass ich die auf meinem edomi ablegte, kann ich Dir gerade gar nicht mehr sagen, aus welcher Quelle ich die damals holte (andere LBS vermutlich, aber 19001030 wohl nicht, den dort scheint es jetzt eine andere zu sein). Auf jeden Fall liefert sie bei mir Daten. Ein Test wär's wert oder? Vielleicht legst Du Sie einfach mal neben Deiner ab und änderst kurz im LBS den Include-Pfad für einen Test.

                Habe gerade eine V0.2 hoch geladen
                * Analyse nun besser, weil nun schon mit LogLevel 7 die Werte kommen und erst mit 6 nicht mehr. Da bei LogLevel 8 der ganze ERROR-Krams vom Include das log flutet, ist das jetzt besser nutzbar. 8 ist nur noch zur Not...
                * Zudem zwei Bugs entfernt. (die man aber nur mit logLevel 8 sah...)
                * Im ZIP ist jetzt die von mir verwendete ModBus-Include-Datei enthalten (sie ist rund 39kB groß)
                Zuletzt geändert von saegefisch; 11.05.2018, 01:01.

                Kommentar


                  So, jetzt scheint die Sonne wieder...
                  Hiermit teste ich mal (mit V0.2)
                  Code:
                  30529    Total yield    U32    FIX0    Wh    RO
                  30535    Daily yield    U32    FIX0    Wh    RO
                  30775;Power;S32;FIX0;W;RO;;
                  und das kommt bei LogLevel 7 heraus:
                  Code:
                  EXE19001580 [v0.2]: WR-7000 | 30529 | U32 | FIX0 | 0 | [1,130,87,88] | HEX: 1825758 | RAW: 25319256 | Total yield ==> 25319256 | 25319256Wh (1643)
                  EXE19001580 [v0.2]: WR-7000 | 30535 | U32 | FIX0 | 0 | [0,0,7,243] | HEX: 007f3 | RAW: 2035 | Daily yield ==> 2035 | 2035Wh (1643)
                  EXE19001580 [v0.2]: WR-7000 | 30775 | S32 | FIX0 | | [0,0,7,148] | HEX: 00794 | RAW: 1940 | Power ==> 1940 | 1940W (1643)

                  TotalYield passt mit SunnyPortal in der Größe überein (zu meinem 7000er):
                  Geräteeigenschaften --> Zählerstand Gesamtertrag: 25.319,29 kWh (11.05.2018 09:05 Uhr)

                  Sieht also erst einmal korrekt aus. Bin gespannt, was sich bei Dir mit dem anderen ModBusMaster-Include ergibt...

                  Kommentar


                    Vielen Dank, jetzt klappt es wahrscheinlich lag es an dem ModBusMaster (damit ist das eine Problem behoben)

                    Code:
                     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                    [TR]
                    [TD]2018-05-11 10:23:42[/TD]
                     			[TD]549305[/TD]
                     			[TD]14468[/TD]
                     			[TD]7-info |7[/TD]
                     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,215] | HEX: 001dd7 | RAW: 7639 | Power ==> 7639 | 7639W (81)[/TD]
                     		[/TR]
                    [TR]
                    [TD]2018-05-11 10:23:52[/TD]
                     			[TD]625545[/TD]
                     			[TD]14468[/TD]
                     			[TD]7-info |7[/TD]
                     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,216] | HEX: 001dd8 | RAW: 7640 | Power ==> 7640 | 7640W (81)[/TD]
                     		[/TR]
                    [TR]
                    [TD]2018-05-11 10:24:02[/TD]
                     			[TD]708920[/TD]
                     			[TD]14468[/TD]
                     			[TD]7-info |7[/TD]
                     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,29,214] | HEX: 001dd6 | RAW: 7638 | Power ==> 7638 | 7638W (81)[/TD]
                     		[/TR]
                    [/TABLE]
                    Was ich nicht nicht verstanden habe wie kriege ich mehrere (verschiedene) Register

                    Code:
                    30775;Power;S32;FIX0;W;RO;;30953;Internal temperature;S32;TEMP;°C;RO;;
                    damit bekomme ich nur Power

                    Ein Problem gibt es noch sehe ich gerade
                    Code:
                     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                    [TR]
                    [TD]018-05-11 10:29:21[/TD]
                     			[TD]779345[/TD]
                     			[TD]14939[/TD]
                     			[TD]7-info |7[/TD]
                     			[TD]EXE19001580 [v0.2]: SPT8000TL20 | 30775 | S32 | FIX0 | | [0,0,27,9] | HEX: 001b9 | RAW: 441 | Power ==> 441 | 441W (81)[/TD]
                     		[/TR]
                    [/TABLE]
                    Wenn der Dez Wert nur ein Stellig ist ist die Umwandlung falsch
                    ist 0x01b9 sollte sein 0x1b09.




                    Gruß
                    Thomas


                    Kommentar


                      Das ist auf jeden Fall schon mal eine gute Nachricht, Danke!
                      In Der Hoffnung, dass Michael (@gulp2k) irgendwann Zeit findet, den Include-Teil schlank und schön selber zu bauen, wird sich das leidige Thema hoffentlich gänzlich auflösen.

                      Wegen der mehreren Werte...einfach mehrzeilig eingeben, also die drei Zeilen ob aus meiner #143 z.B. im LiveView in E9. Habe das allerdings bei mir über ein KO gelöst, die Werte aber letztlich genau so hinein kopiert. Dabei sind beide Formate (TAB oder ; ) erlaubt und auch Leerzeilen. Nur die Spaltenreihenfolge muss natürlich für alle gleich sein.

                      1.PNG

                      Zu deinem letzten Thema: Muss ich mir anschauen...

                      Nachtrag zu "mehrere Register": Tatsächlich ist es so manchmal hakelig. Werde noch ein Zeichen ermöglichen als Zeilenumbruch, damit man es auch einfach einzeilig eingeben kann...
                      Zuletzt geändert von saegefisch; 11.05.2018, 11:10. Grund: Nachtrag

                      Kommentar


                        Ich konnte das Problem beheben

                        Code:
                        30535 | U32 | FIX0 | | [0,0,185,4] | HEX: 0000b904 | RAW: 47364 | Daily yield ==> 47364 | 47364Wh
                        Jetzt werden auf die 1 Digit Zahlen mit einer führenden '0' umgewandelt.
                        Das Problem ist die dechex Funktion diese wandelt ohne die '0'

                        Hier meine Änderung in Deinem LBS (als Bsp. für U32)

                        Code:
                            
                        //foreach($recData AS $p) { $hex .= dechex($p); }
                          foreach($recData AS $p) { $hex .= sprintf('%02x', $p); }
                        Gruß
                        Thomas
                        Zuletzt geändert von kobza; 11.05.2018, 15:51.

                        Kommentar


                          Lieben Dank, Thomas!
                          Ich habe das mal in V0.3 eingebaut und meine Tests sahen damit gut aus (bei mir unverändert...), aber bei Dir und anderen wird es hoffentlich den gewünschten Fortschritt bringen. Vielleicht hatt eich mit meinen Regsitern und Werten bislang nur zufällig Glück... Auf jeden herzelichen Dank, ob ich auf diese Ursache/Lösung so schnell gekommen wäre, bezweifle ich mal...

                          In V03 kann man nun auch E9 einzeilig bewirtschaften, wenn man den Zeilenumbruch durch den |-Delimiter ersetzt (z.B. via String-Verbinder). Ist auch in der Hilfe mit einem Beispiel notiert.

                          --> V0.3 ist im DL-Bereich. Bitte mal prüfen und wenn Du positiv Rück meldest, hinterlasse ich auch zusätzlich im richtigen Thema eine "offizielle" Info über die neue Version V0.3

                          Kommentar


                            V0.3 läuft bei mir ohne Probleme (auch mit dem |-Delimiter), freue mich dass ich helfen konnte :-)
                            Und danke noch mal für den Baustein.

                            Kommentar


                              Zitat von saegefisch Beitrag anzeigen
                              kannst Doku zuliefern?
                              * Also Input (Register + Format + Datentyp) für einen/Deinen WR.
                              * Ausgabe, also die dazugehröigen Infos, die ich in der Hilfe auch notiert habe, Länge, Nachkommastellen,..., um damit die Logik anzupassen.

                              Wenn Du das halbwegs mundgerecht aufbereitest, schau ich mal... Vielleicht ist ja auch vieles ähnlcih und es ergäbe mehr Sinn, nur den Input vorab in Excel von Fronius -> SMA umzusetzen. Dann wäre es doch gänzlich generisch...

                              Also: Schau Dir mal die Beispiel-Input-Zeilen in der Hilfe an und suche mal bei Fronius das Gegenstück.

                              -----
                              Nachtrag: Hier scheint doch alles notwendige zu stehen:
                              http://www.fronius.com/~/downloads/S...410%2C2049.pdf

                              Zu den Datentypen steht was auf Seite 17.
                              Und aus dieser Zeile auf Seite 30:
                              40092 40093 2 R 0x03 W float32 W AC Power value

                              würde ich mal den Aufruf mit meinem LBS zu Deinem Fronius WR an E9 mit dieser einen Zeile versuchen:
                              40092;AC Power value;S32;FIX0;W;RO

                              Vielleicht kommt schon was und im besten Fall sogar das richtige...

                              Bitte gib' mir dann mal Rückmeldung. Wenn es am Ende nur eine etwas geänderte Eingangsstruktur und vielleicht etwas andere Zahlenformate/Datentypen sind...Am Ende könnte man noch einen EIngang E11 für den Hersteller ergänzen und vielleicht SMA, Fronius und andere damit abdecken. Denk' ich dann mal drüber nach, wenn wir die Unterschiede abschätzen können...
                              hab den Wechselrichter noch nicht montiert und fürs Edomi dauerds auch noch ein bisschen... wir müssen in einigen Monaten weiter reden

                              Kommentar


                                Zitat von uzi10 Beitrag anzeigen
                                wir müssen in einigen Monaten weiter reden
                                ..alles klar...hier werde hier sein...

                                Zitat von kobza Beitrag anzeigen
                                V0.3 läuft bei mir ohne Probleme (auch mit dem |-Delimiter), freue mich dass ich helfen konnte :-)
                                Hey Thomas, das freut mich. Lass' uns beide morgen noch mal schauen, wenn die Geräte wieder messbare Energie abwerfen und dann am besten mal Register von jedem Typ. Wenn Das gut aussieht, dann dürfte V0.3 erst einmal passen...

                                Viele Grüße,
                                Carsten

                                Kommentar

                                Lädt...
                                X