Courbe en S (SCRV)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, CompactLogix
5380, ControlLogix
5580 et ControlLogix 5590.L'instruction SCRV agit comme une fonction de rampe avec un taux de jerk ajouté. Le taux jerk est la fréquence maximale de changement du taux utilisé lors du passage de la sortie vers l'entrée.
Langues disponibles
Diagramme à relais
Cette instruction n’est pas disponible dans un diagramme à relais.
Bloc fonctionnel

Texte structuré
SCRV(SCRV_tag);
Opérandes
Bloc fonctionnel
Opérande | Type | Format | Description |
|---|---|---|---|
SCRV tag | S_CURVE | Structure | Structure SCRV |
Texte structuré
Opérande | Type | Format | Description |
|---|---|---|---|
SCRV tag | S_CURVE | Structure | Structure SCRV |
Pour plus d'informations sur la syntaxe des expressions dans le texte structuré, reportez-vous à la section Syntaxe du texte structuré.
Structure S_CURVE
Paramètre d’entrée | Type de données | Description |
|---|---|---|
EnableIn | BOOL | Activez l'entrée. Si mis à zéro, l'instruction n'est pas exécutée et les sorties ne sont pas mises à jour. La valeur par défaut est définie. |
In | REAL | Entrée du signal analogique dans l’instruction. Valide = tout flottant Par défaut = 0,0 |
Initialize | BOOL | L'entrée d’initialisation dans l'instruction. Quand elle est définie, l’instruction maintient Out = InitialValue La valeur par défaut est mise à zéro. |
InitialValue | REAL | Valeur initiale de la courbe en S. Lorsque Initialize est défini, Out = InitialValue. Valide = tout flottant Par défaut = 0,0 |
AbsAlgRamp | BOOL | Type de rampe. Si elle est définie, l’instruction fonctionne comme une rampe de valeur absolue. Si elle est mise à zéro, l’instruction fonctionne comme une rampe algébrique. La valeur par défaut est définie. |
AccelRate | REAL | Le taux d’accélération en unité d’entrée par seconde 2 . Une valeur de zéro empêche Out d’accélérer. Quand AccelRate < 0, l'instruction suppose que AccelRate = 0 et définit le bit approprié dans Status.Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
DecelRate | REAL | Le taux de décélération en unité d’entrée par seconde 2 . Une valeur de zéro empêche Out de décélérer. Quand DecelRate < 0, l'instruction suppose que DecelRate = 0 et définit le bit approprié dans Status.Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
JerkRate | REAL | Taux de jerk en unités d’entrée par seconde 3 . Spécifie la fréquence maximale de changement des taux d’accélération et de décélération en appliquant l’effet de rampe de la sortie vers l’entrée. Lorsque (JerkRate * DeltaT) S AccelRate ou DecelRate, les taux d’accélération et de décélération ne sont pas limités. Dans cette situation, l’instruction se comporte comme une fonction de rampe. Quand JerkRate < 0, l'instruction suppose que JerkRate = 0 et définit le bit approprié dans Status.Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
HoldMode | BOOL | Paramètre du mode Maintien de la courbe en S. Ce paramètre est utilisé avec le paramètre HoldEnable. Si HoldMode est défini lorsque HoldEnable est défini et que Rate = 0, l'instruction maintient Out constante. Dans ce cas, l’instruction maintient Out dès que HoldEnable est défini, le JerkRate est ignoré et Out produit un « coin » dans son profil. Si HoldMode est mis à zéro lorsque HoldEnable est défini, l’instruction utilise JerkRate pour amener Out à une valeur constante. Out est maintenu quand Rate = 0. Ne pas modifier HoldMode une fois que HoldEnable est défini car l’instruction ne prendra pas le changement en compte. La valeur par défaut est mise à zéro. |
HoldEnable | BOOL | Paramètre d’activation du maintien de la courbe en S. Lorsqu’il est défini, Out est maintenu. Lorsqu’il est mis à zéro, Out change sa valeur actuelle jusqu’à ce qu’elle soit égale à In. La valeur par défaut est mise à zéro. |
TimingMode | DINT | Sélectionne le mode d'exécution de la temporisation. 0 = mode périodique 1 = mode sur-échantillonnage 2 = mode échantillonnage en temps réel Reportez-vous aux attributs des blocs fonctionnels pour plus d’informations sur les modes de temporisation. Valide = de 0 à 2 Par défaut = 0 |
OversampleDT | REAL | Temps d’exécution du mode suréchantillonnage. Valide = 0 à 4194.303 secondes Par défaut = 0 |
RTSTime | DINT | Période de mise à jour du module pour le mode Échantillonnage en temps réel. Valide = de 1 à 32 767 ms Par défaut = 1 |
RTSTimeStamp | DINT | Valeur d'horodatage du module pour le mode Échantillonnage en temps réel Valide = de 0 à 32 767 ms Par défaut = 0 |
Paramètre de sortie | Type de données | Description |
|---|---|---|
EnableOut | BOOL | Activer la sortie. |
S_Mode | BOOL | Sortie S_Mode. Lorsque (Jerk * DeltaT) Rate etRate < Accel ou Decel, S_Mode est défini. Sinon, S_Mode est mis à zéro. |
Out | REAL | La sortie de l'instruction de la courbe en S. Les indicateurs d'état mathématique sont définis pour cette sortie. |
Rate | REAL | Changement interne dans Out en unité par seconde. |
DeltaT | REAL | Temps écoulé entre les mises à jour. Cela correspond au temps écoulé en seconde utilisé par l'algorithme de contrôle pour calculer la sortie du processus. |
Status | DINT | État du bloc fonctionnel. |
InstructFault (Status.0) | BOOL | L'instruction a détecté l'une des erreurs d'exécution suivantes. Il ne s'agit pas d'une erreur d'automate mineure ou majeure. Contrôlez les bits d'état restants pour déterminer la cause du problème. |
AcceRateInv (Status.1) | BOOL | AccelRate est negatif. |
DecelRateInv (Status.2) | BOOL | DecelRate est negatif. |
JerkRateInv (Status.3) | BOOL | JerkRate est negatif. |
TimingModeInv (Status.27) | BOOL | Mode de temporisation non valide. Reportez-vous aux attributs des blocs fonctionnels pour plus d’informations sur les modes de temporisation. |
RTSMissed (Status.28) | BOOL | Utilisé seulement en mode Échantillonnage en temps réel. Défini lorsque ABS | DeltaT - RTSTime | > 1 (0,001 seconde). |
RTSTimeInv (Status.29) | BOOL | Valeur RTSTime non valide. |
RTSTimeStampInv (Status.30) | BOOL | Valeur RTSTimeStamp non valide. |
DeltaT (Status.31) | BOOL | Valeur DeltaT non valide. |
Description
La demande primaire de l’instruction SCRV vise à garantir que le taux ne dépasse jamais le taux de jerk spécifié.
Vous pouvez configurer l'instruction SCRV pour produire un profil de courbe en S ou un profil de rampe pour une entrée d'incrément.
Profil de courbe en S
Pour produire un profil de courbe en S, définissez le JerkRate afin que (JerkRate * DeltaT) < AccelRate et/ou DecelRate.
En mode profil de courbe en S, l'instruction SCRV vise à garantir que le taux ne dépasse jamais JerkRate spécifié. L’algorithme utilisé pour produire le profil de courbe en S a été conçu pour produire une légère courbe en S symétrique pour une entrée d’incrément. Une intégration trapézoïdale pour Out a été incorporée pour plus de facilité. Ainsi, les changements du Rate seront inférieurs au JerkRate pendant les portions du profil.
Lorsqu’un changement incrémenté se produit dans l’entrée, le taux augmente jusqu’au AccelRate ou DecelRate programmé. AccelRate ou DecelRate est maintenu jusqu’à ce que le taux commence à diminuer pour que la sortie rejoigne l’entrée lorsque le taux atteint zéro.
Dans certains cas et selon les valeurs d’accélération, de décélération et de jerk, le taux d’accélération ou de décélération peut ne pas être atteint avant que le taux n’ait commencé à baisser par le taux de jerk.
L'instruction SCRV n'essaiera pas de produire un profil « S » pour de très petites modifications d'incrément. Dans ce mode, l’étape sera entièrement sortie et Rate reflètera le changement dans la sortie. Ce comportement surgit si Out = In et la modification d’incrément suivante pour In peut être sortie avec un taux inférieur ou égal au JerkRate programmé.
L'instruction SCRV prend en charge une rampe algébrique et une rampe de valeur absolue. Pour une rampe algébrique, la condition d’accélération est définie par une entrée qui devient plus positive et la condition de décélération est définie par une entrée qui devient plus négative. Pour une rampe de valeur absolue, la condition d’accélération est définie par une entrée qui s’éloigne de zéro et la condition de décélération est définie par une entrée qui s’approche de zéro.
Profil de rampe
Pour produire un profil de rampe, définissez JerkRate afin que (JerkRate * DeltaT)
AccelRate et/ou DecelRate.
AccelRate et/ou DecelRate.En mode profil de rampe, l'instruction SCRV produit toujours une fréquence de changement égale au AccelRate ou DecelRate programmé jusqu'à ce que la différence entre Out et In exige moins que AccelRate ou DecelRate pour atteindre le point de terminaison.
HoldMode = 0 fonctionne comme HoldMode = 1. Lorsque HoldEnable est défini, Out est immédiatement retenu et Rate passe à zéro.
Le diagramme suivant illustre comment l’instruction modifie Out.

(1)
Quand Initialize est défini, l'instruction définit les valeurs suivantes :Outn = InitialValue
Outn-1 = Outn
Raten = 0
Raten-1 = 0
(2)
Quand HoldMode est mis à zéro, Out se rapproche de In, et HoldEnable est défini, la vitesse commence à baisser vers zéro au taux de Jerk. À cause du JerkRate, Out est maintenu à la valeur atteinte quand la vitesse à atteint zéro. Lorsque Out est finalement maintenu constant, sa valeur est différente de la valeur qu’il avait lorsque HoldEnable a été défini.Lorsque HoldMode est défini, Out se rapproche de In, et HoldEnable est défini, la vitesse est immédiatement définie sur zéro. Out est maintenu à la valeur qu’il avait quand HoldEnable a été défini.
Réduire JerkRate pendant la transition peut amener Out à dépasser In. Un dépassement est le résultat d’une insertion forcée du JerkRate. Vous pouvez éviter un dépassement en réduisant le JerkRate petit à petit pendant le réglage ou en changeant le JerkRate pendant que Out = In (jamais lors d’une transition).
Le temps nécessaire pour que Out égalise un changement dans l’entrée est une fonction d'AccelRate, de JerkRate et de la différence entre In et Out.
Calculer les valeurs de sortie et de taux
Lors d’une transition entre une valeur initiale et une valeur finale, Out passe par trois régions. Dans les régions 1 et 3, la fréquence de changement pour Out dépend du JerkRate. Dans la région 2, la fréquence de changement pour Out dépend de AccelRate ou de DecelRate.

Out est calculé pour chaque région comme suit :

Avec ces équations pour chaque région :
Région | Équation |
|---|---|
région 1 | ![]() |
région 2 | ![]() |
région 3 | ![]() |
Lorsque :

Le bloc SCRV n'atteint pas AccelRate ou DecelRate. Ce que fait Out :

où :

Affecte les indicateurs d'état mathématique
Non
Conditions de défaut
Un défaut mineur se produit lorsque : | Type de défaut | Code de défaut |
|---|---|---|
Cette fonctionnalité est activée et un débordement est détecté. | 4 | 4 |
Reportez-vous à la section Attributs communs pour plus d’informations sur les défauts liés aux opérandes.
Exécution
Bloc fonctionnel
Condition | Action du bloc fonctionnel |
|---|---|
Préscrutation | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est faux | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est vrai | Les bits EnableIn et EnableOut sont définis sur vrai L'instruction s'exécute. |
Première exécution de l'instruction | N/A |
Première scrutation de l'instruction | Effacer les données de scrutation précédentes. |
Post-scrutation | Les bits EnableIn et EnableOut sont définis sur faux |
Texte structuré
Condition/état | Action entreprise |
|---|---|
Préscrutation | Reportez-vous à Pré-scrutation dans le tableau Bloc fonctionnel. |
Exécution normale | Reportez-vous à Tag.EnableIn est vrai dans le tableau Bloc fonctionnel. |
Post-scrutation | Reportez-vous à Post-scrutation dans le tableau Bloc fonctionnel. |
Exemple
Dans la plupart des applications de variateur, une référence maître commande les lignes de vitesse pour un groupe entier de variateurs. Comme plusieurs références sont sélectionnées, les variateurs ne peuvent pas être présentés avec des changements « d’incrément » dans la référence de vitesse car les différences d’inertie de charge, de couple moteur et de réglage ne permettraient pas les sections de variateur individuel de réagir de façon coordonnée. L'instruction SCRV a été conçue pour ramper et définir le signal de référence aux sections de variateur afin que l'accélération, la décélération et le jerk (dérivé d'accélération) soient contrôlées. Cette instruction fournit un mécanisme permettant à la référence des variateurs d’atteindre le point de consigne de la référence désigné de façon à éliminer les forces et impacts excessifs sur les machines et équipements connectés.
Bloc fonctionnel

Texte structuré
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
Fournir une réponse


