Bloque que ejecuta la función de un controlador PID discreto. A partir de las variables de entrada, calcula la salida correspondiente del controlador.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
SetPoint |
REAL |
Referencia automática (precontrol) |
|
ManualSetPoint |
REAL |
Referencia forzada (post control) |
|
SelectSetPoint |
BOOL |
Selecciona la referencia a utilizar |
|
Feedback |
REAL |
Variable de realimentación de la malla |
|
MinimumOutput |
REAL |
Valor mínimo de la salida del controlador |
|
MaximumOutput |
REAL |
Valor máximo de la salida del controlador |
|
Kp |
REAL |
Ganancia proporcional |
|
Ki |
REAL |
Ganancia integral |
|
Kd |
REAL |
Ganancia derivativa |
|
TauSetPoint# |
REAL |
Constante de tiempo del filtro de entrada de referencia automática |
|
Type# |
BYTE |
Tipo de controlador |
|
Action# |
BYTE |
Acción de control |
|
Ts# |
UINT |
Período de muestreo [ms] |
|
VAR_OUTPUT |
ENO |
BOOL |
Habilitación de salida |
Output |
REAL |
Salida del controlador |
|
VAR |
PID_INST_0 |
PID |
Instancia de acceso a la estructura del bloque |
Operación
En la transición positiva de flanco en EN, Output recibe valor cero, y el bloque ejecuta su funcionalidad mientras que EN esté en nivel TRUE.
Cuando es habilitado, este bloque ejecuta una rutina de control PID con los parámetros Kp, Ki y Kd escogidos. La topología PID utilizada podrá ser la Académica o la Paralela, dependiendo de lo que sea escogido en Type#.
Topología académica:

Topología paralela:

Los niveles de la señal de la salida del controlador son saturados por el valor de MinimumOutput y MaximumOutput. La entrada SelectSetPoint en nivel FALSE hace que la referencia adoptada sea SetPoint, permitiendo que el controlador ejerza dominio sobre el proceso. Cuando SelectSetPoint pasa a nivel TRUE, el controlador no ejerce más dominio, ya que que ManualSetPoint pasa a ser considerada la señal de salida del controlador.
Action# definirá la operación de realimentación. Se Action# for DIRECT, la operación será SetPoint – Feedback. Si Action# es REVERSE, la operación será Feedback – SetPoint.
Feedback recibe la variable de proceso considerada como salida de la planta. Ts# recibe el período de muestreo para el controlador y TauSetPoint# recibe la constante de tiempo para el filtro de entrada de la referencia automática.
Cuando EN tiene valor FALSE, Output permanece inalterado.
El valor de ENO pasa al próximo bloque Ladder el valor de EN luego de finalizada la operación.
|
¡NOTA! Efecto de la alteración de las ganancias sobre el proceso
|
|
¡NOTA! Como mejor desempeño del proceso por el ajuste de las ganancias (válido para el PID Académico)
|
Diagrama de Flujo del Bloque

Ejemplo en Ladder

El ejemplo de arriba crea una malla de un PID académico digital, con tiempo de muestreo de 50 ms, utilizando las constantes KP, KI y KD para el control. Es utilizada la referencia automática SETPOINT, filtrada por un filtro de primer orden con constante de tiempo 0.01. La señal de error es calculada como la diferencia entre la referencia filtrada y la variable SAIDA_PLANTA. La salida del controlador es saturada entre los valores 0.1 y 2.5 y es enviada hacia la variable ENTRADA_PLANTA.
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR SETPOINT, SAIDA_PLANTA, ENTRADA_PLANTA : REAL; KP : REAL := 6.2; KI : REAL := 1.3; KD : REAL := 1.8; PID_INST_2 : FB_PID; END_VAR
PID_INST_2.EN := DI1; PID_INST_2( SetPoint:=SETPOINT, ManualSetPoint:=1, SelectSetPoint:=FALSE, Feedback:=SAIDA_PLANTA, MinimumOutput:=0.1, MaximumOutput:=2.5, Kp:=KP, Ki:=KI, Kd:=KD, TauSetPoint:=0.01, Type:=0, Action:=0, Ts:=50); ENTRADA_PLANTA := PID_INST_2.Output; DO1 := PID_INST_2.ENO;
|
|---|