# LGF_SmoothByPolynomFC (FC / 3.0.1)

Übersicht

Autor: Siemens Digital Industry

## Kurzbeschreibung

Diese Funktion berechnet einen Mittelwert anhand eines Polynoms azyklisch.

Zur Glättung wird durch fünf Wertepunkte ein Polynom 3. Grades gelegt. Die Fehlerquadrate der Distanzen zwischen Polynom und realem Wert werden hierbei minimiert. Aus den so gewonnenen Parametern des Polynoms können die geglätteten Werte bestimmt werden.

Die Funktion liest ein Array ein, das geglättet wird. Aus N-Messwerten lassen sich N-4 geglättete Messwerte berechnen. Das Ausgabe-Array enthält im Index (0,1,N-1,N) den Wert 0. Allerdings können Ersatzwerte berechnet werden.

### Baustein Schnittstelle

| LGF_SmoothByPolynomFC (FC) |
--- | --- | ---
|  |  |  |  | Ret_Val |  |  | Void
|  |  |  |  | error |  |  | Bool
|  |  |  |  | status |  |  | Word
Array[*] of LReal |  |  | values |  |  | Array[*] of LReal
Array[*] of LReal |  |  | smoothedValues |  |  | Array[*] of LReal

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
Ret_Val | Void | Void - Funktion hat keinen Rückgabewert
error | Bool | FALSE: Kein Fehler TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
status | Word | 16#0000-16#7FFF: Status des FB 16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)

### In/Out Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
values | Array[*] of LReal | Werte, die in die Glättung eingehen sollen.
smoothedValues | Array[*] of LReal | Die geglätteten Werte.

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_FINISHED_NO_ERROR Status: Abarbeitung ohne Fehler beendet
16#8400 | ERR_ARRAYS_DIFFERENT Fehler: Die Arraygrößen sind nicht gleich. Die Arrays `values` und `smoothedValues` müssen die gleiche Größe besitzen.
16#8401 | ERR_NOT_ENOUGH_VALUES Fehler: Nicht genug Werte. Der Baustein benötigt Fünf (5) Werte, um einen geglätteten Wert zu berechnen. Vergrößern Sie das Array am Eingangsparameter `values`. Passen Sie das Array am Ausgangsparameter `smoothedValues` an die neue Größe an.

## Funktionsbeschreibung

Das Ausgleichspolynom 3.Grades wird wie folgt berechnet:

\overline{y(n)} = \frac{1}{35} \cdot (-3 \cdot y(n-2) +12 \cdot y(n-1) +17 \cdot y(n) +12 \cdot y(n+1) -3 \cdot y(n+2))

Aus den N-Messwerten lassen sich so N-4 geglättete Messwerte berechnen. Das Ausgabe-Array enthält im Index (0,1, N-1, N) den Wert 0.

Diese "fehlenden" Werte werden mit den folgenden Formalismen berechnet:

\overline{y(n-2)} = \frac{1}{70} \cdot (69 \cdot y(n-2) +4 \cdot y(n-1) -6 \cdot y(n) +4 \cdot y(n+1) -y(n+2)) \overline{y(n-1)} = \frac{2}{70} \cdot (2 \cdot y(n-2) +27 \cdot y(n-1) +12 \cdot y(n) -8 \cdot y(n+1) +2 \cdot y(n+2)) \overline{y(n+1)} = \frac{2}{70} \cdot (2 \cdot y(n-2) -8 \cdot y(n-1) +12 \cdot y(n) +27 \cdot y(n+1) +2 \cdot y(n+2)) \overline{y(n+2)} = \frac{1}{70} \cdot (-y(n-2) +4 \cdot y(n-1) -6 \cdot y(n) +4 \cdot y(n+1) +69 \cdot y(n+2))

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 23.11.2018 | First released version
| 1.0.5 | Simatic Systems Support
| 15.11.2019 | Regions, comments and constants are added
| 3.0.0 | Simatic Systems Support
| 23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library
| 3.0.1 | Simatic Systems Support
| 06.04.2021 | Insert documentation