# LGF_ScaleLinear (FC / 3.0.1)

Übersicht

Autor: Siemens Digital Industry Support

## Kurzbeschreibung

Diese Funktion skaliert eine Eingangsgröße (`LReal`) über eine lineare Geradengleichung.

### Baustein Schnittstelle

| LGF_ScaleLinear (FC) |
--- | --- | ---
LReal |  |  | x |  | Ret_Val |  |  | LReal
LReal |  |  | x1 |  | error |  |  | Bool
LReal |  |  | y1 |  | status |  |  | Word
LReal |  |  | x2 |  |  |  |  |
LReal |  |  | y2 |  |  |  |  |
LReal |  |  | yMin |  |  |  |  |
LReal |  |  | yMax |  |  |  |  |

### Input Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
x | LReal | Eingangswert `x` der skaliert werden soll.
x1 | LReal | Punkt 1 (P1) - `x` Koordinate der linearen Funktion.
y1 | LReal | Punkt 1 (P1) - `y` Koordinate der linearen Funktion.
x2 | LReal | Punkt 2 (P2) - `x` Koordinate der linearen Funktion.
y2 | LReal | Punkt 2 (P2) - `y` Koordinate der linearen Funktion.
yMin | LReal | Unterer Grenzwert des Ausgangs.
yMax | LReal | Oberer Grenzwert des Ausgangs.

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
Ret_Val | LReal | Skalierter Ausgangswert `y`
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)

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_FINISHED_NO_ERROR Status: Abarbeitung ohne Fehler beendet
16#6001 | WARN_Y_LIMITED_TO_YMIN Warnung: Ausgabewert auf `yMin` begrenzt
16#6002 | WARN_Y_LIMITED_TO_YMAX Warnung: Ausgabewert auf `yMax` begrenzt
16#8200 | ERR_LOW_LIM_OVER_UP_LIM Fehler: Unterer Grenzwert `yMin` ist größer als oberer Grenzwert `yMax`.

## Funktionsbeschreibung

Die Funktion skaliert eine Eingangsgröße (z. B. ein Analogeingangswert) linear auf eine bestimmte Ausgangsgröße (z. B. Füllstand).

Zur Bestimmung der Ausgangsgröße wird in der Funktion folgende lineare Geradengleichung angewendet:

x = \frac{y_2 - y_1}{x_2 - x_1} * (x - x_1) + y_1

Die Gerade wird durch die zwei Punkte, P1 und P2, beschrieben. Die Punkte geben Sie im Sinne eines kartesischen Koordinatensystems durch x- und y-Koordinaten vor.

Hinweis
  Falls die Werte der Parameter `x1` und `x2` gleich sind, wird am Ausgang `y` der Wert von `y1` ausgegeben.

Mit der Angabe von `yMin` und `yMax` können Sie den berechneten Wert von `y` auf einen unten und oben begrenzten Bereich einschränken. Somit vermeiden Sie Über- und Untersteuerungsbereiche.

Abbildung: Graphische Darstellung

### Beispiel

An einer Analogeingangsbaugruppe liegt ein Signal von 4 bis 20mA an. Dieses Signal wird zu dem CPU-internen Wert von 0 bis 27648 gewandelt, um einen Füllstand zu messen. Dabei entsprechen 0 dem Füllstand 0,0m und 27648 dem Füllstand 1,7m.

Den Baustein müssen Sie dann wie folgt parametrieren:

- P2: x1 = 0; y1 = 0,0
- P2: x2 = +27648; y2 = 1,7
- yMin = 0,0; yMax = 1,7;

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 27.01.2017 | First released version
| 1.0.1 | Siemens Industry Online Support
| 17.08.2018 | Upgrade: TIA V15 Update 2
| 1.0.2 | Siemens Industry Online Support
| 23.11.2018 | Upgrade: TIA V15.1
| 2.0.0 | Simatic Systems Support
| 25.01.2019 | Data type changed from Variant to LReal
| 2.0.1 | Simatic Systems Support
| 25.06.2019 | Standard header and block parameters update, status parameter added LReal value comparison added Result parameter changed to return value of FC for use in SCL Warning number changed to range of 16#6xxx refactor variable handling and extract returns in between the code add ENO handling
| 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
| 12.11.2020 | Insert documentation Move to folder "Math operations"