Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: 19001030: Modbus TCP Master Read

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

    Läuft der LBS unter Edomi 2 Centos 7 und neuer PHP Version?

    Ich habe es eben versucht und eine Fehlermeldung im Log bekommen: "Methods with the same name as their class will not be constructors in a future version, ..." Hat das schonmal jemand gehabt und vielleicht sogar behoben?

    Kommentar


      Hi

      Du musst den Funktionsnamen in /usr/local/edomi/main/include/php/helio/ModbusMaster.php (Zeile 62) ändern:

      Code:
      function __construct($host, $protocol)
      Kind regards,
      Yves

      Kommentar


        Besten Dank, probier ich morgen direkt mal


        Edit: Der Baustein läuft nun, danke dafür

        Aber irgendwie stelle ich mich gerade zu glatt an, ich versuche meinen SMA Wechselrichter auszulesen. Wenn ich mittels Modbusreader Tool die Adresse 30775 auslesen, bekomme ich die aktuelle PV Leistung ausgegeben. Versuche ich das ganze über den Baustein, bekomme ich zwar auch Werte zurück, die haben aber irgendwie nichts mit der aktuellen PV Leistung zu tun. Habe ich den baustein falsch angetriggert oder muss der Wert noch gewandelt werden?

        Anbei mal ein Screenshot vom Tool und vom Baustein. Hat jemand nen Tipp auf Lager, was ich hier noch Einstellen könnte?

        modbus sma.jpg

        Edit2: Habe hier irgendwo aufgeschnappt, das es manchmal sinn macht große zahlen durch 65553 zu teilen, dann scheinen die Werte sogar zu passen
        Angehängte Dateien
        Zuletzt geändert von BootCamper; 28.01.2020, 14:49.

        Kommentar


          Hallo BootCamper

          Arbeitest du noch an deinem Modbus?
          Ich denke du hast ein Problem mit der Start-Adresse und länge von dem Register.
          Sieht so aus als ob dein Ergebnis an A1 mit dem Nullen aus benachbarten Register aufgeblasen wurde.
          Versuch doch mal mit 30775 + 1 oder - 1. Hat bei mir funktioniert.
          Vielleicht muss du nur die Länge des Register ändern von 32 Bit auf 16 Bit.


          Auf dem Bild in deinem Anhang ist der Wert vom A1
          Dezimal: 156.303.360‬
          Binär: 0000 1001 0101 0001 0000 0000 0000 0000 (32 Bit, Big-Endian)

          Wenn du jetzt die sechszehn Nullen noch vorne verschiebst, dann werden sie nicht mehr mitgerechnet und du erhälst

          Binär: 0000 0000 0000 0000 0000 1001 0101 0001
          Dezimal: 2.385‬
          Das vermutlich deinem gewünschtem Ergebnis nahe kommt?

          Weitere Möglichkeit ist ein Fehler bei Lese-Folge der Bytes (Big-Endian/ Little-Endian )
          Was passiert wenn der Wert V4 wieder 1 ist?
          Bin auch kein modbus Profi, meine ganze Weisheiten habe ich aus: https://de.wikipedia.org/wiki/Byte-Reihenfolge
          Wie ich es verstehe wird so gelesen
          Big-Endian:
          AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
          Little-Endian:
          DDDDDDDD CCCCCCCC BBBBBBBB AAAAAAAA
          Mixed-Endiann:
          BBBBBBBB AAAAAAAA DDDDDDDD CCCCCCCC

          Die Buchstaben sollen Binärzeichen darstellen, also Nullen und Einsen.
          Hier als Buchstaben, um die lese-folge der Bytes zu veranschaulichen.



          Ich habe ein Problem mit der Aktualität der Werte.
          Der erste Wert kommt unverfälscht, aber mit kleiner Verzögerung.
          Der zweite erst nach einiger Zeit, weitere habe ich noch nie beobachtet.
          Mit dem Tool Modbus Poll sind alle Adressen sofort da.
          Der Modbus Slave ist ein Web IO von W&T

          W&T.PNG
          Kann ich irgendwie die Auslesezeit aus dem Slave verlangsamen?
          Wenn ich die gewünschten Register mit einzelnen LBS nach einander (in 20 ms Abstand) auslese, erhalte ich korrekte Antwort.
          Bei mehreren Registern im einem LBS, funktioniert nur die erste Adresse recht gut, die zweite nur sporadisch, die dritte nach Stunden und vermutlich so weiter.
          Zuletzt geändert von Gregor No; 22.03.2020, 20:33.

          Kommentar


            Hallo zusammen,
            hat das wer sauber zum laufen gebracht?

            Falls ja, könntet Ihr mir bitte sagen mit was und wie?

            Ich überlege mir eine SMA Speedwire Webconnect Schnittstelle für meinen Wechselrichter zu holen und will diese dann mit dem HomeServer auslesen.

            Wie stell ich das am besten an?

            Kommentar


              Hallo zusammen,

              ich bräuchte mal eure Einschätzung zum Leistungsbedarf des Modbus LBS. Ich möchte mit dem LBS diverse Werte aus meinem Huawei Wechselrichter auslesen und habe dafür aktuell 4 LBS hintereinander geschaltet um 20 Werte auszulesen. Mein Edomi läuft auf einem Futro S900, auf dem sonst auch nichts anderes installiert ist.
              Der erste LBS wird alle 5 Sekunden abgefragt und die anderen laufen dann nacheinander durch.
              Die CPU Auslastung springt bei jeder Abfrage auf ca. 80% hoch. Da ich noch in den Anfängen stecke, laufen auch sonst keine aufwändigen Logiken.
              Ist das so normal und ich sollte mir Gedanken um eine andere Hardware machen oder habe ich irgendwo etwas übersehen?

              Screenshot_20200716-090945_Chrome.jpg

              Vielen Dank!
              Gruß Christian

              Kommentar


                80% find ich jetzt schon viel. Ich frage mich, wofür der LBS die Rechenleistung braucht, wenn er ja eigentlich nur auf eine Antwort wartet.
                Du solltest außerdem schauen, wie lange die Anfragen insgesamt dauern (vom Start der Ersten, bis zum Abschluss der letzten). Daraus kann man abschätzen, ob der 5 Sekunden Zyklus zu kurz ist.

                Kommentar


                  Danke für die Tips!
                  Der Durchlauf der 4 LBS dauert insgesamt ca. 1,5 Sekunden (wenn ich mir einfach ansehe wann die Kopfzeilen der einzelnen LBS orange blinken). Der letzte in der Kaskade ist damit deutlich vor der Loopzeit fertig.
                  Was mir noch aufgefallen ist, ist dass nach jedem Trigger die Logik Queue auf einen Wert von 4 ansteigt.
                  Ich habe die Abfragen jetzt etwas entzerrt. Die Zählerwerte brauche ich nicht alle 5 Sekunden und sind jetzt in einer eigenen Kaskade, die alle 33sek abgerufen wird. Die Stingspannungen und die aktuelle PV Leistung läuft mit dem 5sek Loop und zwischen den LBS habe ich noch 500ms Verzögerung eingebaut.
                  Damit ist der CPU Lastpeak auf 50% runtergegangen.

                  Hat jemand von euch auch den Modbus LBS in einer Kaskade von 4 oder mehr LBS laufen und kann ggf über das Verhalten berichten?

                  Es gibt ja z.B. für SMA Wechselrichter einen angepassten LBS, der sofort alle relevanten Werte abruft. Macht das für die Modbusabfrage einen Unterschied ob ich 4 einzelne LBS durchlaufen lasse oder ein LBS alle Werte holt?


                  p.s. Ich weiß nicht ob das eine Rolle spielt: Bei den Zählerwerten und der aktuellen PV Leistung habe ich es noch nicht geschafft direkt den richtigen Wert aus dem LBS zu bekommen. Ich muss, wie hier ein paar Seiten vorher schonmal beschrieben wurde, den Wert erst durch 65535 teilen. Dann passt es auf alle Nachkommastellen genau. Das betrifft alle Modbusregister mit 2Byte Länge (siehe Anhang als Beispiel).
                  Angehängte Dateien
                  Zuletzt geändert von Chris1985; 24.07.2020, 10:40.
                  Gruß Christian

                  Kommentar


                    Ich habe nochmal eine andere Frage.
                    Ist es mit überschaubarem Aufwand möglich den LBS auf 15 oder 20 Werte (oder noch mehr) zu ändern? So wie ich die Modbusabfrage verstanden habe, wird das ganze immer paketweise abgerufen und würde Ressourcen sparen, wenn alle Werte gleichzeitig abgefragt würden. Stimmt das so?
                    Gruß Christian

                    Kommentar


                      Hallo Zusammen,

                      ich nutze diesen Baustein, um aus einer LOGO! einige Werte auszulesen. Leider erhalte ich immer wieder sporadisch folgende Fehlermeldung:
                      Code:
                       
                      2020-09-10 09:58:41 424249 ? 19871 Datei: /usr/local/edomi/main/include/php/ModbusMaster.php | Fehlercode: 1 | Zeile: 151 | Allowed memory size of 67108864 bytes exhausted (tried to allocate 4392453 bytes) FATALERROR
                      kann mir jemand sagen, wie der Fehler zu beseitigen ist?

                      Vielen Dank vorab!

                      Kommentar

                      Lädt...
                      X