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.
    • HF_SPSler
      HF_SPSler @Wal last edited by

      Moin @wal ,

      ich gehöre auch zu denen die Probleme mit den Ausreißern in den Werten haben 🙂 Leider habe ich tagsüber nicht die Möglichkeit Tests durchzuführen da ich meine private S7 mit dem iobroker gekoppelt habe und mir auf der Arbeit aktuell keine Möglichkeit besteht eine S7 mit einem iobroker zu koppeln.

      Aber ich könnte jetzt heute Abend mal eine Trace aufzeichnen, zumindest für ein paar stunden. Jedoch weiß ich leider noch nicht wie man den Adapter von Github installiert bekommt, da bin ich noch totales Greenhorn.

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

        @hf_spsler ,
        du rufst die Adapter in deinem ioBroker auf und klickst auf die Katze im weißen Kreis.
        Danach auf Benutzerdefiniert und kopierst die oben gepostete Github Url hinein, jetzt auf den Button installieren klicken.

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

          @wal Okay 👍 Muss dafür der bereits installierte Adapter erst entfernt werden? Der ist mit über 200 DB Adressen bereits für Iqontrol in Verwendung 😨

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

            @hf_spsler ,
            nein

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

              @hf_spsler ,
              hoffe aber dein ioBroker ist einigermaßen aktuell.

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

                @wal Der müssste brandaktuell sein, am Wochende erst ein Backup der SD-Karte gezogen anschließend alles geupdatet was mir vorgeschlagen wurde und anschließend wieder ein SD-Karten Backup angefertigt.

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

                  Nachdem mein Test jetzt 28 Stunden ohne Fehler durchlief, habe ich das Skript deaktiviert.
                  Falls @HF_SPSler eine positive Rückmeldung gibt, werde ich doch den Pull Request früher einreichen.

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

                    @wal Ich weis nicht wie eilig du es hast, ich kann unter der Woche leider immer nur ein paar Stunden testen. Bis jetzt läuft es seit fast vier Stunden ohne Ausreißer, jedoch habe ich nur eine kleine Fangschaltung programmiert die bei weitem nicht alle bisher springenden Werte abfängt. Dazu fehlte mir am heutigen Abend die Zeit.

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

                      @hf_spsler Der Test läuft ja quasi von selbst, du überprüfst einfach die gelesenen Werte (die du vorher in die S7 schreibst: Haken bei Abfrage + Haken bei RW) auf Ausreißer, z.B. mit Blockly und lässt bei Abweichung einen Log-Eintrag los, den kannst du dann im iobroker im Protokoll finden (wenn er auftritt):
                      e8dfb3e5-ce10-4184-b5cb-c112f78c1868-image.png

                      • Reserve92 = DB22.DBD92 (REAL) bei mir
                      • Der Wert ist nie >99 oder < -99 beim Schreiben
                      • Wenn der Wert >99 oder < -99 gelesen wird, werden die 3 Zeilen im Protokoll als Kategorie "Debug" eingetragen
                      • Das Protokoll kannst du ja über mehrere Tage einsehen (LOG HERUNTERLADEN) und dann einfach nach "Abweichung" suchen
                      HF_SPSler 1 Reply Last reply Reply Quote 0
                      • Wal
                        Wal Developer @HF_SPSler last edited by

                        @hf_spsler ,
                        so eilig jetzt nicht. 😉

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

                          @fu_zhou Okay, ich versuche das heute Abend mal nach Feierabend umzusetzen 👍

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

                            @wal Ich habe den node-snap7 issue mal geschlossen und im iobroker.S7 issue einen Aufruf zum Mittesten gestartet. Ich glaube aber nicht, dass da viel zurückkommt. Bei mir läuft das Ganze mit sämtlichen Test-Skripten parallel zum Produktivbetrieb stabil über die letzten Tage. Sobald du den Mut zum Pull hast, würde ich auch den iobroker.S7 issue auf Github schließen.

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

                              @fu_zhou ,
                              ich lasse @HF_SPSler noch ein paar Tage Zeit (ein Paar sind 2 😉 )für eine Rückmeldung und wenn die positiv ist werde ich den Pull Request starten.

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

                                @wal Moin zusammen.

                                Ich habe jetzt die letzten zwei Tage insgesamt fünf Variablen auf SPS Seite auf Ausreißer überprüft und wenn einer Aufgetreten wäre einen Zähler hochgezählt. Was soll ich sagen, der Zähler ist auch nach zwei Tagen immer noch 0 - es ist also aus meiner Sicht davon auszugehen, dass es zu keinen Ausreißern mehr kommt 👏 👏

                                Um ganz sicher zu gehen dass ich nicht irgendeinen Denkfehler bei dem Testaufbau drin hab hier meine Vorgehensweise:

                                5cb77d24-9afc-47a4-8ef6-646dfdd25390-grafik.png

                                PS: Bei AmbientTemperature nicht wundern, da sich der betreffende Akku im Gartenhaus befindet ist er mit einer Heizmatte versehen und der Temperaturfühler der eigentlich die Raumtemperatur im Gartenhaus misst wird aktuell dazu mißbraucht die Heizmatte zu messen. die 30°C sind also plausibel 😊

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

                                  @hf_spsler ,
                                  das scl müsste stimmen, danke.

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

                                    @hf_spsler Nachdem du gem. deiner Signatur Logos im Einsatz hast: Willst du hier mal eine Einschätzung abgeben?
                                    https://github.com/ioBroker/ioBroker.s7/issues/301#issue-2080449908

                                    Tuning1 created this issue in ioBroker/ioBroker.s7

                                    closed S7 Adapter negative Werte #301

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

                                      @fu_zhou Moin, kurz zum S7 Adapter bezüglich Ausreißer: Bis jetzt keinerlei Auffälligkeiten, der Zähler steht noch immer bei 0 👍

                                      Bezüglich Logo: Meine Logos übernehmen Sensor- Aktoraktivitäten in den jeweiligen Geschossen, sie sind aber als Slaves an die S7 angebunden und haben zum Iobroker keinen Kontakt. Einzig die S7 als Kopf-SPS kommuniziert über einen DB mit Iobroker. Da kann ich leider nichts sinnvolles beitragen.

                                      Kone 1 Reply Last reply Reply Quote 0
                                      • Kone
                                        Kone @HF_SPSler last edited by Kone

                                        @hf_spsler
                                        ich hab filtere die aussreißer in der s7 raus mit diesem baustein.

                                        FUNCTION_BLOCK "Mittelwert_Real_gleite4"
                                        { S7_Optimized_Access := 'FALSE' }
                                        VERSION : 0.1
                                        //Der Baustein  berechnet über 4 Messwerte hinweg einen gleitenden Mittelwert. 
                                        //Die Bildung des Mittelwertes basiert auf folgender Gleichung:
                                        //Yi=(X1+X2+X3+...+X4)/4.  Einen Schritt später werden die Messwerte wie folgt 
                                        //durchgeschoben.
                                        //Yi+1=(X2+X3+...+X4)/4.
                                        //Wird der Baustein z.B. nur alle 100ms einmal durchlaufen, so mittelt er über 
                                        //1,0 Sek. hinweg die Messwerte.
                                           VAR_INPUT 
                                              Eingangswert : Real;
                                              Max_Positiv : Real := 32000.0;
                                              Max_Negativ : Real := 0.0;
                                           END_VAR
                                        
                                           VAR_OUTPUT 
                                              Mittelwert_Ausgang : Real;
                                              Zahlenbereich_Fehler : Bool;
                                           END_VAR
                                        
                                           VAR_IN_OUT 
                                              Start_oder_Reset : Bool;
                                           END_VAR
                                        
                                           VAR 
                                              Messwert_Schiebereg : Real;
                                              Messwert_Schiebereg1 : Real;
                                              Messwert_Schiebereg2 : Real;
                                              Messwert_Schiebereg3 : Real;
                                              Messwert_Schiebereg4 : Real;
                                             
                                              Summe_der_Messwerte : Real;
                                              FP_Takt : Bool;
                                           END_VAR
                                        
                                           VAR_TEMP 
                                              Zu_klein : Bool;
                                              zu_Positiv : Bool;
                                              zu_Negativ : Bool;
                                           END_VAR
                                        
                                        
                                        BEGIN
                                        NETWORK
                                        TITLE = Arbeitstakt aufbereitung
                                              A "SysDat_DB100".BlinkTakt_500msek_AnwPgm;
                                              FP #FP_Takt;
                                              JCN druu;
                                        
                                        NETWORK
                                        TITLE = Prüfung des Zahlenbereiches
                                        
                                              L #Eingangswert;
                                              A OV;
                                              = #Zahlenbereich_Fehler;
                                              JC druu;
                                        
                                              L #Max_Positiv          ;// grösste pos. Zahl stutzen
                                              L #Eingangswert;
                                              <R;
                                              = #zu_Positiv;
                                              A #zu_Positiv;
                                              JCN zpos;
                                              L #Mittelwert_Ausgang;
                                              T #Eingangswert;
                                              SET;
                                              = #Zahlenbereich_Fehler;
                                        zpos:      L #Max_Negativ               ;// grösste neg. Zahl stutzen
                                              L #Eingangswert;
                                              >R;
                                              = #zu_Negativ;
                                              A #zu_Negativ;
                                              JCN zneg;
                                              L #Mittelwert_Ausgang;
                                              T #Eingangswert;
                                              SET;
                                              = #Zahlenbereich_Fehler;
                                        
                                        
                                        NETWORK
                                        TITLE = Alles löschen
                                        zneg:      A #Start_oder_Reset;
                                              JCN ruek;
                                              L 0.0;
                                              T #Mittelwert_Ausgang;
                                              T #Messwert_Schiebereg1;
                                              T #Messwert_Schiebereg2;
                                              T #Messwert_Schiebereg3;
                                              T #Messwert_Schiebereg4;
                                              
                                              T #Summe_der_Messwerte;
                                              SET;
                                              R #Start_oder_Reset;
                                        
                                        ruek:      NOP 0;
                                        
                                        
                                        NETWORK
                                        TITLE = Mittelwertberechnung Teil 1
                                              L #Eingangswert             ;// Neun Wert hinzufügen
                                              L #Summe_der_Messwerte;
                                              +R;
                                              T #Summe_der_Messwerte;
                                        
                                        
                                        NETWORK
                                        TITLE = Eins weiter Schieben
                                              L #Messwert_Schiebereg3;
                                              T #Messwert_Schiebereg4;
                                              L #Messwert_Schiebereg2;
                                              T #Messwert_Schiebereg3;
                                              L #Messwert_Schiebereg1;
                                              T #Messwert_Schiebereg2;
                                        
                                              L #Eingangswert;
                                              T #Messwert_Schiebereg1;
                                        
                                        
                                        NETWORK
                                        TITLE = Mittelwertberechnung Teil 2
                                              L #Summe_der_Messwerte      ;// Ältesten Wert abziehen
                                              L #Messwert_Schiebereg4;
                                              -R;
                                              T #Summe_der_Messwerte;
                                              L 3.0;
                                              /R;
                                              T #Mittelwert_Ausgang;
                                        druu:      NOP 0;
                                        
                                        
                                        END_FUNCTION_BLOCK
                                        
                                        HF_SPSler 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active last edited by

                                          Mit der normalen Filternode im Nahbandmodus kann man Ausreiser ganz einfach rausfiltern ohne Mittelwerte. Die verfälschen nur.

                                          1 Reply Last reply Reply Quote 0
                                          • HF_SPSler
                                            HF_SPSler @Kone last edited by

                                            @kone Moin, nun, einen Monat nach meinem letzten Post zur Außreißerthematik, nachdem ja eine erfolgreich Änderung im S7 Adapter erfolgte, benötige ich keinen Workaround mehr um durch Software entstandene Außreißer heraus zu filtern - aber trotzdem danke für deinen Ansatz 👍

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            768
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            92
                                            6226
                                            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