Bloque que ejecuta la sintonía automática de un controlador PID discreto. A partir las variables de entrada, calcula un controlador PID o PI a través de el método de los relés. Este bloque también implementa el controlador obtenido u otro que el usuario desee.
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 (pre-control) |
|
ManualSetPoint |
REAL |
Referencia forzada (post-control) |
|
SelectSetPoint |
BOOL |
Selecciona qué referencia utilizar |
|
Feedback |
REAL |
Variable de retroalimentació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 |
Gaño proporcional |
|
Ki |
REAL |
Gaño integral |
|
Kd |
REAL |
Gaño derivativo |
|
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] |
|
Tune |
BYTE |
Inicio del proceso de sintonía conforme Tabela 2 |
|
Delta |
REAL |
Parámetro del método de los relés que representa la variación de la variable manipulada con relación al valor que alcanzó la referencia. |
|
Hysteresis |
REAL |
Determina la histéresis en la conmutación del relé. |
|
TuneTimeOut |
DWORD |
Tiempo máximo de espera hasta que se complete la sintonía [ms] |
|
VAR_OUTPUT |
ENO |
BOOL |
Habilitación de salida |
Output |
REAL |
Salida del controlador |
|
TuneStatus |
BYTE |
Estado de la sintonización automática según Tabla 3 |
|
KpOut |
REAL |
Ganancia proporcional obtenida en la sintonía |
|
KiOut |
REAL |
Ganancia integral obtenida en la sintonía |
|
KdOut |
REAL |
Ganancia derivada obtenida en la sintonía |
|
VAR |
PID2_INST_0 |
PID2 |
Instancia de acceso a la estructura del bloque |
Tabla 1
Operación
El funcionamiento del bloque PID2 se divide en dos partes: la de Control y la de Sintonía Automática.
La variable Tune es la que define el modo de operación. Siempre que Tune = 0, el sistema opera en modo de control, con los valores de las ganancias definidas por el usuario, de la misma forma que el bloque PID.
La parte de control, es exactamente igual al bloque PID, vea en el Help del PID.
Cuando Tune recibe algún valor distinto de 0, se inicia el proceso de sintonía automática. Algunas reglas deben ser obedecidas para que la sintonía pueda ocurrir. Se presentarán en la secuencia.
La Sintonía Automática
Para la Sintonía Automática se utiliza el Método de los Relés que se basa en la obtención de la ganancia crítica
y período crítico
, que pueden ser utilizados para obtener las ganancias del controlador PID a través de diversas reglas de sintonía: Ziegler-Nichols, Ciancone-Marlin, Tyreus- Luyben, ITAE Mínimo, entre otras.
Durante el proceso de sintonización, el control es apagado y un "relé" pasa a determinar la salida del controlador (Output), como figura a continuación.

Al iniciar, el relé (Output) pasa al valor
y después de un período
la salida
(Feedback) empieza a aumentar. En el momento en que la salida se vuelve superior al valor del setpoint + histéresis, el relé conmuta para
y así sucesivamente, conforme la figura abajo

Siendo
el valor de la variable manipulada (Output) estabilizada en el punto de operación, tenemos que
![]()
No caso de la Figura acima, ![]()
De la curva de resta obtenida se retiran los parámetros necesarios para obtener el controlador.
Criterios para que la sintonía sea efectuada
Para que la sintonía automática pueda ser realizada adecuadamente, dos criterios necesitan, obligatoriamente, ser obedecidos:
1) colocar el sistema en el punto de operación que se desea calibrar (la diferencia debe ser menor que el 20%);
2) la variable
, que es la variable manipulada, no puede estar presentando oscilación mayor que el 20%;
OBS: se puede utilizar el modo Manual del bloque para alcanzar el punto de operación sin grandes oscilaciones (a través de la variable
).
Paso a paso para ejecutar la sintonía
1)
debe iniciarse con el valor cero;
2) Definir un valor para
. Se recomienda un valor inicial del 10% del valor de la variable manipulada (
) que alcanzó el punto de consigna del sistema;
Ex: Suponiendo que para estabilizar en el punto de operación
= 12.3. En este caso, utilizar ![]()
3) Definir un valor inicial para
. Este valor debe ser ligeramente mayor que el ruido presente en el sistema. Se puede utilizar un valor inicial del 2% del valor del Setpoint si no se conoce el ruido;
Ex: para un
= 60.0, utilizar ![]()
4) Definir un valor en milissegundos (
) para
. Este valor depende del sistema que se está aplicando el bloque. Los sistemas más lentos necesitarán un mayor tiempo. Debe ser suficiente para que al menos 10 ciclos del relé sean completos, aunque con 5 ciclos el sistema generalmente ya se estabiliza;
5) Colocar el sistema en el punto de operación. Si se ha realizado un pre-control, se puede aplicar. Otra opción es utilizar el modo manual y variar la entrada
hasta que el sistema se estabilice en el punto de operación, es decir,
lo más cerca posible de
;
6) Habilitar la sintonía eligiendo el tipo de control (PI o PID y la regla usada) a través de la variable
, conforme Tabla 2;
7) La salida
se indicará el estado del proceso de sintonía automática, conforme Tabla 9. Al final del proceso, la salida
recibirá el valor 8 si la calibración se efectúa con éxito y las salidas
,
y
se actualizarán con los valores obtenidos en el proceso de sintonía.
Tune |
Controlador |
0 |
Deshabilitado |
1 |
Controlador PID Automático |
2 |
Controlador PI Automático |
3 |
Controlador PID Tyreus-Luyben |
4 |
Controlador PI Tyreus-Luyben |
5 |
Controlador PID ITAE |
6 |
Controlador PI ITAE |
7 |
Controlador PID Ciancone-Marlin |
8 |
Controlador PI Ciancone-Marlin |
9 |
Controlador PID Ziegler-Nichols |
10 |
Controlador PI Ziegler-Nichols |
Tabla 2
Tune Status |
Significado |
0 |
Deshabilitado |
1 |
Relé en nível alto |
2 |
Relé en nível bajo |
4 |
Sistema estabilizado |
5 |
Estable y Relé a nivel alto |
6 |
Estable y Relé a nivel bajo |
8 |
Sintonización completa |
16 |
Reservado |
32 |
Timeout |
64 |
Método inexistente |
128 |
Busy: otro bloque en sintonia |
Tabla 3
Los métodos de Tyreus-Luyben se recomiendan para sistemas con la constante de tiempo dominante con respecto al retraso del transporte. Los métodos de Ciancone-Marlin se recomiendan para sistemas con gran retraso en el transporte. El método ITAE mínimo es para situaciones intermediarias.
Se recomienda para sintonías iniciales o para usuarios sin mucha familiaridad con el método de los relés, el uso de la forma automática 1 o 2 para
, dejando que el sistema opte por la forma más adecuada.
Después de la sintonización, el método se puede cambiar haciendo que un nuevo controlador se calcula sin realizar de nuevo el proceso de sintonía, ya que los datos necesarios se almacenan internamente. Esto permite que otros métodos sean fácilmente experimentados.
Para que una nueva sintonía se haga,
debe recibir el valor cero primero.
Diagrama de Flujo del Bloque
N/D
Ejemplo en Ladder



Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR SETPOINT : REAL := 30.0; MANUAL_MV : REAL := 30.0; SELECT_SP : BOOL := FALSE; FEEDBACK : REAL; KP2 : REAL := 6.2039423; KI2 : REAL := 1.3162537; KD2 : REAL := 1.8414314; TUNEENABLE2 : BYTE; DELTA : REAL; HISTERESE : REAL; MANIPULATED_VARIABLE : REAL; TUNESTATUS : BYTE; PID2_INST_1 : FB_PID2; TAU : REAL := 5.0; LOWPASS_INST_3 : FB_LOWPASS; END_VAR
PID2_INST_1.EN := DI1; PID2_INST_1( SetPoint:=SETPOINT, ManualSetPoint:=MANUAL_MV, SelectSetPoint:=FALSE, Feedback:=FEEDBACK, MinimumOutput:=-1000, MaximumOutput:=1000, Kp:=KP2, Ki:=KI2, Kd:=KD2, TauSetPoint:=0.0, Type:=1, Action:=0, Ts:=500, Tune:=TUNEENABLE2, Delta:=DELTA, Hysteresis:=HISTERESE, TuneTimeOut:=1800000); MANIPULATED_VARIABLE := PID2_INST_1.Output; TUNESTATUS := PID2_INST_1.TuneStatus; KP2 := PID2_INST_1.KpOut; KI2 := PID2_INST_1.KiOut; KD2 := PID2_INST_1.KdOut;
LOWPASS_INST_3( EN:=TRUE, Input:=MANIPULATED_VARIABLE, Tau:=TAU, Ts:=10); FEEDBACK := LOWPASS_INST_3.Output;
|
|---|