Proportionnel + Intégral (Proportional + Integral, PI)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, CompactLogix
5380, ControlLogix
5580 et ControlLogix 5590.L'instruction PI fournit deux méthodes d'exécution. La première méthode emploie l'algorithme PI classique où les gains proportionnels et intégraux demeurent constants dans la plage du signal d'entrée (erreur). La deuxième méthode emploie un algorithme non linéaire où les gains proportionnels et intégrals varient dans la plage du signal d'entrée. Le signal d'entrée représente la déviation entre le point de consigne et le retour du procédé.
Langues disponibles
Diagramme à relais
Cette instruction n’est pas disponible dans un diagramme à relais.
Bloc fonctionnel

Texte structuré
PI(PI_tag);
Opérandes
Bloc fonctionnel
Opérande | Type | Format | Description |
|---|---|---|---|
PI tag | PROP_INT | structure | Structure PI |
Texte structuré
Opérande | Type | Format | Description |
|---|---|---|---|
PI tag | PROP_INT | structure | Structure PI |
Reportez-vous à
Syntaxe du texte structuré
pour plus d'informations concernant la syntaxe des expressions dans le texte structuré.Structure PROP_INT
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 d'erreur du procédé. C’est la différence entre le point de consigne et le retour. 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 |
Kp | REAL | Gain proportionnel. A une incidence sur la valeur calculée des algorithmes de contrôle proportionnel et intégral. Si non valide, l'instruction bloque Kp aux limites et définit le bit approprié dans Status. Valide = toute valeur flottante > 0,0. Par défaut = nombre flottant positif minimum. |
Wld | REAL | Fréquence en avance de phase en radians/secondes. A une incidence sur la valeur calculée de l'algorithme de contrôle intégral. Si non valide, l'instruction bloque Wld aux limites et définit le bit approprié dans Status. Valide = voir la section Description ci-dessous pour les plages valides 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, attribue 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. |
ShapeKpPlus | REAL | Multiplicateur Kp de gain positif. Utilisé quand In est 0. Si non valide, l'instruction bloque ShapeKpPlus aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro.Valide = de 0,1 à 10,0 Par défaut = 1,0 |
ShapeKpMinus | REAL | Multiplicateur Kp de gain négatif. Utilisé quand In est < 0. Si non valide, l'instruction bloque ShapeKpMinus aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro. Valide = de 0,1 à 10,0 Par défaut = 1,0 |
KpInRange | REAL | Plage de formage du gain proportionnel. Définit la plage de In (erreur) dans laquelle le gain proportionnel augmente ou diminue en tant que fonction du ratio | In | / KpInRange. Quand | In | > KpInRange, l’instruction calcule la modification en erreur proportionnelle en utilisant Kp formage du gain x (In-KpInRange). Si non valide, l'instruction bloque KpInRange aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro. Valide = toute valeur flottante > 0,0. Par défaut = nombre flottant positif maximum |
ShapeWldPlus | REAL | Multiplicateur Wld de gain positif. Utilisé quand In est 0. Si non valide, l'instruction bloque ShapeWldPlus aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro.Valide = de 0,0 à 10,0 Par défaut = 1,0 |
ShapeWldMinus | REAL | Multiplicateur Wld de gain négatif. Utilisé quand In est < 0. Si non valide, l'instruction bloque ShapeWldMinus aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro. Valide = de 0,0 à 10,0 Par défaut = 1,0 |
WldInRange | REAL | Plage de formage du gain intégral. Définit la plage de In (erreur) dans laquelle le gain intégral augmente ou diminue en tant que fonction du ratio | In | / WldInRange. Si |In| > WldInRange, l'instruction limite In à WldInRange lors du calcul de l'erreur intégrale. Si non valide, l'instruction bloque WldInRange aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro. Valide = toute valeur flottante > 0,0. Par défaut = nombre flottant positif maximum |
NonLinearMode | BOOL | Active le mode de gain non linéaire. S’il est défini, l'instruction utilise le mode de gain non linéaire sélectionné par ParabolicLinear pour calculer les gains proportionnels et intégrals réels. S’il est mis à zéro, l'instruction désactive le mode de gain non linéaire et utilise les valeurs Kp et Wld comme gains proportionnels et intégrals. La valeur par défaut est mise à zéro. |
ParabolicLinear | BOOL | Sélectionne le mode de gain non linéaire. Les modes sont linéaire ou parabolique. Si cette option est réglée, l'instruction utilise la méthode de gain parabolique y=a * x 2 + b pour calculer les gains proportionnels et intégraux réels. Si mis à zéro, l'instruction utilise la méthode de gain linéaire y=a * x + b.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 l’état d'exécution de l’instruction. |
Out | REAL | Sortie calculée de l'algorithme PI. Les indicateurs d'état mathématique sont définis pour cette sortie. |
HighAlarm | BOOL | Indicateur d'alarme de limite maximum. Défini si la valeur calculée pour Out HighLimit et la sortie et l'intégrateur sont bloqués à HighLimit. |
LowAlarm | BOOL | Indicateur d'alarme de limite minimum. Défini si la valeur calculée pour Out LowLimit et la sortie et l'intégrateur sont bloqués à 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. |
KpInv (Status.1) | BOOL | Kp < minimum ou Kp > maximum. |
WldInv (Status.2) | BOOL | Wld < minimum ou Wld > maximum. |
HighLowLimsInv (Status.3) | BOOL | HighLimit LowLimit. |
ShapeKpPlusInv (Status.4) | BOOL | ShapeKpPlus < minimum ou ShapeKpPlus > maximum. |
ShapeKpMinusInv (Status.5) | BOOL | ShapeKpMinus < minimum ou ShapeKpMinus > maximum. |
KpInRangeInv (Status.6) | BOOL | KpInRange < minimum ou KpInRange > maximum. |
ShapeWldPlusInv (Status.7) | BOOL | ShapeWldPlus < minimum ou ShapeWldPlus > maximum. |
ShapeWldMinusInv (Status.8) | BOOL | ShapeWldMinus < minimum ou ShapeWldMinus > maximum. |
WldInRangeInv (Status.9) | BOOL | WldInRange < minimum ou WldInRange > maximum. |
TimingModeInv (Status.27) | BOOL | TimingMode 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
L'instruction PI utilise la forme de position de l'algorithme PI. Cela signifie que les conditions de gain sont appliquées directement au signal d'entrée plutôt qu'à la modification dans le signal d'entrée. L’instruction PI est conçue pour exécuter une tâche lorsque la fréquence de scrutation reste constante.
Dans l'algorithme non linéaire, les gains proportionnels et intégrals varient à mesure que l'amplitude du signal d'entrée se modifie. L'instruction PI prend en charge deux modes de gain non linéaire : linéaire et parabolique. Dans l'algorithme linéaire, les gains varient de façon linéaire à mesure que l'amplitude de l'entrée se modifie. Dans l'algorithme parabolique, les gains varient selon une courbe parabolique à mesure que l'amplitude de l'entrée se modifie.
L'instruction PI calcule Out au moyen de cette équation :

Lorsque la valeur calculée pour la sortie est incorrecte, NAN ou
INF, l’instruction définit Out = la valeur incorrecte et définit l’indicateur de statut de débordement mathématique. 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.
INF, l’instruction définit Out = la valeur incorrecte et définit l’indicateur de statut de débordement mathématique. 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.Fonctionnement en mode linéaire
En mode linéaire, le mode de gain non linéaire est désactivé. Les valeurs Kp et Wld représentent les gains proportionnels et intégraux utilisés par l'instruction. L'instruction calcule la valeur pour Out au moyen de ces équations :
Value | Équation |
|---|---|
ITerm | ![]() où DeltaT est exprimé en secondes |
PTerm | Kp x In |
Out | ITerm + PTerm |
avec ces limites sur Wld :
- Limite basse > 0,0
- Limite haute = 0,7p/DeltaT
- WldInput = In
Fonctionnement en mode non linéaire
En mode non linéaire, l'instruction utilise le mode de gain non linéaire sélectionné par ParabolicLinear pour calculer les gains proportionnels et intégraux réels.
Les gains spécifiés par Kp et Wld sont multipliés par 1,0 si In = 0. La séparation des algorithmes proportionnel et intégral augmente ou diminue le gain proportionnel ou intégral à mesure que l'amplitude d'erreur se modifie. Ces algorithmes utilisent la plage d'entrée et les paramètres de formage du gain pour calculer les gains proportionnels et intégraux réels. La plage d'entrée définit la plage de In (soit l'erreur) dans laquelle le gain est conditionné. Les plages d'entrée sont définies par les deux paramètres KpInRange et WldInRange. Le formage du gain définit le multiplicateur de gain pour le quadrant contrôlé par le paramètre de formage du gain. Le formage des gains est défini par les paramètres ShapeKpPlus, ShapeKpMinus, ShapeWldPlus et ShapeWldMinus.
L'entrée ParabolicLinear sélectionne le mode de gain non linéaire. Si ParabolicLinear est mis à zéro, le mode linéaire est sélectionné. Si ParabolicLinear est défini, le mode parabolique est sélectionné.
Pour configurer une courbe de formage de gain particulière, entrez une valeur de 0,0 à 10,0 pour un formage intégral, une valeur de 0,1 à 10.0 pour un formage proportionnel et la plage d'entrée sur laquelle le formage sera appliqué. Kp et Wld sont multipliés par le ShapeMultiplier calculé pour obtenir les gains proportionnels et intégrals réels. L'entrée d'une valeur de formage de gain de 1,0 désactive l'algorithme non linéaire qui calcule le gain proportionnel ou intégral du quadrant.
Si l'amplitude de In (erreur) est supérieure à InRange, le ShapeMultiplier est égal à la valeur calculée quand | In | était égale à InRange.
Le diagramme suivant illustre les courbes de gain maximum et minimum qui représentent les équations de gain parabolique et linéaire.

L'instruction calcule la valeur pour Out au moyen de ces équations :
Value | Équation |
|---|---|
multiplicateur formage du gain Kp | ![]() |
Rapport d'entrée Kp | ![]() |
Rapport Kp | ![]() |
Formage du gain Kps | ![]() |
Sortie proportionnelle | ![]() |
Formage du gain Wld | ![]() |
Entrée Wld | ![]() |
Rapport d'entrée Wld | ![]() |
Rapport Wld | ![]() |
Formage du gain Wlds | ![]() |
Limites Wlds | ![]() |
Sortie en mode intégral | ![]() |
Sortie | ![]() |
Limiting
L'instruction stoppe la saturation d'intégrale ITerm en fonction de l'état des entrées de maintien.
Condition | Action |
|---|---|
![]() | ![]() |
![]() | ![]() |
L'instruction stoppe également la saturation d'intégrale en fonction des valeurs HighLimit et LowLimit.
Condition | Action |
|---|---|
Integrator > HighLimit | Integrator = HighLimit |
Integrator > LowLimit | Integrator = LowLimit |
L'instruction limite la valeur pour Out en fonction des valeurs HighLimit et LowLimit.
Condition | Action |
|---|---|
HighLimit LowLimit | Out = LowLimit ITerm = LowLimit HighLowLimsInv est défini HighAlarm est défini LowAlarm est défini WldInput = 0 |
Out HighLimit | Out = HighLimit ITerm = ITerm n-1 HighAlarm est défini |
ITerm > HighLimit | ITerm = HighLimit |
Out LowLimit | Out = LowLimit ITerm = ITerm n-1 LowAlarm est défini |
ITerm < LowLimit | ITerm = LowLimit |
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Aucun spécifique à cette instruction. Reportez-vous à Attributs communs pour les défauts liés aux opérandes
Exécution
Bloc fonctionnel
Condition | Action entreprise |
|---|---|
Préscrutation | 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 | Le bit EnableIn et EnableOut est défini sur vrai. L'instruction s'exécute. |
Première exécution de l'instruction | Out n-1 = 0 L'algorithme utilisé pour calculer Out ne sera pas exécuté. |
Première scrutation de l'instruction | Out n-1 = 0 L'algorithme utilisé pour calculer Out ne sera pas exécuté. |
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
L'instruction PI est une instruction de régulation avec des composants de gain proportionnel et intégral. Le composant de gain proportionnel est défini par l'utilisateur en radians/secondes pour établir la réponse en fréquence de base du régulateur PI. Le gain proportionnel définit le gain général du bloc, y compris le gain proportionnel ET intégral du bloc.
En excluant les fonctionnalités d'initialisation et de maintien/blocage, le diagramme suivant montre la boucle de régulation de base du bloc PI en mode linéaire.
Instruction PI : Mode linéaire

L'exemple suivant montre l'instruction PI utilisée comme régulateur de vitesse. Dans cet exemple, l'erreur de vitesse est générée en déduisant le signal de retour de la vitesse (voir l'exemple dans l'instruction PMUL) de la vitesse de référence du système (via l'instruction SCRV). L'erreur de vitesse est directement transmise à l'instruction PI, laquelle réagit à ce signal conformément à la fonction illustrée dans le diagramme ci-dessus.
Bloc fonctionnel

Texte structuré
Reference_Select.In1 := Master_Machine_Ref;
Reference_Select.Select1 := Master_Machine_Select;
Reference_Select.In2 := Section_Jog;
Reference_Select.Select2 := Jog_Select;
SSUM(Reference_Select);
S_Curve.In := Reference_Select.Out;
S_Curve.AccelRate := accel_rate;
S_Curve.DecelRate := accel_rate;
SCRV(S_Curve);
PMUL_01.In := Resolver_Feedback;
PMUL_01.WordSize := 12;
PMUL_01.Multiplier := 100000;
PMUL(PMUL_01);
Speed_Feedback := PMUL_01.Out;
Velocity_Error := S_Curve.Out - Speed_Feedback;
PI_01.In := Velocity_Error;
PI_01.Initialize := Enable_Regulator;
PI_01.Kp := Velocity_Proportional_Gain;
PI_01.Wld := Velocity_Integral_Gain;
PI(PI_01) ;
Torque_Reference := PI_01.Out;
Fournir une réponse
LowLimit, l’instruction définit HighAlarm et LowAlarm, attribue le bit approprié dans Status et définit Out = LowLimit.
0. Si non valide, l'instruction bloque ShapeKpPlus aux limites et définit le bit approprié dans Status. Non utilisé quand NonLinearMode est mis à zéro.















