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
PI_FBD_avail_v31
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 Less than or equal to LowLimit, l’instruction définit HighAlarm et LowAlarm, attribue le bit approprié dans Status et définit Out = LowLimit.
Valide = LowLimit < HighLimit Less than or equal to valeur flottante positive maximale
Par défaut = nombre flottant positif maximum
LowLimit
REAL
Valeur de limite basse. La valeur minimum pour Out. Si HighLimit Less than or equal to 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 Less than or equal to LowLimit < HighLimit
Par 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 Greater than or equal to0. 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 Greater than or equal to 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 Greater than or equal to 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 Less than or equal to 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 Less than or equal to 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 :
PI_fbd_eq
Lorsque la valeur calculée pour la sortie est incorrecte, NAN ou Plus or Minus sign 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
PI_fbd_ITerm_eq
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,7
    p
    /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.
PI_fbd_GainCurves
L'instruction calcule la valeur pour Out au moyen de ces équations :
Value
Équation
multiplicateur formage du gain Kp
PI_fbd_KPShapeGainMult_eq
Rapport d'entrée Kp
PI_fbd_KPInputRatio_eq
Rapport Kp
PI_fbd_KPRatio_eq
Formage du gain Kps
PI_fbd_KPSShapingGain_eq
Sortie proportionnelle
PI_fbd_PropOutput_eq
Formage du gain Wld
PI_fbd_WLDShapingGain_eq
Entrée Wld
PI_fbd_WLDInput_eq
Rapport d'entrée Wld
PI_fbd_WLDInputRatio_eq
Rapport Wld
PI_fbd_WLDRatio_eq
Formage du gain Wlds
PI_fbd_WLDSShapingGain_eq
Limites Wlds
PI_fbd_WLDSLimits_eq
Sortie en mode intégral
PI_fbd_IntegralOutput_eq
Sortie
PI_fbd_Output_eq
Limiting
L'instruction stoppe la saturation d'intégrale ITerm en fonction de l'état des entrées de maintien.
Condition
Action
PI_fbd_Condition1
PI_fbd_Action1
PI_fbd_Condition2
PI_fbd_Action1
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 Less than or equal to LowLimit
Out = LowLimit
ITerm = LowLimit
HighLowLimsInv est défini
HighAlarm est défini
LowAlarm est défini
WldInput = 0
Out Greater than or equal to HighLimit
Out = HighLimit
ITerm = ITerm
n-1
HighAlarm est défini
ITerm > HighLimit
ITerm = HighLimit
Out Less than or equal to 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
PI Instruction Linear Mode_v31
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
PI_FBD_example_v31
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
Vous avez des questions ou des commentaires sur cette documentation ? Veuillez envoyer vos commentaires ici.
Normal