# LGF_Integration (FB / 3.1.0)

Übersicht

Autor: Siemens Digital Industries

## Kurzbeschreibung

Die Funktion berechnet näherungsweise die Fläche unter einer Funktionskurve (das Integral). Die Funktionskurve wird als analoger Wert `value` (LReal) übertragen, der sich mit der Zeit ändert. Der Integralwert wird auf `integral` ausgegeben.
Die Implementierung basiert auf der Trapezregel und verwendet Sekunden [s] als Zeitbasis, z. B. Geschwindigkeit [m/s].

### Baustein Schnittstelle

| LGF_Integration (FB) |
--- | --- | ---
Bool |  |  | enable |  | integral |  |  | LReal
LReal |  |  | value |  | error |  |  | Bool
Bool |  |  | reset |  | status |  |  | Word
|  |  |  |  | subfunctionStatus |  |  | Word

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
enable | Bool | FALSE | Aktivierung der Integral Rechnung Wird dieser Eingang auf den Wert `FALSE` berechnung gestoppt und der Ausgang `integral` zeigt den zuletzt berechneten Wert.
value | LReal | 0.0 | Analogwert der kontinuierlichen Funktionskurve, basierent auf [s], (z.B. [Volumenstrom/s])
reset | Bool | FALSE | Setzt den Ausgang "integral" auf "0.0".

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
integral | LReal | Integral Wert
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)
subfunctionStatus | Word | Status oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0000 | STATUS_EXECUTION_FINISHED_NO_ERROR Status: Kein Fehler während der Ausführung
16#8600 | ERR_READ_SYS_TIME Fehler: Lesen der Systemzeit `RD_SYS_T` endet mit einem Fehler - weitere infos in `subFunctionStatus`

## Funktionsbeschreibung

Hinweis
  In `subFunctionStatus` wird der Status von aufgerufenen Anweisungen ausgegeben. Der Ausgangswert in `status` gibt in diesem Fall an, welche Anweisung den Fehler verursacht hat. Holen Sie sich in diesem Fall die Informationen aus der TIA Portal Online Hilfe zu den jeweiligen Anweisungen.

Die Integralberechnung beinhaltet die Aufsummierung jener Trapezflächen, die sich zwischen den letzten beiden Funktionswerten am Eingang `value` und der Zeit aufspannen. Die vergangene Zeit wird über die Systemzeit der CPU berechnet. Diese Trapezfläche ist identisch mit dem Produkt aus dem Mittelwert der beiden Prozesswerte und dem Zeitintervall.

HINWEIS
  Die Berechnung benutzt [s] als Zeitbasis. Das heisst, das der Analogwert die selbe Zeitbasis besitzen muss, z.B. [Volumenstrom/s].

A = \frac{1}{2} * (F_{t_1}+F_{t_0}) * (t_1-t_0) + \frac{1}{2} * (F_{t_2}+F_{t_1}) * (t_2-t_1) + ...

Abbildung: Funktionsweise

Start der Integralberechnung für den Eingangswert am Parameter `value`:

- Parameter `enable` auf den Wert `TRUE` setzen,
- Parameter `reset` auf den Wert `FALSE` setzen.

Wird der Parameter `enable` auf den Wert `FALSE` gesetzt, wird die Integralberechnung gestoppt und der Ausgang `integral` gibt den zuletzt berechneten Wert aus.
Wird der Parameter `reset` auf den Wert `TRUE` gesetzt, wird der Ausgang `integral` auf `0.0` zurückgesetzt.

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 17.02.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
| 1.1.0 | Simatic Systems Support
| 12.11.2019 | Regions, comments and constants are added, code refactored
| 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
| 09.02.2021 | Insert documentation
| 3.0.2 | Simatic Systems Support
| 07.06.2021 | Fix bug - incompatibility with S7-1200 and LTIME
| 3.1.0 | Simatic Systems Support
| 11.07.2025 | Fix bug - Time measurement and calculation for nanoseconds fixed Fix Wording/Bug - Time measurement scaling [ms] / [s] - timing for calculatiuon is bnased on seconds