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

    Zitat von 1retro Beitrag anzeigen
    kommt immer wieder die Fehlermeldung "System.Io.Io..."
    Hier wäre natürlich die gesamte Fehlermeldung interessant.

    Zitat von 1retro Beitrag anzeigen
    Derzeit frage ich 6 Werte ab
    Hier liegt wohl auch das Problem: Mein Baustein verwendet den Scheduler und startet den Timer in der Startup() Methode. Ich gehe davon aus, dass Startup() aller Bausteine sehr zeitnahe aufgerufen werden. Daher haben wir auch mehr oder Weniger zeitnah immer 6 Verbindungen gleichzeitig. Das wird der Wechselrichter wohl nicht vertragen.

    Anbei findest du eine neue Baustein Version: Change hier ist ein random-delay vor dem ersten Modbus request. Dieser ist irgendwo zwischen 0-20 Sekunden. Das hat natürlich zur Folge, dass die gelesen Werte doch einige Sekunden aus einander liegen können.

    Beides (die 700ms sleep als auch der random delay) dient hier eher als proof-of-concept ob das Problem behoben ist. Final sollte man das anders lösen ...

    Gib bescheid, ob es damit besser wird.

    vG Alram
    Angehängte Dateien

    Kommentar


      Zitat von alramlechner Beitrag anzeigen
      Hier wäre natürlich die gesamte Fehlermeldung interessant.


      Hier liegt wohl auch das Problem: Mein Baustein verwendet den Scheduler und startet den Timer in der Startup() Methode. Ich gehe davon aus, dass Startup() aller Bausteine sehr zeitnahe aufgerufen werden. Daher haben wir auch mehr oder Weniger zeitnah immer 6 Verbindungen gleichzeitig. Das wird der Wechselrichter wohl nicht vertragen.

      Anbei findest du eine neue Baustein Version: Change hier ist ein random-delay vor dem ersten Modbus request. Dieser ist irgendwo zwischen 0-20 Sekunden. Das hat natürlich zur Folge, dass die gelesen Werte doch einige Sekunden aus einander liegen können.

      Beides (die 700ms sleep als auch der random delay) dient hier eher als proof-of-concept ob das Problem behoben ist. Final sollte man das anders lösen ...

      Gib bescheid, ob es damit besser wird.

      vG Alram


      Hallo,
      ich bin genau wie 1retro auch gerade am gleichen Thema. Habe gerade deinen V15 Baustein getestet. Hier kommt folgende Meldung, leider ohne Wert.:

      image.png
      Gruß image.png

      Kommentar


        Es hat sich was getan, ich habe die Simulation weiter laufen lassen, es kamen dann Werte.

        Simulation starten -> nach 30sek. kommt der Wert.
        30sek. später -> die Fehlermeldung
        30sek. später wieder der Wert, Fehlermeldung ist weg.
        Dann ca. 2min später kommt wieder der Fehler.
        Dann ca. 1min später ist der Fehler wieder weg

        So läuft es zur Zeit!

        Fehler:

        image.png​Ich hoffe das hilft dir!
        Zuletzt geändert von Daniel0506; 06.02.2023, 20:26.

        Kommentar


          Hallo Alram,

          habe auch gerade den neuen Baustein getestet und bekomme die gleichen Ergebnisse wie Daniel. Es kommen Daten, manchmal mit Fehlermeldung, manchmal ohne. Manchmal updaten sich die Werte relativ schnell, manchmal dauert es länger. Eine Systematik lässt sich nicht erkennen. Ich bin schon einmal echt froh, und danke noch einmal für den Baustein, dass ich überhaupt Daten im X1 habe. Wäre toll, wenn man das noch irgendwie flüssiger gestalten könnte. Kann aber vermutlich nur wenig dazu beitragen, außer testen. SG Peter

          Kommentar


            hi,

            Wenn es mit den aktuellen Änderungen nicht stabil läuft, wird es wohl nicht einfach werden. Vermutlich verträgt der Wechselrichter die gleichzeiten Verbindungen nicht recht gut. Da der Baustein generisch gehalten ist und daher für jedes Register 1x im X1 existiert, wird es aber kaum anders möglich sein, als über mehrere Verbindungen zum Wechselrichter.
            Alternativen die mir einfallen:
            a) den Baustein mit einer Liste von Registern ausstatten.
            b) einen auf den Wechselrichter abgestimmten Baustein erstellen.

            Lösung a) mach ich nicht mit. Mit dynamischen Eingängen (bei denen jeweils mehrere Parameter zusammenspielen und ebenfalls von der Anzahl her dynamisch sein müssen) hab ich im X1 nur schlechte Erfahrungen gemacht. Da lass ich die Finger davon.
            Lösung b) wäre für mich OK. da müsstet ihr mal eine Liste von registern zusammenstellen, die ihr so wollt. Also eine auflistung von:
            - register nummer (dzt. in verwendung beim generischen baustein)
            - anzahl words/datentyp/... (ebenfalls einstellung vom aktuellen baustein)
            - inhalt (=name des ausgangs)
            dann würde ich mal einen Baustein zusammenschreiben. Änderungen können dann gerne auf github contributed werden.

            Wenn wer Lust hat, dann bitte bei mir melden.

            vG Alram

            Kommentar


              Zitat von alramlechner Beitrag anzeigen
              hi,

              Wenn es mit den aktuellen Änderungen nicht stabil läuft, wird es wohl nicht einfach werden. Vermutlich verträgt der Wechselrichter die gleichzeiten Verbindungen nicht recht gut. Da der Baustein generisch gehalten ist und daher für jedes Register 1x im X1 existiert, wird es aber kaum anders möglich sein, als über mehrere Verbindungen zum Wechselrichter.
              Alternativen die mir einfallen:
              a) den Baustein mit einer Liste von Registern ausstatten.
              b) einen auf den Wechselrichter abgestimmten Baustein erstellen.

              Lösung a) mach ich nicht mit. Mit dynamischen Eingängen (bei denen jeweils mehrere Parameter zusammenspielen und ebenfalls von der Anzahl her dynamisch sein müssen) hab ich im X1 nur schlechte Erfahrungen gemacht. Da lass ich die Finger davon.
              Lösung b) wäre für mich OK. da müsstet ihr mal eine Liste von registern zusammenstellen, die ihr so wollt. Also eine auflistung von:
              - register nummer (dzt. in verwendung beim generischen baustein)
              - anzahl words/datentyp/... (ebenfalls einstellung vom aktuellen baustein)
              - inhalt (=name des ausgangs)
              dann würde ich mal einen Baustein zusammenschreiben. Änderungen können dann gerne auf github contributed werden.

              Wenn wer Lust hat, dann bitte bei mir melden.

              vG Alram


              Hallo zusammen,

              ich habe die letzte Version deines Bausteins nun seit einer Woche am Laufen und es funktioniert problemlos. Die Werte kommen stabil an und sind auch immer Plausibel.
              Klar kommt die Fehlermeldung am Baustein im LogikEditor aber dass bekommt man ja im Alltag nicht mit.
              Daher bin ich mit dem aktuellen Stand mehr als zufrieden.

              Seht ihr Probleme wenn man das einfach so weiter laufen lässt?

              An dieser Stelle vielen Dank für den Baustein!

              Danke & Gruß
              Daniel

              Kommentar


                Hi all,

                prinzipiell stimmt das auch, dass die Werte kommen, zwar immer wieder zu komplett unterschiedlichen Zeiten und halt mit der Fehlermeldung. Also wie ich schon öfters geschrieben habe, ist das auch "ok" und man könnte es so lassen...

                @Alram: Kennst du vielleicht diese Hardware? KNX-Schnittstelle für Huawei Wechselrichter – ELAUSYS
                Siehst du mit deinem Baustein ein theoretisches Problem, wenn man genau so viele Werte abfragt (ca. 30 Stück), wie die Hardware von Elausys? Ich habe bei denen mal nachgefragt bezüglich dem Intervall der Abfragen. Dieses liegt bei 60 Sekunden.

                Wie siehst du das?
                SG Peter

                Kommentar


                  PS: Könnte mir einer von euch bitte noch verraten, wie ich aus einem 32bit Integer Register eine Dezimalzahl bekomme? Gibt es dafür einen Baustein? Zb. die Leistung des Akkus ist ein I32, gerade jetzt aktuell -43122689. Wie rechne ich das um? Danke, SG

                  Kommentar


                    Zitat von 1retro Beitrag anzeigen
                    Kennst du vielleicht diese Hardware?
                    leider nein

                    Zitat von 1retro Beitrag anzeigen
                    Siehst du mit deinem Baustein ein theoretisches Problem, wenn man genau so viele Werte abfragt (ca. 30 Stück), wie die Hardware von Elausys?
                    Vermutlich wird das nicht (optimal) funktioneren: jeder Baustein macht eine eigene TCP Verbindung auf. Packt man das hingegen in einen Baustein, können alle Modbus Register in einem Lesevorgang (eine TCP Verbindung, höchstwahrscheinlich ein Read Befehl) ausgelesen werden. Und genau dieser Unterschied macht bei schwachbrüstigen oder nicht auf stabilität/performance getrimmten embedded systemen mitunter einen gewaltigen Unterschied. Obige Hardware kann das natürlich auch in einer Operation machen.

                    Das Angebot gemeinsam einen Baustein zu entwickeln steht noch - so viel Aufwand kann das nicht sein. aber es muss sich (zumindest) einer für ausführliches testen opfern - ich hab einen anderen Wechselrichter und der ist sauber implementiert

                    Kommentar


                      Zitat von 1retro Beitrag anzeigen
                      PS: Könnte mir einer von euch bitte noch verraten, wie ich aus einem 32bit Integer Register eine Dezimalzahl bekomme? Gibt es dafür einen Baustein? Zb. die Leistung des Akkus ist ein I32, gerade jetzt aktuell -43122689. Wie rechne ich das um? Danke, SG
                      Welcher Baustein mit welchen Einstellungen ist in Verwendung? was sagt Datenblatt zum entsprechenden Register? alles andere wird Kaffesud-lesen

                      Kommentar


                        Hallo,
                        zb. dieses Register:
                        image.png​​
                        Angehängte Dateien

                        Kommentar


                          naja - wegen einem Register braucht man keinen eigenen Baustein machen

                          was ich brauche ist eine Liste der interessanten Register (idR. haben Wechselrichter eine Unmenge an Register; interessant sind aber eine hand voll) + die Einstellungen von meinem Modbus Baustein, wie diese ausgelesen werden. Sonst brauchen wir zig iterationen ....
                          vG Alram

                          Kommentar



                            Das hast du falsch verstanden, oder ich einfach schlecht gemacht. Mit dem einen Register meinte ich als Beispiel das Thema mit dem Integer 32 bit, wo ich das Ergebnis nicht deuten kann. Zb wirft mir das Register die Zahl -43122689 aus. Das soll laut Registerbeschreibung eine Leistung in Watt sein, siehe oben.

                            Bezüglich dem Baustein und dem zusammenstellen einer Liste kümmere ich mich. Gib mir bitte ein bisschen, damit ich die entsprechenden Register raus suche.

                            Sg Peter

                            Kommentar


                              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?

                              Kommentar


                                ... oder es ist ein FLießkommazahl ...

                                Kommentar

                                Lädt...
                                X