Regulación de transición con PID_Temp (S7-1200, S7-1500) - PID

Utilizar PID_Temp (S7-1200, S7-1500)

ft:publication_title
Utilizar PID_Temp (S7-1200, S7-1500)
Product
PID
Version
V20
Publication date
11/2024
Language
es-ES
Regulación de transición con PID_Temp

Regulación de transición

En caso de regulación de transición, dos o más reguladores comparten un actuador común. En cada instante, solo un regulador tiene acceso al actuador y actúa sobre el proceso.

Una lógica decide qué regulador obtiene acceso al actuador. A menudo, esta decisión se toma en función de una comparación de los valores de salida de todos los reguladores, p. ej., el regulador con el mayor valor de salida obtiene acceso al actuador en caso de selección del máximo.

La selección en función del valor de salida hace necesario que todos los reguladores funcionen en el modo automático. Los reguladores que no tengan efecto sobre el actuador se corrigen. Esto es necesario para evitar los efectos de Windup y sus repercusiones negativas sobre el comportamiento de regulación y la conmutación entre los reguladores.

A partir de la versión 1.1, PID_Temp soporta regulaciones de transición, pues el regulador ofrece un procedimiento simplificado para corregir el regulador no activo: Mediante las variables OverwriteInitialOutputValue y PIDCtrl.PIDInit es posible preasignar la acción I del regulador en el modo automático como si el algoritmo PID hubiera calculado PidOutputSum = OverwriteInititalOutputValue para el valor de salida PID en el último ciclo. Para ello, OverwriteInitialOutputValue se interconecta con el valor de salida PID del regulador que tenga acceso al actuador en ese momento. Ajustando el bit PIDCtrl.PIDInit se lanza la preasignación de la acción I, así como el reinicio del ciclo del regulador y el período de PWM. El subsiguiente cálculo del valor de salida PID en el ciclo actual se realiza basándose en la acción I preasignada (e igualada para todos los reguladores), así como en la acción P e I del actual error de regulación. La acción D no está activa durante la llamada con PIDCtrl.PIDInit = TRUE y, por tanto, no contribuye al valor de salida.

Este procedimiento garantiza que el cálculo del valor de salida PID actual y, con ello, la decisión sobre qué regulador tiene acceso al actuador solo tengan lugar considerando el estado actual del proceso y los parámetros PI. Así se evitan los efectos de Windup en los reguladores no activos y, con ello, las decisiones erróneas de la lógica de conmutación.

Requisitos

  • PIDCtrl.PIDInit solo es efectivo si la acción I está activada (variables Retain.CtrlParams.Heat.Ti y Retain.CtrlParams.Cool.Ti > 0.0).

  • Debe asignar PIDCtrl.PIDInit y OverwriteInitialOutputValue usted mismo en su programa de usuario (ver ejemplo más abajo). PID_Temp no realiza ningún cambio automático en estas variables.

  • PIDCtrl.PIDInit solo es efectivo si PID_Temp se encuentra en el modo automático (parámetro State = 3).

  • Si es posible, seleccione el tiempo de muestreo del algoritmo PID (variables Retain.CtrlParams.Heat.Cycle y Retain.CtrlParams.Cool.Cycle) de forma que sea idéntico para todos los reguladores, y llame todos los reguladores en el mismo OB de alarma cíclica. De esta forma se asegurará de que la conmutación no suceda dentro de un ciclo de regulador o de un período de PWM.

Nota

Adaptación continua de los límites de los valores de salida

En lugar de la corrección activa de reguladores sin acceso al actuador aquí descrita, en otros sistemas de regulador se realiza alternativamente una adaptación continua de los límites de los valores de salida.

Esto no es posible con PID_Temp, pues no se soporta el cambio de los límites de los valores de salida en el modo automático.

Ejemplo: regulación de una gran caldera

PID_Temp se utiliza para la regulación de una gran caldera

El objetivo principal es regular la temperatura Input1. Para ello se utiliza el regulador PID_Temp_1. Además, con el regulador de limitación PID_Temp_2 debe mantenerse la temperatura Input2 en un punto de medición adicional por debajo de un límite superior.

Las dos temperaturas se modifican a través de una única calefacción. El valor de salida del regulador se corresponde con la potencia de calefacción.

La calefacción se acciona mediante el valor de salida modulado por ancho de impulso de PID_Temp (parámetro OutputHeat_PWM), escribiendo la variable de programa ActuatorInput. La preasignación de la consigna para la temperatura Input1 se realiza en el parámetro PID_Temp_1.Setpoint. El límite superior de temperatura para el punto de medición adicional se preasigna como consigna en el parámetro PID_Temp_2.Setpoint.

Ambos reguladores disponen únicamente de una calefacción como actuador común. La lógica que decide qué regulador obtiene acceso al actuador se implementa aquí a través de una selección de mínimo del valor de salida PID (en formato Real, parámetro PidOutputSum). Puesto que el valor de salida PID corresponde a la potencia calorífica, el regulador obtiene el control que requiere la menor potencia de calefacción.

En el funcionamiento normal de la instalación, el valor real de la magnitud regulada principal corresponde a la consigna. El regulador principal PID_Temp_1 se ha estabilizado en un valor de salida PID estacionario PID_Temp_1.PidOutputSum. En servicio normal, el valor real del regulador de limitación Input2 está claramente por debajo del límite superior que se ha preasignado como consigna para PID_Temp_2. Por tanto, el regulador de limitación debe seguir aumentando la potencia calorífica para aumentar su valor real, es decir, calculará un valor de salida PID PID_Temp_2.PidOutputSum que será superior al del regulador principal PID_Temp_1.PidOutputSum. Por tanto, la selección mínima de la lógica de conmutación sigue permitiendo al regulador principal PID_Temp_1 el acceso al actuador. Además, mediante las asignaciones PID_Temp_2.OverwriteInitialOutputValue = PID_Temp_1.PidOutputSum y PID_Temp_2.PIDCtrl.PIDInit = TRUE se garantiza que se corregirá PID_Temp_2.

Ahora bien, si Input2 se acerca al límite superior o lo rebasa, por ejemplo, debido a una avería, el regulador de limitación PID_Temp_2 calculará un valor de salida PID menor para seguir moderando la potencia calorífica y así reducir Input2. Si PID_Temp_2.PidOutputSum es menor que PID_Temp_1.PidOutputSum, el regulador de limitación PID_Temp_2 obtiene acceso al actuador a través de la selección de valor mínimo y reduce la potencia de calefacción. Mediante las asignaciones PID_Temp_1.OverwriteInitialOutputValue = PID_Temp_2.PidOutputSum y PID_Temp_1.PIDCtrl.PIDInit = TRUE se garantiza que se corregirá PID_Temp_1.

La temperatura en el punto de medición adicional Input2 se reduce. La temperatura de la magnitud regulada principal Input1 cae también y ya no puede mantenerse en la consigna.

Si la avería deja de producirse, Input2 seguirá cayendo, y la potencia de calefacción del regulador de limitación volverá a aumentar. En cuanto el regulador principal calcula una potencia de calefacción menor como valor de salida, la instalación regresa al modo normal, de forma que el regulador principal PID_Temp_1 vuelve a obtener acceso al actuador. Este ejemplo se puede implementar con el siguiente código de programa SCL:

"PID_Temp_1"(Input := "Input1");

"PID_Temp_2"(Input := "Input2");

IF "PID_Temp_1".PidOutputSum <= "PID_Temp_2".PidOutputSum THEN

 

"ActuatorInput" := "PID_Temp_1".OutputHeat_PWM;

 

"PID_Temp_1".PIDCtrl.PIDInit := FALSE;

 

"PID_Temp_2".PIDCtrl.PIDInit := TRUE;

 

"PID_Temp_2".OverwriteInitialOutputValue := "PID_Temp_1".PidOutputSum;

ELSE

 

"ActuatorInput" := "PID_Temp_2".OutputHeat_PWM;

 

"PID_Temp_1".PIDCtrl.PIDInit := TRUE;

 

"PID_Temp_2".PIDCtrl.PIDInit := FALSE;

 

"PID_Temp_1".OverwriteInitialOutputValue := "PID_Temp_2".PidOutputSum;

END_IF;