Salida de rampa
Esta instrucción FP calcula una rampa lineal a partir de un valor inicial, un valor objetivo y un rango de tiempo si el trigger EN es TRUE. El valor de salida d aumenta o disminuye hasta que se alcanza el valor objetivo.
Entrada
Valor inicial a partir del cual aumenta o disminuye el valor de salida.
Valor final hacia el que el valor de salida aumenta o disminuye
Intervalo de tiempo en ms. para que la salida pase del valor inicial al valor final
Valores: 1–30000
Salida
Valor de salida
si el área especificada utilizando el modificador índice supera el límite.
si el intervalo de tiempo especificado en s3_RiseTime es menor que 1 ó mayor que 30000.
si el área especificada utilizando el modificador índice supera el límite.
si el intervalo de tiempo especificado en s3_RiseTime es menor que 1 ó mayor que 30000.
Instrucciones F correspondientes: F284_RAMP
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
iInitialValue: INT:=3000;
iTargetValue: INT:=6000;
iRiseTime: INT:=1000;
iOutputValue: INT:=0;
bRun: BOOL:=FALSE;
END_VAR
Cuando la variable bRun pasa a TRUE, se ejecuta la función y iOutputValue aumenta desde 3000 (iInitialValue) hasta 6000 (iTargetValue) en 1000ms (de acuerdo con iRiseTime).
Diagrama de tiempos para incrementar el valor de salida:
Valores de ejemplo: iInitialValue = 3000, iTargetValue = 6000, iRiseTime = 1000
Diagrama de tiempos para disminuir el valor de salida:
Valores de ejemplo: 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;