# LGF_LimRateOfChangeAdvancedCI (FB / 3.0.1)

Übersicht

Autor: Siemens Digital Industries

## Kurzbeschreibung

Die Funktion `LGF_LimRateOfChangeAdvancedCI` begrenzt die Änderungsgeschwindigkeit einer Eingangsgröße. Aus Sprungfunktionen werden Rampenfunktionen. Zusätzlich verfügt der Baustein über verschiedene Betriebsarten.

### Baustein Schnittstelle

| LGF_LimRateOfChangeAdvancedCI (FB) |
--- | --- | ---
LReal |  |  | autoValue |  | outputValue |  |  | LReal
LReal |  |  | manualValue |  | posUpRateLim |  |  | Bool
LReal |  |  | setPosUpRateLim |  | posDownRateLim |  |  | Bool
LReal |  |  | setPosDownRateLim |  | negUpRateLim |  |  | Bool
LReal |  |  | setNegUpRateLim |  | negDownRateLim |  |  | Bool
LReal |  |  | setNegDownRateLim |  | highLim |  |  | Bool
LReal |  |  | setHighLim |  | lowLim |  |  | Bool
LReal |  |  | setLowLim |  | error |  |  | Bool
LReal |  |  | defaultOutValue |  | status |  |  | Word
Bool |  |  | enDefaultOutValue |  | subfunctionStatus |  |  | Word
Bool |  |  | track |  |  |  |  |
Bool |  |  | manOp |  |  |  |  |
Bool |  |  | reset |  |  |  |  |
OB_CYCLIC |  |  | callOB |  |  |  |  |

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
autoValue | LReal | 0.0 | Eingangssignal das verarbeitet und in seiner Änderungsrate begrenzt wird
manualValue | LReal | 0.0 | Manuell kontrollierter Ausgabe Wert (`outputValue` = `manualValue`)
setPosUpRateLim | LReal | 0.0 | Änderungsrate pro Sekunde für die steigende Rampe im positiven Wertebereich (1/Sekunde)
setPosDownRateLim | LReal | 0.0 | Änderungsrate pro Sekunde für die fallende Rampe im positiven Wertebereich (1/Sekunde)
setNegUpRateLim | LReal | 0.0 | Änderungsrate pro Sekunde für die steigende Rampe im negativen Wertebereich (1/Sekunde)
setNegDownRateLim | LReal | 0.0 | Änderungsrate pro Sekunde für die fallende Rampe im negativen Wertebereich (1/Sekunde)
setHighLim | LReal | 0.0 | Oberer Grenzwert
setLowLim | LReal | 0.0 | Unterer Grenzwert
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 | Eingangsgröße durchschalten / Nachführen (`outputValue` = `autoValue`)
manOp | Bool | FALSE | Manueller Modus (`outputValue` = `manualValue`)
reset | Bool | FALSE | Gesamter Neustart der Funktion
callOB | OB_CYCLIC | --- | Aufrufender Weckalarm-OB (Cyclic Interrupt OB)

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
outputValue | LReal | Ausgangsgröße
posUpRateLim | Bool | Anstiegsbegrenzung im positiven Bereich angesprochen
posDownRateLim | Bool | Abstiegsbegrenzung im positiven Bereich angesprochen
negUpRateLim | Bool | Anstiegsbegrenzung im negativen Bereich angesprochen
negDownRateLim | Bool | Anstiegsbegrenzung im negativen Bereich angesprochen
highLim | Bool | Obere Begrenzung erreicht
lowLim | Bool | Untere Begrenzung erreicht
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_FINISHED_NO_ERROR Status: Abarbeitung ohne Fehler beendet
16#8200 | ERR_NEG_RATE_LIM Fehler: Obergrenze unterhalb der Untergrenze. Obere Begrenzung `setHighLim` muss größer sein als die untere Begrenzung `setLowLim`.
16#8202 | ERR_NEG_RATE_OF_CHANGE Fehler: Negative Änderungsrate. Parameter für die Änderungsrate darf nicht negativ sein.
16#8600 | ERR_QRY_CINT Fehler in Anweisung `QRY_CINT` - weitere Infos in `subFunctionStatus`
16#8601 | ERR_OB_UNAVAILABLE Fehler: OB am Eingang `callOB` ist nicht projektiert / vorhanden. Verschalten Sie am Eingang `callOB` den Konstanten Namen eines projektierten Weckalarm-OB.

## 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.

Für den positiven/negativen Wertebereich sind je zwei Änderungsraten für die Rampe (steigende und fallende Werte) parametrierbar. Über Steuereingänge ist die Auswahl folgender Betriebsarten möglich:

- Neustart
- Ausgang vorbelegen
- Normalbetrieb (Automatik)
- Regelgröße durchschalten (Hand)
- Nachführen

Die Ausgangsgröße kann durch zwei parametrierbare Grenzen begrenzt werden. Eine aktive Begrenzung der Änderungsrate einer Rampe sowie eine aktive Begrenzung der Ausgangsgröße werden über Ausgänge gemeldet.

Der Zeittakt des aufrufen Weckalarm-OBs wird ermittelt, in dem am Eingangs-parameter `callOB` der aufrufende Weckalarm-OB verschaltet wird.

### Neustart

Bei Neustart `reset = TRUE` wird der Ausgang `outputValue` auf `0.0` rückgesetzt.
Wenn `enDefaultOutValue = TRUE` gesetzt ist, wird `defaultOutValue` ausgegeben. Alle Signalausgänge werden auf `FALSE` gesetzt.

### Ausgang vorbelegen

Wenn `enDefaultOutValue = TRUE` gesetzt ist, wird am Ausgang der Wert an `defaultOutValue` ausgegeben. Bei Änderung von `TRUE` nach `FALSE` wird `outputValue` von `defaultOutValue` nach `autoValue` rampenförmig gefahren. Beim Wechsel von `FALSE` nach `TRUE` springt der Ausgang `outputValue` sofort zu `defaultOutValue`.

### Normalbetrieb

Die Rampen sind Begrenzungsgeraden und beziehen sich auf eine Änderungsrate pro Sekunde; wird zum Beispiel `setPosUpRateLim = 10.0` parametriert, so wird bei einer Abtastzeit von 1s/100ms/10ms bei jedem Bausteinaufruf, wenn `autoValue > outputValue` ist, 10.0/1.0/0.1 zu `outputValue` addiert, bis `autoValue` erreicht ist.

Die Begrenzung der Änderungsrate ist jeweils in positivem und negativem Wertebereich für den Anstieg und den Abfall parametrierbar.

Tabelle: Kennzeichnung der Rampen

Parameter | Rampe
--- | ---
setPosUpRateLim | `outputValue > 0.0` und `|outputValue|` steigend
setPosDownRateLim | `outputValue > 0.0` und `|outputValue|` fallend
setNegUpRateLim | `outputValue < 0.0` und `|outputValue|` steigend
setNegDownRateLim | `outputValue < 0.0` und `|outputValue|` fallend

Wenn keine Parametrierung der Rampen vorgenommen wird (`setPosUpRateLim`, `setPosDownRateLim`, `setNegUpRateLim` und `setNegDownRateLim` gleich `0.0`), bleibt der Ausgang auf dem Wert `0.0` und der Normalbetrieb ist außer Funktion.

### Nachführen

Ist der Eingang `track = TRUE` gesetzt, wird die Eingangsgröße `autoValue` direkt zur Ausgangsgröße `outputValue` durchgeschaltet. Somit werden auch Sprünge der Eingangsgröße ausgegeben.

### Regelgröße durchschalten

Wenn `manOp = TRUE` gesetzt ist, wird die Regelgröße `manualValue` direkt auf die Ausgangsgröße `outputValue` durchgeschaltet.

In dieser Betriebsart sind die Parametrierung der Rampen bzw. der oberen/unteren Begrenzung der Ausgangsgröße und die Vorbelegung des Ausgangs unwirksam.

Beim Wechsel von `TRUE` nach `FALSE`, wird der Ausgang `outputValue` nach `autoValue` wieder rampenförmig gefahren.

Sobald der Werteabschnitt zwischen der unteren und oberen Begrenzung erreicht ist, wird die obere und untere Begrenzung wieder aktiviert.

Abbildung: Rampenfunktionsverlauf, Betriebsarten

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Siemens Industry Online Support
| 21.06.2016 | First released version
| 1.0.1 | Siemens Industry Online Support
| 02.01.2017 | Upgrade: TIA Portal V14 Update 1
| 1.0.2 | Siemens Industry Online Support
| 17.08.2018 | Upgrade: TIA V15 Update 2
| 1.0.3 | Siemens Industry Online Support
| 23.11.2018 | Upgrade: TIA V15.1
| 1.0.7 | Simatic Systems Support
| 15.11.2019 | Regions, comments and constants are 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
| 22.03.2021 | Insert documentation