Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS: Abfrage von Modbus TCP via Homeserver

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

    #16
    Hi,
    Der Baustein ist top!

    Das Problem ist die limitierte tcp Verbindung, es ist nur eine Verbindung zulässig dann steigt mir das Modul aus.

    Wenn du eine Verkettung integrieren könntest wäre das top.

    Kommentar


      #17
      Hallo Sven,
      vielen Dank für diesen super Baustein. Hierrauf habe ich schon lange gewartet. Dies erleichtert das Einbinden unterschiedlicher Wechselrichter von verschiedenen Herstellern ungemein. Mein SMA Wechselrichter SB1.5 als auch Victron GX Geräte funktionieren nach einem kurzen Test beide super. Eine Faktorberechnung würde ich auch wegen der Übersichtlichkeit mit einem externen Baustein lösen. Ein Senden von Modbus wäre dann noch der Hammer.
      Soviel Einsatz wird auch mit einer Spende belohnt. Danke!

      Kommentar


        #18
        Vielen Dank für das Meißelset von meiner Wish-List. Hat mich motiviert heute weiter zu machen. Ich hab gerade Version 0.2.1 hochgeladen und sollte morgen dann verfügbar sein.

        Changes:
        • Es gibt einen Eingang 7 neu. Damit rücken leider für Nutzer der 0.1 alle Eingänge um einen weiter, aber so ist das bei einem Testbaustein.
          Dieser Eingang kann Optionen setzen. Möglich ist aktuell "NoKeepAlive". Damit wird die TCP-Verbindung nach dem Durchlauf wieder abgebaut.
        • Es gibt einen neuen Ausgang 1 (Wieder rückt alles). Dieser gibt eine 1 zurück wenn er positiv durch lief. Damit kann Osti sein Problem mit limitierter TCP-Verbindung und mehr als 8 Werten umgehen. Konkret: Ersten Baustein mit Timer laufen lassen. Ausgang 1 mit Eingang 3 verbinden und den zweiten Baustein nur getriggert laufen lassen. Beide mit "NoKeepAlive". Lässt sich unendlich verketten.
        • Jeder Eingang hat ein Feld für String-Länge. Im Fall von numerischen Werten ist dies nun ein Multiplikator. Man kann also mit beispielsweise 0.001 von Wh in kWh umwandeln ohne nachgelagerte Multiplikationsbausteine
        • Intern wurden 1-2 Dinge schöner gelöst.
        Freue mich auf Feedback.

        Kommentar


          #19
          Ich hasse Modbus TCP.

          Wollte meinen E3DC mit den Bausteinen auslesen und kriege aber nur 0 als Antwort. Wenn ich den händischen Weg gehe, dann stimmt es, ich muss aber in den Bytes rutschen (also mit einem Offset arbeiten) und die Anfragen, die 32 Int sind, kommen als 16 Int zurück. Die Logik verstehen glaube ich nur Itler.

          Im Simpleymodus Player muss ich mit einem Offset von 40001 arbeiten. Im Hs darf ich erst ab Byte 9 lesen, was bei 32Int eigentlich keinen Sinn macht...
          Zuletzt geändert von BadSmiley; 13.07.2021, 10:54.
          Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

          Kommentar


            #20
            Zitat von BadSmiley Beitrag anzeigen
            Ich hasse Modbus TCP.

            Wollte meinen E3DC mit den Bausteinen auslesen und kriege aber nur 0 als Antwort. Wenn ich den händischen Weg gehe, dann stimmt es, ich muss aber in den Bytes rutschen (also mit einem Offset arbeiten) und die Anfragen, die 32 Int sind, kommen als 16 Int zurück. Die Logik verstehen glaube ich nur Itler.

            Im Simpleymodus Player muss ich mit einem Offset von 40001 arbeiten. Im Hs darf ich erst ab Byte 9 lesen, was bei 32Int eigentlich keinen Sinn macht...
            Ich vermute, dass die Firmen, die Modbus in ihre Geräte integrieren, sich nicht gut damit auskennen, aber trotzdem eine Dokumentation zu den Registern etc. schreiben müssen. Ich vermisse auch, dass es klare Referenzen gibt. Offset 40001 wird manchmal erklärt durch: Offset 40000 ist so für alle Holding Register, deswegen wird es im Modbus subtrahiert und die 1 ist wegen one-based vs. zero-based address. Andererseits muss ich es bei einem Gerät angeben, beim anderen nicht. Bei floats habe ich bei einem Gerät einen Offset von 40001, beim selben Gerät hat int32 einen Offset von 40000. Die Doku von den Herstellern scheint mir stark fehlerhaft zu sein, aber die Software scheint manchmal sich daran anzupassen, so dass man 2 Fehler hat.

            Ich finde Python sinnvoll, um vorab einen Test zu machen und den HS nicht neu starten zu müssen. Z.B.:
            Code:
            from pymodbus.client.sync import ModbusTcpClient
            client = ModbusTcpClient('192.168.1.1')
            client.connect()
            result = client.read_holding_registers(10200, 1, unit=1)
            print(result)

            Kommentar


              #21
              Zitat von hypnotoad Beitrag anzeigen
              Hat jemand den Bauspein schon mit einem Modbus/IP zu Modbus/RS485-Konverter ausprobiert? Z.B. dem USR-W610?
              Ich habe diesen IP-Modbus konverter getested und er funktioniert mit dem Logikbaustein: USR-DR302. In der Weboberfläche einfach die Modbus-Parameter einstellen, Modus ist TCP-Server und den Modbus-Haken nicht vergessen. War wirklich einfach und günstig (ca. 40 Euro, ca. 20 wenn direkt aus China).

              Kommentar


                #22
                hat das zufällig schon jemand mit Fronius am laufen? Ich bin gerade am Scheideweg HS4 oder Node Red. So 100%ige Laienvorlagen gibt es nicht und versuche grade das beste und einfachste zu finden und umzusetzen (Modbus, Register,... alles ein graus ). Am liebsten natürlich zentral am HS und nicht wieder ein Teil auf Node Red drauf.
                MfG
                Chris

                Kommentar


                  #23
                  also. Auch hier wird ein offset von -1 benötigt. Kann man eine offset Eingabe integrieren? Wäre für viele eine Hilfe

                  Danke für den Baustein!
                  MfG
                  Chris

                  Kommentar


                    #24
                    Funktioniert der Multiplier von -1 nicht? Oder meinst du 0.1? Beides sollte gehen und ist in der Dokumentation beschrieben denke ich.
                    Zuletzt geändert von SvenB; 31.07.2021, 23:24.

                    Kommentar


                      #25
                      Multiplier geht. Es geht um den Offset der Register. Es fängt bei manchen bei 0 an und bei anderen bei 1. Ich muss für Register 40102 einen Offset von minus 1 einstellen.
                      Aktuell behelfe ich mir, dass ich einfach das Register 40101 eintrage/abfrage.
                      MfG
                      Chris

                      Kommentar


                        #26
                        Ich versteh nicht recht: Warum soll ein Eingang Offset dazu kommen wenn man von jede Adresse um einen reduzieren kann. Es ist doch eine einmalige Konfiguration.

                        Wenn es ein Bug ist kann ich gern den Bug fixen. Aber bei mir passte die Nummerierung. 🤔

                        Kommentar


                          #27
                          das ist doch nicht unbekannt. Siehe Post #19.

                          Unbenannt.JPG

                          Es wäre halt eine saubere Sache, das so zu lösen. Bei den Programmen existiert es auch. Also so ganz unnütz ist es nicht. Man kann natürlich rumrechnen. Aber wie gesagt, 100%ig wäre es mit Offset

                          Unbenannt2.JPG

                          Es gibt auch Register mit Startadressen mit Offsets. (Start Offset; End Offset). Lösbar ist mit rumrechnen natürlich alles.

                          Kein Bug und der Baustein ist definitiv super!
                          Zuletzt geändert von chris_s; 01.08.2021, 14:32.
                          MfG
                          Chris

                          Kommentar


                            #28
                            Hallo Sven,

                            Kompliment, Baustein ist genial!!!

                            Im Bereich Wärmepumpe (z.B Nibe) und auch Ladestationen (Mennekes, Keba, Etrel, ect) werden aus Erfahrung zum grossen beide Register Funktionen FC03 - Lese Holding Register und FC04 - Lese Input Register verwendet. Ist mal eine Erweiterung auf Input Register angedacht?

                            Sonst waren meine ersten Tests erfolgreich, ich frage mich warum nicht mehr Reaktionen auf diesen Super Baustein gekommen sind. Das Thema Modbus ist sonst extrem Mühsam anzusteuern über Abfragen.

                            Grüsse


                            Kommentar


                              #29
                              Danke für das Kompliment.
                              Ich hab bereits darüber nachgedacht und würde folgendes Vorschlagen:
                              • Register ist 0-9999 => Read Holding Register
                              • 5-Stellig halten wir uns an an die Modicon Notation und zwar an 3xxxx und 4xxxxx. Dabei wären deine InputRegister 3xxxx.
                              Siehe hier: https://www.csimn.com/CSI_pages/Modbus101.html

                              Passt das auf deine Register auch? Ich kenne es nur so.
                              Dann kann ich das mal einbauen und sparen uns einen Eingang wo man auch wieder Checks bauen muss.

                              Zum Offset-Vorschlag: Nur wenn ich ganz viel Zeit hab. Will u.a. eher Schreiben von Registern fertig kriegen und das ist es quasi. Muss es "nur" releasen :-) Und hab danach noch andere Themen für mein Heim.

                              Kommentar


                                #30
                                Offset ist kein muss und geht auch mit Register -1 einzutragen. Man muss nur aufpassen wenn man mal was fixen möchte und evtl. mitm Modbussniffer arbeitet o.ä.

                                Würde ich auch hinten anstellen.

                                Nach wie vor bin ich von dem Baustein echt begeistert
                                MfG
                                Chris

                                Kommentar

                                Lädt...
                                X