# LGF_NonLinearInterpolation (FB / V3.0.1)

Autor: Siemens Digital Industries

## Kurzbeschreibung

Diese Funktion realisiert eine Kennlinie. Die Kennlinie wird über eine Stützpunkttabelle mit linearer Interpolation zwischen den Stützpunkten vorgegeben. Ein vorgegebener Eingangswert generiert in jedem Zyklus anhand der Kennlinie aus der Stützpunkttabelle einen Ausgangswert.

### Baustein Schnittstelle

| LGF_NonLinearInterpolation (FB) |
--- | --- | ---
LReal |  |  | value |  | outputValue |  |  | LReal
LReal |  |  | defaultOutValue |  |  |  |  |
Bool |  |  | enDefaultOutValue |  |  |  |  |
Bool |  |  | track |  |  |  |  |
Bool |  |  | reset |  |  |  |  |
Array[*] of LGF_typeNonLinSetpoints |  |  | setpoints |  |  | Array[*] of LGF_typeNonLinSetpoints

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
value | LReal | 0.0 | Eingangswert zur Berechnung des Ausgangswerts über die definierte Kennlinie.
defaultOutValue | LReal | 0.0 | Wert für die Default Vorbelegung der Ausgangsgröße (`outputValue` = `defaultOutValue`)
enDefaultOutValue | Bool | FALSE | Zuweisen des Default Ausgangswert (`outputValue` = `defaultOutValue`)
track | Bool | FALSE | Der Wert des Ausgangs `outputValue` wird dem Wert des Eingangs `value` ohne Nutzung der Kennlinie nachgeführt, solange dieser Eingang gesetzt ist. (`outputValue` = `value`)
reset | Bool | FALSE | Falls im laufenden Betrieb die Stützpunkttabelle verändert wird, muss anschließend den Eingang `reset` betätigt werden. Sonst kann der Baustein die korrekte Ausführung nicht gewährleisten. (`outputValue` = 0.0)

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
outputValue | LReal | Der Ausgangswert, der anhand des Eingangswerts über die definierte Kennlinie berechnet wurde.

### In/Out Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
setpoints | Array[*] of LGF_typeNonLinSetpoints | Stützpunkttabelle zur Definition der Kennlinie (Polynom)

## Benutzer definierte Datentypen

### LGF_typeNonLinSetpoints (UDT)

Datentype zur Erstellung einer Stützpunkttabelle für die Funktion `LGF_NonLinearInterpolation`

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
inputValue | LReal | 0.0 | Eingangswert für die Interpolation
outputValue | LReal | 0.0 | Korrespondierender Ausgabewert

## Funktionsbeschreibung

Der Wert des Ausgangs `outputValue` wird anhand folgender Priorität ausgegeben:

1. Solange der Eingang `enDefaultOutValue` gesetzt ist, wird der über den Parameter `defaultOutValue` definierte Wert als Ausgangswert ausgegeben.
2. Solange der Eingang `reset` gesetzt ist, wird der Baustein zurückgesetzt und als Ausgangswert wird der Wert `0.0` ausgegeben.
3. Wenn der Eingang `track` gesetzt ist, wird als Ausgangswert direkt der Eingangswert ohne Berücksichtigung der Kennlinie ausgegeben.
4. Anhand des Eingangswerts wird über die linear interpolierte Stützpunkttabelle ein Kennlinienwert berechnet und als Ausgangswert ausgegeben.

- Befindet sich der Eingangswert zwischen zwei Stützpunkten innerhalb der Stützpunkttabelle, wird der Ausgangswert als Schnittpunkt mit der Verbindungsgeraden zwischen dem vorhergehenden und nachfolgenden Stützpunkt berechnet (siehe Abbildung unten).
- Befindet sich der Eingangswert vor dem ersten Stützpunkt (geringster Wert der in der Stützpunkttabelle definiert wurde), wird der Ausgangswert als Schnittpunkt der Geraden berechnet, die aus den ersten beiden Stützpunkten der Stützpunkttabelle gebildet wird.
- Befindet sich der Eingangswert hinter dem letzten Stützpunkt (höchster Wert der in der Stützpunkttabelle definiert wurde), wird der Ausgangswert als Schnittpunkt der Geraden berechnet, die aus den letzten beiden Stützpunkten der Stützpunkttabelle gebildet wird.

###### Stützpunkttabelle

Die Stützpunkttabelle wird durch eine Variable vom Datentyp Array realisiert. Der Typ des Arrays entspricht dem PLC-Datentyp `LGF_typeNonLinSetpoints`.

Die Stützpunkttabelle können Sie in einem beliebigen globalen Datenbaustein anlegen. Die Größe des Arrays ist von der Anzahl der Stützpunkte abhängig.

Abbildung: Beispielhafter Verlauf des Ausgangssignals

ACHTUNG
  Um die Rechenzeit des Bausteins möglichst gering zu halten, wird keine Überprüfung der Parametrierung oder der Daten der Stützpunkttabelle vorgenommen.

  Beim Eintragen der Stützpunkte in die Stützpunkttabelle muss auf folgende Besonderheiten geachtet werden. Andernfalls kann es zu einem Fehlverhalten des Bausteins führen.

  - In der Stützpunkttabelle müssen mindestens zwei Stützpunkte eingetragen sein.
  - Die Stützpunkte in der Stützpunkttabelle müssen in aufsteigender Reihenfolge der Eingangswerte in der Tabelle eingetragen sein.

###### Beispiel

Abbildung: Exemplarischer Datenbaustein

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 01.00.00 | Siemens Industry Online Support
| 04.01.2017 | First released version
| 01.00.01 | Siemens Industry Online Support
| 17.08.2018 | Upgrade: TIA V15 Update 2
| 01.00.02 | Siemens Industry Online Support
| 23.11.2018 | Upgrade: TIA V15.1
| 01.00.06 | Simatic Systems Support
| 15.11.2019 | Regions, comments and constants are 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
| 22.03.2021 | Insert documentation