Der einfachste Fall einer Regression ist die Regressionsgerade. Das heißt der angenommene Zusammenhang zwischen Ein- und Ausgangssignal ist eine lineare Gerade.
Abbildung: Regressionsline
LGF_RegressionLine (FC) | ||||||||
---|---|---|---|---|---|---|---|---|
Ret_Val | Void | |||||||
slope | LReal | |||||||
intercept | LReal | |||||||
error | Bool | |||||||
status | Word | |||||||
Array[*] of LGF_typeRegressionLine | values | Array[*] of LGF_typeRegressionLine | ||||||
Bezeichner | Datentyp | Beschreibung |
---|---|---|
Ret_Val | Void | Void - Funktion hat keinen Rückgabewert |
slope | LReal | Steigung der Geraden |
intercept | LReal | Schnittpunkt mit der Y-Achse |
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) |
Bezeichner | Datentyp | Beschreibung |
---|---|---|
values | Array[*] of LGF_typeRegressionLine | Die Datenpunkte werden mit Ihren X- und Y-Werten übergeben. Der Datentyp `LGF_typeRegressionLine` hat den folgenden Aufbau: • x (Real) • y (Real) |
Code / Wert | Bezeichner / Beschreibung |
---|---|
16#0000 | STATUS_EXECUTION_FINISHED Status: Abarbeitung ohne Fehler beendet |
16#8200 | ERR_NOT_ENOUGH_VALUES Fehler: Zu wenig Werte. Der Baustein benötigt mindestens zwei Wertepaare, um eine Regressionsgerade zu berechnen. Vergrößern Sie das Array am Eingangsparameter `values` in der zweiten Dimension. |
Der Datentyp ist zum Transfer von Datenpunkten (Schlüssel-Werte Paare / Key- Value pairs) nach LGF_RegressionLine
und der Berechnung für die Parameter Steigung und Y-Achsenabschnitt der interpolierten Geradengleichung.
Bezeichner | Datentyp | Default Wert | Beschreibung |
---|---|---|---|
x | Real | 0.0 | X-Achsen Wert |
y | Real | 0.0 | Y-Achsen Wert |
Der Baustein berechnet die Regressionsgerade mit folgender Geradengleichung:
f(x) = m \cdot x + t
m: Steigung der Gerade
t: Schnittpunkt mit y-Achse
N: Anzahl der Array Elemente
Die Steigung m wird mit folgender Gleichung berechnet:
m = \frac{n \cdot \sum_{1}^{N}(x(n) \cdot y(n)) - (\sum_{1}^{N}x(n) \cdot \sum_{1}^{N}y(n))}{n \cdot \sum_{1}^{N} x^2(n) - (\sum_{1}^{N}x(n))^2}Der Schnittpunkt t mit der Y-Achse wird mit folgender Gleichung berechnet:
t = \frac{\sum_{1}^{N} y(n)}{N} - b \cdot \frac{\sum_{1}^{N} x(n)}{N}Version & Datum | Änderungsbeschreibung | |
---|---|---|
01.00.00 | Siemens Industry Online Support | |
23.11.2018 | First released version | |
01.00.04 | Simatic Systems Support | |
15.11.2019 | Code refactoring, comments added | |
03.00.00 | Simatic Systems Support | |
23.04.2020 | Set version to V3.0.0, harmonize the version of the whole library | |
03.00.01 | Simatic Systems Support | |
06.04.2021 | Insert documentation |