LGF_RampCI (FB / V3.0.1)


Autor: Siemens Digital Industries

Kurzbeschreibung

Diese Funktion generiert eine Fahrkurve anhand einer Stützpunkttabelle. Zwischen den Punkten wird innerhalb der vorgegebenen Zeit linear interpoliert.

Baustein Schnittstelle

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
       
   

Input Parameter

BezeichnerDatentypDefault WertBeschreibung
defaultOutValueLReal0.0Wert für die Default Vorbelegung der Ausgangsgröße
(`outputValue` = `defaultOutValue`)
contStepNbrInt0Nummer des nächsten Stützpunktes zur Weiterverarbeitung
contStepTimeTimeT#0MSRestzeit zum Weitermachen bis zum Stützpunkt `contStepNbr`
enDefaulftOutValueBoolFALSEZuweisen des Default Ausgangswert
(`outputValue` = `defaultOutValue`)
startBoolFALSEStützpunkttabelle abarbeiten
holdBoolFALSEAktuellen Wert am Ausgang halten/ einfrieren
continueBoolFALSEWeiterverarbeitung
cyclicOPBoolFALSEStützpunkttabelle zyklisch wiederholen
updateTimeBoolFALSEZeitwerte aktualisieren
resetBoolFALSENeustart der Funktion
callOBOB_CYCLIC---Aufrufender Weckalarm-OB (Cyclic Interrupt OB)

Output Parameter

BezeichnerDatentypBeschreibung
outputValueLRealAusgangsgröße
actTimeTableBoolStützpunkttabelle wird bearbeitet.
stepNumberIntaktuelle Stützpunktnummer
(Stützpunkt, der angefahren wird)
remainTimeTimeRestzeit bis Erreichen des nächsten Stützpunktes
totalTimeTimeGesamtzeit für die Stützpunkt Tabelle
remainTotalTimeTimeGesamtrestzeit
errorBoolFALSE: Kein Fehler
TRUE: Während der Ausführung des FB ist ein Fehler aufgetreten
statusWord16#0000-16#7FFF: Status des FB
16#8000-16#FFFF: Fehleridentifikation (siehe folgende Tabelle)
subfunctionStatusWordStatus oder Rückgabewert von aufgerufenen FB's / FC's und Systemfunktionen

In/Out Parameter

BezeichnerDatentypBeschreibung
setpointsArray[*] of LGF_typeRampTimeTableStützpunkttabelle.
Informationen zum Datentyp `LGF_typeRampTimeTable` finden Sie unter dem Punkt "Globale Daten" .

Status & Error Meldungen

Code / WertBezeichner / Beschreibung
16#0000STATUS_FINISHED_NO_ERROR
Status: Abarbeitung ohne Fehler beendet
16#7000STATUS_NO_CALL
Status: Keine aktuelle Blockabarbeitung
16#7001STATUS_FIRST_CALL
Status: Erstaufruf, Steigende Flanke `start`.
16#7002STATUS_FURTHER_CALLS
Status: Folgeaufruf, Eingang `cyclicOP` gesetzt.
16#8200ERR_OB_UNAVAILABLE
Fehler: OB am Eingang `callOB` ist nicht projektiert / vorhanden. Verschalten Sie am Eingang `callOB` den Konstanten Namen eines projektierten Weckalarm-OB.
16#8201ERR_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#8400ERR_QRY_CINT
Fehler in Anweisung `QRY_CINT` - weitere Infos in `subFunctionStatus`

Benutzer definierte Datentypen

LGF_typeRampTimeTable (UDT)

Datentype zur Erstellung einer Fahrkurve auf der Basis einer Stützpunkttabelle für die Funktion LGF_RampCI

BezeichnerDatentypDefault WertBeschreibung
outputValueLReal0.0Stützpunktwert für die Interpolation zum Anfahren
timeTimeT#0sZeit innerhalb bis zu der der Stützpunkt angefahren wird

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.

Globale Daten

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

LGF_RampCI Stützpunkt Tabelle

Der Parameter time des letzten Stützpunktes muss mit 0s parametriert werden, da kein Nachfolgestützpunkt mehr vorhanden ist.

Funktionsweise

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

Weckalarm-OB verschalten

Über Steuereingänge können folgende Betriebsarten ausgewählt werden:

Überblick über die Betriebsarten

Tabelle: Überblick über die Betriebsarten

LGF_RampCI Tabelle: Überblick über die Betriebsarten


Neustart

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.

Ausgang vorbelegen

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.

Fahrkurve ausgeben

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.

Zyklischen Betrieb einschalten

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.

Fahrkurve anhalten

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

Bearbeitungsschritt und –zeit vorgeben

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.

Gesamtzeit und Gesamtrestzeit aktualisieren

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.


Funktionsverläufe

Abbildung: Funktionsverläufe

LGF_RampCI Funktionsverläufe

Änderungshistorie

Version & DatumÄnderungsbeschreibung
01.00.00Siemens Industry Online Support
03.02.2017First released version
01.00.01Siemens Industry Online Support
16.05.2017Comment correction (REGION)
01.00.02Siemens Industry Online Support
17.08.2018Upgrade: TIA V15 Update 2
01.00.03Siemens Industry Online Support
23.11.2018Upgrade: TIA V15.1
01.00.06Siemens Industry Presales Support
15.11.2019Code optimization, Regions, comments and constants are added
03.00.00Simatic Systems Support
23.04.2020Set version to V3.0.0, harmonize the version of the whole library
03.00.01Simatic Systems Support
22.03.2021Insert documentation
Change UDT member name from `outValue` to `outputValue`