ROTH automation GmbH
Facebook XING Google Plus Twitter

Bildung des Mittelwerts mit Siemens S7 Step7

Ein effizientes Beispiel aus unserer Toolbox für Siemens PLC's.

Die Bildung eines Mittelwerts ist ein Thema welches sehr oft sinnvoll bzw. notwendig in jeder SPS eingesetzt werden muss. ROTH automation GmbH hat eine einfache Funktion entwickelt, welche mit nur 15 Programmzeilen auskommt, effektiv und einfach anzuwenden ist.
Viele Programmierer greifen zu drastischen speicher- und arbeitsintensiven Methoden, um einen Mittelwert zu bilden. So wird klassisch ein Ringregister aufgebaut, mit der Anzahl der Werte, von denen der Mittelwert gebildet werden muss. Das kostet Speicherplatz und der Mittelwert steht erst zur Verfügung wenn die Anzahl der Werte, die den Mittelwert ausmachen sollen, gelesen wurden. So benötigt dann ein Mittelwert von 20 Real Werten mindestens 21 CPU Zyklen und 40 Worte Speicher. Unsere Variante benötigt keinen Speicher und der Mittelwert steht schon ab dem ersten Zyklus zur Verfügung.

Sprungantwort, aufgezeichnet mit unserer Prozessvisualisierung, der PRNetBox

Mathematisch ist die vorgestellte Lösung nicht gleich, wenn der Mittelwert über ein Ringregister gebildet wird. Da immer nur der letzte aktuelle Wert im Verhältnis der Anzahl der Mittelwerte eingeht, ergibt sich eine asymptotische Annäherung. Geht man von einem konstanten Aktualwert aus, dann kann dieser theoretisch auch nie erreicht werden, praktisch ist das jedoch durch die Rundungsdifferenz vernachlässigbar. Gegenüber der klassischen Mittelwertbildung über Ringregister glättet unsere Lösung besser, was ja genau Sinn und Zweck ist.

Quellcode zur Bildung des Mittelwerts

Der Aufruf des FC92 sollte zeitgesteuert erfolgen, also z.B. im OB35. Die Werte werden im Real Format übergeben. Sollte der FC in einem FB eingesetzt werde, dann ist darauf zu achten, dass der Wert Average nicht temporär deklariert ist, da der Baustein beim nächsten Zyklus den Mittelwert wieder liest. Deshalb ist der Formalparameter als InOut deklariert.
Um eine Division durch Null zu vermeiden, wird am Bausteineingang die Zahl für die Mittelwertbildung geprüft. Ist diese kleiner oder gleich 1, wird der eingelesene Wert unverändert als Mittelwert ausgegeben. Möchte man beispielsweise einen Mittelwert von 20 Analogwerten bilden, dann steht schon nach dem ersten Durchlauf der erste gelesene Wert als Mittelwert zur Verfügung. Sollte das Ausgangswort Average davor Null gewesen sein, dann wird sich der Mittelwert sehr schnell dem Aktualwert nähern, obwohl ja nur (wie in unserem Beispiel beschrieben) pro Bearbeitungszyklus nur 1/19 Anteil dazu kommt. Diese Systemeigenschaft ist nicht unvorteilhaft, da plötzliche Sprungwerte für Regelungen unvorteilhaft sind. Außerdem ist ein solches Verhalten von Analogwerte in der Regel sogar fehlerhaft.

Achtung: Es ist zu Beachten, dass dieser Funktion keine ungültigen Real Werte übergeben werden, da dann der Mittelwert ebenfalls ungültig wird und manuell zurückgesetzt werden muss! Ungültige Werte sind: Hexadezimalen mit der folgende Darstellungen: 7FFFFFF, 7F800000, FF800000.

ROTH automation übernimmt keine Verantwortung für Kosten oder Schäden die im Zusammenhang mit dem oben beschriebenen Programmcode stehen könnten. Gerne verbessern, erweitern oder ergänzen wir die vorgestellten Funktionen und freuen uns auf Ihre Anfragen oder Anregungen.

Möchten Sie mehr von unseren Erfahrungsberichten lesen? Klicken Sie hier um zur Übersicht zurückzukehren.

 

Lesen Sie auch unsere Bericht über unseren Datenlogger, die perfekte Ergänzung zu Ihrer SPS Steuerung. Zur Übersicht gelangen Sie hier.