Diese Funktion generiert eine Fahrkurve anhand einer Stützpunkttabelle. Zwischen den Punkten wird innerhalb der vorgegebenen Zeit linear interpoliert.
| LGF_RampCI (FB) | ||||||||
|---|---|---|---|---|---|---|---|---|
| LReal | defaultOutValue | outputValue | LReal | |||||
| Int | contStepNbr | actTimeTable | Bool | |||||
| Time | contStepTime | stepNumber | Int | |||||
| Bool | enDefaulftOutValue | remainTime | Time | |||||
| Bool | start | totalTime | Time | |||||
| Bool | hold | remainTotalTime | Time | |||||
| Bool | continue | error | Bool | |||||
| Bool | cyclicOP | status | Word | |||||
| Bool | updateTime | subfunctionStatus | Word | |||||
| Bool | reset | |||||||
| OB_CYCLIC | callOB | |||||||
| Array[*] of LGF_typeRampTimeTable | setpoints | Array[*] of LGF_typeRampTimeTable | ||||||
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| defaultOutValue | LReal | 0.0 | Wert für die Default Vorbelegung der Ausgangsgröße (`outputValue` = `defaultOutValue`) |
| contStepNbr | Int | 0 | Nummer des nächsten Stützpunktes zur Weiterverarbeitung |
| contStepTime | Time | T#0MS | Restzeit zum Weitermachen bis zum Stützpunkt `contStepNbr` |
| enDefaulftOutValue | Bool | FALSE | Zuweisen des Default Ausgangswert (`outputValue` = `defaultOutValue`) |
| start | Bool | FALSE | Stützpunkttabelle abarbeiten |
| hold | Bool | FALSE | Aktuellen Wert am Ausgang halten/ einfrieren |
| continue | Bool | FALSE | Weiterverarbeitung |
| cyclicOP | Bool | FALSE | Stützpunkttabelle zyklisch wiederholen |
| updateTime | Bool | FALSE | Zeitwerte aktualisieren |
| reset | Bool | FALSE | Neustart der Funktion |
| callOB | OB_CYCLIC | --- | Aufrufender Weckalarm-OB (Cyclic Interrupt OB) |
| Bezeichner | Datentyp | Beschreibung |
|---|---|---|
| outputValue | LReal | Ausgangsgröße |
| actTimeTable | Bool | Stützpunkttabelle wird bearbeitet. |
| stepNumber | Int | aktuelle Stützpunktnummer (Stützpunkt, der angefahren wird) |
| remainTime | Time | Restzeit bis Erreichen des nächsten Stützpunktes |
| totalTime | Time | Gesamtzeit für die Stützpunkt Tabelle |
| remainTotalTime | Time | Gesamtrestzeit |
| 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 |
| Bezeichner | Datentyp | Beschreibung |
|---|---|---|
| setpoints | Array[*] of LGF_typeRampTimeTable | Stützpunkttabelle. Informationen zum Datentyp `LGF_typeRampTimeTable` finden Sie unter dem Punkt "Globale Daten" . |
| Code / Wert | Bezeichner / Beschreibung |
|---|---|
| 16#0000 | STATUS_FINISHED_NO_ERROR Status: Abarbeitung ohne Fehler beendet |
| 16#7000 | STATUS_NO_CALL Status: Keine aktuelle Blockabarbeitung |
| 16#7001 | STATUS_FIRST_CALL Status: Erstaufruf, Steigende Flanke `start`. |
| 16#7002 | STATUS_FURTHER_CALLS Status: Folgeaufruf, Eingang `cyclicOP` gesetzt. |
| 16#8200 | ERR_OB_UNAVAILABLE Fehler: OB am Eingang `callOB` ist nicht projektiert / vorhanden. Verschalten Sie am Eingang `callOB` den Konstanten Namen eines projektierten Weckalarm-OB. |
| 16#8201 | ERR_ARRAY_LOWER_BOUND Fehler: Array startet nicht bei 0 / Untere Arraygrenze <> 0. Das Array mit den Stützpunkten muss mit dem Index 0 beginnen. |
| 16#8400 | ERR_QRY_CINT Fehler in Anweisung `QRY_CINT` - weitere Infos in `subFunctionStatus` |
Datentype zur Erstellung einer Fahrkurve auf der Basis einer Stützpunkttabelle für die Funktion LGF_RampCI
| Bezeichner | Datentyp | Default Wert | Beschreibung |
|---|---|---|---|
| outputValue | LReal | 0.0 | Stützpunktwert für die Interpolation zum Anfahren |
| time | Time | T#0s | Zeit innerhalb bis zu der der Stützpunkt angefahren wird |
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.Zusammen mit dem Baustein erhalten Sie automatisch den PLC-Datentyp LGF_typeRampTimeTable, der sich aus den Parametern outVal für den Wert eines Stützpunktes und time für die Zeit bis zum Erreichen des nächsten Stützpunktes zusammensetzt. Die Deklaration erfolgt in einem eindimensionalen Array vom Datentyp LGF_typeRampTimeTable beginnend mit dem Index 0. Das Array wird in einem globalen Datenbaustein angelegt und dann an den Baustein LGF_RampCI übergeben.
Abbildung: Beispiel für die Deklaration der Stützpunkte

Der Parameter time des letzten Stützpunktes muss mit 0s parametriert werden, da kein Nachfolgestützpunkt mehr vorhanden ist.
Mit dem Baustein lassen sich anhand parametrierter Stützpunkte Fahrkurven ausführen; in jedem Aufrufzyklus werden Werte nach einem Zeitplan ausgegeben, wobei zwischen den Stützpunkten interpoliert wird.
In jedem Zyklus werden die aktuell angefahrene Stützpunktnummer stepNumber, die aktuelle Restzeit remainTime bis zum Erreichen des Stützpunktes, die Gesamtzeit totalTime und die Gesamtrestzeit bis zum Erreichen des Fahrkurvenendes remainTotalTime ausgegeben. Desweitern wird der Ausgang actTimeTable gesetzt, wenn gerade die projektierte Fahrkurve ausgegeben wird.
Der Zeittakt des aufrufen Weckalarm-OBs wird ermittelt, indem am Eingangsparameter callOB der aufrufende Weckalarm-OB verschaltet wird.
Abbildung: Weckalarm-OB verschalten

Über Steuereingänge können folgende Betriebsarten ausgewählt werden:
Tabelle: Überblick über die Betriebsarten

Mit einer steigenden Flanke am Eingang reset wird der Ausgang outValue auf 0.0 zurückgesetzt. Bei enDefaultOutValue = TRUE wird am Ausgang defaultOutValue ausgegeben. Die Gesamtzeit und Gesamtrestzeit werden aktualisiert und am Ausgang ausgegeben.
Soll die Fahrkurve mit einem bestimmten Ausgangswert beginnen, dann muss enDefaultOutValue = TRUE sein. In diesem Fall steht am Ausgang des Zeitplangebers der Wert defaultOutValue an. Die interne Abarbeitung der Fahrkurve läuft in dieser Zeit weiter. Wechselt enDefaultOutValue wieder auf FALSE, so wird zum aktuell aktiven Stützpunkt interpoliert.
Mit einer steigenden Flanke am Eingangs start wird die Fahrkurve ausgegeben, solange start = TRUE ist oder bis die Fahrkurve durch das Erreichen des letzten Stützpunktes beendet wurde. Durch eine erneute steigende Flanke wird die Fahrkurve nochmals ausgegeben. Zusätzlich wird bei jedem Einschalten die Gesamtzeit aktualisiert.
Wird zusätzlich zum Eingang start auch der Eingang cyclicOP auf TRUE gesetzt, kehrt die Fahrkurve nach Ausgabe des letzten Stützpunktwertes automatisch zum Startpunkt zurück und beginnt einen neuen Durchlauf.
Zwischen dem letzten Stützpunktwert und dem Startpunkt wird nicht interpoliert. Für einen stoßfreien Übergang muss gelten: letzter Stützpunktwert = Startpunkt.
Mit hold = TRUE wird der Wert der Ausgangsgröße (inkl. der Zeitbearbeitung) eingefroren. Bei Rücksetzen hold = FALSE wird an der Unterbrechungsstelle bzw. an einer parametrierten Stelle (Siehe "Bearbeitungsschritt und –zeit vorgeben") fortgefahren. Die Bearbeitungszeit der Fahrkurve verlängert sich um die Haltezeit T1* (siehe Abbildung unten).
Wird während dem Anhalten der Fahrkurve (hold = TRUE) der Eingangsparameter continue für das Fortsetzen auf TRUE gesetzt, dann wird nach dem Zurücksetzen des Eingangs hold die Stützpunktnummer contStepNbr (Zielstützpunkt) innerhalb der Zeit contStepTime angefahren (Interpolation). Die Gesamtrestzeit wird neu berechnet.
Bei Änderungen von Werten der Stützpunkte können sich die Gesamtzeit und die Gesamtrestzeit der Fahrkurve ändern. Da die Berechnung von totalTime und remainTotalTime bei vielen Stützpunkten die Bearbeitungszeit des Funktionsbausteins stark vergrößern kann, wird sie nur einmal bei einer steigenden Flanke am Eingang updateTime durchgeführt.
Abbildung: Funktionsverläufe

| Version & Datum | Änderungsbeschreibung | |
|---|---|---|
| 01.00.00 | Siemens Industry Online Support | |
| 03.02.2017 | First released version | |
| 01.00.01 | Siemens Industry Online Support | |
| 16.05.2017 | Comment correction (REGION) | |
| 01.00.02 | Siemens Industry Online Support | |
| 17.08.2018 | Upgrade: TIA V15 Update 2 | |
| 01.00.03 | Siemens Industry Online Support | |
| 23.11.2018 | Upgrade: TIA V15.1 | |
| 01.00.06 | Siemens Industry Presales Support | |
| 15.11.2019 | Code optimization, 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 Change UDT member name from `outValue` to `outputValue` | |