Main Content

place

Entwurf der Polvorgabe

    Beschreibung

    Die Polvorgabe ist eine Methode zur Berechnung der optimalen Verstärkungsmatrix, die verwendet wird, um die Polstellen des geschlossenen Regelkreises bestimmten Positionen zuzuweisen und so die Systemstabilität zu gewährleisten. Die Positionen der Polstellen geschlossener Regelkreise haben eine direkte Auswirkung auf die zeitlichen Eigenschaften der Antworten, wie zum Beispiel Anstiegszeit, Einschwingzeit und Ausgleichsschwingungen. Weitere Informationen finden Sie unter Polvorgabe.

    System with state matrix A, input matrix B, output matrix C, and feedthrough matrix D, with full state feedback matrix K

    Betrachten Sie das abgebildete lineare dynamische System in der Zustandsraumform

    x˙=Ax+Bu

    y=Cx+Du

    Für einen gegebenen Vektor p mit gewünschten selbstkonjugierten Polstellen im geschlossenen Regelkreis berechnet place eine Verstärkungsmatrix K, so dass das Zustands-Feedback u = –Kx den Polstellen die Positionen p zuweist. Anders ausgedrückt: Die Eigenwerte von ABK stimmen mit den Einträgen von p überein (bis zur Ordnung).

    K = place(A,B,p) platziert die gewünschten Polstellen p des geschlossenen Regelkreises, indem eine Zustands-Feedback-Verstärkungsmatrix K berechnet wird. Alle Eingänge der Regelstrecke werden als Steuereingänge behandelt. place funktioniert auch für Systeme mit mehreren Eingängen und basiert auf dem Algorithmus von [1]. Dieser Algorithmus nutzt die zusätzlichen Freiheitsgrade, um eine Lösung zu finden, die die Empfindlichkeit der Regelkreispolstellen gegenüber Störungen in A oder B minimiert.

    Beispiel

    [K,prec] = place(A,B,p) liefert ebenfalls prec, eine Genauigkeitsabschätzung, indem es angibt, wie genau die Eigenwerte von ABK mit den angegebenen Stellen p übereinstimmen (prec misst die Anzahl der genauen Dezimalstellen an den tatsächlichen Regelkreispolstellen). Es wird eine Warnung ausgegeben, wenn eine Polstelle des geschlossenen Regelkreises, die nicht Null ist, um mehr als 10% von der gewünschten Position abweicht.

    Beispiele

    alle reduzieren

    Betrachten Sie in diesem Beispiel ein einfaches System zweiter Ordnung mit den folgenden Zustandsraum-Matrizen:

    A=[-1-210]B=[20]C=[01]D=0Spate-space matrices

    Geben Sie die Matrizen ein und erstellen Sie das Zustandsraumsystem.

    A = [-1,-2;1,0];
    B = [2;0];
    C = [0,1];
    D = 0;
    sys = ss(A,B,C,D);

    Berechnen Sie die Polstellen des offenen Regelkreises und überprüfen Sie die Sprungantwort des offenen Regelkreises.

    Pol  = pole(sys)
    Pol = 2×1 complex
    
      -0.5000 + 1.3229i
      -0.5000 - 1.3229i
    
    
    figure(1)
    step(sys)
    hold on;

    MATLAB figure

    Beachten Sie, dass das resultierende System unterdämpft ist. Wählen Sie daher reelle Polstellen in der linken Hälfte der komplexen Ebene, um Schwingungen zu vermeiden.

    p = [-1,-2];

    Ermitteln Sie die Verstärkungsmatrix K mithilfe der Polvorgabe und überprüfen Sie die Polstellen des geschlossenen Regelkreises von syscl.

    K = place(A,B,p);
    Acl = A-B*K;
    syscl = ss(Acl,B,C,D);
    Pcl = pole(syscl)
    Pcl = 2×1
    
       -2.0000
       -1.0000
    
    

    Vergleichen Sie nun die Sprungantwort des geschlossenen Regelkreises.

    figure(1)
    step(syscl)

    MATLAB figure

    Das durch die Polvorgabe erhaltene geschlossene System ist also stabil und zeigt eine gute stationäre Antwort.

    Beachten Sie, dass die Wahl von Polstellen, die weiter von der imaginären Achse entfernt sind, zu einer schnelleren Antwortzeit führt, aber die Verstärkung des Systems im stationären Zustand verringert. Für das obige System können Sie zum Beispiel die Polstellen [-2,-3] verwenden.

    p = [-2, -3];
    K2 = place(A,B,p);
    syscl2 = ss(A-B*K2,B,C,D);
    figure(1);
    step(syscl2);

    MATLAB figure

    stepinfo(syscl)
    ans = struct with fields:
             RiseTime: 2.5901
        TransientTime: 4.6002
         SettlingTime: 4.6002
          SettlingMin: 0.9023
          SettlingMax: 0.9992
            Overshoot: 0
           Undershoot: 0
                 Peak: 0.9992
             PeakTime: 7.7827
    
    
    stepinfo(syscl2)
    ans = struct with fields:
             RiseTime: 1.4130
        TransientTime: 2.4766
         SettlingTime: 2.4766
          SettlingMin: 0.3003
          SettlingMax: 0.3331
            Overshoot: 0
           Undershoot: 0
                 Peak: 0.3331
             PeakTime: 4.1216
    
    

    Betrachten Sie in diesem Beispiel die Polpositionen [-2e-13,-3e-4,-3e-3]. Berechnen Sie die Genauigkeit der tatsächlichen Polstellen.

    A = [4,2,1;0,-1,2;0,1e-8,1];
    B = [1,2;3,1;1e-6,0];
    p = [-2e-13,-3e-4,3e-3];
    [~,prec] = place(A,B,p)
    prec = 
    2
    

    Sie erhalten einen Präzisionswert von 2, der anzeigt, dass die tatsächlichen Polpositionen bis auf 2 Dezimalstellen genau sind.

    Betrachten Sie in diesem Beispiel die folgende Transferfunktion mit komplex-konjugierten Polstellen bei -2±2i:

    systf(s)=8s2+4s+8Transfer function of the system

    Geben Sie das Transferfunktionsmodell ein. Konvertieren Sie es dann in die Zustandsraumform, da place die Matrizen A und B als Eingangsargumente verwendet.

    s = tf('s');
    systf = 8/(s^2+4*s+2);
    sys = ss(systf);

    Berechnen Sie als nächstes die Verstärkungsmatrix K unter Verwendung der komplex-konjugierten Polstellen.

    p = [-2+2i,-2-2i];
    K = place(sys.A,sys.B,p)
    K = 1×2
    
             0    1.5000
    
    

    Die Werte der Verstärkungsmatrix sind real, da die Polstellen selbstkonjugiert sind. Die Werte von K wären komplex, wenn p keine selbstkonjugierten Polstellen enthalten würde.

    Überprüfen Sie nun die Sprungantwort des geschlossenen Regelkreises.

    syscl = ss(sys.A-sys.B*K,sys.B,sys.C,sys.D);
    step(syscl)

    MATLAB figure

    Betrachten Sie in diesem Beispiel das folgende SISO-Zustandsraummodell:

    A=[-1-0.7510]B=[10]C=[11]D=0SISO State-Space Model

    Erstellen Sie das SISO-Zustandsraummodell, das durch die folgenden Zustandsraum-Matrizen definiert ist:

    A = [-1,-0.75;1,0];
    B = [1;0];
    C = [1,1];
    D = 0;
    Plant = ss(A,B,C,D);

    Geben Sie nun einen Impuls an die Regelstrecke und simulieren Sie sie mit lsim. Stellen Sie die Ausgänge grafisch dar.

    N = 250;
    t = linspace(0,25,N);
    u = [ones(N/2,1); zeros(N/2,1)];
    x0 = [1;2];
    [y,t,x] = lsim(Plant,u,t,x0);
    
    figure
    plot(t,y);
    title('Output');

    Figure contains an axes object. The axes object with title Output contains an object of type line.

    Nehmen Sie für dieses Beispiel an, dass keine der Zustandsvariablen gemessen werden können und nur die Ausgänge gemessen werden. Entwerfen Sie daher einen Beobachter bei dieser Messung. Verwenden Sie place, um die Schätzungsverstärkung zu berechnen, indem Sie die Matrix A transponieren und die Matrix B durch C' ersetzen. Platzieren Sie in diesem Fall die gewünschten Polstellen bei -2 und -3.

    L = place(A',C',[-2,-3])';

    Verwenden Sie die Schätzungsverstärkung, um die Zustandsmatrizen nach dem Prinzip der Dualität/Trennung zu ersetzen und das geschätzte Zustandsraummodell zu erstellen.

    At = A-L*C;
    Bt = [B,L];
    Ct = [C;eye(2)];
    sysObserver = ss(At,Bt,Ct,0);

    Simulieren Sie das Zeitverhalten des Systems unter Verwendung desselben Impulseingangs.

    [observerOutput,t] = lsim(sysObserver,[u,y],t);
    yHat = observerOutput(:,1);
    xHat = observerOutput(:,[2 3]);

    Vergleichen Sie die Antwort des tatsächlichen Systems und des geschätzten Systems.

    figure;
    plot(t,x);
    hold on;
    plot(t,xHat,'--');
    legend('x_1','x_2','xHat_1','xHat_2')
    title('Comparison - Actual vs. Estimated');

    Figure contains an axes object. The axes object with title Comparison - Actual vs. Estimated contains 4 objects of type line. These objects represent x_1, x_2, xHat_1, xHat_2.

    Eingabeargumente

    alle reduzieren

    Zustandsmatrix, angegeben als Nx-mal-Nx-Matrix, wobei Nx die Anzahl der Zustände ist.

    Eingang-zu-Zustandsmatrix, angegeben als Nx-mal-Nu-Matrix, wobei Nx die Anzahl der Zustände und Nu die Anzahl der Eingänge ist.

    Position der Polstellen geschlossener Regelkreise, angegeben als Vektor der Länge Nx, wobei Nx die Anzahl der Zustände ist. Mit anderen Worten, die Länge von p muss der Zeilengröße von A entsprechen. Die Positionen der Polstellen geschlossener Regelkreise haben eine direkte Auswirkung auf die zeitlichen Eigenschaften der Antworten, wie zum Beispiel Anstiegszeit, Einschwingzeit und Ausgleichsschwingungen. Ein Beispiel der Auswahl von Polstellen finden Sie unter Entwurf der Polvorgabe für Systeme zweiter Ordnung.

    place meldet einen Fehler, wenn einige Polstellen in p eine Multiplizität größer als rank(B) haben.

    Bei Problemen hoher Ordnung führen einige wählbare Polstellen zu sehr großen Verstärkungsfaktoren. Die mit großen Verstärkungsfaktoren verbundenen Sensitivitätsprobleme mahnen zur Vorsicht bei der Verwendung von Polvorgabeverfahren. Hier finden Sie Ergebnisse aus numerischen Tests: [2]

    Ausgangsargumente

    alle reduzieren

    Optimale Verstärkung oder volle Zustands-Feedback-Verstärkung, ausgegeben als Nu-mal-Nx-Matrix, wobei Nx die Anzahl der Zustände und Nu die Anzahl der Eingänge ist. place berechnet eine Verstärkungsmatrix K, so dass das Zustands-Feedback u = –Kx den Polstellen des geschlossenen Regelkreises die Stellen p zuweist.

    Wenn die Matrizen A und B reell sind, ist K

    • reell, wenn p selbstkonjugiert ist.

    • komplex, wenn die Polstellen nicht komplexkonjugiert sind.

    Genauigkeitsschätzung der zugewiesenen Polstellen, die als Skalar geliefert wird. prec misst die Anzahl der genauen Dezimalstellen der tatsächlichen Polstellen des geschlossenen Regelkreises im Gegensatz zu den in p angegebenen Polstellen.

    Tipps

    • Sie können place zur Auswahl der Verstärkung der Schätzfunktion verwenden, indem Sie die A-Matrix transponieren und die Matrix B wie folgt durch C' ersetzen, wie in Entwurf eines Beobachters bei der Polvorgabe gezeigt wird. Sie können die resultierende Schätzungsverstärkung für Zustandsschätzungs-Workflows mit estim verwenden.

    Referenzen

    [1] Kautsky, J., N.K. Nichols, and P. Van Dooren, "Robust Pole Assignment in Linear State Feedback," International Journal of Control, 41 (1985), pp. 1129-1155.

    [2] Laub, A.J. and M. Wette, Algorithms and Software for Pole Assignment and Observers, UCRL-15646 Rev. 1, EE Dept., Univ. of Calif., Santa Barbara, CA, Sept. 1984.

    Versionsverlauf

    Eingeführt vor R2006a

    Siehe auch

    | |