Instrucción relacionada con el procesamiento PID
La implementación de esta FB permite introducir los parámetros de la instrucción F355_PID directamente utilizando los siguientes argumentos:
Entrada
FALSE: Configuración manual de MV
TRUE: Configuración automática del PID
FALSE: Control inverso (calentamiento)
TRUE: Control directo (enfriamiento)
FALSE: Control PI-D
TRUE: Control I-PD
Valor de preselección, rango: 0-10000
Valor actual, rango: 0-10000
Constante proporcional, rango: 1-9999, unidad: 0,1
Constante integral, rango: 1-30000, unidad: 0,1s
Constante derivativa, rango: 1-10000, unidad: 0,1s
Periodo de muestreo, rango: 1-6000, unidad: 0,01s
Límite inferior para el valor MV, rango: 0-10000
Límite superior para el valor MV, rango: 1-10000
Entrada/salida
Valor manipulado
No se puede realizar Auto-tuning con PID_FB. Para realizar auto-tuning, utilizar PID_FB_DUT.
El valor de MV se puede asignar externamente siempre que se inicializa el programa o cuando el valor de Automatic es FALSE.
Para poder obtener la máxima resolución y mantener el mínimo tiempo muerto entre LowerLimit y UpperLimit, sus valores deberían cubrir completamente el rango 0–10000.
si la configuración de los parámetros está fuera del rango permitido
si la configuración de los parámetros está fuera del rango permitido
En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.
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_EXTERNAL
Set_Value_SP: INT:=0;
(*A/D CH0*)
Process_Value_PV: INT:=0;
(*A/D CH1*)
Output_Value_MV: INT:=0;
(*D/A*)
END_VAR
VAR
PID_Control: PID_FB;
(*PID Parameters*)
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 15 ;
NETWORK_BODY
B(B_FB,PID_FB!,PID_Control,11,1,19,15,,?BAutomatic?BForward?BI_PD?BSP?BPV?BKp?BTi?BTd?BTs?BLowerLimit?BUpperLimit?BMV?AMV);
B(B_VARIN,,TRUE,9,2,11,4,);
B(B_VARIN,,FALSE,9,3,11,5,);
B(B_VARIN,,FALSE,9,4,11,6,);
B(B_VARIN,,Set_Value_SP,9,5,11,7,);
B(B_VARIN,,Process_Value_PV,9,6,11,8,);
B(B_VARIN,,15,9,7,11,9,);
B(B_VARIN,,200,9,8,11,10,);
B(B_VARIN,,1,9,9,11,11,);
B(B_VARIN,,10,9,10,11,12,);
B(B_VARIN,,0,9,11,11,13,);
B(B_VARIN,,1000,9,12,11,14,);
B(B_VARIN,,Output_Value_MV,9,13,11,15,);
L(1,0,1,15);
END_NETWORK_BODY
END_NET_WORK
END_BODY
PID_Control( Automatic:= TRUE,
Forward:= FALSE,
I_PD:= FALSE,
SP:= Set_Value_SP,
PV:= Process_Value_PV,
Kp:= 15,
Ti:= 200,
Td:= 1,
Ts:= 10,
LowerLimit:= 0,
UpperLimit:= 1000,
MV:= Output_Value_MV);