Ich habe seit neustem eine Beckhoff SPS am laufen, die von meiner Wetterstation alle Daten abfragt
und u.a. via Modbus IPS zu Verfügung stellt.
An der SPS sind verschiedene Sensoren angeschlossen mit mehreren Schnittstellen und Protokollen.
Ich möchte gerne die Daten graphisch in IPS anzeigen. Dazu logge ich die entsprechende Modbus-Variable
und zeige dazu den Graph an. Soweit alles kein Problem.
Das Problem ist aber, wenn ich z.B. die SPS starte, dann sind Initial die Modbus-Variablen in der SPS alle erstmal „Null“.
Da IPS die Daten regelmäßig von der SPS abfragt, übernimmt der auch die Initialen Nullwerte.
Wie gesagt, sind die IPS-Variablen geloggt => also habe ich plötzlich überall eine Null geloggt
Die Graphen sind natürlich dann unbrauchbar (z.B. beim Luftdruck, der nie Null sein kann).
Ich muss also verhindern, dass Illegale Werte nicht verarbeitet / geloggt werden.
ja, sowas hatte ich mir auch schon gedacht, aber verworfen, da zu aufwendig (wir reden von ca. 30-50 Werten…).
Ich könnte die Werte aus der SPS via Modbus abfragen (Normal über Modbus Instanzen).
Nun könnte ich via getriggerten Script die ausgelesenen Werte in eine weitere Variable übertragen,
natürlich nur wenn diese „gültig“ sind. die 2. Variable wird dann geloggt.
Frage:
Gibt es Scriptbefehle um ein Wert über Modbus abzufragen?
Ich finde nur Befehle zum schreiben von Modbus Werten.
Hintergrund: Ich könnte ein Script schreiben, was alle Daten regelmäßig ausließt, bewertet und dann in die
entsprechenden Variablen schreibt.
Das erspart das anlegen von 30 Instanzen. Außerdem verringert es die Netzlast.
Aber noch eine Idee > ich kenne die jeweiligen Werte nicht. Aber man könnte alle Werte durch eine Funktion schicken und dort prüfen, ob der aktuelle Werte der Variable sich zu sehr (müsste man definieren) vom alten Wert der Variable abweicht und dann „ablehnen“!? Oder man definiert halt einmal alle Wert-Bereiche und hat trotzdem dann nur eine Funktion wo alle Werte durch müssen.
Ooooder, vlt. schöner und einfacher > du musst erkennen wann SPS „frisch startet“ und in diesem Moment wird einfach alles an Werten ignoriert vom IPS und nichts in die Variablen geschrieben und erst dann wieder akzeptiert, wenn der SPS-Start X Sekunden/Minuten vorbei ist?!