Control de modelo interno (IMC)
Esta información corresponde a los controladores
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 y ControlLogix 5590.La instrucción Control de modelo interno (Internal Model Control, IMC) controla una sola variable del proceso mediante la manipulación de la salida de una sola variable de control. Este bloque de funciones ejecuta un algoritmo donde la señal de error real se compara con la de un retardo de primer orden interno más el modelo de tiempo muerto del proceso. El bloque de funciones IMC calcula la salida de la variable de control (CV) en el modo Automático según la desviación de PV-SP, el modelo interno y el ajuste.
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en el diagrama de escalera.
Bloque de funciones

Texto estructurado
IMC(IMC_tag);
Operandos
Bloque de funciones
Operandos: | Tipo: | Formato | Descripción: |
Etiqueta IMC | INTERNAL MODEL CONTROL | Estructura | Estructura IMC |
Texto estructurado
Operandos: | Tipo: | Formato | Descripción: |
Etiqueta IMC | INTERNAL MODEL CONTROL | Estructura | Estructura IMC |
Consulte
Sintaxis de texto estructurado
para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
IMPORTANTE:
Siempre que un bloque APC detecte un cambio en el Tiempo de delta (DeltaT), se realizará un ModelInit. Por esta razón, los bloques solo deben ejecutarse en uno de los TimingModes en los que DeltaT será constante.
- TimingMode = 0 (Periódico) al ejecutar estos bloques de funciones en una Tarea periódica.
- TimingMode = 1 (Sobremuestreo)
En cualquier caso, si el tiempo de la Tarea periódica o el OversampleDT se cambia dinámicamente, el bloque realizará un ModelInit.
No se recomienda la siguiente configuración de TimingMode debido a la fluctuación en DeltaT:
- TimingMode = 0 (Periódico) al ejecutar estos bloques de funciones en una Tarea continua o de eventos.
- TimingMode = 2 (RealTimeSample)
Estructura
Parámetros de entrada | Tipo de datos | Descripción | Valores válidos y predeterminados |
|---|---|---|---|
EnableIn | BOOL | Habilita la entrada. Si es falso, el bloque de funciones no se ejecuta y las salidas no se actualizan. | Valor predeterminado = VERDADERO |
PV | REAL | Entrada de variable de proceso escalada. Este valor se suele leer desde un módulo de entrada analógica. | Válido = cualquier punto flotante Valor predeterminado = 0,0 |
PVFault | BOOL | Indicador de estado incorrecto de PV. Si la PV se lee de una entrada analógica, entonces PVFault normalmente estará controlado por el estado de fallo de la entrada analógica. Si PVFault es VERDADERO, indica un error en el módulo de entrada; se establece el bit correspondiente en Status. | Valor predeterminado = FALSO FALSO = estado correcto |
PVUEMax | REAL | Valor escalado máximo de PV. El valor de PV y SP que corresponde a una extensión del 100% de la Variable de proceso. Si PVEUMax ≤ PVEUMin, se establece el bit correspondiente en Status. | Válido = PVEUMin < PVEUMax ≤ punto flotante positivo máximo Valor predeterminado = 100,0 |
PVUEMin | REAL | Valor escalado mínimo de PV. El valor de PV y SP que corresponde a una extensión del 0 % de la Variable de proceso. Si PVEUMax ≤ PVEUMin, se establece el bit correspondiente en Status. | Válido = punto flotante negativo máximo ≤ PVEUMin < PVEUMax Valor predeterminado = 0,0 |
SPProg | REAL | Valor de programa de SP, escalado en unidades de PV. SP se establece en este valor cuando se está en el modo de control Programa. Si el valor de SPProg o SPOper < SPLLimit o > SPHLimit, se establece el bit en Status y límite el valor utilizado para SP. | Válido = de SPLLimit a SPHLimit Valor predeterminado = 0,0 |
SPOper | REAL | Valor de operador de SP, escalado en unidades de PV. SP se establece en este valor cuando está en Control de operador. Si el valor de SPProg o SPOper < SPLLimit o > SPHLimit, se establece el bit en Status y límite el valor utilizado para SP. | Válido = de SPLLimit a SPHLimit Valor predeterminado = 0,0 |
SPCascade | REAL | Valor de cascada de SP, escalado en unidades de PV. Si está en el modo CascadeRatio y UseRatio es FALSO, SP se establece en este valor; que normalmente será CVEU de un lazo primario. Si está en modo Cascada/Relación y UseRatio es VERDADERO, entonces SP se establece a este valor de veces de Ratio. Si el valor de SPCascade < SPLLimit o > SPHLimit, se establece el bit en Status y limita el valor utilizado para SP. | Válido = de SPLLimit a SPHLimit Valor predeterminado = 0,0 |
SPHLimit | REAL | Valor de límite alto de SP, escalado en unidades de PV. Si SPHLimit < SPLLimit o SPHLimit > PVEUMax, se establece el bit en Status. | Válido = de SPLLimit a PVEUMax Valor predeterminado = 100,0 |
SPLLimit | REAL | Valor de límite bajo de SP, escalado en unidades de PV. Si SPLLimit < PVEUMin o SPHLimit < SPLLimit, se establece el bit en Status y limita SP utilizando el valor de SPLLimit. | Válido = de PVEUMin a SPHLimit Valor predeterminado = 0,0 |
UseRatio | BOOL | Permite el control de relación permisivo. Se establece en VERDADERO para habilitar el control de relación en el modo Cascada/Relación. | Valor predeterminado = FALSO |
RatioProg | REAL | Multiplicador de programa de Ratio, sin unidades (por ejemplo, escalar). Ratio y RatioOper se establecen en este valor cuando está en Control de programa. Si RatioProg o RatioOper < RatioLLimit o > RatioHLimit, se establece el bit correspondiente en Status y limita el valor utilizado para Ratio. | Válido = de RatioLLimit a RatioHLimit Valor predeterminado = 1,0 |
RatioOper | REAL | Multiplicador de operador de Ratio, sin unidades (por ejemplo, escalar). Ratio se establece en este valor cuando se está en Control de operador. Si RatioProg o RatioOper < RatioLLimit o > RatioHLimit, se establece el bit correspondiente en Status y limita el valor utilizado para Ratio. | Válido = de RatioLLimit a RatioHLimit Valor predeterminado = 1,0 |
RatioHLimit | REAL | Valor de límite alto de Ratio, sin unidades (por ejemplo, escalar). Limita el valor de Ratio obtenido a partir de RatioProg o RatioOper. Si RatioLLimit < 0, se establece el bit en Status y limita el valor a cero. Si RatioHLimit < RatioLLimit, se establece el bit en Status y limita el Ratio utilizando el valor de RatioLLimit. | Válido = de RatioLLimit a punto flotante positivo máximo Valor predeterminado = 1,0 |
RatioLLimit | REAL | Valor de límite bajo de Ratio, sin unidades (por ejemplo, escalar). Limita el valor de Ratio obtenido a partir de RatioProg o RatioOper. Si RatioLLimit < 0, se establece el bit en Status y limita el valor a cero. Si RatioHLimit < RatioLLimit, se establece el bit en Status y limita el Ratio utilizando el valor de RatioLLimit. | Válido = de 0,0 a RatioHLimit Valor predeterminado = 1,0 |
CVFault | BOOL | Indicador de estado incorrecto de variable de control. Si CVEU controla una salida analógica, entonces CVFault procede normalmente del estado de fallo de la salida analógica. Si CVFault es VERDADERO, esto indica un error en el módulo de salida; se establece el bit correspondiente en Status. | Valor predeterminado = FALSO FALSO = estado correcto |
CVInitReq | BOOL | Solicitud de inicialización de CV. Mientras esté en VERDADERO, se establece CVEU al valor de CVInitValue. Esta señal se controlará normalmente por el estado En retención en el módulo de salida analógica controlado por CVEU o desde la salida InitPrimary de un lazo secundario IMC. | Valor predeterminado = FALSO |
CVInitValue | REAL | Valor de inicialización de CVEU, escalado en unidades de CVEU. Cuando CVInitializing es VERDADERO se establece CVEU igual a CVInitValue y CV al valor de porcentaje correspondiente. CVInitValue procede normalmente de la retroalimentación de la salida analógica controlada por CVEU o del punto de ajuste de un lazo secundario. La inicialización del bloque de funciones está deshabilitada cuando CVFaulted o CVEUSpanInv es VERDADERO (estado incorrecto). | Válido = cualquier punto flotante Valor predeterminado = 0,0 |
CVProg | REAL | Valor de CV en modo Programa-Manual. CV se establece en este valor cuando se está en Control de programa y en modo Manual. Si el valor de CVProg o CVOper < 0 o > 100, o < CVLLimit o > CVHLimit cuando CVManLimiting es VERDADERO, se establece el bit de Status único y limita el valor utilizado para CV. | Válido = de 0,0 a 100,0 Valor predeterminado = 0,0 |
CVOper | REAL | Valor de CV en modo Operador-Manual. CV se establece en este valor cuando se está en Control de operador y en modo Manual. Si no está en el modo Operador-Manual, se establece CVOper al valor de CV al final de cada ejecución del bloque de funciones. Si el valor de CVProg o CVOper < 0 o > 100, o < CVLLimit o > CVHLimit cuando CVManLimiting es VERDADERO, se establece el bit de Status único y limita el valor utilizado para CV. | Válido = de 0,0 a 100,0 Valor predeterminado = 0,0 |
CVOverrideValue | REAL | Valor de CV en modo Anular. CV establecido a este valor cuando está en modo Anular. Este valor debe corresponder con una salida de estado seguro del lazo IMC. Si el valor de CVOverrideValue < 0 o > 100, se establece el bit de Status y limita el valor utilizado para CV. | Válido = de 0,0 a 100,0 Valor predeterminado = 0,0 |
CVTrackValue | REAL | Valor de seguimiento de CV Cuando CVTrackReq está habilitado y el bloque de funciones de IMC está en modo Manual, se ignorará el CVTrackValue y el modelo interno de IMC actualizará sus datos históricos con el valor CVOper o CVProg. Cuando CVTrackReq está habilitado y el bloque de funciones de IMC está en modo Automático, el modelo interno actualizará sus datos históricos basados en el valor de CVTrackValue. El CV en este caso podrá moverse como si el bloque de funciones de IMC todavía controlara el proceso. Esto es útil en los esquemas de selección de lazos múltiples en los que quiera que el bloque de funciones de IMC siga la salida de un algoritmo de control diferente, donde conectaría la salida del algoritmo de control con el CVTrackValue. | Válido = de 0,0 a 100,0 Valor predeterminado = 0,0 |
CVManLimiting | BOOL | Solicitud de limitación de CV en modo Manual. Si está en modo Manual y CVManLimiting es VERDADERO, la CV estará limitada por los valores de CVHLimit y CVLLimit. | Valor predeterminado = FALSO |
CVEUMax | REAL | Valor máximo para CVEU. El valor de CVEU que corresponde al 100% de CV. Si CVEUMax = CVEUMin, se establece el bit en Status. | Válido = cualquier punto flotante Valor predeterminado = 100,0 |
CVEUMin | REAL | Valor mínimo de CVEU. El valor de CVEU que corresponde al 0 % de CV. Si CVEUMax = CVEUMin, se establece el bit en Status. | Válido = cualquier punto flotante Valor predeterminado = 0,0 |
CVHLimit | REAL | Valor de límite alto de CV. Se utiliza para establecer la salida de CVHAlarm. También se utiliza para la limitación de CV para el modo Automático o Cascada/Relación, o el modo Manual si CVManLimiting es VERDADERO. Si CVLLimit < 0, CVHLimit > 100 y CVHLimit < CVLLimit, se establece el bit en Status. Si CVHLimit < CVLLimit, limita CV utilizando el valor de CVLLimit. | Válido = CVLLimit < CVHLimit ≤ 100,0 Valor predeterminado = 100,0 |
CVLLimit | REAL | Valor de límite bajo de CV. Se utiliza para configurar la salida de CVLAlarm. También se utiliza para la limitación de CV para el modo Automático o Cascada/Relación, o el modo Manual si CVManLimiting es VERDADERO. Si CVLLimit < 0, CVHLimit > 100 y CVHLimit < CVLLimit, se establece el bit en Status. Si CVHLimit < CVLLimit, limita CV utilizando el valor de CVLLimit. | Válido = 0,0 ≤ CVLLimit < CVHLimit Valor predeterminado = 0,0 |
CVROCPosLimit | REAL | Límite del índice de cambio en aumento de CV, en porcentaje por segundo. La limitación del índice de cambio solo se utiliza para los modos Automático o Cascada/Relación o el modo Manual si CVManLimiting es VERDADERO. El valor cero deshabilita el límite de CV de ROC. Si el valor de CVROCPOSLimit < 0, se establece el bit en Status e deshabilite la limitación de ROC para CV. | Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
CVROCNegLimit | REAL | Límite del índice de cambio en descenso de CV, en porcentaje por segundo. La limitación del índice de cambio solo se utiliza para los modos Automático o Cascada/Relación o el modo Manual si CVManLimiting es VERDADERO. El valor cero deshabilita el límite de CV de ROC. Si el valor de CVROCNegLimit < 0, se establece el bit en Status e deshabilite la limitación de ROC para CV. | Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
HandFB | REAL | Valor de CV de HandFeedback. CV se establece a este valor cuando está en modo Mano y HandFBFault es FALSO (estado correcto). Este valor provendría típicamente de la salida de una estación de mano/automática montada en el campo y se utiliza para generar una transferencia sin perturbaciones fuera del modo Mano Si el valor de HandFB < 0 o > 100, se establece el bit de Status único y limita el valor utilizado para CV. | Válido = de 0,0 a 100,0 Valor predeterminado = 0,0 |
HandFBFault | BOOL | Indicador de estado incorrecto del valor de HandFB. Si el valor de HandFB se lee desde una entrada analógica, HandFBFault se controla típicamente mediante el estado del canal de entrada analógica. Si HandFBFault es VERDADERO, indica un error en el módulo de entrada; se establece el bit en Status. | Valor predeterminado = FALSO FALSO = estado correcto |
WindupHIn | BOOL | Solicitud de windup alto. Si es VERDADERO, no se permitirá aumentar el valor de CV. Esta señal será normalmente la salida WindupHOut de un lazo secundario. | Valor predeterminado = FALSO |
WinduplIn | BOOL | Solicitud de windup bajo. Si es VERDADERO, no se permitirá disminuir el valor de CV. Esta señal será normalmente la salida WindupLOut de un lazo secundario. | Valor predeterminado = FALSO |
GainEUSpan | BOOL | Unidades de ModelGain en EU o como % de extensión. Unidades de ModelGain de CV en EU o como % de extensión. Se establece para interpretar ModelGain como EU, se restablece para interpretar ModelGain como % de extensión. | Valor predeterminado = FALSO VERDADERO = ganancia en EU FALSO = ganancia en % de extensión |
ProcessGainSign | BOOL | Solo se utiliza para ajuste automático. Signo de la ganancia de proceso (Delta PV/Delta CV). Se establece para indicar una ganancia de proceso negativa (el aumento en la salida provoca una reducción en PV). Restablecer para indicar una ganancia de proceso positiva (el aumento en la salida provoca un aumento en PV). | Valor predeterminado = FALSO |
ProcessType | DINT | Selección de tipo de proceso (1 = De integración, 0 = De sin integración) | Valor predeterminado = 0 |
ModelGain | REAL | Parámetro de ganancia de modelo interno. Introduzca una ganancia positiva o negativa dependiendo de la dirección del proceso. | Válido = número de punto flotante negativo máximo −> número de punto flotante positivo máximo Valor predeterminado = 0,0 |
ModelTC | REAL | Constante de tiempo de modelo interno en segundos. | Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
ModelDT | REAL | El tiempo muerto de modelo interno en segundos. | Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
RespTC | REAL | El parámetro de ajuste que determina la velocidad de la acción de la variable de control en segundos. | Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
PVTracking | BOOL | Solicitud de PV de seguimiento de SP. Se establece en VERDADERO para habilitar SP para realizar un seguimiento de PV. Se ignora cuando está en el modo Cascada/Relación o Automático. | Valor predeterminado = FALSO |
CVTrackReq | BOOL | Solicitud de seguimiento de CV. Se establece en verdadero para habilitar el seguimiento de CV cuando el ajuste automático está en OFF. Se ignora en los modos Mano y Anular. | Valor predeterminado = FALSO |
AllowCasRat | BOOL | Permitir el modo Cascada/Relación permisivo. Se establece en VERDADERO para permitir que el modo Cascada/Relación se selecciona utilizando ProgCasRatReq u OperCasRatReq. | Valor predeterminado = FALSO |
ManualAfterInit | BOOL | Solicitud de aplicación del modo Manual tras la inicialización. Cuando es VERDADERO, el bloque de funciones se pondrá en modo Manual si CVInitializing está establecido como VERDADERO, salvo que el modo actual sea Anular o Mano. Cuando ManualAfterInit es FALSO, el modo del bloque de funciones no cambiará. | Valor predeterminado = FALSO |
ProgProgReq | BOOL | Solicitud de programa del programa. El programa de usuario lo establece en VERDADERO para solicitar Control de programa. Se ignora si ProgOperReq es VERDADERO. Manteniendo esto en VERDADERO y ProgOperReq en FALSO se puede utilizar para bloquear el bloque de funciones en Control de programa. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgOperReq | BOOL | Solicitud de operador del programa. El programa de usuario lo establece en VERDADERO para solicitar Control de operador. Manteniendo esto en VERDADERO se puede utilizar para bloquear el bloque de funciones en Control de operador. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgCasRatReq | BOOL | Solicitud de modo Programa-Cascada/Relación. El programa de usuario lo establece en VERDADERO para solicitar el modo Cascada/Relación. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgAutoReq | BOOL | Solicitud de modo Programa-Automático. El programa de usuario lo establece en VERDADERO para solicitar el modo Automático. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgManualReq | BOOL | Solicitud de modo Programa-Manual. El programa de usuario lo establece en VERDADERO para solicitar el modo Manual. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgOverrideReq | BOOL | Solicitud de modo Programa-Anular. El programa de usuario lo establece en VERDADERO para solicitar el modo Anular. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
ProgHandReq | BOOL | Solicitud de modo Programa-Mano. El programa de usuario lo establece en VERDADERO para solicitar el modo Mano. Este valor se suele leer como una entrada digital procedente de una estación manual/automática. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece la entrada en FALSO. | Valor predeterminado = FALSO |
OperProgReq | BOOL | Solicitud de programa del operador. La interfaz de operador lo establece en VERDADERO para solicitar Control de programa. El bloque de funciones restablece este parámetro en FALSO. | Valor predeterminado = FALSO |
OperOperReq | Solicitud de operador del operador. La interfaz de operador lo establece en VERDADERO para solicitar Control de operador. El bloque de funciones restablecerá este parámetro en FALSO. | Valor predeterminado = FALSO | |
OperCasRatReq | BOOL | Solicitud de modo Operador-cada/Cascada/Relación. La interfaz de operador lo establece en VERDADERO solicitar el modo Cascada/Relación. El bloque de funciones restablecerá este parámetro en FALSO. | Valor predeterminado = FALSO |
OperAutoReq | BOOL | Solicitud de modo Operador-Automático. La interfaz de operador lo establece en VERDADERO para solicitar el modo Automático. El bloque de funciones restablecerá este parámetro en FALSO. | Valor predeterminado = FALSO |
OperManualReq | BOOL | Solicitud de modo Operador-Manual. La interfaz de operador lo establece en VERDADERO para solicitar el modo Manual. El bloque de funciones restablecerá este parámetro en FALSO. | Valor predeterminado = FALSO |
ProgValueReset | BOOL | Restablecer los valores de control del programa. Si es VERDADERO, las entradas Prog_xxx_Req se restablecen en FALSAS. Si es VERDADERO y está en Control de programa, se establece SPProg igual a SP y CVProg igual a CV. Cuando ProgValueReset es VERDADERO, el bloque de funciones restablece este parámetro a FALSO. | Valor predeterminado = FALSO |
TimingMode | DINT | Selecciona el modo Ejecución con base en tiempo. Valor/Descripción 0 = Modo Periódico 1 = Modo Sobremuestreo 2 = Modo Muestreo en tiempo real Para obtener más información sobre los modos de temporización, consulte “Atributos del bloque de funciones”. | Valor válido = de 0 a 2 Valor predeterminado = 0 |
OverSampleDT | REAL | Tiempo de ejecución para el modo Sobremuestreo. | Válido = de 0 a tiempo transcurrido TON_Timer máx. (4194,303 segundos) Valor predeterminado = 0 |
RTSTime | DINT | Período de actualización del módulo para el modo Muestreo en tiempo real. | Válido = de 1 a 32.767 1 conteo = 1 ms |
RTSTimeStamp | DINT | Valor del sello de tiempo del módulo para el modo Muestreo en tiempo real. | Válido = de 0 a 32.767 (envuelve desde 32.767 a 0) 1 conteo = 1 ms |
PVTuneLimit | REAL | Límite de ajuste de PV, escalado en las unidades de PV. Cuando se ejecuta el Ajuste automático y PV de predicción supere este límite, el ajuste se cancelará. | Rango: cualquier punto flotante Valor predeterminado = 0 |
AtuneTimeLimit | REAL | Tiempo máximo para completar el ajuste automático después del cambio de paso de CV. Cuando el ajuste automático supere este tiempo, el ajuste se cancelará. | Rango válido: cualquier punto flotante > 0. Valor predeterminado = 60 minutos |
NoiseLevel | DINT | Una estimación del nivel de ruido esperado en PV para que se realice la compensación durante el ajuste. Las selecciones son: 0 = bajo, 1 = medio, 2 = alto | Rango: De 0 a 2 Predeterminado = 1 |
CVStepSize | REAL | Tamaño de paso de CV en porcentaje para la prueba de paso de ajuste. El tamaño de paso se agrega directamente a CV sujeto al límite alto o bajo. | Rango: de -100% a 100% Valor predeterminado = 10% |
ResponseSpeed | DINT | Velocidad deseada de respuesta de lazo cerrado. Respuesta lenta: ResponseSpeed=0 Respuesta media: ResponseSpeed=1 Respuesta rápida: ResponseSpeed=2. Si ResponseSpeed es menor que 0, se utiliza una respuesta lenta. Si ResponseSpeed es mayor que 2, se utiliza una respuesta rápida. | Rango: De 0 a 2 Predeterminado = 1 |
ModelInit | BOOL | Interruptor de inicialización de modelo interno. | Valor predeterminado = FALSO |
Factor | REAL | Factor de aproximación del modelo sin integración. Solo se utiliza para integrar tipos de proceso. | Valor predeterminado = 100 |
AtuneStart | BOOL | Solicitud de inicio de Ajuste automático. Se establece en verdadero para iniciar el ajuste automático del bloque de funciones. Se ignora cuando IMC no está en modo Manual. El bloque de funciones restablecerá este parámetro en FALSO. | Valor predeterminado = FALSO |
AtuneUseModel | BOOL | Solicitud de uso del modelo de ajuste automático. Se establece en verdadero para reemplazar los parámetros del modelo actual con los parámetros calculados del modelo de ajuste automático. El bloque de funciones establece el parámetro de entrada a FALSO. | Valor predeterminado = FALSO |
AtuneAbort | BOOL | Solicitud de invalidación de Ajuste automático. Se establece en verdadero para invalidar el ajuste automático del bloque de funciones de IMC. El bloque de funciones establece el parámetro de entrada a FALSO. | Valor predeterminado = FALSO |
Parámetros de salida | Tipo de datos | Descripción | Valores válidos y predeterminados |
|---|---|---|---|
EnableOut | BOOL | Indica si la instrucción está habilitada. Se establece en falso si CVEU produce un desbordamiento. | |
CVEU | REAL | Salida de variable de control escalada. Se escala utilizando CVEUMax y CVEUMin, donde CVEUMax corresponde al 100% y CVEUMin corresponde al 0%. Esta salida se utiliza por lo general para controlar un módulo de salida analógica o un lazo secundario. CVEU = (CV * CVEUSpan / 100) + CVEUMin Cálculo de la extensión de CVEU: CVEUSpan = (CVEUMax − CVEUMin) | |
CV | REAL | Salida de variable de control. Este valor tiene que estar siempre expresado como de 0 a 100%. La CV está limitada por CVHLimit y CVLLimit cuando está en modo Automático o Cascada/Relación, o modo Manual si CVManLimiting es VERDADERO; de lo contrario está limitada por 0 y 100%. | |
DeltaCV | REAL | Diferencia entre la CV actual y la CV anterior (CV actual - CV anterior). | |
CVInitializing | BOOL | Indicador de modo Inicialización. Se establece en VERDADERO cuando CVInitReq o el bloque de funciones FirstScan es VERDADERO, o en una transición de VERDADERO a FALSO de CVFault (de estado incorrecto a correcto). CVInitializing se establece a FALSO después de que el bloque de funciones haya sido inicializado y CVInitReq ya no esté en VERDADERO. | |
CVHAlarm | BOOL | Indicador de alarma de CV alto. VERDADERO cuando el valor calculado para CV > 100 o CVHLimit. | |
CVLAlarm | BOOL | Indicador de alarma de CV bajo. VERDADERO cuando el valor calculado para CV < 0 o CVLLimit. | |
CVROCPosAlarm | BOOL | Indicador de alarma de índice de cambio de CV. VERDADERO cuando el índice de cambio calculado para CV supera CVROCPosLimit. | |
CVROCNegAlarm | REAL | Indicador de alarma de índice de cambio de CV. VERDADERO cuando el índice de cambio calculado para CV supera CVROCNegLimit. | |
SP | REAL | Valor de punto de ajuste actual. El valor de SP se utiliza para controlar CV cuando está en el modo Automático, Cascada/Relación o Seguimiento de PV, escalado en unidades de PV. | |
SPPercent | REAL | El valor de SP expresado en porcentaje de extensión de PV. SPPercent = ((SP − PVEUMin) * 100) / PVSpan donde PVSpan = PVEUMax − PVEUMin | |
SPHAlarm | BOOL | Indicador de alarma de límite alto de SP. VERDADERO cuando SP ≥ SPHLimit. | |
SPLAlarm | BOOL | Indicador de alarma de límite bajo de SP. VERDADERO cuando SP ≤ SPLLimit. | |
PVPercent | REAL | PV expresado en porcentaje de extensión. PVPercent = ((PV − PVEUMin) * 100) / PVSpan Cálculo de la extensión de PV: PVSpan = ( PVEUMax − PVEUMin ) | |
E | REAL | Error de proceso. Diferencia entre SP y PV, escalado en unidades de PV. | |
EPercent | REAL | El error expresado en forma de porcentaje de extensión. | |
InitPrimary | BOOL | Comando de inicialización de lazo primario. VERDADERO cuando no está en modo Cascada/Relación o cuando CVInitializing is VERDADERO. Esta señal la usará normalmente la entrada CVInitReq de un lazo primario. | |
WindupHOut | BOOL | Indicador de windup alto. VERDADERO cuando se ha alcanzado un límite alto de SP o alto/bajo de CV. La entrada WindupHIn la usará normalmente esta señal para limitar el windup de la salida CV en un lazo primario. | |
WindupLOut | BOOL | Indicador de windup bajo. VERDADERO cuando se ha alcanzado un límite de SP o un límite alto/bajo de CV. La entrada WindupLIn la usará normalmente esta señal para limitar el windup de la salida CV en un lazo primario. | |
Ratio | REAL | Multiplicador de relación actual, sin unidades. | |
RatioHAlarm | BOOL | Indicador de alarma de límite alto de relación. VERDADERO cuando Ratio > RatioHLimit. | |
RatioLAlarm | BOOL | Indicador de alarma de valor bajo de relación. VERDADERO cuando Ratio < RatioLLimit. | |
ProgOper | BOOL | Indicador de control de programa/operador. VERDADERO cuando está en modo Control de programa. FALSO cuando está en modo Control de operador. | |
CasRat | BOOL | Indicador de modo Cascada/Relación. VERDADERO cuando está en modo Cascada/Relación. | |
Auto | BOOL | Indicador de modo Automático. VERDADERO cuando está en modo Automático. | |
Manual | BOOL | Indicador de modo Manual. VERDADERO cuando está en modo Manual. | |
Override | BOOL | Indicador de modo Anular. VERDADERO cuando está en modo Anular. | |
Hand | BOOL | Indicador de modo Mano. VERDADERO cuando está en modo Hand. | |
DeltaT | REAL | Tiempo transcurrido entre actualizaciones en segundos. | |
StepSizeUsed | REAL | Tamaño de paso de CV real que se utiliza para el ajuste. | |
GainTuned | REAL | El valor calculado de la ganancia de modelo interno después de que haya concluido el ajuste. | |
TCTuned | REAL | El valor calculado de la constante de tiempo de modelo interno después de que haya concluido el ajuste. | |
DTTuned | REAL | El valor calculado del tiempo muerto de modelo interno después de que haya concluido el ajuste. | |
RespTCTunedS | REAL | El valor calculado de la constante de tiempo de la variable de control en la velocidad de respuesta lenta después de que haya concluido el ajuste. | |
RespTCTunedM | REAL | El valor calculado de la constante de tiempo de la variable de control en la velocidad de respuesta media después de que haya concluido el ajuste. | |
RespTCTunedF | REAL | El valor calculado de la constante de tiempo de la variable de control en la velocidad de respuesta rápida después de que haya concluido el ajuste. | |
AtuneOn | BOOL | Se establece en verdadero cuando se ha iniciado el ajuste automático. | |
AtuneDone | BOOL | Se establece en verdadero cuando se ha concluido correctamente el ajuste automático. | |
AtuneAborted | BOOL | Se establece en verdadero cuando el ajuste automático ha sido anulado por el usuario o porque se han producido errores durante la operación de ajuste automático. | |
AtuneStatus | DINT | Indica el estado del ajuste de bloque. | |
AtuneFault | BOOL | El ajuste automático ha generado alguno de los siguientes fallos. | Bit 0 de AtuneStatus |
AtunePVOutOfLimit | BOOL | Tanto la PV como la predicción de paso de tiempo muerto de PV superan a PVTuneLimit durante el ajuste automático. Si es verdadero, el ajuste automático se invalida. | Bit 1 de AtuneStatus |
AtuneModeInv | BOOL | El modo de IMC no era Manual al inicio del ajuste automático o se cambió del modo Manual durante el ajuste automático. Si es verdadero, el ajuste automático no se inicia o se invalida. | Bit 2 de AtuneStatus |
AtuneCVWindupFault | BOOL | WindupHIn o WindupLIn es verdadero al inicio o durante el ajuste automático. Si es verdadero, el ajuste automático no se inicia o se invalida. | Bit 3 de AtuneStatus |
AtuneStepSize0 | BOOL | StepSizeUsed = 0 al inicio del ajuste automático. Si es verdadero, el ajuste automático no se inicia. | Bit 4 de AtuneStatus |
AtuneCVLimitsFault | BOOL | CVLimitsInv y CVManLimiting es verdadero al inicio o durante el ajuste automático. Si es verdadero, el ajuste automático no se inicia o se invalida. | Bit 5 de AtuneStatus |
AtuneCVInitFault | BOOL | CVInitializing es verdadero al inicio o durante el ajuste automático. Si es verdadero, el ajuste automático no se inicia o se invalida. | Bit 6 de AtuneStatus |
AtuneEUSpanChanged | BOOL | CVEUSpan o PVEUSpan cambia durante el ajuste automático. Si es verdadero, el ajuste automático se invalida. | Bit 7 de AtuneStatus |
AtuneCVChanged | BOOL | CVOper se cambia cuando está en Control de operador o CVProg se cambia cuando está en Control de programa o cuando se ha alcanzado un límite de CV alto/bajo o ROC durante el ajuste automático. Si es verdadero, el ajuste automático se invalida. | Bit 8 de AtuneStatus |
AtuneTimeout | BOOL | El tiempo transcurrido es mayor que AtuneTimeLimit desde que se inicia la prueba de paso. Si es verdadero, el ajuste automático se invalida. | Bit 9 de AtuneStatus |
AtunePVNotSettled | BOOL | La PV cambia demasiado para realizar el ajuste automático. Si es verdadero, el ajuste automático se invalida. Espere hasta que la PV sea más estable antes de realizar el ajuste automático. | Bit 10 de AtuneStatus |
Status1 | DINT | Estado del mapa de bits del bloque de funciones. | |
Status2 | DINT | Estado del mapa de bits adicional para el bloque de funciones. | |
InstructFault | BOOL | El bloque de funciones ha generado un fallo. Indica el estado de los bits en Status1 y Status2. Un valor 0 indica que no se han producido fallos. Los parámetros que se pueden configurar con un valor no válido deben tener un parámetro de estado para indicar su estado no válido. | Bit 0 de Status1 |
PVFaulted | BOOL | Estado incorrecto de variable de proceso PV. | Bit 1 de Status1 |
CVFaulted | BOOL | Variable de control CV con fallo | Bit 2 de Status1 |
HandFBFaulted | BOOL | Estado incorrecto del valor de HandFB | Bit 3 de Status1 |
PVSpanInv | BOOL | Extensión de PV no válida, PVEUMax < PVEUMin. | Bit 4 de Status1 |
SPProgInv | BOOL | SPProg < SPLLimit o > SPHLimit. Valor de límite utilizado para SP. | Bit 5 de Status1 |
SPOperInv | BOOL | SPOper < SPLLimit o > SPHLimit. Valor de límite utilizado para SP. | Bit 6 de Status1 |
SPCascadeInv | BOOL | SPCascade < SPLLimit o > SPHLimit. Valor de límite utilizado para SP. | Bit 7 de Status1 |
SPLimitsInv | BOOL | Límites no válidos: SPLLimit < PVEUMin, SPHLimit > PVEUMax o SPHLimit < SPLLimit. Si SPHLimit < SPLLimit, entonces limita el valor utilizando SPLLimit. | Bit 8 de Status1 |
RatioLimitsInv | BOOL | Límites alto/bajo de Ratio no válidos, límite bajo < 0 o límite alto < límite bajo. | Bit 9 de Status1 |
RatioProgInv | BOOL | RatioProg < RatioLLimit o > RatioHLimit. Valor de límite utilizado para Ratio. | Bit 10 de Status1 |
RatioOperInv | BOOL | RatioOper < RatioLLimit o > RatioHLimit. Valor de límite utilizado para Ratio. | Bit 11 de Status1 |
CVProgInv | BOOL | CVProg < 0 o > 100, o < CVLLimit o > CVHLimit cuando CVManLimiting es VERDADERO. Valor de límite utilizado para CV. | Bit 12 de Status1 |
CVOperInv | BOOL | CVOper < 0 o > 100, o < CVLLimit o > CVHLimit cuando CVManLimiting es VERDADERO. Valor de límite utilizado para CV. | Bit 13 de Status1 |
CVOverrideValueInv | BOOL | CVOverrideValue < 0 o > 100. Valor de límite utilizado para CV. | Bit 14 de Status1 |
CVTrackValueInv | BOOL | CVTrackValue < 0 o > 100. Valor de límite utilizado para CV. | Bit 15 de Status1 |
CVEUSpanInv | BOOL | Extensión de CVEU no válida, CVEUMax es igual a CVEUMin. | Bit 16 de Status1 |
CVLimitsInv | BOOL | CVLLimit < 0, CVHLimit > 100, o CVHLimit <= CVLLimit. Si CVHLimit <= CVLLimit, limita CV utilizando CVLLimit. | Bit 17 de Status1 |
CVROCLimitInv | BOOL | Si CVROCLimit < 0, deshabilita el límite de ROC. | Bit 18 de Status1 |
HandFBInv | BOOL | HandFB < 0 o > 100. Valor de límite utilizado para CV. | Bit 19 de Status1 |
SampleTimeTooSmall | BOOL | Model DeadTime/DeltaT debe ser menor o igual a 200. | Bit 20 de Status1 |
FactorInv | BOOL | Factor < 0. | Bit 21 de Status1 |
ModuleGainInv | BOOL | ModelGain es 1.#QNAN o -1.#IND (no es un número), o ± 1.$ (infinito ∞) | Bit 22 de Status1 |
ModelTCInv | BOOL | ModelTC < 0. | Bit 23 de Status1 |
ModelDTInv | BOOL | ModelDT < 0. | Bit 24 de Status1 |
RespTCInv | BOOL | RespTC < 0. | Bit 25 de Status1 |
TimingModelInv | BOOL | TimingMode no válido. Si el modo actual no es Anular o Mano, entonces se establece el modo Manual. | Bit 27 de Status2 |
RTSMissed | BOOL | Solo se utiliza cuando se está en modo Muestreo en tiempo real. Es VERDADERO (TRUE) cuando ABS(DeltaT – RTSTime) > 1 milisegundo. | Bit 28 de Status2. |
RTSTimeInv | BOOL | RTSTime no válido. | Bit 29 de Status2. |
RTSTimeStampInv | BOOL | RTSTimeStamp no válido. Si el modo actual no es Anular o Mano, entonces se establece el modo Manual. | Bit 30 de Status2. |
DeltaTInv | BOOL | DeltaT no válido. Si el modo actual no es Anular o Mano, entonces se establece el modo Manual. | Bit 31 de Status2. |
Descripción
La siguiente ilustración muestra la configuración del bloque de funciones de IMC.

En cada ejecución, el bloque de funciones de IMC compara la medición de la PV real con la predicción de PV. El resultado se denomina estimación de las alteraciones, que es el efecto de las alteraciones del proceso no medidas combinadas con la imprecisión del modelado. La estimación de las alteraciones se utiliza como polarización para el punto de ajuste de la variable de control. En el caso idóneo de ausencia de alteraciones y modelado perfecto, la estimación de las alteraciones (la señal de retroalimentación) es igual a cero.
Modelo de primer orden | M = K/(T*s+1)*exp(-D*s) | |
Inversa del modelo | Inv = (T*s+1)/K | |
Filtro de primer orden | F = 1/(e*s+1) |
Predicción de PV = exp(-D*s)/(e*s+1) * (SP - alteraciones estimadas)
K... | Ganancia de modelo |
T... | Constante de tiempo de modelo |
D... | Tiempo muerto de modelo |
e... | Constante de tiempo de respuesta |
s... | Variable de Laplace |
El bloque de funciones calcula entonces el valor de CV (se imponen los límites CVHLimit, CVLLimit e índice de cambio) y la predicción de PV.
El bloque de funciones de IMC se puede utilizar en lugar de un bloque de funciones PID con la ventaja sobre la variable de control PID cuando se controlan procesos con grandes tiempos muertos.
Para un tipo de proceso de integración (como control de nivel y control de posición), se utiliza un modelo interno de no integración para aproximar el proceso de integración. El parámetro Factor se utiliza para convertir el modelo de proceso de integración identificado en un modelo interno de no integración que se utiliza para el cálculo de CV. Esto es necesario para proporcionar una ejecución de IMC estable.
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
No es específico para esta instrucción. Consulte Atributos comunes para ver los fallos relacionados con el operando.
Ejecución
Bloque de funciones
Condición/estado | Acción realizada |
|---|---|
Pre-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es falso | Los bits EnableIn y EnableOut se establecen en falsos. |
Tag.EnableIn es verdadero | Los bits EnableIn y EnableOut se establecen en verdaderos. La instrucción se ejecuta. |
Primera ejecución de instrucción | N/A |
Primer escaneado de instrucción | N/A |
Post-escaneado | Los bits EnableIn y EnableOut se establecen en falsos. |
Texto estructurado
Condición/estado | Acción realizada |
Pre-escaneado | Consulte Pre-escaneado en la tabla Bloque de funciones. |
Ejecución normal | Consultar Tag.EnableIn es verdadero en la tabla Bloque de funciones. |
Post-escaneado | Consulte Post-escaneado en la tabla Bloque de funciones. |
Ejemplos
Bloque de funciones

Texto estructurado
imcTag.PV := imcInput1;
imcTag.SPProg := imcInput2;
imcTag.CVProg := imcInput3;
IMC(imcTag);
imcOutput1 := imcTag.CVEU;
Entregue su opinión