Curva S (S-Curve, SCRV)
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 SCRV realiza una función de rampa con un grado de variación agregado. El grado de variación es el índice máximo de cambio del régimen empleado para cambiar gradualmente de salida a entrada.
Idiomas disponibles
Diagrama de lógica de escalera
Esta instrucción no está disponible en el diagrama de escalera.
Bloque de funciones

Texto estructurado
SCRV(SCRV_tag);
Operandos
Bloque de funciones
Operando | Tipo | Formato | Descripción |
|---|---|---|---|
SCRV tag | S_CURVE | Estructura | Estructura SCRV |
Texto estructurado
Operando | Tipo | Formato | Descripción |
|---|---|---|---|
SCRV tag | S_CURVE | Estructura | Estructura SCRV |
Consulte Sintaxis de texto estructurado para obtener más información sobre la sintaxis de las expresiones dentro de texto estructurado.
Estructura de S_CURVE
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 | La entrada de Initialize a la instrucción. Cuando está establecido, la instrucción retiene Out = InitialValue Está borrado de forma predeterminada. |
InitialValue | REAL | Valor inicial de Curva S. Cuando Initialize está establecido, Out = InitialValue. Válido = cualquier punto flotante Valor predeterminado = 0,0 |
AbsAlgRamp | BOOL | Tipo de rampa. Si está establecido, la instrucción funciona como una rampa de valor absoluto. Si se borra, la instrucción funciona como una progresión lineal algebraica. Está establecido de forma predeterminada |
AccelRate | REAL | Índice de aceleración en unidades de entrada por segundo 2 . Un valor cero evita la aceleración del formato Out. Cuando AccelRate < 0, la instrucción asume AccelRate = 0 y establece el bit correspondiente en Status.Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
DecelRate | REAL | Índice de desaceleración en unidades de entrada por segundo 2 . Un valor cero evita la desaceleración del formato Out. Cuando DecelRate < 0, la instrucción asume DecelRate = 0 y establece el bit correspondiente en Status.Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
JerkRate | REAL | Índice de variación en unidades de entrada por segundo 3 . Especifica el índice máximo de cambio de los índices de aceleración y desaceleración al cambiar en progresión lineal de salida a entrada. Cuando (JerkRate * DeltaT) S AccelRate o DecelRate, los índices de aceleración y desaceleración no están limitados. En esta situación, la instrucción se comporta como una función de progresión lineal. Cuando JerkRate < 0, la instrucción asume JerkRate = 0 y establece el bit correspondiente en Status.Válido = de 0,0 a número de punto flotante positivo máximo Valor predeterminado = 0,0 |
HoldMode | BOOL | Parámetro del modo de retención de la Curva S. Este parámetro se utiliza con el parámetro HoldEnable. Si HoldMode está establecido cuando HoldEnable está establecido e Rate = 0, la instrucción retiene la constante Out. En esta situación, la instrucción retiene Out en cuanto se establece HoldEnable, JerkRate se ignora y Out genera una "esquina" en su perfil. Si HoldMode está desactivado cuando HoldEnable está establecido, la instrucción utiliza JerkRate para llevar Out a un valor constante. Out se retiene cuando Rate = 0. No cambie HoldMode cuando HoldEnable está establecido porque la instrucción ignorará el cambio. Está borrado de forma predeterminada. |
HoldEnable | BOOL | Parámetro de habilitación de retención de la Curva S. Cuando está establecido, Out se retiene. Cuando se borra, Out se mueve de su valor actual hasta que sea igual a In. 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 | Habilita la salida. |
S_Mode | BOOL | Salida S_Mode. Cuando (Jerk * DeltaT) Rate yRate < Accel o Decel, S_Mode se establece. De lo contrario, se borra S_Mode. |
Out | REAL | La salida de la instrucción de Curva S. Se establecen marcas de estado matemático para esta salida. |
Rate | REAL | Cambio interno en Out en unidades por segundo. |
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. |
AcceRateInv (Status.1) | BOOL | AccelRate es negativo. |
DecelRateInv (Status.2) | BOOL | DecelRate es negativo. |
JerkRateInv (Status.3) | BOOL | JerkRate es negativo. |
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 (Status.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. |
Descripción
El requisito principal de la instrucción SCRV es garantizar que el índice no cambie nunca más del grado de variación especificado.
Puede configurar la instrucción SCRV para generar un Perfil de curva S o un Perfil de rampa para una entrada de paso.
Perfil de curva S
Para generar un perfil de Curva S, se establece JerkRate como (JerkRate * DeltaT) < AccelRate y/o DecelRate.
En el modo de Perfil de curva S, la instrucción SCRV garantiza que el índice no cambie nunca más del JerkRate especificado. El algoritmo utilizado para generar el Perfil de curva S está diseñado para generar una Curva S suave y simétrica para una entrada de paso. Para facilitar esto, se incorpora una integración trapezoidal de Out. Como resultado, los cambios en Rate serán menores que JerkRate durante partes del perfil.
Cuando se produce un cambio de paso en la entrada, el índice se incrementa al AccelRate o DecelRate programado. AccelRate o DecelRate se mantienen hasta un punto en el que el índice debe comenzar a disminuir para que la salida alcance la entrada cuando el índice llega a cero.
En algunos casos, dependiendo de los valores de aceleración, desaceleración y variación, el índice de aceleración o el índice de desaceleración puede que no se alcancen antes de que el índice comience a disminuir por el grado de variación.
Para cambios de pasos muy pequeños, la instrucción SCRV no intentará generar un perfil 'S'. En este modo, se producirá todo el paso y Rate reflejará el cambio en la salida. Este comportamiento ocurrirá si Out = In y el siguiente cambio de paso a In puede ser la salida con un índice inferior o igual a JerkRate programado.
La instrucción SCRV admite una rampa algebraica y una rampa de valor absoluto. Para una rampa algebraica, la condición de aceleración se define por una entrada que se está volviendo más positiva, y la condición de desaceleración se define por una entrada que se está volviendo más negativa. Para una rampa de valor absoluto, la condición de aceleración se define por una entrada que se aleja de cero, y la condición de desaceleración se define por una entrada que se mueve hacia cero.
Perfil de rampa
Para producir un perfil de progresión lineal, establezca JerkRate de modo que (JerkRate * DeltaT)
AccelRate y/o DecelRate.
AccelRate y/o DecelRate.En el modo Perfil de rampa, la instrucción SCRV siempre produce un índice de cambio igual al AccelRate o DecelRate programado hasta que la diferencia entre Out e In requiere menos que AccelRate o DecelRate para alcanzar el punto final.
HoldMode = 0 funciona igual que HoldMode = 1. Cuando HoldEnable está establecido, Out se retiene inmediatamente y Rate se convierte en cero.
El diagrama siguiente muestra cómo la instrucción modifica Out.

(1)
Cuando se establece Initialize, la instrucción establece lo siguiente:Outn = InitialValue
Outn-1 = Outn
Raten = 0
Raten-1 = 0
(2)
Cuando HoldMode está borrado, Out se mueve hacia In y se establece HoldEnable, el índice comienza a disminuir hacia cero al índice de variación. Debido a JerkRate, Out se retiene y cualquier valor que tenga cuando el índice alcanza cero. Cuando finalmente Out se retiene constante, tiene un valor que es diferente del valor que tuvo cuando se estableció HoldEnable.Cuando HoldMode está establecido, Out se mueve hacia In y se establece HoldEnable, el índice se ajusta inmediatamente a cero. Out se retiene en cualquiera de los valores que tenía cuando se estableció HoldEnable.
Al reducir JerkRate durante una transición puede causar que Out sobreimpulse In. Si se produce el sobreimpulso, es el resultado de imponer el JerkRate introducido. Puede evitar un sobreimpulso si disminuye JerkRate en pequeños pasos mientras ajusta o al cambiar JerkRate mientras Out = In (no durante una transición).
El tiempo necesario para que Out iguale un cambio en la entrada es una función de AccelRate, JerkRate y la diferencia entre In y Out.
Calcular los valores de salida y relación
En la transición de un valor inicial al valor final, Out pasa por tres regiones. En la región 1 y la región 3, el índice de cambio de Out se basa en JerkRate. En la región 2, el índice de cambio de Out se basa en AccelRate o DecelRate.

Out se calcula para cada región de la forma siguiente:

con estas ecuaciones para cada región:
Región | Ecuación |
|---|---|
región 1 | ![]() |
región 2 | ![]() |
región 3 | ![]() |
Cuando:

el bloque SCRV no alcanza AccelRate o DecelRate. Out lleva a cabo lo siguiente:

donde:

Afecta a las marcas de estado matemáticas
No
Condiciones de fallo
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
Bloque de funciones
Condición | Acción de bloque de funciones |
|---|---|
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 | Borrar datos del escaneado anterior. |
Post-escaneado | Los bits EnableIn y EnableOut se desactivan 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. |
Ejemplo
En la mayoría de las aplicaciones de variador coordinadas, una referencia maestra ordena la velocidad de la línea para todo un grupo de variadores. A medida que se seleccionan varias referencias, los variadores no pueden presentarse con cambios de "paso" en la referencia de velocidad debido a que las diferencias en la inercia de la carga, el par de motor y el ajuste no permitirían que las secciones de variador individuales reaccionaran de manera coordinada. La instrucción SCRV está diseñada para cambiar y modelar la señal de referencia a las secciones del variador de manera que se controlen la aceleración, la desaceleración y la variación (derivada de la aceleración). Esta instrucción proporciona un mecanismo para permitir que la referencia a los variadores alcance el punto de ajuste de referencia designado de tal manera que elimine las fuerzas y el impacto excesivos en la maquinaria y el equipo conectados.
Bloque de funciones

Texto estructurado
SSUM_01.In1 := Master_reference;
SSUM_01.Select1 := master_select;
SSUM_01.In2 := Jog_reference;
SSUM_01.Select2 := jog_select;
SSUM(SSUM_01);
select_out := SSUM_01.Out;
SCRV_01.In := select_out;
SCRV_01.AccelRate := accel;
SCRV_01.DecelRate := accel;
SCRV_01.JerkRate := jerk_rate;
SCRV(SCRV_01);
scurve_out := SCRV_01.Out
Entregue su opinión


