Rampenausgang
Dieser FP-Befehl ermittelt eine lineare Rampenfunktion auf der Basis eines Anfangswerts, eines Sollwerts und eines Zeitbereichs, wenn der Trigger EN auf TRUE gesetzt ist. Der Ausgangswert d wird erhöht oder verringert, bis der Sollwert erreicht ist.
Eingang
Anfangswert, von dem der Ausgabewert an- oder absteigt.
Sollwert, bis zu dem der Ausgabewert an- oder absteigt.
Zeitspanne in ms, die der Ausgabewert benötigt, um vom Anfangs- zum Sollwert an- oder abzusteigen.
Werte: 1–30000
Ausgang
Stellgröße (Ausgangswert)
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn der Zeitbereich für die Ausgabe s3_RiseTime kleiner als 1 oder größer als 30000 ist.
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn der Zeitbereich für die Ausgabe s3_RiseTime kleiner als 1 oder größer als 30000 ist.
Verwandte F-Befehle: F284_RAMP
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
iInitialValue: INT:=3000;
iTargetValue: INT:=6000;
iRiseTime: INT:=1000;
iOutputValue: INT:=0;
bRun: BOOL:=FALSE;
END_VAR
Wenn die Variable bRun auf TRUE gesetzt ist, wird die Funktion ausgeführt und iOutputValue steigt von 3000 (iInitialValue) auf 6000 (iTargetValue). Die Zeitdauer beträgt 1000ms (entsprechend iRiseTime).
Zeitdiagramm für ansteigenden Ausgabewert:
Beispielwerte: iInitialValue = 3000, iTargetValue = 6000, iRiseTime = 1000
Zeitdiagramm für absteigenden Ausgabewert:
Beispielwerte: iInitialValue = 6000, iTargetValue = 3000, iRiseTime = 1000
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,FP_RAMP!,,12,1,21,7,,?DEN?Ds1_Initial?Ds2_Target?Ds3_RiseTime?AENO?Cd);
B(B_CONTACT,,bRun,4,2,6,4,);
B(B_VARIN,,iInitialValue,10,3,12,5,);
B(B_VARIN,,iTargetValue,10,4,12,6,);
B(B_VARIN,,iRiseTime,10,5,12,7,);
B(B_VAROUT,,iOutputValue,21,3,23,5,);
L(1,3,4,3);
L(6,3,12,3);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bRun THEN
FP_RAMP(s1_Initial := iInitialValue, s2_Target := iTargetValue, s3_RiseTime := iRiseTime, d => iOutputValue);
END_IF;