Entwurf eines LQG-Servoreglers
R2026aDieses Beispiel zeigt den Entwurf eines Servoreglers für das folgende System.
![]()
Die Regelstrecke enthält drei Zustände (x), zwei Steuerungseingänge (u), zwei Zufallseingänge (w), einen Ausgang (y), Messrauschen für den Ausgang (v) und die folgenden Zustands- und Messgleichungen:
Dabei gilt:
Das Rauschen im System lässt sich mit den folgenden Kovarianzdaten darstellen:
Verwenden Sie die folgende Aufwandsfunktion, um den Kompromiss zwischen Tracker-Leistung und Steuerungsaufwand zu definieren:
So entwerfen Sie einen LQG-Servoregler für dieses System:
Erstellen Sie das Zustandsraumsystem, indem Sie im MATLAB®-Befehlsfenster Folgendes eingeben:
A = [0 1 0;0 0 1;1 0 0]; B = [0.3 1;0 1;-0.3 0.9]; G = [-0.7 1.12; -1.17 1; .14 1.5]; C = [1.9 1.3 1]; D = [0.53 -0.61]; H = [-1.2 -0.89]; sys = ss(A,[B G],C,[D H]);
Konstruieren Sie die optimale Zustands-Feedback-Verstärkung unter Verwendung der gegebenen Aufwandsfunktion, indem Sie die folgenden Befehle eingeben:
nx = 3; %Number of states ny = 1; %Number of outputs Q = blkdiag(0.1*eye(nx),eye(ny)); R = [1 0;0 2]; K = lqi(ss(A,B,C,D),Q,R);
Konstruieren Sie die Kalman-Zustandsschätzfunktion unter Verwendung der gegebenen Kovarianzdaten für das Rauschen, indem Sie die folgenden Befehle eingeben:
Qn = [4 2;2 1]; Rn = 0.7; kest = kalman(sys,Qn,Rn);
Bilden Sie den LQG-Servoregler, indem Sie mit den folgenden Befehlen die Kalman-Zustandsschätzfunktion und die optimale Zustands-Feedback-Verstärkung verbinden:
Dieser Befehl gibt den folgenden LQG-Servoregler zurück:trksys = lqgtrack(kest,K)
>> trksys = lqgtrack(kest,K) a = x1_e x2_e x3_e xi1 x1_e -2.373 -1.062 -1.649 0.772 x2_e -3.443 -2.876 -1.335 0.6351 x3_e -1.963 -2.483 -2.043 0.4049 xi1 0 0 0 0 b = r1 y1 x1_e 0 0.2849 x2_e 0 0.7727 x3_e 0 0.7058 xi1 1 -1 c = x1_e x2_e x3_e xi1 u1 -0.5388 -0.4173 -0.2481 0.5578 u2 -1.492 -1.388 -1.131 0.5869 d = r1 y1 u1 0 0 u2 0 0 Input groups: Name Channels Setpoint 1 Measurement 2 Output groups: Name Channels Controls 1,2 Continuous-time model.