NEWS
S7 mit Node Red (node-red-contrib-s7)
-
@fu_zhou ,
den "buf" gibt es auch im S7 Adapter den ich nach Befüllung mit geloggt hatte und keine Ausreißer hatte, aber zwischen "buf" befüllen und "buf" mit s7client.DBWrite schreiben könnte sich ja evtl. sich was ändern. -
@fu_zhou ,
bin ja auf dem "latest" und auf nodejs20 mit meinem ioBroker.
Habe am Anfang des Jahres alles geupdatet und kann den Fehler seit Stunden mit verschiedenen Skripten nicht mehr reproduzieren.
Nach diesem Post wird der Fehler gleich da sein, werde berichten.edit: ich habs gewusst, 2 Minuten hat es gedauert.
-
@wal für mich sieht das mit einem buf so aus: es wird ja nicht gewartet, ob oder bis der Wert aus dem Buffer tatsächlich in der S7 ankommt. Wenn der Schreibvorgang länger als 200ms (mein Intervall) dauert, steht möglicherweise in dem buf schon ein Teil von dem anderen Wert drin und dann ergibt der Inhalt dieser 4 "zusammengewürfelten" Bytes diese Werte, die völlig daneben sind. Das würde auch erklären, dass die Häufigkeit der Abweichung mit steigender Zykluszeit abnimmt. Allerdings kommt bei einem 1 Sek.-Intervall der Fehler noch immer hin und wieder und so lange kann der s7client.DBWrite ja eigentlich nicht dauern - oder hin und wieder eben doch?
Wenn wir, außer buf 1 - buf n, eine Lösung finden, immer die korrekten Werte in die S7 zu schreiben, ist das im Adapter leicht behoben, denke ich. Ich habe auch mal in die main.js geschaut und die Zeilen dazu gefunden...
In der API-Beschreibung habe ich nichts gefunden, was darauf hinweist, dass auf den Schreibzyklus zu achten wäre. Ich habe das aber mal im issue auf Github gefragt.
-
@fu_zhou ,
kannst du mal den Adapter über mein Github installieren und testen ?
Bei mir dauert es immer sehr lang bis der Ausreißer kommt, deshalb wären 2 Tester besser.
Github Link -
@wal Ist jetzt installiert und ich beschreibe die S7 mit dem Adapter mit 200ms Poll-Delay mit 3 Real Werten, wobei einer in der S7 umkopiert wird, also lese ich die 3 geschriebenen + den 1 umkopierten Wert.
Ich bin soooo gespannt....
-
@fu_zhou ,
bis jetzt hatte ich noch kein Ausreißer, aber nach dieser Nachricht ... -
@wal seit wann läuft's bei dir?
-
@fu_zhou ,
10 Stunden. -
@wal Noch kein Ausreißer die letzten 20 Minuten!!!!! Ich gehe jetzt nochmal auf den S7 Adapter ohne deine Änderung zurück und schaue, wie lange es dauert, bis der erste Wert daneben liegt.
Edit: die ersten Ausreißer sind angekommen, ich gehe jetzt wieder auf deine Modifikation... -
@wal kein Ausreißer über Nacht - bei 3 Instanzen in 2 ioBroker Installationen, die alle die selbe S7 traktieren. Das war bisher das Rezept für verlässliche sporadische Ausreißer! Kann es das gewesen sein????? - Sieht danach aus!!!!!
Ich würde sagen, dass das eine Version 1.5, wenn nicht sogar 2.0 Wert ist. Kannst du dich darum kümmern, dass das ioBroker Repository angepasst wird, so dass die funktionierende Version über ioBroker installiert wird?
Auf jeden Fall vielen Dank für deine Unterstützung bisher!
-
@fu_zhou ,
es waren doch noch mehr User denen das aufgefallen ist, wenn die auch noch einmal testen könnten ...
So schnell wage ich noch kein Pull Request, lass mal noch eine Woche so laufen. -
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.
-
@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. -
@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
-
@hf_spsler ,
nein -
@hf_spsler ,
hoffe aber dein ioBroker ist einigermaßen aktuell. -
@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.
-
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. -
@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.
-
@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):
- 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