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
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
Null-Polstellen-Verstärkungsmodelle (Zero-Pole-Gain, ZPK-Modelle), zum Beispiel
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 der Last als Ausgangsgröße und die angelegte Spannung 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:
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 ist eine Spannung proportional zur Winkelgeschwindigkeit an der Welle:
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:
Dabei gilt: ist eine lineare Approximation der viskosen (zähen) Reibung.
Als Letztes kann der elektrische Teil der Motorgleichungen wie folgt beschrieben werden:
Durch Auflösen nach der angelegten Spannung und Substituieren der gegenelektromotorischen (emf-)Kraft ergibt sich:
Diese Gleichungen führen zu einem Satz zweier Differenzialgleichungen, die das Verhalten des Motors beschreiben; die erste Gleichung für den induzierten Strom:
und die zweite Gleichung für die resultierende Winkelgeschwindigkeit:
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 und der Ausgang ist die Winkelgeschwindigkeit ω.
Zustandsraumdarstellung des Gleichstrommotor-Beispiels
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;