Automate de deuxième ordre (Second-Order Controller, SOC)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, CompactLogix
5380, ControlLogix
5580 et ControlLogix 5590.L'instruction SOC a été conçue pour une utilisation dans des systèmes de contrôle de boucle fermée de la même façon qu'une instruction PI. L'instruction SOC fournit une condition de gain, un retard de premier ordre et une avance de deuxième ordre.
Langues disponibles
Diagramme à relais
Cette instruction n’est pas disponible dans un diagramme à relais.
Bloc fonctionnel

Texte structuré
SOC(SOC_tag);
Opérandes
Bloc fonctionnel
Opérande | Type | Format | Description |
|---|---|---|---|
SOC tag | SEC_ORDER_CONTROLLER | Structure | Structure SOC |
Structure SEC_ORDER_CONTROLLER
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 | Commande d'initialisation de l'instruction. Lorsque cette commande est définie, Out et l'intégrateur interne sont paramétrés d'après la valeur d'InitialValue. La valeur par défaut est mise à zéro. |
InitialValue | REAL | Entrée de la valeur initiale. Si Initialize est défini, Out et l'intégrateur sont paramétrés d'après la valeur d'InitialValue. La valeur d’InitialValue est limitée en utilisant HighLimit et LowLimit. Valide = tout flottant Par défaut = 0,0 |
Gain | REAL | Gain proportionnel pour l’instruction. Si la valeur est hors limites, l'instruction limite la valeur et définit le bit approprié dans Status. Valide = toute valeur flottante > 0,0. Par défaut = nombre flottant positif minimum. |
WLag | REAL | Fréquence coin du retard de premier ordre en radians/seconde. Si la valeur est hors limites, l'instruction limite la valeur et définit le bit approprié dans Status. Valide = voir la section Description ci-dessous pour les plages valides Par défaut = 0,0 |
WLead | REAL | Fréquence coin de l'avance de deuxième ordre en radians/seconde. Si la valeur est hors limites, l'instruction limite la valeur et définit le bit approprié dans Status. Valide = voir la section Description ci-dessous pour les plages valides Par défaut = 0,0 |
ZetaLead | REAL | Facteur d'amortissement de l'avance de deuxième ordre. Si la valeur est hors limites, l'instruction limite la valeur et définit le bit approprié dans Status. Valide = de 0,0 à 10,0 Par défaut = 0,0 |
HighLimit | REAL | Valeur de limite haute. La valeur maximum pour Out. Si HighLimit LowLimit, l’instruction définit HighAlarm et LowAlarm, définit le bit approprié dans Status, et définit Out = LowLimit.Valide = LowLimit < HighLimit valeur flottante positive maximalePar défaut = nombre flottant positif maximum |
LowLimit | REAL | Valeur de limite basse. La valeur minimum pour Out. Si HighLimit LowLimit, l’instruction définit HighAlarm et LowAlarm, attribue le bit approprié dans Status et définit Out = LowLimit.Valide = valeur flottante négative maximale LowLimit < HighLimitPar défaut = nombre flottant négatif maximum |
HoldHigh | BOOL | Commande de maintien haut. Si défini, la valeur de l'intégrateur interne n'est pas autorisée à augmenter la valeur. La valeur par défaut est mise à zéro. |
HoldLow | BOOL | Commande de maintien bas. Si défini, la valeur de l'intégrateur interne n'est pas autorisé à diminuer la valeur. 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 | Indique si l'instruction est activée. Mis à zéro (faux) en cas de débordement d'Out. |
Out | REAL | Sortie calculée de l’algorithme. |
HighAlarm | BOOL | Indicateur d'alarme de limite maximum. Défini si la valeur calculée pour Out HighLimit et la sortie est bloquée à HighLimit. |
LowAlarm | BOOL | Indicateur d'alarme de limite minimum. Défini si la valeur calculée pour Out LowLimit et la sortie est bloquée à LowLimit. |
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. |
GainInv (Status.1) | BOOL | Gain < nombre flottant positif minimum. |
WLagInv (Status.2) | BOOL | WLag > maximum ou WLag < minimum. |
WLeadInv (Status.3) | BOOL | WLead > maximum ou WLead < minimum. |
ZetaLeadInv (Status.4) | BOOL | ZetaLead > maximum ou ZetaLead < minimum. |
HighLowLimsInv (Status.5) | BOOL | HighLimit LowLimit. |
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 (,001 seconde). |
RTSTimeInv (Satus.29) | BOOL | Valeur RTSTime non valide. |
RTSTimeStampInv (Status.30) | BOOL | Valeur RTSTimeStamp non valide. |
DeltaT (Status.31) | BOOL | Valeur DeltaT non valide. |
Texte structuré
Opérande | Type | Format | Description |
|---|---|---|---|
SOC tag | SEC_ORDER_CONTROLLER | structure | Structure SOC |
Pour plus d'informations sur la syntaxe des expressions dans le texte structuré, reportez-vous à la section Syntaxe du texte structuré.
Description
L'instruction SOC fournit une condition de gain, un retard de premier ordre et une avance de deuxième ordre. La fréquence du retard est ajustable et la fréquence et l’amortissement de l'avance sont ajustables. La paire zéro de l'avance de deuxième ordre peut être complexe (l'amortissement est inférieur à l'unité) ou réelle (l'amortissement est
à l'unité). L’instruction SOC est conçue pour exécuter une tâche lorsque la fréquence de scrutation reste constante.
à l'unité). L’instruction SOC est conçue pour exécuter une tâche lorsque la fréquence de scrutation reste constante.L'instruction SOC utilise l'équation de transfert Laplace suivante :

Limitations de paramètre
Les paramètres SOC suivants ont ces limites sur les valeurs valides.
Paramètre | Limite |
|---|---|
WLead | ![]() où DeltaT est exprimé en secondes |
WLag | ![]() où DeltaT est exprimé en secondes |
ZetaLead | LowLimit = 0,0 HighLimit = 10,0 |
Si la valeur de sortie calculée n'est pas valide ou NAN, l'instruction définit Out = la valeur non valide. Les paramètres internes ne sont pas mis à jour. Dans chaque scrutation suivante, la sortie est calculée en utilisant les paramètres internes de la dernière scrutation lorsque la sortie était valide.
Limiting
L’instruction stoppe l’enroulement en fonction de l’état des entrées Hold.
Si : | Alors : |
|---|---|
HoldHigh est défini et Integrator > Integrator n-1 | Integrator = Integrator n-1 |
HoldLow est défini et Integrator < Integrator n-1 | Integrator = Integrator n-1 |
L'instruction stoppe également la saturation d'intégrale en fonction des valeurs HighLimit et LowLimit.
Si : | Alors : |
|---|---|
Integrator > IntegratorHighLimit | Integrator = IntegratorHighLimit |
Integrator < IntegratorLowLimit | Integrator = IntegratorLowLimit |
où :

L’instruction limite également la valeur pour Out en fonction des valeurs HighLimit et LowLimit.
Si : | Alors : |
|---|---|
HighLimit LowLimit | Out = LowLimit Integrator = IntegratorLowLimit HighLowLimsInv est défini HighAlarm est défini LowAlarm est défini |
Out HighLimit | Out = HighLimit IntegratorLowLimit n-1 HighAlarm est défini |
Out LowLimit | Out = LowLimit Integrator = Integrator n-1 LowAlarm est défini |
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
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
NOTE:
Dans Texte Structuré, EnableIn est toujours vrai lors d'une scrutation normale. Par conséquent, si l'instruction est dans le chemin d'accès de commande activé par la logique, elle est exécutée. Pour plus de détails, notamment sur les définitions et le comportement général pour toutes les instructions de bloc fonctionnel, reportez-vous à la publication 1756-RM006G-FR-P, Instructions pour le contrôle avancé des procédés et des variateurs.
Condition/état | Action entreprise |
|---|---|
Préscrutation | Aucune action n'est entreprise. |
Post-scrutation | Aucune action n'est entreprise. |
Ces conditions ne se produisent que dans le mode Scrutation normale
Condition/état | Action entreprise |
|---|---|
Première exécution de l'instruction | Les paramètres internes et Out sont définis sur 0. Forcer le recalcule des coefficients d’équation. L'algorithme primaire n'est pas exécuté, mais il validera cependant les paramètres d'entrée. |
Première scrutation de l'instruction | Les paramètres internes et Out sont définis sur 0. Forcer le recalcule des coefficients d’équation. L'algorithme primaire n'est pas exécuté, mais il validera cependant les paramètres d'entrée. |
EnableIn est faux | Le bit .EnableOut est défini sur faux. |
EnableIn est vrai | Le bit .EnableOut est défini sur vrai. L'algorithme principal de l'instruction sera exécuté et les sorties seront actualisées. |
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
L’instruction SOC est un bloc fonctionnel spécialisé utilisé dans des applications où l’énergie est transférée entre deux sections à travers un système de masse à ressort. Généralement dans ce genre d’applications, la réponse de la fréquence du processus peut être caractérisée comme le montre le diagramme de Bode A ci-dessous :

L'instruction SOC implémente un filtre lag de premier ordre suivi d'un automate PID pour implémenter une fonction de transfert avec une intégration, un zéro de deuxième ordre (avance) et un pôle de premier ordre (retard). Avec cette instruction, le réglage PID est simplifié car les termes régulateurs sont organisés pour que vous ayez WLead et ZLead en tant qu'entrées à l'instruction SOC plutôt que des valeurs Kp, Ki ou Kd. La fonction de transfert pour l'instruction SOC est :

Le diagramme de Bode correspondant apparait sur le diagramme B ci-dessous :

L'instruction SOC peut être utilisée dans un couple ou une application de régulation de tension où un capteur de force est utilisé comme retour et la sortie du schéma régulateur fonctionne directement sur la boucle mineure (actuelle) du couple du variateur. Dans plusieurs applications du genre, le système contrôlé peut être sous-amorti mécaniquement et avoir une fréquence propre qui est difficile à stabiliser car elle est reflétée à travers le dispositif de retour lui-même.

Avec l'instruction SOC, le réglage PID est simplifié car les termes régulateurs sont organisés pour que vous ayez WLead et ZLead en tant qu'entrées à l'instruction SOC plutôt que des valeurs Kp, Ki ou Kd. De cette façon, les fréquences de coin de l’automate/régulateur sont plus faciles à ajuster et régler contre le processus réel. Lors du démarrage, la fréquence propre du système et le facteur d'amortissement peuvent être mesurés empiriquement ou sur place. Après quoi, les paramètres du régulateur peuvent être ajustés pour correspondre aux caractéristiques du processus permettant ainsi plus de gain et un contrôle plus stable du processus final.

Dans le système ci-dessus, si Wlead est défini égal à la fréquence propre du système, et si Wlag est défini substantiellement au-dessus de la fréquence de coupure, (> 5 fois de coupure), la réponse du système ressemblera à :

Dans une application réelle, les incréments à suivre pour utiliser et régler cette instruction supposent qu’il faut :
Reconnaitre le type de processus qui est contrôlé. Si la réponse du système à une fonction d'incrément résulte en un degré élevé de bouclage ou si elle peut être caractérisée par la courbe de processus montrée ci-dessus, ce bloc peut fournir les caractéristiques régulatrices nécessaires pour un contrôle stable.
Déterminer la fréquence propre du système/processus. Cela peut se faire empiriquement ou être mesuré sur place. Ajustez WLead pour qu’il puisse correspondre, ou se trouver légèrement avant la fréquence propre du processus lui-même.
Réglez le facteur d'amortissement, Zlead, pour qu’il puisse annuler tout dépassement dans le système.
Déplacez WLag assez loin après la fréquence de coupure (>5 fois) et commencez à augmenter le gain total à atteindre.
Bloc fonctionnel

Texte structuré
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;
Fournir une réponse
LowLimit, l’instruction définit HighAlarm et LowAlarm, définit le bit approprié dans Status, et définit Out = LowLimit.
