Main Content

Régler le contrôleur PID pour favoriser le suivi de consigne ou le rejet des perturbations (ligne de commande)

Cet exemple montre comment utiliser les options de réglage PID en ligne de commande pour réduire le dépassement dans le suivi de consigne ou pour améliorer le rejet d'une perturbation à l'entrée du système physique. Avec la commande pidtune, l'exemple illustre le compromis entre le suivi de consigne et les performances de rejet des perturbations dans les systèmes de contrôle PI et PID.

Considérez le système de contrôle de l'illustration suivante.

Le suivi de consigne est la réponse en y des signaux en r. Le rejet des perturbations d'entrée est la suppression en y des signaux en d.

Créez un modèle du système physique, qui pour cet exemple est donné par :

$$G = \frac{{0.3}}{{{s^2} + 0.1s}}.$$

G = tf(0.3,[1 0.1 0]);

Concevez un contrôleur PI pour ce système physique, en utilisant une bande passante de 0,03 rad/s.

wc = 0.03;
[C1,info] = pidtune(G,'PI',wc);

Examinez la réponse du système a un échelon de consigne ou de perturbation avec le contrôleur par défaut. La réponse aux perturbations de d en y est équivalente à la réponse d'une boucle fermée donnée par feedback(G,C1).

T1 = feedback(G*C1,1);
GS1 = feedback(G,C1);

subplot(2,1,1);
stepplot(T1)
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS1)
title('Disturbance Rejection')

Par défaut, pour une bande passante, pidtune accorde le contrôleur pour atteindre un équilibre entre le suivi de consigne et le rejet des perturbations. Dans ce cas, le contrôleur produit un certain dépassement dans la réponse au suivi de consigne. Le contrôleur supprime également la perturbation d'entrée avec un temps de stabilisation plus long que le suivi de consigne, après un maximum initial.

En fonction de votre application, vous pouvez modifier l'équilibre entre le suivi de consigne et le rejet des perturbations pour favoriser l'un ou l'autre. Pour un contrôleur PI, vous pouvez modifier cet équilibre en changeant la marge de phase du système réglé. Le contrôleur par défaut renvoyé par pidtune donne une marge de phase de 60°.

info.PhaseMargin
ans =

   60.0000

Concevez des contrôleurs pour des marges de phase de 45° et 70° avec la même bande passante, et comparez le suivi de consigne et le rejet des perturbations qui en résultent.

opts2 = pidtuneOptions('PhaseMargin',45);
C2 = pidtune(G,'PI',wc,opts2);
T2 = feedback(G*C2,1);
GS2 = feedback(G,C2);

opts3 = pidtuneOptions('PhaseMargin',70);
C3 = pidtune(G,'PI',wc,opts3);
T3 = feedback(G*C3,1);
GS3 = feedback(G,C3);

subplot(2,1,1);
stepplot(T1,T2,T3)
legend('PM = 60','PM = 45','PM = 70')
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS1,GS2,GS3)
title('Disturbance Rejection')

La réduction de la marge de phase à 45° accélère le rejet des perturbations, mais augmente également le dépassement en réponse du suivi de consigne. L'augmentation de la marge de phase à 70° élimine complètement le dépassement, mais entraîne un rejet des perturbations extrêmement lent. Vous pouvez essayer différentes valeurs de marge de phase jusqu'à ce que vous trouviez celle qui équilibre le suivi de consigne et le rejet des perturbations de manière appropriée pour votre application. L'effet de la marge de phase sur cet équilibre dépend du modèle du système physique. Pour certains modèles de système physique, l'effet n'est pas aussi important que celui montré dans cet exemple.

Si vous souhaitez fixer à la fois la bande passante et la marge de phase de votre système de contrôle, vous pouvez toujours modifier l'équilibre entre le suivi de consigne et le rejet des perturbations à l'aide de l'option DesignFocus de pidtune. Vous pouvez définir DesignFocus sur 'disturbance-rejection' ou 'reference-tracking' pour régler un contrôleur qui favorise l'un ou l'autre.

L'option DesignFocus est plus efficace pour un système de contrôle avec plus de paramètres réglables. Par conséquent, elle n'a pas beaucoup d'effet lorsqu'elle est utilisée avec un contrôleur PI. Pour voir son effet, concevez un contrôleur PIDF pour la même bande passante et la marge de phase par défaut (60°) en utilisant chacune des valeurs possibles de DesignFocus. Comparez les résultats.

opts4 = pidtuneOptions('DesignFocus','balanced');   % default focus
C4 = pidtune(G,'PIDF',wc,opts4);
T4 = feedback(G*C4,1);
GS4 = feedback(G,C4);

opts5 = pidtuneOptions('DesignFocus','disturbance-rejection');
C5 = pidtune(G,'PIDF',wc,opts5);
T5 = feedback(G*C5,1);
GS5 = feedback(G,C5);

opts6 = pidtuneOptions('DesignFocus','reference-tracking');
C6 = pidtune(G,'PIDF',wc,opts6);
T6 = feedback(G*C6,1);
GS6 = feedback(G,C6);

subplot(2,1,1);
stepplot(T4,T5,T6)
legend('Balanced','Rejection','Tracking')
title('Reference Tracking')
subplot(2,1,2);
stepplot(GS4,GS5,GS6)
title('Disturbance Rejection')

Lorsque vous utilisez l'option DesignFocus pour favoriser le suivi de consigne ou le rejet des perturbations dans le système de contrôle réglé, vous pouvez toujours ajuster la marge de phase pour affiner l'équilibre entre ces deux mesures de performance. Utilisez DesignFocus et PhaseMargin ensemble pour atteindre l'équilibre de performance qui répond le mieux à vos exigences de design.

L'effet de ces deux options sur les performances du système dépend fortement des propriétés de votre système physique. Pour certains systèmes physiques, le changement des options PhaseMargin ou DesignFocus n'a pas ou peu d'effet.

Sujets associés