Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. S7 mit Node Red (node-red-contrib-s7)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    S7 mit Node Red (node-red-contrib-s7)

    This topic has been deleted. Only users with topic management privileges can see it.
    • fu_zhou
      fu_zhou last edited by

      Hallo zusammen,

      nachdem der S7 Adapter leider beim Übertragen von Daten hin und wieder "Fantasiewerte" an die S7 schickt, bietet sich Node Red mit node-red-contrib-s7 als Alternative an.

      Ich würde hier gerne "Best Practices" sammeln bzgl:

      • sinnvolle Erstellung/ Strukturierung von Flows (z.B. an S7 senden, von S7 lesen)
      • Spreadsheet-Engineering (z.B. Anlegen der S7 Variablen über Excel und Import in Node Red)
      • automatisiertes Verknüpfen der Variablen (z.B. über JSON Import)
      • Funktionen in Node Red (z.B. Signalverarbeitung als Alternative zu Blockly/ Java-Script)
        ...

      Los geht das Ganze mit der Installation von node-red-contrib-s7. Anleitung dazu findet man hier:
      https://flows.nodered.org/node/node-red-contrib-s7

      to be continued...

      Wal 1 Reply Last reply Reply Quote 0
      • Wal
        Wal Developer @fu_zhou last edited by

        @fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):

        nachdem der S7 Adapter leider beim Übertragen von Daten hin und wieder "Fantasiewerte" an die S7 schickt

        Kann ich nicht bestätigen und habe den Adapter schon 4 Jahre im Einsatz.

        fu_zhou 1 Reply Last reply Reply Quote 0
        • fu_zhou
          fu_zhou @Wal last edited by

          @wal Schau mal hier: https://github.com/ioBroker/ioBroker.s7/issues/13
          Das Problem ist leider wirklich da und wir haben bisher niemanden finden können, der den S7-Adapter korrigieren kann...

          thomigueh created this issue in ioBroker/ioBroker.s7

          closed REAL zahlen werden scheinbar duch zufällige Zahlen vom s7.Adapter ersetzt. #13

          Wal 2 Replies Last reply Reply Quote 0
          • Wal
            Wal Developer @fu_zhou last edited by

            @fu_zhou ,
            ich lese meine Zisterne mit Real ein, ich schau mir das Problem mal an.
            Ich nutze eine 300 CPU mit Simatic Manager, wie es mit neueren CPUs und TIA oder Logo aussieht kann ich nicht beurteilen/testen.

            fu_zhou 1 Reply Last reply Reply Quote 0
            • Wal
              Wal Developer @fu_zhou last edited by Wal

              @fu_zhou ,
              ok ihr sendet Realwerte an die S7 was ich nicht mache, ich schaue es mir trotzdem mal an.

              Edit:
              Als Notbehelf kannst du den Realwert mal 100 nehmen bei 2-Stellen nach dem Komma und ein Word an die S7 senden und dort den Wert durch 100 wieder teilen.

              fu_zhou 1 Reply Last reply Reply Quote 0
              • fu_zhou
                fu_zhou @Wal last edited by

                @wal Lesen ist wohl nicht das Problem, aber das Schreiben sporadisch schon. Ich habe eine S7-315PN im Einsatz (seit 7 Jahren, der Issue in Github ist ja auch schon 5 Jahre alt - und immer noch aktuell). Es geht hier im Moment um 300er CPUs mit Step 7...

                Wäre klasse, wenn du da was findest und beheben kannst!

                1 Reply Last reply Reply Quote 0
                • fu_zhou
                  fu_zhou @Wal last edited by fu_zhou

                  @wal Das Thema in Github bezieht sich zwar auf real, wir haben aber festgestellt, dass das auch bei CHAR und INT der Fall ist...

                  Hier der entsprechende Kommentar dazu:
                  https://github.com/ioBroker/ioBroker.s7/issues/13#issuecomment-1782649439

                  thomigueh created this issue in ioBroker/ioBroker.s7

                  closed REAL zahlen werden scheinbar duch zufällige Zahlen vom s7.Adapter ersetzt. #13

                  Wal 1 Reply Last reply Reply Quote 0
                  • Wal
                    Wal Developer @fu_zhou last edited by

                    @fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):

                    @wal Das Thema in Github bezieht sich zwar auf real, wir haben aber festgestellt, dass das auch bei CHAR und INT der Fall ist...

                    Das ist komisch da ich ein Javascript für die Autokalibration der Zisterne am laufen habe, das auch ohne Probleme funktioniert.

                    zis.jpg

                    Der Node-Red-Adapter basiert nicht auf Snap7 sondern auf Nodes7 da wird der Hund begraben sein, es kann sein das es gar nicht am S7-Adapter liegt.

                    fu_zhou 1 Reply Last reply Reply Quote 0
                    • fu_zhou
                      fu_zhou @Wal last edited by

                      @wal zeichnest du den gesteuerten Wert "s7.0.DBs.DB2.zisterne_offset_voll" auf (z.B. SQL) und hast dir die Werte mal angeschaut? Ich bin mir fast sicher, dass du da Ausreißer wie im Issue beschrieben finden wirst. Snap7 ist ja auch schon viele Jahre etabliert, ich kann mir nicht vorstellen, dass das Verhalten übersehen wurde und ein Snap7-Problem ist. Aber die Frage wäre, ob jemand (du?) den Adapter mal auf nodes7 umbaut? Ich teste dann gerne...

                      Wal 2 Replies Last reply Reply Quote 0
                      • Wal
                        Wal Developer @fu_zhou last edited by

                        @fu_zhou ,
                        nodes7 kann keine Logo, evtl. finde ich ja was.
                        Viel Zeit werde ich aber nicht verschwenden.

                        1 Reply Last reply Reply Quote 0
                        • Wal
                          Wal Developer @fu_zhou last edited by

                          @fu_zhou ,
                          habe das jetzt eine halbe Stunde mit 1000 und -1000 laufen lassen und kein Fehler bekommen.
                          snap7.jpg

                          Kann ich das irgendwie nachstellen ?

                          fu_zhou 2 Replies Last reply Reply Quote 0
                          • fu_zhou
                            fu_zhou @Wal last edited by

                            @wal das Verhalten ist leider hoch sporadisch und wir haben noch keinen Weg gefunden, das zu reproduzieren.
                            8a4d54c9-f04a-4d9e-93fe-fa85b1a965db-image.png

                            Kannst du mit einem Vergleicher in der S7 mal einen Ausreißer fangen.: Wenn IN <> der Grenzen von der Zufallszahl => schreibe den Wert in einen DB. Und damit mal ein paar Stunden laufen lassen? Oder alternativ den Wert mit SQL loggen (s. Screenshot oben). Was hast du für eine Poll Delay im Adapter eingetragen? (bei mir sind es 200ms bei einer durchschnittlichen Zykluszeit von 15ms)

                            Wal 1 Reply Last reply Reply Quote 0
                            • fu_zhou
                              fu_zhou @Wal last edited by

                              @wal Geh vielleicht mit dem Trigger auch mal auf eine Sekunde runter

                              1 Reply Last reply Reply Quote 0
                              • Z
                                Zero_two last edited by

                                @Wal der Fehler läst sich schnell reproduzieren wenn du dir einfach die aktuelle Uhrzeit vom iobroker als dint wert in die s7 schreibst dabei entsteht der Fehler Recht schnell.

                                Wal 1 Reply Last reply Reply Quote 0
                                • Wal
                                  Wal Developer @fu_zhou last edited by

                                  @fu_zhou ,
                                  der poll ist auf 1sec.
                                  Die Zufallszahl habe ich jede Sekunde erzeugt,sieht man im Log.

                                  @Zero_two ,
                                  das mit der Uhrzeit teste ich mal.

                                  1 Reply Last reply Reply Quote 0
                                  • Wal
                                    Wal Developer @Zero_two last edited by

                                    @zero_two ,
                                    jetzt musst du mir nur noch zeigen wie du die Uhrzeit in DInt umrechnest.
                                    Mein Script erzeigt ein Überlauf, da die Zahl anscheinend zu groß ist.

                                    schedule("* * * * * *", async () => {
                                      setState('s7.0.DBs.DB2.test1', (new Date().getTime()));
                                    });
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • Z
                                      Zero_two last edited by

                                      382064db-3fd3-43ff-9e6d-03cf4fb5b017-grafik.png

                                      b0630757-33c3-4ee3-9dee-26719a3d164f-grafik.png

                                      1 Reply Last reply Reply Quote 0
                                      • Wal
                                        Wal Developer last edited by Wal

                                        So, ich habe den Poll auf 200ms gestellt und das Script von @Zero_two erweitert.
                                        Nach 10 Minuten hatte ich einen Objektunterschied festgestellt.
                                        Realtest2.jpg
                                        Wenn ich das aber auswerte, liegt der Fehler nicht am S7 Adapter, sondern am Javascript ?
                                        Wie zu sehen lese ich das Objekt vom S7 Adapter wieder aus das ich mit Javascript beschrieben habe und es ist 0.

                                        Edit: In der S7 habe ich den DB1.DBD8 (real_test1) auf den DB1.DBD12 (real_test2) geschrieben.

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          Blockmove @Wal last edited by

                                          @wal said in S7 mit Node Red (node-red-contrib-s7):

                                          Wenn ich das aber auswerte, liegt der Fehler nicht am S7 Adapter, sondern am Javascript ?
                                          Wie zu sehen lese ich das Objekt vom S7 Adapter wieder aus das ich mit Javascript beschrieben habe und es ist 0.

                                          Ohne jetzt im Detail dein Problem nachvollziehen zu wollen, aber schau dir mal bei Javascript / Node.js das Thema async / await an.

                                          Wal fu_zhou 2 Replies Last reply Reply Quote 0
                                          • Wal
                                            Wal Developer @Blockmove last edited by

                                            @blockmove ,
                                            zu Glück habe ich das Problem nicht, aber danke für die Info, sollen die Jungs sich das mal reinziehen. 😉

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            785
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            92
                                            5919
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo