Main Content

Sincronizzazione del controller PID a favore del tracking di riferimento o della reiezione dei disturbi (riga di comando)

Questo esempio mostra come utilizzare le opzioni di sincronizzazione PID dalla riga di comando per ridurre l’overshoot nel tracking di riferimento o per migliorare la reiezione di un disturbo nell’input dell’impianto. Utilizzando il comando pidtune, l’esempio illustra il bilanciamento tra il tracking di riferimento e la performance di reiezione dei disturbi nei sistemi di controllo PI e PID.

Considerare il sistema di controllo della seguente figura.

Il tracking del setpoint è la risposta su y ai segnali su r. La reiezione dei disturbi nell’input è la soppressione su y dei segnali su d.

Creare un modello dell’impianto, che per questo esempio è dato da:

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

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

Progettare un controller PI per questo impianto, utilizzando una larghezza di banda di 0,03 rad/s.

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

Esaminare il tracking di riferimento di fase e la reiezione dei disturbi di fase del sistema di controllo utilizzando il controller predefinito. La risposta ai disturbi da d a y è equivalente alla risposta di un loop chiuso dato da 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')

Per impostazione predefinita, per una larghezza di banda determinata, pidtune sincronizza il controller così da raggiungere un equilibrio tra tracking di riferimento e reiezione dei disturbi. In questo caso, il controller fornisce un certo overshoot nella risposta del tracking di riferimento. Inoltre, il controller sopprime il disturbo dell’input con un tempo di assestamento leggermente più lungo rispetto al tracking di riferimento, dopo un picco iniziale.

In base all’applicazione in uso, si può decidere di alterare l’equilibrio tra tracking di riferimento e reiezione dei disturbi a favore dell’uno o dell’altra. Nel caso di un controller PI è possibile alterare tale equilibrio modificando il margine di fase del sistema sincronizzato. Il controller predefinito restituito da pidtune fornisce un margine di fase di 60°.

info.PhaseMargin
ans =

   60.0000

Progettare dei controller per margini di fase di 45° e 70° con la stessa larghezza di banda e confrontare il tracking di riferimento e la reiezione dei disturbi che ne derivano.

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')

L’abbassamento del margine di fase a 45° accelera la reiezione dei disturbi, ma aumenta anche l’overshoot nella risposta del tracking di riferimento. L’aumento del margine di fase a 70° elimina completamente l’overshoot, ma porta ad una reiezione dei disturbi estremamente lenta. Si possono provare diversi valori di margine di fase, fino a individuare quello in grado di bilanciare adeguatamente il tracking di riferimento e la reiezione dei disturbi per l’applicazione in uso. L’effetto del margine di fase su tale equilibrio dipende dal modello d’impianto. Per alcuni modelli d’impianto, l’effetto non è così macroscopico come in questo esempio.

Se si desidera correggere sia la larghezza di banda che il margine di fase del sistema di controllo, è comunque possibile modificare l’equilibrio tra tracking di riferimento e reiezione dei disturbi utilizzando l’opzione DesignFocus di pidtune. È possibile impostare DesignFocus su 'disturbance-rejection' o su 'reference-tracking' per sincronizzare un controller a favore dell’una o dell’altro.

L’opzione DesignFocus è più efficace per i sistemi di controllo con più parametri sincronizzabili. Quindi non ha molto effetto se utilizzata con un controller PI. Per vederne l’effetto, progettare un controller PIDF per la stessa larghezza di banda e lo stesso margine di fase predefinito (60°) utilizzando ciascuno dei valori di DesignFocus. Confrontare i risultati.

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')

Quando si utilizza l’opzione DesignFocus a favore del tracking di riferimento o della reiezione dei disturbi nel sistema di controllo sincronizzato, si può comunque regolare il margine di fase per ottenere un ulteriore fine-tuning dell’equilibrio tra queste due misure della performance. Utilizzare insieme le opzioni DesignFocus e PhaseMargin per ottenere l’equilibrio di performance che si adatta meglio ai propri requisiti di progettazione.

L’effetto di entrambe le opzioni sulla prestazione del sistema dipende in gran parte dalle proprietà dell’impianto. Per alcuni impianti, modificare l’opzione PhaseMargin o DesignFocus produce un effetto limitato o nullo.

Argomenti complementari