PID Compact V1
PID Compact V1
PID_Compact V1
Description PID_Compact V1
Description
L'instruction PID_Compact met à disposition un régulateur PID avec optimisation intégrée pour les modes automatique et
manuel.
Appel
L'appel de l'instruction PID_Compact s'effectue durant l'intervalle de temps constant du temps de cycle de l'OB appelant (de
préférence dans un OB d'alarme cyclique).
Démarrage
PID_Compact est démarrée dans le dernier mode de fonctionnement actif lors du démarrage de la CPU. Pour laisser PID_
Compact en mode "Inactif", mettez sb_RunModeByStartup = FALSE.
Les conditions suivantes font passer, à partir de la version 1.1, PID_Compact en mode de fonctionnement "Inactif" en cas
de mode automatique :
Nouvelle valeur moyenne >= 1,5 x ancienne valeur moyenne
Nouvelle valeur moyenne <= 0,5 x ancienne valeur moyenne
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 2 sur 16
Les conditions suivantes font passer PID_Compact 1.0 en mode de fonctionnement "Inactif" pendant l'optimisation et en
mode automatique :
Nouvelle valeur moyenne >= 1,1 x ancienne valeur moyenne
Nouvelle valeur moyenne <= 0,9 x ancienne valeur moyenne
Temps d'échantillonnage actuel >= 1,5 x valeur moyenne actuelle
Temps d'échantillonnage actuel <= 0,5 x valeur moyenne actuelle
Algorithme PID
PID_Compact est un régulateur PIDT1 avec anti-saturation et pondération de l'action P et D. La valeur de réglage est
calculée avec la formule suivante :
Symbole Description
y Valeur de réglage
Kp Gain proportionnel
s Opérateur de Laplace
b Pondération de l'action P
w Consigne
x Mesure
TI Temps d'intégration
a Coefficient pour l'action par dérivation (T1 = a × TD)
Temps de dérivation
c Pondération de l'action D
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 3 sur 16
Sens de régulation
La plupart du temps, une augmentation de la mesure doit être atteinte avec une augmentation de la valeur de réglage.
Dans ce cas, on parle d'un sens de régulation normal. Il peut être nécessaire d'inverser le sens de régulation pour les
refroidissements et les régulations d'écoulement. PID_Compact ne fonctionne pas avec un gain proportionnel négatif. Si
InvertControl = TRUE, un signal d'écart croissant provoque une diminution de la valeur de réglage. Le sens de régulation
est pris en compte aussi pendant l'optimisation préalable et l'optimisation fine.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 4 sur 16
Input REAL 0.0 Une variable du programme utilisateur est utilisée comme source de
la mesure.
Si vous utilisez le paramètre Input, il faut que
sPid_Cmpt.b_Input_PER_On = FALSE.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 5 sur 16
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 6 sur 16
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 7 sur 16
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 8 sur 16
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 9 sur 16
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 10 sur 16
Remarque
Faites passer les variables de la présente liste en mode de fonctionnement "Inactif" pour éviter un comportement erroné
du régulateur PID. Vous forcez le mode de fonctionnement "Inactif" en mettant la variable "sRet.i_Mode" à "0".
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 11 sur 16
Remarque
Vous souhaitez par exemple répéter une optimisation fine réussie sans terminer le mode de fonctionnement
automatique avec i_Mode = 0.
Si vous mettez sRet.i_Mode à une valeur non valide pour un cycle, par exemple 9999, cela n'a aucun effet sur State. Au
cycle suivant, vous réglez Mode = 2. Vous pouvez ainsi obtenir une modification de sRet.i_Mode sans passer d'abord
au mode de fonctionnement "Inactif".
0 Inactif
Le régulateur est arrêté.
Avant la réalisation d'une optimisation préalable, le régulateur est en mode de fonctionnement "Inactif".
Durant le fonctionnement, le régulateur PID passe au mode de fonctionnement "Inactif" si une erreur
survient ou si vous cliquez sur l'icône "Désactiver le régulateur" dans la fenêtre de mise en route.
1 Optimisation préalable
L'optimisation préalable détermine la réponse du processus à un échelon de la valeur de réglage et
recherche le point d'inflexion. Les paramètres PID optimisés sont calculés à partir de l'incrémentation
maximale et du temps mort du système réglé.
Conditions pour une optimisation préalable :
le régulateur se trouve en mode de fonctionnement Inactif ou Mode manuel.
ManualEnable = FALSE
La mesure ne doit pas être trop proche de la consigne.
|Setpoint - Input| > 0.3 * |sPid_Cmpt.r_Pv_Hlm - sPid_Cmpt.r_Pv_Llm| et
|Setpoint - Input| > 0.5 * |Setpoint|
La consigne ne doit pas être modifiée pendant l'optimisation préalable.
Plus la mesure est stable, plus il sera facile de déterminer des paramètres PID précis. Un bruit de la
mesure est acceptable tant que la croissance de la mesure est nettement supérieure au bruit.
Avant que les paramètres PID soient recalculés, ils sont sauvegardés et peuvent être réactivés avec
sPid_Cmpt.b_LoadBackUp.
Après une optimisation préalable réussie, le mode de fonctionnement passe en automatique ; si
l'optimisation préalable échoue, le mode de fonctionnement passe au mode "Inactif".
La phase d'optimisation préalable est indiquée par Variable i_Event_SUT V1.
2 Optimisation fine
L'optimisation fine génère une oscillation constante limitée de la mesure. Les paramètres PID sont
optimisés à partir de l'amplitude et de la fréquence de cette oscillation. Les différences entre la réponse
du processus pendant l'optimisation préalable et l'optimisation fine sont analysées. Tous les paramètres
PID sont recalculés à partir des résultats. Les paramètres PID de l'optimisation fine montrent
généralement un meilleur comportement de référence et de perturbation que les paramètres PID de
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 12 sur 16
l'optimisation préalable.
PID_Compact essaie automatiquement de créer une oscillation supérieure au bruit de la mesure. La
stabilité de la mesure n'influence l'optimisation fine que de manière insignifiante.
Avant que les paramètres PID soient recalculés, ils sont sauvegardés et peuvent être réactivés avec
sPid_Cmpt.b_LoadBackUp.
Conditions pour une optimisation fine :
Aucune perturbation n'est attendue.
La consigne et la mesure sont dans les limites configurées
La consigne ne doit pas être modifiée pendant l'optimisation fine.
ManualEnable = FALSE
Mode automatique (State = 3), inactif (State = 0) ou mode manuel (State = 4)
L'optimisation fine se déroule de la manière suivante au démarrage :
Mode automatique (State = 3)
Si vous souhaitez améliorer les paramètres PID existants à l'aide de l'optimisation, démarrez
l'optimisation fine à partir du mode automatique.
PID_Comact effectue un réglage avec les paramètres PID existants jusqu'à ce que la boucle de
régulation soit en régime stationnaire et que les conditions pour une optimisation fine soient
remplies. C'est seulement après cela que l'optimisation fine commence.
Inactif (State = 0) ou mode manuel (State = 4)
Une optimisation préalable est lancée lorsque les conditions correspondantes sont réunies. Un
réglage a lieu avec les paramètres PID déterminés jusqu'à ce que la boucle de régulation soit en
régime stationnaire et que les conditions pour une optimisation fine soient remplies. C'est seulement
après cela que l'optimisation fine commence. Si l'optimisation préalable n'est pas possible,
PID_Compact passe en mode de fonctionnement "Inactif".
Quand la mesure est déjà trop proche de la consigne pour une optimisation préalable ou que
sPid_Calc.b_RunIn = TRUE, le système essaie d'atteindre la consigne avec la valeur de réglage
mini ou maxi. Cela peut entraîner une suroscillation élevée.
Après avoir effectué correctement une "optimisation fine", le régulateur passe au mode de
fonctionnement "Mode automatique" ; en cas d'échec de "l'optimisation fine", il passe au mode "Inactif".
La phase d'"optimisation fine" est affichée avec la Variable i_Event_TIR V1.
3 Mode automatique
En mode automatique, PID_Compact régule le système réglé en fonction des paramètres prédéfinis.
Si l'une des conditions préalables suivantes est remplie, le système passe au mode automatique :
Optimisation préalable réussie
Optimisation fine réussie
Modification de la variable sRet.i_Mode sur la valeur 3.
Quand la CPU est mise en route ou passe de STOP à RUN, PID_Compact démarre dans le dernier
mode de fonctionnement actif. Pour laisser PID_Compact en mode "Inactif", mettez
sb_RunModeByStartup = FALSE.
4 Mode manuel
En mode manuel, vous spécifiez une valeur de réglage manuelle au paramètre ManualValue.
Ce mode de fonctionnement est activé si sRet.i_Mode = 4 ou en cas de front montant sur
ManualEnable. Si ManualEnable = TRUE, seul State est modifié. sRet.i_Mode reste sur la même
valeur. En cas de front descendant sur ManualEnable, PID_Compact repasse au mode de
fonctionnement précédent.
Le passage au mode automatique s'effectue sans à-coups.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 13 sur 16
Paramètre Error V1
En présence de plusieurs erreurs simultanées, les valeurs des codes d'erreur s'affichent comme addition binaire.
L'affichage du code d'erreur 0003, par ex., indique la présence simultanée des erreurs 0001 et 0002.
Error Description
(DW#16#...)
0002 Valeur invalide au paramètre "Input_PER". Vérifiez si une erreur est présente à l'entrée analogique.
0004 Erreur pendant l'optimisation fine. L'oscillation de la mesure n'a pas pu être maintenue.
0008 Erreur lors du démarrage de l'optimisation préalable. La mesure est trop proche de la consigne.
Démarrez l'optimisation fine.
0020 L'optimisation préalable n'est pas autorisée en mode automatique et pendant l'optimisation fine.
0200 Valeur invalide au paramètre "Input" : Le format numérique de la valeur est invalide.
0800 Erreur de temps d'échantillonnage : PID_Compact n'est pas appelé pendant le temps
d'échantillonnage de l'OB d'alarme cyclique.
1000 Valeur invalide au paramètre "Setpoint" : Le format numérique de la valeur est invalide.
Paramètre Reset V1
Le comportement si Reset = TRUE dépend de la version de l'instruction PID_Compact.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 14 sur 16
① Activation
② Erreur
③ Reset
① Activation
② Erreur
③ Reset
Variable sd_warning V1
En présence simultanée de plusieurs alertes, les valeurs des variables sd_warning sont affichées sous forme d'addition
binaire. Si l'alerte affiche 0003 p. ex., cela indique la présence simultanée des alertes 0001 et 0002.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 15 sur 16
sd_warning Description
(DW#16#....)
0001 Le point d'inflexion n'a pas été trouvé pendant l'optimisation préalable.
0008 Toutes les propriétés nécessaires du système réglé n'ont pas été déterminées pour la méthode de
calcul choisie. Les paramètres PID ont été calculés avec la méthode "i_CtrlTypeTIR = 3" à titre de
remplacement.
0020 Le temps d'échantillonnage de l'algorithme PID est limité par le temps de cycle de l'OB appelant.
Afin d'obtenir de meilleurs résultats, utilisez des temps de cycle de l'OB plus courts.
Les alarmes suivantes sont supprimées dès que la cause est éliminée :
0004
0020
0040
Toutes les autres alarmes sont supprimées avec un front montant sur Reset.
Variable i_Event_SUT V1
Variable i_Event_TIR V1
-100 TIR_FIRST_SUT L'optimisation fine n'est pas possible. Une optimisation préalable est d'abord
réalisée.
[Link] 18/09/2014
PID_Compact V1 (S7-1200) Page 16 sur 16
400 TIR_CTRLN Essayer d'atteindre la consigne avec les paramètres PID existants
(si l'optimisation préalable a réussi)
[Link] 18/09/2014