Controlador de segundo orden (SOC)

Esta información se aplica a los controladores
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
CompactLogix
5380,
ControlLogix
5580 y ControlLogix 5590.
La instrucción SOC está diseñada para utilizarla en sistemas de control de lazo cerrado de forma similar a la instrucción PI. La instrucción SOC proporciona un término de ganancia, un retardo de primer orden y un adelanto de segundo orden.
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en el diagrama de escalera.
Bloque de funciones
RSL5K_SOC Function Block_v31
Texto estructurado
SOC(SOC_tag);
Operandos
Bloque de funciones
Operando
Tipo
Formato
Descripción
SOC tag
SEC_ORDER_CONTROLLER
Estructura
Estructura SOC
Estructura de SEC_ORDER_CONTROLLER
Parámetro de entrada
Tipo de datos
Descripción
EnableIn
BOOL
Habilita la entrada. Si no está activada, la instrucción no se ejecuta y las salidas no se actualizan.
Está establecido de forma predeterminada.
In
REAL
La entrada de la señal analógica a la instrucción.
Válido = cualquier punto flotante
Valor predeterminado = 0,0
Initialize
BOOL
El comando de inicialización de la instrucción. Cuando se establece, Out y el integrador interno se establecen igual al valor de InitialValue.
Está borrado de forma predeterminada.
InitialValue
REAL
La entrada del valor inicial. Cuando Initialize está establecido, Out y el integrador se establecen al valor de InitialValue. El valor de InitialValue se limita usando HighLimit y LowLimit.
Válido = cualquier punto flotante
Valor predeterminado = 0,0
Gain
REAL
La ganancia proporcional de la instrucción. Si el valor está fuera de rango, la instrucción limita el valor y establece el bit apropiado en Status.
Válido = cualquier número flotante > 0,0
Valor predeterminado = punto flotante positivo mínimo
WLag
REAL
La frecuencia de la esquina de retardo de primer orden en radianes/segundo. Si el valor está fuera de rango, la instrucción limita el valor y establece el bit apropiado en Status.
Válido = consulte la sección Descripción a continuación para ver los rangos válidos
Valor predeterminado = 0,0
WLead
REAL
La frecuencia de la esquina de adelanto de segundo orden en radianes/segundo. Si el valor está fuera de rango, la instrucción limita el valor y establece el bit apropiado en Status.
Válido = consulte la sección Descripción a continuación para ver los rangos válidos
Valor predeterminado = 0,0
ZetaLead
REAL
Factor de amortiguación de adelanto de segundo orden. Si el valor está fuera de rango, la instrucción limita el valor y establece el bit apropiado en Status.
Válido = de 0,0 a 10,0
Valor predeterminado = 0,0
HighLimit
REAL
El valor de límite alto. Esto es el valor máximo para Out. Si HighLimitLess than or equal toLowLimit, la instrucción establece HighAlarm y LowAlarm, el bit apropiado en Status y Out = LowLimit.
Válido = LowLimit < HighLimit Less than or equal to punto flotante positivo máximo
Valor predeterminado = punto flotante positivo máximo
LowLimit
REAL
El valor de límite bajo. Esto es el valor mínimo para Out. Si HighLimit Less than or equal to LowLimit, la instrucción establece HighAlarm y LowAlarm, establece el bit apropiado en Status y establece Out = LowLimit.
Válido = punto flotante negativo máximo Less than or equal to LowLimit < HighLimit
Valor predeterminado = punto flotante negativo máximo
HoldHigh
BOOL
El comando de retención de límite alto. Cuando está establecido, al valor del integrador interno no se le permite aumentar en valor.
Está borrado de forma predeterminada.
HoldLow
BOOL
El comando de retención de límite bajo Cuando está establecido, al valor del integrador interno no se le permite disminuir en valor.
Está borrado de forma predeterminada.
TimingMode
DINT
Selecciona el modo de ejecución de temporizació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”.
Válido = de 0 a 2
Valor predeterminado = 0
OversampleDT
REAL
Tiempo de ejecución del modo de Sobremuestreo.
Válido = de 0 a 4194,303 segundos
Valor predeterminado = 0
RTSTime
DINT
Período de actualización de módulo para el modo de muestreo en tiempo real
Válido = de 1 a 32.767 ms
Valor predeterminado = 1
RTSTimeStamp
DINT
Valor del sello de tiempo del módulo para el modo de muestreo en tiempo real.
Válido = de 0 a 32.767 ms
Valor predeterminado = 0
Parámetro de salida
Tipo de datos
Descripción
EnableOut
BOOL
Indica si la instrucción está habilitada. Se establece en falso si Out produce un desbordamiento.
Out
REAL
La salida calculada del algoritmo.
HighAlarm
BOOL
El indicador de alarma del límite máximo. Se establece cuando el valor calculado para Out Greater than or equal to HighLimit y la salida se fija en HighLimit.
LowAlarm
BOOL
El indicador de alarma del límite mínimo. Se establece cuando el valor calculado para Out Less than or equal to LowLimit y la salida se fija en LowLimit.
DeltaT
REAL
Tiempo transcurrido entre actualizaciones. Este es el tiempo transcurrido en segundos utilizado por el algoritmo de control para calcular la salida del proceso.
Status
DINT
Estado del bloque de funciones.
InstructFault (Status.0)
BOOL
La instrucción detectó uno de los siguientes errores de ejecución. No se trata de un error mayor o menor del controlador. Se comprueban los bits de estado restantes para determinar lo que ha ocurrido.
GainInv (Status.1)
BOOL
Ganancia < punto flotante positivo mínimo.
WLagInv (Status.2)
BOOL
WLag > máximo o WLag < mínimo.
WLeadInv (Status.3)
BOOL
WLead > máximo o WLead < mínimo.
ZetaLeadInv (Status.4)
BOOL
ZetaLead > máximo o ZetaLead < mínimo.
HighLowLimsInv (Status.5)
BOOL
HighLimit Less than or equal to LowLimit.
TimingModeInv (Status.27)
BOOL
Modo de temporización no válido.
Para obtener más información sobre los modos de temporización, consulte “Atributos del bloque de funciones”.
RTSMissed (Status.28)
BOOL
Solo se utiliza en el modo de muestreo en tiempo real. Se establece cuando ABS | DeltaT - RTSTime | > 1 (0,001 segundos).
RTSTimeInv (Satus.29)
BOOL
Valor de RTSTime no válido.
RTSTimeStampInv (Status.30)
BOOL
Valor de RTSTimeStamp no válido.
DeltaT (Status.31)
BOOL
Valor de DeltaT no válido.
Texto estructurado
Operando
Tipo
Formato
Descripción
SOC tag
SEC_ORDER_CONTROLLER
estructura
Estructura SOC
Consulte Sintaxis de texto estructurado para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
Descripción
La instrucción SOC proporciona un término de ganancia, un retardo de primer orden y un adelanto de segundo orden. La frecuencia del retardo se puede ajustar, así como la frecuencia y la regulación del adelanto. El par de ceros del adelanto de segundo orden puede ser complejo (la amortiguación es inferior a la unidad) o real (la amortiguación Greater than or equal to la unidad). La instrucción SOC está diseñada para ejecutarse en una tarea en la que el índice de escaneado se mantiene constante.
La instrucción SOC utiliza la siguiente ecuación de transferencia de Laplace.
SOC_Equation
Limitaciones de los parámetros
Los siguientes parámetros SOC tienen estos límites en los valores válidos.
Parámetro
Límite
WLead
SOC high and low limit equation
donde DeltaT se expresa en segundos
WLag
SOC high and low limit equation 2
donde DeltaT se expresa en segundos
ZetaLead
LowLimit = 0,0
HighLimit = 10,0
Siempre que el valor calculado para la salida no sea válido o NAN, la instrucción establece Out = el valor no válido. Los parámetros internos no se actualizan. En cada uno de los escaneados posteriores, la salida se calcula utilizando los parámetros internos desde el último escaneado en el que la salida era válida.
Limitación
La instrucción detiene wind-up basando en el estado de las entradas de Hold.
Si:
Entonces:
HoldHigh está establecido en Integrator > Integrator
n-1
Integrator = Integrator
n-1
HoldLow está establecido en Integrator < Integrator
n-1
Integrator = Integrator
n-1
La instrucción también detiene windup del integrador basado en los valores HighLimit y LowLimit.
Si:
Entonces:
Integrator > IntegratorHighLimit
Integrator = IntegratorHighLimit
Integrator < IntegratorLowLimit
Integrator = IntegratorLowLimit
donde:
SOC_equation 2
La instrucción también limita el valor de Out basando en los valores HighLimit y LowLimit.
Si:
Entonces:
HighLimit Less than or equal to LowLimit
Out = LowLimit
Integrator = IntegratorLowLimit
Se establece HighLowLimsInv
Se establece HighAlarm
Se establece LowAlarm
Out Greater than or equal to HighLimit
Out = HighLimit
IntegratorLowLimit
n-1
Se establece HighAlarm
Out Less than or equal to LowLimit
Out = LowLimit
Integrator = Integrator
n-1
Se establece LowAlarm
Afecta a las marcas de estado matemáticas
No
Fallos mayores/menores
El fallo menor ocurre cuando
Tipo de fallo
Código de fallo
La función está habilitada y se detecta un desbordamiento.
4
4
Consulte Atributos comunes para ver los fallos relacionados con el operando.
Ejecución
OBSERVACIÓN: En Texto estructurado, EnableIn siempre es verdadero durante un escaneado normal. Por tanto, si la instrucción se encuentra en la ruta de control activada por la lógica, se ejecutará. Para obtener más información, incluidas las definiciones y el comportamiento general de todas las instrucciones del bloque de funciones, consulte la publicación 1756-RM006G-ES-P, Instrucciones avanzadas de control de procesos y variadores.
Condición/estado
Acción realizada
Pre-escaneado
No se realiza ninguna acción.
Post-escaneado
No se realiza ninguna acción.
Condiciones que ocurren únicamente durante el modo de exploración normal
Condición/estado
Acción realizada
Primera ejecución de instrucción
Los parámetros internos y Out se establece a 0. Fuerce el recálculo de los coeficientes de la ecuación. El algoritmo principal no se ejecuta, pero validará los parámetros de entrada.
Primer escaneado de instrucción
Los parámetros internos y Out se establece a 0. Fuerce el recálculo de los coeficientes de la ecuación. El algoritmo principal no se ejecuta, pero validará los parámetros de entrada.
EnableIn es falso
El bit .EnableOut se borra a falso.
EnableIn es verdadero
El bit .EnableOut se establece en verdadero.
El algoritmo principal de la instrucción se ejecutará y las salidas se actualizarán.
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.
Ejemplo
La instrucción SOC es un bloque de funciones especializado que se utiliza en aplicaciones en las que se transfiere energía entre dos secciones a través de un sistema resorte-masa. Normalmente, en estos tipos de aplicaciones, la respuesta de frecuencia del propio proceso puede caracterizarse como se muestra en el siguiente diagrama de Bode A:
SOC_Diagram A
La instrucción SOC implementa un filtro de retardo de primer orden seguido de un controlador PID para implementar una función de transferencia con una integración, un cero de segundo orden (adelanto) y un polo de primer orden (retardo). Con esta instrucción, el ajuste PID se simplifica porque los términos de regulación están dispuestos de modo que tenga WLead y ZLead como entradas a la instrucción SOC en lugar de los valores Kp, Ki y Kd. La función de transferencia de la instrucción SOC es:
SOC_Example formula
El diagrama de Bode correspondiente se muestra en el diagrama B que aparece a continuación.
L5K_SOC_Diagram B
La instrucción SOC puede utilizarse en una aplicación de regulación de par o de tensión en la que se utiliza una celda de carga o transductor de fuerza como retroalimentación y la salida del esquema de regulación opera directamente en el lazo menor de par (corriente) del variador. En muchas de estas aplicaciones, el sistema controlado puede estar poco amortiguado mecánicamente y tener una frecuencia natural que sea difícil de estabilizar cuando se refleja a través del propio dispositivo de retroalimentación.
SOC_Example 2 torque reg app
Al utilizar la instrucción SOC, el ajuste PID se simplifica porque los términos de regulación se pueden disponer de modo que tenga WLead y ZLead como entradas a la instrucción SOC en lugar de los valores Kp, Ki y Kd. De esta manera, es más fácil ajustar y configurar las frecuencias de esquina del controlador/regulador comparado con el proceso del mundo real. Durante el arranque, la frecuencia natural del sistema y el factor de amortiguación se pueden medir empíricamente o en el sitio. Posteriormente, los parámetros del regulador se pueden ajustar para que coincidan con las características del proceso, permitiendo más ganancia y un control más estable del proceso final.
SOC_Example 2 PID tuning
En el sistema anterior, si Wlead se establece igual a la frecuencia natural del sistema, y si Wlag se establece sustancialmente por encima de la frecuencia de transición deseada, (transición > 5 veces), la respuesta resultante del sistema sería similar a la siguiente:
SOC_Example Wlead
En una aplicación real, los pasos para utilizar y configurar esta instrucción incluyen:
Reconocer el tipo de proceso que se está controlando. Si la respuesta del sistema a una función de paso resulta en un alto grado de oscilación o se puede caracterizar por la curva de proceso mostrada anteriormente, este bloque puede proporcionar las características de regulación necesarias para un control estable.
Determinar la frecuencia natural del sistema/proceso. Esto puede medirse empíricamente o en el sitio. Ajuste WLead para que se corresponda con, o esté ligeramente por delante de la frecuencia natural del proceso en sí.
Ajustar el factor de amortiguación, Zlead, para que anule cualquier sobreimpulso en el sistema.
Mover WLag lo suficientemente lejos más allá de la frecuencia de transición del sistema (> 5 veces) y comenzar a aumentar Gain global que se desea alcanzar
Bloque de funciones
SOC_FBD_ex
Texto estructurado
SOC_01.In := Process_Error;
SOC_01.Initialize := Regulator_Enable_Not;
SOC_01.Gain := Gain;
SOC_01.WLag := Lag_Radians_per_sec;
SOC_01.WLead := Lead_radians_per_sec;
SOC_01.ZetaLead := Damping_Factor;
SOC_01.HighLimit := Max_Out;
SOC_01.LowLimit := Min_Out;
SOC(SOC_01);
SOC_Out := SOC_01.Out;
Entregue su opinión
¿Tiene dudas o comentarios acerca de esta documentación? Por favor deje su opinión aquí.
Normal