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` |