Main Content

Progettazione di un regolatore LQG

Considerare come esempio di progettazione LQG il seguente problema di regolazione.

L’obiettivo è regolare l’output dell’impianto y in prossimità dello zero. Il disturbo dell’input d è una bassa frequenza con densità spettrale di potenza (PSD) concentrata al di sotto di 10 rad/s. Ai fini della progettazione LQG, viene modellato come rumore bianco sottoposto a un filtro passa basso con un cutoff di 10 rad/s, illustrato nella seguente figura.

Per semplicità, questo rumore è modellato come un rumore gaussiano bianco con una varianza di 1.

La seguente figura mostra la magnitudo di Bode del filtro di forma.

Magnitudo di Bode del filtro passa basso

È presente un certo rumore di misura n, con l’intensità del rumore data da

E(n2)=0.01

Usare la funzione di costo

J(u)=0(10y2+u2)dt

per specificare il bilanciamento tra la performance di regolazione e il costo di controllo. Le seguenti equazioni rappresentano un modello stato-spazio a loop aperto:

x˙=Ax+Bu+Bd(stateequations)y=Cx+n(measurements)

dove (A,B,C) è una realizzazione stato-spazio di 100/(s2+s+100).

I seguenti comandi consentono di progettare un regolatore LQG ottimale F (s) per questo problema:

sys = ss(tf(100,[1 1 100])) % State-space plant model

% Design LQ-optimal gain K
K = lqry(sys,10,1)	 % u = -Kx minimizes J(u)

% Separate control input u and disturbance input d
P = sys(:,[1 1]);
% input [u;d], output y

% Design Kalman state estimator Kest.
Kest = kalman(P,1,0.01)

% Form LQG regulator = LQ gain + Kalman filter.
F = lqgreg(Kest,K)

Questi comandi restituiscono un modello stato-spazio F del regolatore LQG F (s). Le funzioni lqry, kalman e lqgreg eseguono la progettazione di un LQG a tempo discreto quando vengono applicate a impianti discreti.

Per validare la progettazione, scegliere un loop con feedback, creare e aggiungere un filtro passa basso in serie con il sistema a loop chiuso e confrontare le risposte agli impulsi a loop aperto e chiuso utilizzando la funzione impulse.

% Close loop
clsys = feedback(sys,F,+1)
% Note positive feedback.

% Create the lowpass filter and add it in series with clsys.
s = tf('s');
lpf= 10/(s+10) ;
clsys_fin = lpf*clsys;

% Open- vs. closed-loop impulse responses
impulse(sys,'r--',clsys_fin,'b-')

Questi comandi portano alla seguente figura, in cui si osserva il confronto delle risposte agli impulsi a loop aperto e chiuso per questo esempio.

Confronto delle risposte agli impulsi a loop aperto e chiuso

Vedi anche

|

Argomenti complementari