Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19002660 Modbus TCP Master Write

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

    LBS 19002660 Modbus TCP Master Write

    Hallo,

    da es bis jetzt keinen LBS gab um Daten über Modbus zu schreiben habe ich jetzt den LBS 19002660 Modbus TCP Master Write erstellt.
    http://service.knx-user-forum.de/?co...ad&id=19002660

    Mein LBS nutzt wie der LBS 19001030 Modbus TCP Master Read (stammt nicht von mir) die Phpmodbus Bibliothek, allerdings muss eine Phpmodbus Version verwendet werden die auch die Methode "writeSingleRegister" enthält, das ist z.B. bei Phpmodbus_0.8.r106 der Fall.
    Das inkludierte ZIP-File enthält Phpmodbus_0.8.r106 bei dem der Konstruktor für CentOS 7 modifiziert wurde, die Dateien müssen in das Verzeichnis /usr/local/edomi/main/include/php/ kopiert werden.

    Der LBS ist noch in einem frühen Stadium, die grundlegende Funktion ist aber gegeben.
    Viel Spaß beim Testen und bitte um Feedback.

    LG Wolfgang

    #2
    Super, besten dank. Werde ich die Tage testen um meinen SMA WR anzusteuern.

    Kommentar


      #3
      Hallo wolfib,

      ich habe auch Interesse an deinem LBS und habe diesen gleich mal in mein System geladen. Als Modbus-Bibliothek habe ich, wie beschrieben, die aus dem LBS-Anhang genommen und in den entsprechenden Ordner kopiert. Leider startet nun mein Edomi nicht mehr mit folgender Fehlermeldung:

      HTML-Code:
      2023-03-17 16:15:47 385998 MAIN 3657 Prozess LOGIC läuft nicht mehr! FATALERROR
      2023-03-17 16:16:00 755913 MAIN 4237 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
      2023-03-17 16:16:05 756844 MAIN 4237 ACHTUNG: EDOMI wurde unerwartet beendet: FATALERROR in LBS 19002660 | EDOMI wird pausiert ERROR
      2023-03-17 16:16:23 462420 ? 4284 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19002660.php | Fehlercode: 0 | Zeile: 26 | Call to undefined method ModbusMaster::writeSingleRegister()  ​
      Ist an dem LBS sicher die richtige Modbus-Bibliothek angehängt?

      Kommentar


        #4
        Sollte die richtige sein, die Methode writeSingleRegister ist in der Bibliothek vorhanden.
        Hast du die Dateien (alle 5) in das richtige Verzeichnis kopiert?
        Mach mal ein ls -la im Verzeichnis /usr/local/edomi/main/include/php/

        LG Wolfgang

        Kommentar


          #5
          Hallo wolfib,

          ich habe das nochmal überprüft und festgestellt, dass ich die Dateien mit samt Ordner kopiert hatte, sodass im eigentlichen Ordner noch eine ältere Variante der Modbus-Bibliothek aus früheren Modbus-Versuchen lag.

          Nun habe ich die Dateien ausgetauscht:
          HTML-Code:
          [root@edomi ~]# cd /usr/local/edomi/main/include/php/
          [root@edomi php]# ls -la
          insgesamt 380
          drwxrwxrwx  5 root root   4096 18. Mär 08:59 .
          drwxrwxrwx  3 root root     17  5. Feb 2022  ..
          -rwxrwxrwx  1 root root   2245  8. Feb 2021  base.php
          -rw-r--r--  1 root root    214  5. Feb 2022  composer.json
          -rw-r--r--  1 root root  36276  5. Feb 2022  composer.lock
          -rwxrwxrwx  1 root root   2739  8. Feb 2021  config.php
          -rw-r--r--  1 root root   6298 29. Aug 2021  fritz.php
          -rw-r--r--  1 root root   4052 18. Mär 08:46 IecType.php
          -rwxrwxrwx  1 root root  52487  8. Feb 2021  incl_activation.php
          -rwxrwxrwx  1 root root  15331  8. Feb 2021  incl_cmd.php
          -rwxrwxrwx  1 root root   2555  8. Feb 2021  incl_fritzbox.php
          -rwxrwxrwx  1 root root   7668  8. Feb 2021  incl_ga.php
          -rwxrwxrwx  1 root root   1669  8. Feb 2021  incl_lbsexec.php
          -rwxrwxrwx  1 root root  10234  8. Feb 2021  incl_logicmonitor.php
          -rwxrwxrwx  1 root root  18547  8. Feb 2021  incl_logic.php
          -rwxrwxrwx  1 root root  16119  8. Feb 2021  incl_log.php
          -rwxrwxrwx  1 root root   6254  8. Feb 2021  incl_mail.php
          -rwxrwxrwx  1 root root   1622  8. Feb 2021  incl_process.php
          -rwxrwxrwx  1 root root   1910  8. Feb 2021  incl_telnet.php
          -rwxrwxrwx  1 root root    110 18. Mär 08:57 logicmonitor_config.php
          rw-r--r--  1 root root  36275 18. Mär 08:46 ModbusMaster.php
          -rw-r--r--  1 root root   1284 18. Mär 08:46 ModbusMasterTcp.php
          -rw-r--r--  1 root root   1277 18. Mär 08:46 ModbusMasterUdp.php
          drwxrwxrwx  8 root root    294  5. Feb 2022  modbus-tcp-client
          drwxr-xr-x  9 root root   4096  8. Jan 2022  php-telegram-bot
          -rw-r--r--  1 root root   7396 18. Mär 08:46 PhpType.php
          -rwxrwxrwx  1 root root 108685  8. Feb 2021  update.php
          drwxr-xr-x 12 root root    177  5. Feb 2022  vendor
          Leider war das Ergebnis eine Boot-Schleife, die ich nur durch Eingreifen unterbrechen konnte.
          HTML-Code:
          2023-03-18 08:50:26 299163 MAIN 18419 Prozess LOGIC läuft nicht mehr! FATALERROR
          2023-03-18 08:51:43 243688 MAIN 2105 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
          2023-03-18 08:52:03 679390 MAIN 2105 Prozess LOGIC läuft nicht mehr! FATALERROR
          2023-03-18 08:53:22 704786 MAIN 2102 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
          2023-03-18 08:53:39 952608 MAIN 2102 Prozess LOGIC läuft nicht mehr! FATALERROR
          2023-03-18 08:54:55 366842 MAIN 2103 ACHTUNG: EDOMI wurde unerwartet beendet!​
          Hast du noch eine Idee?

          Kommentar


            #6
            Hallo,

            ich konnte das Problem nachstellen in dem ich den LBS ohne "Value" aufgerufen habe, kannst du das bestätigen?
            Ich habe eine neue Version hochgeladen bei der das abgefangen wird. Ist das Problem damit behoben?

            LG Wolfgang

            Kommentar


              #7
              Hallo wolfib,

              du hast recht, ich habe bei Value keinen Wert eingetragen. Also habe ich die Baustein aktualisiert und Edomi wurde normal gestartet. Allerdings kam es zu einem sofortigen Absturz, als ich den Wert '1' bei Value eingetragen habe, gefolgt mit einer erneuten Boot-Schleife.
              Mich wundert generell das es zu den ganzen Abstürzen gekommen ist, da der Trigger des LBS bislang immer mit dem Wert '0' belegt war. Ich hätte jetzt erwartet, dass der Baustein erst beginnt zu arbeiten, wenn der Trigger gesetzt wird.
              Die Logdatei in Edomi ist erneut recht unspannend:
              HTML-Code:
              2023-03-20 10:49:49 505824 MAIN 6221 Prozess LOGIC läuft nicht mehr! FATALERROR
              2023-03-20 10:51:09 667438 MAIN 2110 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
              2023-03-20 10:51:26 837904 MAIN 2110 Prozess LOGIC läuft nicht mehr! FATALERROR
              2023-03-20 10:52:41 079592 MAIN 2094 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
              2023-03-20 10:52:59 563337 MAIN 2094 Prozess LOGIC läuft nicht mehr! FATALERROR
              2023-03-20 10:54:23 313211 MAIN 2090 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
              2023-03-20 10:55:10 490175 MAIN 2090 Prozess LOGIC läuft nicht mehr! FATALERROR
              2023-03-20 10:56:24 696271 MAIN 2097 ACHTUNG: EDOMI wurde unerwartet beendet! ERROR
              2023-03-20 10:56:44 493220 MAIN 2097 Prozess LOGIC läuft nicht mehr! FATALERROR
              2023-03-20 10:58:02 840224 MAIN 2102 ACHTUNG: EDOMI wurde unerwartet beendet!  ​

              Kommentar


                #8
                Die Empfehlung ist eigentlich immer die Funktionalitäten, die über Basis-PHP hinausgehen in den EXEC-Teil des LBS zu packen, da ansonsten bei einem Fehler die komplette Logik-Engine von EDOMI abschmiert. Insbesondere ein "exit" im LBS Bereich ist "verboten", denn es beendet EDOMI, was dann zu einem Reboot führt.
                Der LBS-Teil sollte per logic_setInputsQueued() den EXEC-Teil triggern, welcher dann die Funktionalität implementiert. Dann kann maximal das EXEC Skript abstürzen und man kann Fehler/Exceptions kontrolliert ins Log schreiben und später nachvollziehen. Der LBS 19002646 wäre ein einfaches Beispiel für eine solche Implementierung.

                Kommentar


                  #9
                  jonofe: vielen Dank für den Input, ich habe das jetzt in der Version 0.2 so umgesetzt.

                  meisterschaf : bitte testen und Rückmeldung

                  Kommentar


                    #10
                    Hallo wolfib,

                    jetzt funktioniert es ohne Probleme. Ich teste den LBS mit meiner Heizung und die geänderten Parameter kommen am Gerät an. Edomi verhält sich dabei auch normal.

                    Eine Anmerkung habe ich bezüglich des Eingangs E1. Dieser ist als Trigger beschrieben, jedoch wird der Baustein auch getriggert, wenn sich der Wert am E8 (Value) ändert. Das ist an sich erstmal nicht schlimm, jedoch würde ich den E1 umbenennen, z.B. in "Freigabe", da dieser suggeriert, dass der LBS für jedes Senden am E1 getriggert werden muss.

                    Ansonsten gefällt mir der Baustein erstmal sehr gut.

                    Edit: Ich habe gerade festgestellt, der Baustein wird unabhängig des Eingangs E1 bearbeitet. Also sobald ich den Value ändere, wird dieser geschrieben, egal ob E1 '0' oder '1' ist. Vielleicht solltest du dies nochmal prüfen.
                    Zuletzt geändert von meisterschaf; 21.03.2023, 13:03.

                    Kommentar


                      #11
                      Das habe ich bewusst so gemacht, neue Telegramme an E8 triggern den LBS und mit einem Trigger an E1 kann man den LBS ebenfalls triggern. Ich dachte mir das ist sinnvoll so, oder seid ihr da anderer Meinung? Jedenfalls müsste es noch in die Beschreibung aufgenommen werden.

                      Wo ich mir nicht sicher bin ist die Konvertierung der Datentypen, ich habe keine Hardware um das umfassend zu testen. Über ein Feedback würde ich mich freuen.

                      Kommentar


                        #12
                        Hallo, hat schon jemand den Modbus TCP Master Write LBS am Fronius Gen 24 ausprobiert? Hätte versucht die Batterieladung zu steuern. Modbus TCP lesen funktioniert perfekt, schreiben leider noch nicht.

                        Danke, LG Franz

                        Kommentar


                          #13
                          Wurde das richtige Datenformat gewählt?
                          Was steht im Log?

                          Kommentar

                          Lädt...
                          X