Main Content

Lineare Modelle (LTI-Modelle)

Was ist eine Regelstrecke?

Üblicherweise entwickeln Regelungstechniker zuerst eine mathematische Beschreibung des dynamischen Systems, das sie regeln möchten. Das System, das geregelt werden soll, wird als Regelstrecke bezeichnet. Als Beispiel für eine Regelstrecke wird in diesem Abschnitt der Gleichstrommotor verwendet. In diesem Abschnitt werden die Differenzialgleichungen entwickelt, mit denen die elektromechanischen Eigenschaften eines Gleichstrommotors mit einer Trägheitslast beschrieben werden. Danach wird gezeigt, wie Sie die Funktionen der Control System Toolbox™ verwenden können, um basierend auf diesen Gleichungen lineare Modelle zu erstellen.

Darstellungen linearer Modelle

Sie können die Funktionen der Control System Toolbox verwenden, um die folgenden Modelldarstellungen zu erstellen:

  • Zustandsraummodelle (State-Space (SS) models) der Form

    dxdt=Ax+Buy=Cx+Du

    Dabei gilt: A, B, C und D sind Matrizen der entsprechenden Dimensionen, x ist der Zustandsvektor und u und y sind der Eingangs- und der Ausgangsvektor.

  • Transferfunktionen (TF), zum Beispiel

    H(s)=s+2s2+s+10

  • Null-Polstellen-Verstärkungsmodelle (Zero-Pole-Gain, ZPK-Modelle), zum Beispiel

    H(z)=3(z+1+j)(z+1j)(z+0.2)(z+0.1)

  • Frequenzgangdatenmodelle (Frequency Response Data, FRD-Modelle), die aus den abgetasteten Messwerten des Frequenzgangs eines Systems bestehen. Sie können zum Beispiel experimentell gesammelte Frequenzgangdaten in einem FRD-Modell speichern.

    Hinweis

    Der Entwurf von FRD-Modellen ist ein Spezialthema, das in diesem Abschnitt nicht behandelt wird. Eine Beschreibung dieses Themas finden Sie unter Frequency Response Data (FRD) Models.

SISO-Beispiel: Der Gleichstrommotor

Ein einfaches Modell eines Gleichstrommotors mit einer Trägheitslast zeigt die Winkelgeschwindigkeit ω(t) der Last als Ausgangsgröße und die angelegte Spannung υapp(t) als Eingangsgröße. Das Ziel bei diesem Beispiel besteht letztendlich darin, über die angelegte Spannung die Winkelgeschwindigkeit zu regeln. Die folgende Abbildung zeigt ein einfaches Modell des Gleichstrommotors.

Ein einfaches Modell eines Gleichstrommotors mit einer Trägheitslast

In diesem Modell ist die Dynamik des Motors selbst idealisiert. Zum Beispiel wird ein konstantes magnetisches Feld angenommen. Der Widerstand des Stromkreises ist mit R und die Eigeninduktivität des Ankers ist mit L bezeichnet. Wenn Sie mit den Grundlagen der Modellierung eines Gleichstrommotors nicht vertraut sind, sollten Sie entsprechende Abhandlungen zur physikalischen Modellierung zu Rate ziehen. Mit diesem einfachen Modell und grundlegenden physikalischen Gesetzen ist es möglich, Differenzialgleichungen zur Beschreibung des Verhaltens dieses elektromechanischen Systems zu entwickeln. In diesem Beispiel werden die Beziehungen zwischen elektrischem Potenzial und mechanischer Kraft mit dem Faradayschen Induktionsgesetz und dem Ampèreschen Kraftgesetz an einem Leiter, der sich durch ein magnetisches Feld bewegt, beschrieben.

Mathematische Ableitung

Das Drehmoment τ an der Welle des Motors ist proportional zu dem Strom i, der durch die angelegte Spannung induziert wird:

τ(t)=Kmi(t)

Dabei gilt: Die Ankerkonstante Km steht im Zusammenhang mit den physikalischen Eigenschaften des Motors, wie zum Beispiel der magnetischen Feldstärke und der Anzahl der Drahtwindungen um die Ankerspule. Die (induzierte) gegenelektromotorische Kraft υemf ist eine Spannung proportional zur Winkelgeschwindigkeit ω an der Welle:

υemf(t)=Kbω(t)

Dabei hängt die emf-Konstante Kb auch von bestimmten physikalischen Eigenschaften des Motors ab.

Der mechanische Teil der Motorgleichungen wird nach dem Newtonschen Gesetz abgeleitet, gemäß dem das Produkt aus Trägheitslast J und Ableitung der Winkelgeschwindigkeit gleich der Summe aller Drehmomente um die Motorwelle ist. Das Ergebnis ist diese Gleichung:

Jdwdt=τi=Kfω(t)+Kmi(t)

Dabei gilt: Kfω ist eine lineare Approximation der viskosen (zähen) Reibung.

Als Letztes kann der elektrische Teil der Motorgleichungen wie folgt beschrieben werden:

υapp(t)υemf(t)=Ldidt+Ri(t)

Durch Auflösen nach der angelegten Spannung und Substituieren der gegenelektromotorischen (emf-)Kraft ergibt sich:

υapp(t)=Ldidt+Ri(t)+Kbω(t)

Diese Gleichungen führen zu einem Satz zweier Differenzialgleichungen, die das Verhalten des Motors beschreiben; die erste Gleichung für den induzierten Strom:

didt=RLi(t)KbLω(t)+1Lυapp(t)

und die zweite Gleichung für die resultierende Winkelgeschwindigkeit:

dωdt=1JKfω(t)+1JKmi(t)

Zustandsraumgleichungen für den Gleichstrommotor

Anhand der zwei Differenzialgleichungen, die im letzten Abschnitt abgeleitet wurden, können Sie jetzt eine Zustandsraumdarstellung des Gleichstrommotors als dynamisches System entwickeln. Der Strom i und die Winkelgeschwindigkeit ω sind die zwei Zustände des Systems. Der Eingang des Systems ist die angelegte Spannung υapp und der Ausgang ist die Winkelgeschwindigkeit ω.

ddt[iω]=[RLKbLKmJKfJ][iω]+[1L0]υapp(t)

Zustandsraumdarstellung des Gleichstrommotor-Beispiels

y(t)=[01][iω]+[0]υapp(t)

Erstellen von SISO-Modellen

Nachdem Sie einen Satz Differenzialgleichungen zur Beschreibung Ihrer Regelstrecke entwickelt haben, können Sie mit einfachen Befehlen SISO-Modelle erstellen. In den folgenden Abschnitten werden die folgenden Themen behandelt:

  • Konstruieren eines Zustandsraummodells des Gleichstrommotors

  • Konvertieren zwischen Modelldarstellungen

  • Erstellen von TF- und ZPK-Modellen

Konstruieren eines Zustandsraummodells des Gleichstrommotors

Geben Sie für die Parameter eines Gleichstrommotors die folgenden nominalen Werte ein.

R= 2.0 % Ohms
L= 0.5 % Henrys
Km = .015 % torque constant
Kb = .015 % emf constant
Kf = 0.2 % Nms
J= 0.02 % kg.m^2

Anhand dieser Werte können Sie mit der Funktion ss die numerische Zustandsraumdarstellung konstruieren.

A = [-R/L -Kb/L; Km/J -Kf/J]
B = [1/L; 0];
C = [0 1];
D = [0];
sys_dc = ss(A,B,C,D)

Diese Befehle geben das folgende Ergebnis zurück:

a = 
                        x1           x2
           x1           -4        -0.03
           x2         0.75          -10
 
 
b = 
                        u1
           x1            2
           x2            0
 
 
c = 
                        x1           x2
           y1            0            1
 
 
d = 
                        u1
           y1            0

Konvertieren zwischen Modelldarstellungen

Die nun vorhandene Zustandsraumdarstellung des Gleichstrommotors können Sie in andere Modelldarstellungen konvertieren, wie zum Beispiel TF-Modelle (Transferfunktion) und ZPK-Modelle (Zero/Pole/Gain, Nullstelle/Polstelle/Verstärkung).

Darstellung als Transferfunktion.  Mit tf können Sie die Zustandsraumdarstellung in die Transferfunktion konvertieren. Im Beispiel können Sie mit diesem Code in die Darstellung des Gleichstrommotors als Transferfunktion konvertieren.

sys_tf = tf(sys_dc)
Transfer function:
       1.5
------------------
s^2 + 14 s + 40.02

Darstellung als Nullstelle/Polstelle/Verstärkung.  Die Funktion zpk konvertiert eine Darstellung als Zustandsraum oder Transferfunktion in das Format mit Nullstelle/Polstelle/Verstärkung. Mit diesem Code können Sie die Zustandsraumdarstellung des Gleichstrommotors in die Form mit Nullstelle/Polstelle/Verstärkung konvertieren.

sys_zpk = zpk(sys_dc)
 
Zero/pole/gain:
        1.5
-------------------
(s+4.004) (s+9.996)

Hinweis

Die Zustandsraumdarstellung eignet sich am besten für numerische Berechnungen. Um höchste Genauigkeit zu erreichen, sollten Sie in die Zustandsraumdarstellung konvertieren, bevor Sie Modelle kombinieren, und die Darstellungen als Transferfunktion und als Nullstelle/Polstelle/Verstärkung vermeiden – außer bei der Modellspezifikation und Modellinspektion .

Konstruieren von TF- und ZPK-Modellen

Im Beispiel des Gleichstrommotors entsteht mit dem Zustandsraumansatz ein Satz Matrizen, die das Modell darstellen. Wenn Sie einen anderen Ansatz wählen, können Sie mit tf, zpk, ss oder frd die entsprechenden Modelle konstruieren.

sys = tf(num,den)               % Transfer function
sys = zpk(z,p,k)                % Zero/pole/gain
sys = ss(a,b,c,d)               % State-space
sys = frd(response,frequencies) % Frequency response data

Zum Beispiel können Sie die Transferfunktion erstellen, indem Sie mit diesem Code den Zähler und den Nenner angeben.

sys_tf = tf(1.5,[1 14 40.02])
 
Transfer function:
       1.5
------------------
s^2 + 14 s + 40.02

Sie können aber auch mit diesen Befehlen die Transferfunktion des Gleichstrommotors direkt erstellen.

s = tf('s');
sys_tf = 1.5/(s^2+14*s+40.02)

Diese Befehle ergeben die folgende Transferfunktion.

Transfer function:
        1.5
--------------------
s^2 + 14 s + 40.02

Um das Modell mit Nullstelle/Polstelle/Verstärkung zu erstellen, verwenden Sie diesen Befehl.

sys_zpk = zpk([],[-9.996 -4.004], 1.5)

Dieser Befehl gibt die folgende Darstellung als Nullstelle/Polstelle/Verstärkung zurück.

Zero/pole/gain:
        1.5
-------------------
(s+9.996) (s+4.004)

Konstruieren von zeitdiskreten Systemen

Die Software Control System Toolbox bietet vollständige Unterstützung für zeitdiskrete Systeme. Zeitdiskrete Systeme können Sie auf dieselbe Weise erstellen wie analoge Systeme. Der einzige Unterschied besteht darin, dass Sie für jedes Modell, das Sie erstellen, einen Abtastzeitraum angeben müssen. Beispiel:

sys_disc = tf(1, [1 1], .01);

erstellt ein SISO-Modell im Format als Transferfunktion.

Transfer function:
  1
-----
z + 1
 
Sample time: 0.01

Hinzufügen von Zeitverzögerungen zu zeitdiskreten Modellen

Sie können Zeitverzögerungen zu zeitdiskreten Modellen hinzufügen, indem Sie beim Erstellen des Modells eine Eingangsverzögerung, eine Ausgangsverzögerung oder eine E/A-Verzögerung angeben. Die Zeitverzögerung muss eine nichtnegative ganze Zahl sein, die ein Vielfaches der Abtastzeit darstellt. Beispiel:

sys_delay = tf(1, [1 1], 0.01,'ioDelay',5)

gibt ein System mit einer E/A-Verzögerung von 5 Sekunden zurück.

Transfer function:
           1
z^(-5) * -----
         z + 1
 
Sample time: 0.01

Hinzufügen von Verzögerungen zu linearen Modellen

Sie können Zeitverzögerungen zu linearen Modellen hinzufügen, indem Sie beim Erstellen eines Modells eine Eingangsverzögerung, eine Ausgangsverzögerung oder eine E/A-Verzögerung angeben. Zum Beispiel können Sie mit diesem Code eine E/A-Verzögerung zum Gleichstrommotor hinzufügen.

sys_tfdelay = tf(1.5,[1 14 40.02],'ioDelay',0.05)

Dieser Befehl konstruiert die Transferfunktion des Gleichstrommotors und fügt eine Verzögerung von 0,05 Sekunden hinzu.

Transfer function:
                      1.5
exp(-0.05*s) * ------------------
               s^2 + 14 s + 40.02

Weitere Informationen zum Hinzufügen von Zeitverzögerungen zu Modellen finden Sie unter Time Delays in Linear Systems.

LTI-Objekte

Aus Gründen der Benutzerfreundlichkeit verwendet die Software Control System Toolbox zum Speichern modellbezogener Daten benutzerdefinierte Datenstrukturen, die als LTI-Objekte bezeichnet werden. Beispielsweise wird die Variable sys_dc , die für das Beispiel des Gleichstrommotors erstellt wurde, als SS-Objekt bezeichnet. Außerdem gibt es TF-, ZPK- und FRD-Objekte für Modelle mit Transferfunktion, Nullstelle/Polstelle/Verstärkung bzw. Frequenzgangdaten. Diese vier LTI-Objekte nehmen die Modelldaten auf und ermöglichen Ihnen die Bearbeitung linearer Systeme als einzelne Einheiten anstatt als Sammlungen aus Vektoren oder Matrizen.

Um den Inhalt von LTI-Objekten anzuzeigen, verwenden Sie den Befehl get. Dieser Code beschreibt den Inhalt von sys_dc im Beispiel des Gleichstrommotors.

get(sys_dc)
                A: [2×2 double]
                B: [2×1 double]
                C: [0 1]
                D: 0
                E: []
           Scaled: 0
        StateName: {2×1 cell}
        StateUnit: {2×1 cell}
    InternalDelay: [0×1 double]
       InputDelay: 0
      OutputDelay: 0
               Ts: 0
         TimeUnit: 'seconds'
        InputName: {''}
        InputUnit: {''}
       InputGroup: [1×1 struct]
       OutputName: {''}
       OutputUnit: {''}
      OutputGroup: [1×1 struct]
            Notes: [0×1 string]
         UserData: []
             Name: ''
     SamplingGrid: [1×1 struct]

Die Daten, die in LTI-Objekten enthalten sind, können Sie mit dem Befehl set bearbeiten. Auf den Online-Referenzseiten zur Control System Toolbox finden Sie Beschreibungen von set und get.

Eine weitere bequeme Methode zum Festlegen oder Abrufen von LTI-Modelleigenschaften ist der direkte Zugriff mit Punktschreibweise. Wenn Sie zum Beispiel auf den Wert der Matrix A zugreifen möchten, anstatt get zu verwenden, geben Sie

sys_dc.A

an der MATLAB®-Eingabeaufforderung ein. Mit dieser Schreibweise wird die Matrix A zurückgegeben.

ans =

   -4.0000   -0.0300
    0.7500  -10.0000

Wenn Sie die Werte der Matrix A ändern möchten, können Sie auch dies direkt tun, indem Sie diesen Code verwenden.

A_new = [-4.5 -0.05; 0.8 -12.0];
sys_dc.A = A_new;

Siehe auch

| |

Verwandte Beispiele

Mehr über