NEWS
S7 mit Node Red (node-red-contrib-s7)
-
@mickym Die Idee war schon, hier die Anwendungsfälle von Node-Red mit S7 zusammenzutragen, das hat jetzt ein Eigenleben entwickelt. Ich würde gerne den initialen Post lassen und den Rest vielleicht nach "S7 Adapter" verschieben?
-
@fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):
@mickym Die Idee war schon, hier die Anwendungsfälle von Node-Red mit S7 zusammenzutragen, das hat jetzt ein Eigenleben entwickelt. Ich würde gerne den initialen Post lassen und den Rest vielleicht nach "S7 Adapter" verschieben?
Gut wenn Du allgemeine Fragen zu Node Red hast, kann ich Dir helfen. Zu S7 und auch der entsprechenden Node kann ich Dir nicht helfen.
Zu den einzelnen Punkten.
sinnvolle Erstellung/ Strukturierung von Flows (z.B. an S7 senden, von S7 lesen)
ich würde erst mal alles in einen Flow packen - ich kann aber nicht beurteilen wie umfangreich das wird, kann man aber auch im Nachhinein noch aufteilen mit etwas Nacharbeit.
Spreadsheet-Engineering (z.B. Anlegen der S7 Variablen über Excel und Import in Node Red)
habe ich persönlich noch nicht gemacht. Aber es gibt wohl eine Node, die mächtig ist und auch gepflegt wird. Kannst Du Dir hier mal anschauen: https://flows.nodered.org/node/node-red-contrib-spreadsheet-in
Das könnte ich mit einem einfachen Excelsheet mal in einer Testumgebung mit nachvollziehen.
automatisiertes Verknüpfen der Variablen (z.B. über JSON Import)
Weiß zwar nicht was das bedeutet. Grundsätzlich werden alle Javascript Objekte über JSON ausgetauscht und das beherrscht NodeRed von sich aus, sehr gut - jedenfalls besser als Blockly. Kommt halt darauf an, wo was gespeichert ist und ob bereits im JSON-Format.
Funktionen in Node Red (z.B. Signalverarbeitung als Alternative zu Blockly/ Java-Script)
Man kann in function Nodes komplettes Javascript schreiben. Ich würde Dir jedoch empfehlen, solange wie möglich darauf zu verzichten und ggf. lieber Subflows verwenden, damit Du die Vorteile der grafischen Programmierung nicht verlierst und wieder ins Codieren verfällst.
-
@fu_zhou ,
nur zur Info, habe jetzt einen Negativen Wert geloggt und der kommt vom S7 Adapter, ihr hattet recht. -
@wal danke für die Info... eigentlich gut oder auch schade. Coole Antwort wäre gewesen: Ihr Blinden, das liegt nicht am Adapter, sondern an...
Hast du eine Idee, wo du nachschauen kannst?
-
@fu_zhou ,
bin dabei mir logs in den Adapter einzubauen.
Viel Hoffnung habe ich jetzt erst einmal nicht, aber "schaun wir mal". -
@wal wenn was zeitaufwändiges zu testen wäre, übernehme ich gerne Aufgaben! (so dass sich deine Verschwendung minimiert)
-
@fu_zhou ,
habe direkt vor dem Senden an die PLC im S7-Adapter ein Info Log eingefügt und festgestellt das die Daten korrekt an die Node Snap7 Erweiterung übergeben wird, damit wäre der S7-Adapter wieder raus.
Evtl. kann @apollon77 noch dazu was sagen.adapter.log.info(data.native.dbId + ' - ' + data.native.address + ' - ' + buf.readInt32BE(0)); s7client.DBWrite(data.native.dbId, data.native.address, getByteSize(type, data.native.len), buf, err => next(err));
-
@wal hieße aber, dass ggf. Snap7 doch das Problem ist?
-
@fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):
@wal hieße aber, dass ggf. Snap7 doch das Problem ist?
Ich würde sagen die node-snap7 Anbindung, da Snap7 sehr oft genutzt wird mit verschiedenen Hochsprachen und da wäre es bestimmt schon aufgefallen.
-
@wal ich habe
/opt/iobroker/node_modules/node-snap7
gefunden. Wenn ich hier "package.json" anschaue
{ "name": "node-snap7", "main": "./lib/node-snap7.js", "version": "1.0.7",
ist die aktuellste Version (1.0.7) installiert. Kannst du im S7-Adapter erkennen, ob da bei einem Adapter-Update (war kürzlich) immer der aktuelle Wrapper installiert wird?
Wenn ich allerdings Snap7 anschaue
/opt/iobroker/node_modules/node-snap7/deps/snap7
steht da in der " HISTORY.txt"
======================================================================[2015-06-14] Version 1.4.0 - release for gourmets (fully compatible with 1.0.0) ----------------------------------------------------------------------------------
Version 1.4.0, während die 1.4.2 die aktuelle Version ist. Auf die verweist auch der Wrapper:
Current node-snap7 version: 1.0.7 Current snap7 version: 1.4.2
Kann da die Problematik herrühren? Hättest du eine Idee, wie man Snap7 in dieser Konstellation upgraden kann? Würde eine Neuinstallation des Adapters die aktuellen Versionen ziehen?
-
@fu_zhou ,
die Version 1.0.7 ist die aktuellste, die ist für Nodejs 20 gemacht worden und ca. 2 Wochen aktiv.
In nutze Node20 ist also das Neuste, siehst du auch unter"/opt/iobroker/node.../node-snap7".
Die Snap7 1.4.2 ist von 2017 und wie ich sehe auch das neuste Paket. -
@wal Ich habe aktuell das Gefühl, dass eine alte Snap7 Version installiert ist (Hinweis in HISTORY.txt auf die 1.4.0) oder ist das ein Überbleibsel aus alten Tagen und es ist tatsächlich die 1.4.2 aktiv? Kann man das irgenwo erkennen, ob sich node-snap7 die 1.4.2 gezogen hat?
-
-
@thomas-braun das Ergebnis ist:
│ └─┬ node-snap7@1.0.7
in
/opt/iobroker/node_modules/node-snap7
liefert der Befehl
npm ERR! code ELSPROBLEMS npm ERR! missing: bindings@~1.5.0, required by node-snap7@1.0.7 npm ERR! missing: nan@~2.18.0, required by node-snap7@1.0.7 npm ERR! missing: prebuild-ci@^4.0.0, required by node-snap7@1.0.7 npm ERR! missing: prebuild-install@^7.1.1, required by node-snap7@1.0.7 npm ERR! missing: prebuild@^12.1.0, required by node-snap7@1.0.7 node-snap7@1.0.7 /opt/iobroker/node_modules/node-snap7 npm ERR! A complete log of this run can be found in: /home/iobroker/.npm/_logs/2023-12-13T18_38_17_761Z-debug-0.log
Hier das Logfile 2023-12-13T18_38_17_761Z-debug-0.log
Kein Hinweis auf die Version von Snap7
-
@fu_zhou ,
wenn du node-snap7 auf Github durchsuchst, siehst du das der Autor seinen eigenes Snap7 nutzt.
Wenn er in der Readme schreibt, das das 1.4.2 ist wird das auch stimmen. -
@wal okay... schaust du noch weiter in die Problematik, oder bist du erst mal durch? Wenn du durch wärst: In welche Richtung könnte ich weitermachen? Issue in node-snap7 eröffnen?
-
@fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):
Issue in node-snap7 eröffnen?
Ja würde ich machen, aber alle Daten dazuschreiben. Pollzeit vom Adapter und Schreibzugriffe pro Sekunde.
-
@wal done: https://github.com/mathiask88/node-snap7/issues/96
Schreibzugriffe pro Sekunde: Wie kriegt man die raus?
-
@fu_zhou sagte in S7 mit Node Red (node-red-contrib-s7):
Schreibzugriffe pro Sekunde: Wie kriegt man die raus?
Du weist doch wie oft deine Skripte das Objekt beschreiben, oder ?
-
@wal ja, das ist bei manchen Scripten aber auch abhängig von der Wertänderung. Im Adapter kann nirgendwo eingestellt werden "nur bei Änderung schreiben", daher gehe ich davon aus, dass Werte, die unter DBS auf "RW" gesetzt sind, alle 200ms (=mein Poll delay) zyklisch geschrieben werden, oder? Und zyklisch (Poll delay) gelesen werden alle Werte, die auf "Abfrage" stehen, denke ich. Wobei der Zeitstempel vom Objekt sich nicht alle 200ms ändert, sondern nur bei Änderung...