FB_PID: Bloque de funciones PID
El bloque de funciones FB_PID proporciona un controlador PID.
En la gráfica siguiente se muestra un diagrama de pines del bloque de funciones FB_PID:
El algoritmo principal se representa con el diagrama de flujo siguiente:
El algoritmo principal se calcula como:
Mientras que una constante de tiempo diferencial de Td = 0 deshabilitará la rama diferencial del controlador PID, no se permite una ganancia proporcional Kp de 0. Esto dará como resultado una ganancia del 100 %.
Al establecer la constante de tiempo integral Ti = 0 se cambia a una norma de cálculo alternativa:
Esto centraría la señal de salida analógica que está en un rango [de 0 a 10.000].
El valor medido puede convertirse en un rango parametrizado. En tal caso, este nuevo rango se aplicará a la consigna así como a los niveles de alarma de medida.
En cada caso, la salida se encuentra en un rango [de 0 a 10.000] pero no puede limitarse.
Descripción de variables de E/S
En la tabla se describen las variables de entrada del bloque de funciones en la biblioteca TwidoEmulationSupport:
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_iMeasure |
INT |
Variable de control [de 1 a 10.000] |
i_iSetpoint |
INT |
Consigna del controlador [de 1 a 10.000] o [de mín. configurado a máx. configurado] |
i_etOpMode |
ET_PidOpMode |
PID/PI: el PID puede sobrescribirse con etCorrectorType con fines de compatibilidad. |
i_xMeasConversion |
BOOL |
Activa la conversión de valores medidos a los límites determinados desde [de 0 a 10.000] hasta [de i_iConversionMin a i_iConversionMax]. |
i_iConversionMin |
INT |
Conversión del valor mínimo. |
i_iConversionMax |
INT |
Conversión del valor máximo. |
i_xMeasAlarm |
BOOL |
Activa las alarmas del rango de valores medido. |
i_iAlarmHigh |
INT |
Valor de umbral de alarma alta para q_iAnalogOutput. |
i_iAlarmLow |
INT |
Valor de umbral de alarma baja para q_iAnalogOutput. |
i_iKp |
INT |
Factor de ganancia proporcional |
i_iTi |
INT |
Constante de tiempo integral |
i_iTd |
INT |
Constante de tiempo diferencial (se ignora en el caso de PI) |
i_xDirectOutput |
BOOL |
TRUE: acción directa FALSE: acción inversa |
i_xLimitOutput |
BOOL |
Activa la limitación de la salida. |
i_iLimitMin |
INT |
Límite inferior de la salida |
i_iLimitMax |
INT |
Límite superior de la salida |
i_iPWMPeriod |
INT |
Señal PWM |
En la tabla se describen las variables de salida del bloque de funciones en la biblioteca TwidoEmulationSupport:
Salida |
Tipo de datos |
Descripción |
---|---|---|
q_iAnalogOutput |
INT |
Salida del controlador que va a convertirse de digital a analógica [de 1 a 10.000] |
q_rDutyCycleOutput |
REAL |
Se reduce a un valor [de 0 a 1] que puede asignarse a un módulo PWM manualmente. |
q_xPWM |
BOOL |
Salida PWM generada por el software |
q_xMeasureValueLowAlarm |
BOOL |
Monitorización de la variable de control. Se establece en 1, si la variable es inferior al nivel de la alarma baja. |
q_xMeasureValueHighAlarm |
BOOL |
Monitorización de la variable de control. Se establece en 1, si se supera el nivel de la alarma alta. |
q_etPidDiag |
ET_PidDiag |
Código de diagnóstico procedente del controlador PID |
q_sMsg |
STRING |
Mensaje de diagnóstico |
La configuración del bloque PID en EcoStruxure Machine Expert - Basic proporciona el periodo de muestreo de parámetros adicionales (en la ficha PID del Asistente de PID). Este periodo de muestreo es el tiempo de ciclo de la tarea que ejecuta el bloque PID. Para garantizar que la señal en q_xPWM se genera correctamente, el i_iPWMPeriod configurado debe ser un múltiplo del tiempo de muestra. Un periodo PWM de 0 desactiva la generación de la señal.
La entrada i_etOpMode es del tipo:
La salida i_etPidDiag es del tipo: