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

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 HighLimit LowLimit, la instrucción establece HighAlarm y LowAlarm, el bit apropiado en Status y Out = LowLimit.Válido = LowLimit < HighLimit punto flotante positivo máximoValor predeterminado = punto flotante positivo máximo |
LowLimit | REAL | El valor de límite bajo. Esto es el valor mínimo para Out. Si HighLimit 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 LowLimit < HighLimitValor 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 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 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 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
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 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.

Limitaciones de los parámetros
Los siguientes parámetros SOC tienen estos límites en los valores válidos.
Parámetro | Límite |
|---|---|
WLead | ![]() donde DeltaT se expresa en segundos |
WLag | ![]() 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:

La instrucción también limita el valor de Out basando en los valores HighLimit y LowLimit.
Si: | Entonces: |
|---|---|
HighLimit LowLimit | Out = LowLimit Integrator = IntegratorLowLimit Se establece HighLowLimsInv Se establece HighAlarm Se establece LowAlarm |
Out HighLimit | Out = HighLimit IntegratorLowLimit n-1 Se establece HighAlarm |
Out 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:

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:

El diagrama de Bode correspondiente se muestra en el diagrama B que aparece a continuación.

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.

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.

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:

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

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
LowLimit, la instrucción establece HighAlarm y LowAlarm, el bit apropiado en Status y Out = LowLimit.
