Monitorizar límites del valor real
En las variables Config.InputUpperLimit y Config.InputLowerLimit es posible definir un límite superior y uno inferior del valor real. Si el valor real se encuentra fuera de estos límites, se produce un error (ErrorBits = 0000001h).
En las variables Config.InputUpperWarning y Config.InputLowerWarning se definen un límite de advertencia superior y uno inferior del valor real. Si el valor real se encuentra fuera de estos límites de advertencia, se produce una advertencia (Warning = 0000040h) y el parámetro de salida InputWarning_H o InputWarning_L adopta el valor TRUE.
Limitar consigna
En las variables Config.SetpointUpperLimit y Config.SetpointLowerLimit se debe definir un límite superior y uno inferior de la consigna. PID_Temp limita automáticamente la consigna a los límites del valor real. Es posible limitar la consigna a un rango más pequeño. PID_Temp verifica si dicho rango está dentro de los límites del valor real. Si la consigna se encuentra fuera de estos límites, se utilizan los límites superior e inferior como consigna y el parámetro de salida SetpointLimit_H o SetpointLimit_L adopta el valor TRUE.
La consigna se limita en todos los modos de operación.
Consigna sustitutiva
En las variables SubstituteSetpoint es posible especificar una consigna sustitutiva y activarla con SubstituteSetpointOn = TRUE. Esto permite, p. ej., especificar directamente la consigna temporalmente para un regulador esclavo en una cascada sin modificar el programa de usuario. Los límites definidos para la consigna son válidos también para la consigna sustitutiva.
Calefacción y refrigeración
Con el ajuste predeterminado, PID_Temp utiliza solo las salidas para la calefacción (OutputHeat, OutputHeat_PWM, OutputHeat_PER). El valor de salida del algoritmo PID (PidOutputSum) se escala y se emite en las salidas para calefacción. Con Config.Output.Heat.Select puede definirse si se deben calcular OutputHeat_PWM o OutputHeat_PER. OutputHeat se calcula siempre.
Con Config.ActivateCooling = TRUE se activan también las salidas para refrigeración (OutputCool, OutputCool_PWM, OutputCool_PER). Los valores de salida positivos del algoritmo PID (PidOutputSum) se escalan y se emiten a las salidas para calefacción. Los valores de salida negativos del algoritmo PID se escalan y se emiten a las salidas para refrigeración. Con Config.Output.Cool.Select puede definirse si se deben calcular OutputCool_PWM o OutputCool_PER. OutputCool se calcula siempre.
Existen dos métodos para calcular el valor de salida PID estando la refrigeración activada:
-
Factor de refrigeración (Config.AdvancedCooling = FALSE):
El valor de salida para refrigeración se calcula con los parámetros PID para calefacción considerando el factor de refrigeración configurable Config.CoolFactor. Este método está indicado si los actuadores de calefacción y refrigeración presentan un comportamiento temporal similar pero ganancias distintas. Si se opta por este método, no estarán disponibles la optimización inicial, la optimización fina para refrigeración ni el juego de parámetros PID para refrigeración. Solo pueden ejecutarse las optimizaciones para calefacción.
-
Cambio de parámetros PID (Config.AdvancedCooling = TRUE):
El valor de salida para refrigeración se calcula mediante un juego de parámetros PID propio. Basándose en el valor de salida calculado y el error de regulación, el algoritmo PID decide si se utilizarán los parámetros PID para calefacción o para refrigeración. Este método está indicado si los actuadores de calefacción y refrigeración presentan comportamientos temporales y ganancias distintas. La optimización inicial y la optimización fina para refrigeración solo están disponibles si se elige este método.
Límites y escalado del valor de salida
En función del modo de operación, el valor de salida PID (PidOutputSum) se calcula automáticamente mediante el algoritmo PID o se especifica mediante el valor manual (ManualValue) o el valor de salida sustitutivo configurado (SubstituteOutput).
El valor de salida PID se limita en función de la configuración:
-
Si la refrigeración está desactivada (Config.ActivateCooling = FALSE), se aplica el límite superior Config.Output.Heat.PidUpperLimit y el límite inferior Config.Output.Heat.PidLowerLimit.
-
Si la refrigeración está activada (Config.ActivateCooling = TRUE), se aplica el límite superior Config.Output.Heat.PidUpperLimit y el límite inferior Config.Output.Cool.PidLowerLimit.
El valor de salida PID se escala y se emite a las salidas para calefacción y refrigeración. El escalado puede especificarse por separado para cada salida y se define mediante dos pares de valores respectivos en las estructuras Config.Output.Heat y Config.Output.Cool:
|
Salida |
Par de valores |
Parámetro |
|---|---|---|
|
OutputHeat |
Par de valores 1 |
Límite superior del valor de salida PID (calefacción) Config.Output.Heat.PidUpperLimit, Valor de salida superior escalado (calefacción) Config.Output.Heat.UpperScaling |
|
Par de valores 2 |
Límite inferior del valor de salida PID (calefacción) Config.Output.Heat.PidLowerLimit, Valor de salida inferior escalado (calefacción) Config.Output.Heat.LowerScaling |
|
|
OutputHeat_PWM |
Par de valores 1 |
Límite superior del valor de salida PID (calefacción) Config.Output.Heat.PidUpperLimit, Valor de salida PWM superior escalado (calefacción) Config.Output.Heat.PwmUpperScaling |
|
Par de valores 2 |
Límite inferior del valor de salida PID (calefacción) Config.Output.Heat.PidLowerLimit, Valor de salida PWM inferior escalado (calefacción) Config.Output.Heat.PwmLowerScaling |
|
|
OutputHeat_PER |
Par de valores 1 |
Límite superior del valor de salida PID (calefacción) Config.Output.Heat.PidUpperLimit, Valor de salida analógico superior escalado (calefacción) Config.Output.Heat.PerUpperScaling |
|
Par de valores 2 |
Límite inferior del valor de salida PID (calefacción) Config.Output.Heat.PidLowerLimit, Valor de salida analógico inferior escalado (calefacción) Config.Output.Heat.PerLowerScaling |
|
|
OutputCool |
Par de valores 1 |
Límite inferior del valor de salida PID (refrigeración) Config.Output.Cool.PidLowerLimit, Valor de salida superior escalado (refrigeración) Config.Output.Cool.UpperScaling |
|
Par de valores 2 |
Límite superior del valor de salida PID (refrigeración) Config.Output.Cool.PidUpperLimit, Valor de salida inferior escalado (refrigeración) Config.Output.Cool.LowerScaling |
|
|
OutputCool_PWM |
Par de valores 1 |
Límite inferior del valor de salida PID (refrigeración) Config.Output.Cool.PidLowerLimit, Valor de salida PWM superior escalado (refrigeración) Config.Output.Cool.PwmUpperScaling |
|
Par de valores 2 |
Límite superior del valor de salida PID (refrigeración) Config.Output.Cool.PidUpperLimit, Valor de salida PWM inferior escalado (refrigeración) Config.Output.Cool.PwmLowerScaling |
|
|
OutputCool_PER |
Par de valores 1 |
Límite inferior del valor de salida PID (refrigeración) Config.Output.Cool.PidLowerLimit, Valor de salida analógico superior escalado (refrigeración) Config.Output.Cool.PerUpperScaling |
|
Par de valores 2 |
Límite superior del valor de salida PID (refrigeración) Config.Output.Cool.PidUpperLimit, Valor de salida analógico inferior escalado (refrigeración) Config.Output.Cool.PerLowerScaling |
|
Ejemplo:
Escalado de salida utilizando la salida OutputHeat (refrigeración desactivada; Config.Output.Heat.PidLowerLimit debe ser distinto a 0.0):
Ejemplo:
Escalado de salida utilizando la salida OutputHeat_PWM y OutputCool_PER (refrigeración activada; Config.Output.Heat.PidLowerLimit debe ser 0.0):
Exceptuando el modo de operación "Inactivo", el valor en una salida se sitúa siempre entre su valor de salida superior escalado y su valor de salida inferior escalado; p. ej., para OutputHeat debe estar siempre entre Config.Output.Heat.UpperScaling y Config.Output.Heat.LowerScaling.
Por eso, si se desea limitar el valor en la salida correspondiente, deben modificarse también estos valores de escalado.
Conexión en cascada
PID_Temp le ayuda si se utiliza en una regulación en cascada (ver: Creación del programa).
Valor de salida sustitutivo
PID_Temp puede emitir un valor de salida sustitutivo en caso de error que se predefine en la variable SubstituteOutput. El valor de salida sustitutivo debe situarse dentro de los límites para el valor de salida PID. Los valores resultantes del valor de salida sustitutivo en las salidas para calefacción y refrigeración se obtienen del escalado de salida configurado.
Vigilar la validez de las señales
Se vigila la validez de los valores de los siguientes parámetros al utilizarlos:
-
Setpoint
-
SubstituteSetpoint
-
Input
-
Input_PER
-
Disturbance
-
ManualValue
-
SubstituteOutput
-
Parámetros PID en las estructuras Retain.CtrlParams.Heat y Retain.CtrlParams.Cool.
Vigilancia del tiempo de muestreo PID_Temp
En el caso ideal, el tiempo de muestreo equivale al tiempo de ciclo del OB de alarma cíclica invocante. La instrucción PID_Temp mide en cada caso el tiempo que transcurre entre dos llamadas. Este es el tiempo de muestreo actual. Con cada cambio de modo de operación y en el primer arranque se calcula la media de los 10 primeros tiempos de muestreo. Si el tiempo de muestreo actual se desvía mucho de este valor medio, ocurre un error (Error = 0000800h).
Durante la optimización, el error se produce si:
-
valor medio nuevo >= 1,1 veces el valor medio antiguo
-
valor medio nuevo <= 0,9 veces el valor medio antiguo
En el modo automático, el error se produce si:
-
Valor medio nuevo >= 1,5 veces el valor medio antiguo
-
Valor medio nuevo <= 0,5 veces el valor medio antiguo
Si se desactiva la vigilancia del tiempo de muestreo (CycleTime.EnMonitoring = FALSE), puede llamarse PID_Temp también en el OB1. En tal caso, deberá aceptarse una regulación de menor calidad, debido a la fluctuación del tiempo de muestreo.
Tiempo de muestreo del algoritmo PID
Dado que el sistema regulado necesita cierto tiempo para responder a un cambio del valor de salida, no es razonable calcular este valor en cada ciclo. El tiempo de muestreo del algoritmo PID es el tiempo que transcurre entre dos cálculos del valor de salida. Este se determina durante la optimización y se redondea a un múltiplo del tiempo de ciclo del OB de alarma cíclica (tiempo de muestreo PID_Temp). Todas las demás funciones de PID_Temp se ejecutan con cada llamada.
Si la refrigeración y el cambio de parámetros PID están activados, PID_Temp utiliza en cada caso un tiempo de muestreo propio del algoritmo PID para calefacción y refrigeración. En todas las demás configuraciones se utiliza solo el tiempo de muestreo del algoritmo PID para calefacción.
Si se utiliza OutputHeat_PWM o OutputCool_PWM, se emplea el tiempo de muestreo del algoritmo PID como duración del período de la modulación del ancho de impulso. La precisión de la señal de salida viene determinada por la relación entre el tiempo de muestreo del algoritmo PID y el tiempo de ciclo del OB. El tiempo de ciclo debería ser como máximo una décima parte del tiempo de muestreo del algoritmo PID.
Al utilizar OutputHeat_PWM o OutputCool_PWM, si el tiempo de muestreo del algoritmo PID, y por tanto la duración del período de la modulación del ancho de impulso, es demasiado grande para mejorar la uniformidad del valor real, en los parámetros Config.Output.Heat.PwmPeriode y Config.Output.Cool.PwmPeriode respectivamente debe especificarse una duración del período más corta.
Sentido de regulación
PID_Temp puede utilizarse para aplicaciones de calefacción o de calefacción/refrigeración y trabaja de forma fija en el sentido de regulación normal.
Con un aumento del valor de salida PID (PidOutputSum) debería lograrse un aumento del valor real. Los valores resultantes del valor de salida PID en las salidas para calefacción y refrigeración se obtienen del escalado de salida configurado.
No se admite la inversión del sentido de regulación ni la ganancia proporcional negativa.
Si para la aplicación en cuestión solo se necesita un valor de salida cuyo aumento debe provocar una reducción del valor real (p. ej., regulación de desagües), puede utilizarse PID_Compact con el sentido de regulación invertido.