# LGF_RegressionLine (FC / 3.0.1)

Übersicht

Autor: Siemens Digital Industry

## Kurzbeschreibung

Der einfachste Fall einer Regression ist die Regressionsgerade. Das heißt der angenommene Zusammenhang zwischen Ein- und Ausgangssignal ist eine lineare Gerade.

Abbildung: Regressionsline

### Baustein Schnittstelle

| LGF_RegressionLine (FC) |
--- | --- | ---
|  |  |  |  | Ret_Val |  |  | Void
|  |  |  |  | slope |  |  | LReal
|  |  |  |  | intercept |  |  | LReal
|  |  |  |  | error |  |  | Bool
|  |  |  |  | status |  |  | Word
Array[*] of LGF_typeRegressionLine |  |  | values |  |  | Array[*] of LGF_typeRegressionLine

### Output Parameter

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)

### In/Out Parameter

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)

### Status & Error Meldungen

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.

## Benutzer definierte Datentypen

### LGF_typeRegressionLine (UDT / V3.0.1)

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

## Funktionsbeschreibung

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}

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 23.11.2018 | First released version
| 1.0.4 | Simatic Systems Support
| 15.11.2019 | Code refactoring, comments 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