NEWS
S7 Adapter übermittelt vereinzelt stark schwankende Werte
-
Halo zusammen,
ich steuere mit meiner S7 1214 über einen angelegten DB den Multiplus2 Wechselrichter meiner kleinen PV-Versuchsanlage. Da ich der Kommunikation zwischen iobroker und der S7 nicht ganz vertraut habe, wurden alle übertragenen Werte mal per Trace beobachtet. Dabei stellte sich heraus, dass Werte wie z.B. aktueller SOC des Akkus, oder auch Netz-Bezugsleistung teilweise bis in den fünfstelligen Bereich ausbrechen. Also es werden auf SPS Seite manchmal ganz krasse Peaks aus dem DB geholt - die aber gar nicht vorhanden sind. Zum Einen kann der SOC nicht bei 20.000 stehen, zum Anderen habe ich die Bezugsleistung parallel in Grafana visualisiert - definiv keine Peaks vorhanden.
Nachdem ich das Poll-Delay auf 500ms gesetzt hab, hat sich das Thema mit den Peaks etwas verbessert, aber nicht zufriedenstellend. Ich kann mit solchen, wenn auch selten, auftretenden Peakwerten nicht zuverlässig meinen Wechselrichter steuern/regeln.
Hat hierzu jemand eine Idee woran das liegen könnte?
-
@hf_spsler schau mal hier: https://github.com/ioBroker/ioBroker.s7/issues/13 das Thema ist jetzt schon über 5 Jahre ungelöst, aber wir sind dem Ganzen auf der Spur: https://forum.iobroker.net/post/1109064
-
@fu_zhou Nun das ist seltsam. Hab jetzt gerade noch mal die Modbus-Doku durchgeschaut, meine Modbus-Adapterinstanz angesehen, die Datentypdefinition im S7 Adapter kontrolliert und bis auf das ich im S7 Adapter nicht explizit den Typ Uint16 sondern nur INT auswählen kann gibt es keine REAL Definition.
Mal davon abgesehen, dass sich da jetzt seit über fünf Jahren nix an dem Issue getan hat - was schon irgendwie ärgelich ist - man hat es hier mit einem Integer zu tun, nicht mit einem REAL.
Könnte es sein, dass sich bereits auf der Modbus-Seite in der Übertragung vom Wechselrichter an die "Steuerzentrale" (VenusOS auf Raspi) aufgrung kippender bits solch ein Wertefehler einschleicht?
Oder, was könnte denn unternommen werden um der Sache, sagen wir mal, etwas mehr Nachdruck zu verleihen?
-
@hf_spsler Es hat sich im Laufe der Zeit herausgestellt, dass das alle Zahlen-Werte (=nicht-Bool) betrifft: Byte, Wort, Doppelwort - ob Integer, Doppelinteger oder Real. Es gibt aktuell einen Workaround, der funktioniert, in dem in einem Java-Script unter Umgehung des Adapters die Werte in die S7 geschrieben werden. Mir ist auch daran gelegen, dass das richtig funktioniert, aber die Anwender, die den S7-Adapter brauchen und Javascript beherrschen und Lust haben, das zu debuggen, ist sehr überschaubar gewesen in den letzten 5 Jahren ;-(. Der eine oder andere ist auf node-red umgestiegen, da gibt es auch eine S7 Kopplung, das kommt für mich aber nicht in Frage. Wegen Workaround schau mal hier:
https://forum.iobroker.net/post/1109064
Ich hoffe auch, dass @Wal die Lust nicht verliert und dass ihm/ uns demnächst der Durchbruch gelingt! -
@hf_spsler sagte in S7 Adapter übermittelt vereinzelt stark schwankende Werte:
nicht explizit den Typ Uint16 sondern nur INT auswählen kann
wenn ich im Modbus Adapter den falschen Typ wähle (UINT statt INT, little statt big Endian) kommt definitiv etwas falsches raus.
ich hab den Cerbo über TCP-IP angeschlossen.
(8, 16 UND 32 BIT ist selbstverständlich auch korrekt einzustellen) -
@homoran Danke für die Infos.
Nun, der SOC ist in der Modbustabelle als uint16 definiert, so ist es in der Instanz des Modbusadapters im iobroker auch parametriert:
Wie oben im Screenshot meiner Trace-Messung zu sehen ist der SOC Wert, oder aber auch ab und zu mal andere Werte, ja nicht dauerhaft nonsens sondern nur sporadisch. Beim SOC könnte ich das auf der SPS Seite noch abfangen, der kann ja nicht größer als 100% sein. Aber bei Werten wie z.B. Netzbezug kann ich keine Plausibilitätsprüfung machen da hier Werte zwischen 0 und, keine Ahnung, 30W- 40.000Watt auftreten können.
Im S7 Adapter kann ich nicht explizit den Datentyp ohne Vorzeichen wählen:
Ich verfolge jetzt mal den Link vom @fu_zhou - vielen Dank euch bis hier her! Wäre klasse wenn der Adapter künftig einwandfrei funzen würde.
-
@hf_spsler sagte in S7 Adapter übermittelt vereinzelt stark schwankende Werte:
ja nicht dauerhaft nonsens sondern nur sporadisch
in der Modus-Instanz auch?
-
@homoran Nein, den Wert aus der Modbus-Instanz lege ich per SQL ab um ihn in Grafana darzustellen, da gab es bisher keinerlei Ausreißer.
-
@hf_spsler Danke!
ich dachte ich hätte da was durcheinander gebracht.