Dual-monitor engineering workspace displaying Simulink control block diagrams and Bode plots next to an active suspension hardware testbench setup for LQR design

Simulink meistern: Mein praktischer Leitfaden zur Regelungssystemsimulation und zum LQR-Design

  • Autor: Johnny Liu, CEO bei Dowway Vehicle
  • Veröffentlichungsdatum: 29. April 2026
  • Kategorie: Steuerungssysteme / Fahrzeugtechnik / Simulation

Über den Autor

Ich bin Johnny Liu, der CEO von Unterführungsfahrzeug. Wir entwickeln saubere Antriebssysteme und intelligente Fahrdynamik. Seit über zwanzig Jahren beschäftige ich mich mit aktiven Fahrwerkssystemen, Drive-by-Wire-Lenkungen und Fahrwerksicherheit. In unserer Werkstatt wird jedes Bauteil vor der Fertigung gründlich am Bildschirm getestet.

Simulink unterstützt uns dabei. Es ermöglicht uns, Sicherheitstests durchzuführen und neue Regelungsalgorithmen zu erproben, bevor wir überhaupt Metall bearbeiten. In diesem Leitfaden zeige ich Ihnen die genauen Arbeitsabläufe, die wir zur Modellierung, Analyse und Regelung dynamischer Systeme verwenden.

Teil 1: Regelungstechnik

Wir müssen die Mathematik verstehen, bevor wir anfangen, Blöcke hin und her zu bewegen. Die Kontrolltheorie unterteilt Modelle in drei Hauptformen.

1.1 Mathematische Modellierung

Ein dynamisches Modell zeigt, wie sich der Zustand und die Ausgaben eines Systems im Laufe der Zeit verändern, wenn man eine Eingabe vornimmt.

1. Input-Output-Modelle

  • Differentialgleichungen: Diese beschreiben die physikalischen Gesetze des Systems im Zeitbereich. Beispiele hierfür sind Masse-Feder-Systeme oder elektrische Netzwerke.
  • Übertragungsfunktionen (TF): Wir erhalten diese durch Anwendung der Laplace-Transformation auf lineare, zeitinvariante (LTI) Differentialgleichungen unter der Annahme, dass alle Anfangsbedingungen null sind: $$G(s) = \frac{Y(s)}{U(s)} = \frac{b_m s^m + b_{m-1} s^{m-1} + \dots + b_0}{a_n s^n + a_{n-1} s^{n-1} + \dots + a_0}$$
  • Frequenzcharakteristik: Wir erhalten diese Werte, indem wir $s$ mit $j\omega$ in der Übertragungsfunktion vertauschen. Dies zeigt, wie das System auf sinusförmige Eingangssignale mit unterschiedlichen Geschwindigkeiten reagiert.

2. Zustandsraummodelle

Die moderne Regelungstechnik verwendet Zustandsraummodelle. Anstatt das System wie eine verborgene Box zu behandeln, verfolgen wir interne Variablen, die als Zustände bezeichnet werden. Diese Zustände definieren die Energie und das Verhalten des Systems zu jedem Zeitpunkt: $$\dot{x}(t) = Ax(t) + Bu(t)$$$$y(t) = Cx(t) + Du(t)$$

Wo:

  • $x(t)$ ist der Zustandsvektor.
  • $u(t)$ ist der Eingangsvektor.
  • $y(t)$ ist der Ausgabvektor.
  • $A$ ist die Systemmatrix (sie steuert die interne Dynamik).
  • $B$ ist die Eingangsmatrix (sie zeigt, wie sich die Eingangsgrößen auf die Zustände auswirken).
  • $C$ ist die Ausgabematrix (sie ordnet Zustände den gemessenen Ausgaben zu).
  • $D$ ist die direkte Durchgangsmatrix.

Hier ein Vergleich von Übertragungsfunktionen und Zustandsraummodellen:

BesonderheitÜbertragungsfunktion (TF)Zustandsraum (SS)
SystemkompatibilitätFunktioniert nur für Single-Input Single-Output (SISO)- und Linear Time-Invariant (LTI)-Systeme.Funktioniert für Multi-Input Multi-Output (MIMO), nichtlineare und zeitvariante Systeme.
EinzigartigkeitEinzigartig für jedes beliebige Eingabe-Ausgabe-Paar.Nicht eindeutig. Sie können verschiedene Zustände auswählen, wodurch sich Ihre Matrizen ändern.
VollständigkeitZeigt nur die kontrollierbar Teile. Pol-Nullstellen-Kompensationen verbergen verborgene Dynamiken.Zeigt alles. Es umfasst sowohl kontrollierbare als auch unkontrollierbare Teile, zuzüglich beobachtbarer und nicht beobachtbarer Teile.
BerechnungVerwendet Frequenzbereichsalgebra.Geeignet für Computer und Löser für lineare Algebra.

3. Blockdiagramme

Wir verbinden physikalische Systeme mithilfe von drei einfachen Layouts:

  • Serie (Kaskade): Die Übertragungsfunktionen multiplizieren sich: $G_{\text{total}}(s) = G_1(s) \cdot G_2(s)$
  • Parallel: Die Übertragungsfunktionen addieren sich: $G_{\text{total}}(s) = G_1(s) + G_2(s)$
  • Rückmeldung: Die Formel für die Rückkopplung im geschlossenen Regelkreis $H(s)$ lautet: $$G_{\text{closed}}(s) = \frac{G(s)}{1 \mp G(s)H(s)}$$

Systemleistungskennzahlen

Bei der Durchführung von Stufentests beurteilen wir das dynamische Verhalten anhand von vier Kennzahlen:

  • Überschwingen ($M_p$): Der Spitzenwert im Vergleich zum endgültigen stationären Wert, ausgedrückt als Prozentsatz: $$M_p = \frac{y(t_p) – y(\infty)}{y(\infty)} \times 100\%$$
  • Absetzzeit ($t_s$): Die Zeit, die das System benötigt, um sich einzupendeln und innerhalb einer kleinen Fehlertoleranz (üblicherweise $2\%$ oder $5\%$) um seinen Endwert zu bleiben.
  • Spitzenzeit ($t_p$): Die Zeit, die benötigt wird, um den allerersten Überschwinggipfel zu erreichen.
  • Aufstiegszeit ($t_r$): Die Zeit, die benötigt wird, um von 10 % auf 90 % (oder von 0 % auf 100 %) des Endwertes zu gelangen.

1.2 Analysemethoden

Wir müssen die Stabilität eines Systems testen, bevor wir einen Controller bauen.

1. Zeitbereichsanalyse

Wir legen dem System standardisierte Testsignale an. Diese umfassen Einheitsimpuls, Einheitsschritt, Rampe der Einheit, Einheitsbeschleunigung, oder EinheitssinuswellenDie

  • Stabilitätsregel: Ein LTI-System ist stabil, wenn alle seine Pole (die Wurzeln des Nenners) negative Realteile haben. Liegt auch nur ein Pol auf der rechten Seite der s-Ebene, so divergiert das System.
  • MATLAB-Tools:
    • zpk: Definiert ein Nullstellen-Polstellen-Verstärkungssystem.
    • Wurzeln: Ermittelt die Wurzeln des Nenners, um die Polstellen zu überprüfen.

2. Wurzelortsanalyse

Wir stellen grafisch dar, wie sich die Pole der geschlossenen Schleife in der s-Ebene bewegen, wenn wir die Verstärkung ($K$) von $0$ auf $\infty$ erhöhen.

  • Für jeden Punkt der Handlung müssen zwei Regeln erfüllt sein:
    • Magnitudenbedingung: $|KG(s)H(s)| = 1$
    • Phasenzustand: $\angle G(s)H(s) = (2k+1)\pi$
  • MATLAB-Tools: Verwenden rlocus(sys) Um die Linien zu zeichnen. Verwenden Sie immer Achse gleich Anschließend verwenden die horizontale und die vertikale Achse denselben Maßstab. Dadurch bleiben die Winkel korrekt dargestellt.

3. Frequenzbereichsanalyse

Wir überprüfen, wie ein System mit gleichmäßigen Sinuswellen unterschiedlicher Frequenzen umgeht.

  • Die Handlungsstränge:
    • Nyquist-Diagramm: Ein Polardiagramm von $G(j\omega)$ als Frequenz ($\omega$) von $-\infty$ bis $+\infty$.
    • Bode-Diagramm: Zwei separate Diagramme. Das obere zeigt die Amplitude in Dezibel ($20\log_{10}|G(j\omega)|$). Das untere zeigt den Phasenwinkel in Grad.
    • Nichols-Handlung: Dadurch werden beide Bode-Diagramme auf einem Bildschirm angezeigt. Dabei werden die Dezibelwerte direkt gegen den Phasenwinkel aufgetragen, wobei die Frequenz als versteckter Marker entlang der Linie dient.
  • MATLAB-Tools: Verwenden nyquist(), bode(), Und nichols()Die
  • Wichtige Kennzahlen: Resonanzspitze ($M_r$), Resonanzfrequenz ($\omega_r$), Bandbreite und Verstärkung bei der Frequenz Null.
  • Stabilitätsprüfungen (Nyquist-Theorem): Ihr System ist stabil, wenn die Nyquist-Linie den Punkt $(-1, j0)$ $N$ Mal gegen den Uhrzeigersinn umkreist, wobei $N$ der Anzahl Ihrer instabilen offenen Regelkreispole ($P$) entspricht.
    • Gewinnmarge ($G_M$): Wie viel zusätzlichen Gewinn Sie erzielen können, bevor das System instabil wird.
    • Phasenreserve ($\Phi_M$): Die zusätzliche Phasenverzögerung, die erforderlich ist, um das System instabil zu machen.
    • MATLAB-Befehl: Marge (System) Berechnet diese Sicherheitsmargen für Sie.

4. Zustandsraumanalyse

Wir verwenden Matrizen, um komplexe Systeme mit vielen Ein- und Ausgängen zu untersuchen.

  • Standardformulare: Sie können eine einzelne Übertragungsfunktion mithilfe einer Transformationsmatrix ($x = Pz$) verschiedenen Zustandsraumdarstellungen zuordnen. Die vier primären Konfigurationen sind:
    1. Kontrollierbare kanonische Form (hilft bei der Entwicklung von Zustandsrückkopplungsreglern).
    2. Beobachtbare kanonische Form (hilft beim Erstellen von Zustandschätzern).
    3. Diagonale kanonische Form (entkoppelte Zustände entlang der Diagonalen, verwendet, wenn die Pole verschieden sind).
    4. Jordanische kanonische Form (wird verwendet, wenn sich die Pole wiederholen).
    • MATLAB-Befehle: ss(), tf2ss(), zp2ss(), Kanon(), Und Jordanien()Die
  • Lyapunov-Stabilität: Ein System ist stabil, wenn wir eine positiv definite Energiefunktion $V(x)$ finden können, deren Ableitung nach der Zeit, $\dot{V}(x)$, stets negativ ist. Für lineare Systeme lösen wir die Gleichungen. Lyapunov-Gleichung: $$A^TP + PA = -Q$$ Wenn wir eine beliebige positiv definite Matrix $Q$ wählen und eine eindeutige, positiv definite Matrix $P$ erhalten, ist unser System stabil.
    • MATLAB-Befehle: lyap(A, Q) oder lyap2() Löse diese Gleichung.

Schauen wir uns nun die Bausteine ​​an, mit denen wir diese Systeme in Simulink aufbauen.

2.1 Die Standard-Blockbibliothek

1. Kontinuierliche Unterbibliothek

Hier erstellen wir kontinuierliche Zeitmodelle.

  • Zustandsraumblock: Berechnet $\dot{x} = Ax+Bu$ und $y=Cx+Du$. Sie müssen Folgendes eingeben: Matrix A, B, C und D, zusammen mit dem Startzustandsvektor $x_0$.
  • Transfer Fcn Block: Sie betreten die Zähler (num) Und Nenner (den) Vektoren als absteigende Potenzen von $s$.
  • Nullstellen-Pol-Verstärkungsblock: Sie geben die Arrays ein für Nullstellen (z), Pole (p)und die Verstärkungskonstante (K)Die
  • PID-Reglerblöcke (1-DOF & 2-DOF): Diese Blöcke berechnen proportionale, integrale und derivative Terme.
    • Parameter: Sie konfigurieren den Reglertyp, seine Form (Parallel oder Ideal), den Zeitbereich, die Koeffizienten ($P, I, D$) und die Filterkonstante ($N$). Sie können Startzustände festlegen und obere und untere Grenzwerte aktivieren. Sättigungsgrenzen Um das Aufräumen des Integrators zu verhindern, können Sie unter dem Reiter „Datentypen“ Grenzen festlegen. Standardmäßig werden geerbte Regeln ohne Grenzwertprüfungen verwendet.
    • Wie sich ein 2-DOF-PID-Regler von einem 1-DOF-PID-Regler unterscheidet: Ein Standard-1-DOF-Regler betrachtet nur den Fehler $e = r – y$. 2-DOF-PID Der Regler trennt die Befehlsverfolgung von der Rauschunterdrückung. Er verwendet Gewichtungswerte $b$ und $c$ auf dem Proportional- und Differenzialpfad: $$u(t) = P \cdot (b \cdot r – y) + I \cdot \int (r – y) dt + D \cdot \frac{d}{dt}(c \cdot r – y)$$ Dadurch wird ein plötzlicher „Differential-Kick“ bei schnellen Sollwertänderungen verhindert und die Aktuatorbewegungen bleiben gleichmäßig.

2. Diskontinuitäten-Teilbibliothek

Physikalische Hardware ist nie perfekt. Wir verwenden diese Blöcke, um reale Grenzen zu modellieren:

  • Rückschlagblockierung: Simuliert Spiel in Zahnrädern. Sie stellen die Totzone und die Anlaufleistung ein.
  • Sperrzone: Der Blockausgang bleibt so lange bei Null, bis der Eingang die oberen oder unteren Grenzwerte überschreitet.
  • Sättigungsblock: Begrenzt die Ausgangsleistung. Sie legen die oberen und unteren Grenzwerte fest. Immer einschalten. Nulldurchgangserkennung Der Solver ermittelt also den genauen Zeitpunkt, an dem das Signal den Grenzwert erreicht.

3. Diskrete Unterbibliothek

Wir verwenden diese Blöcke zur Modellierung digitaler Prozessoren und Steuergeräte.

  • Unit Delay Block ($z^{-1}$): Speichert den Eingangswert für einen Taktschritt und gibt ihn dann aus.
  • Zero-Order Hold (ZOH) Block: Abtastung eines kontinuierlichen Signals und Beibehaltung seines Wertes für eine festgelegte Abtastzeit ($T_s$).

? Tipp: Wie sich die Solver-Einstellungen auf Ihre Simulation auswirken

Schauen wir uns an, was passiert, wenn man ein/eine/einen verwendet. Einheitenverzögerung Block:

  • Wenn Sie einen Solver mit variabler Schrittweite (wie ode45) verwenden: Die Größe der Lösungsschritte kann sich dynamisch ändern. Dies kann zu Interpolationsfehlern innerhalb Ihrer diskreten Blöcke führen, wodurch Ihre Signale kontinuierlich erscheinen, obwohl sie es nicht sein sollten.
  • Wenn Sie einen Solver mit fester Schrittweite verwenden: Den Solver einstellen auf Festschritt Mit einer Abtastzeit von 1,0 s läuft alles synchron. Der Unit-Delay-Block hält den Wert genau eine Sekunde lang und erzeugt so ein sauberes, diskretes Treppendiagramm auf Ihrem Oszilloskop.

2.2 Verwendung des LTI-Systemblocks

Wenn Sie in Ihrem MATLAB-Arbeitsbereich ein lineares Modell haben, können Sie es mithilfe der folgenden Methode in Simulink importieren: LTI-Systemblock (zu finden in der Control System Toolbox).

  • So richten Sie es ein:
    1. Geben Sie es direkt ein: Geben Sie den TF-Befehl direkt in das Blockparameterfeld ein (wie z. B. tf([1 1],[1 5 1])).
    2. Arbeitsbereichsvariablen verwenden: Definieren Sie Ihr Modell zunächst in einem MATLAB-Skript:G1 = tf([1 1],[1 5 1]); Dann geben Sie einfach Folgendes ein: G1 im LTI-Block. Bei Dowway Vehicle verwenden wir diese Skriptmethode, um unsere Parameter übersichtlich zu verwalten. Beachten Sie, dass Sie Startzustände nur festlegen können, wenn Ihr LTI-Modell im Zustandsraum vorliegt.

Teil 3: Schritt-für-Schritt-Projekte

Lasst uns zwei praktische Systeme entwickeln und betreiben.

Projekt 1: Stabilitätsanalyse der Übertragungsfunktion

Wir werden eine kontinuierliche Übertragungsfunktion analysieren, um zu sehen, wie sie sich bei Sprungfunktionen und Frequenzdurchläufen verhält.

Unser Anlagenmodell:

$$G(s) = \frac{25(s + 17)}{(s + 25)(s + 37)} = \frac{25s + 425}{s^2 + 62s + 925}$$

Das MATLAB-Skript:

Führen Sie dieses Skript aus, um Ihre Bode-, Nyquist- und Nichols-Diagramme zu generieren.

% Project 1: Frequency Response Analysis
clear; clc; close all;

% Define numerator and denominator
num = 25 * [1 17];                 % 25s + 425
den = conv([1 25], [1 37]);        % s^2 + 62s + 925

% Create Transfer Function
G = tf(num, den);
disp('System Transfer Function:');
printsys(num, den);

% Draw Bode Plot
figure(1)
bode(G)
grid on;
title('System Bode Diagram');

% Draw Nyquist Plot
figure(2)
nyquist(G)
axis equal % Keeps the scale of real and imaginary axes equal
grid on;
title('System Nyquist Plot');

% Draw Nichols Plot
figure(3)
nichols(G)
grid on;
title('System Nichols Chart');
  1. Öffnen Sie ein leeres Modell in Simulink.
  2. Füge ein Schritt Block von der Quellen Bibliothek. Die Schrittzeit auf 0 $ setzen.
  3. Füge ein Transferfunktion Block von der Kontinuierlich Bibliothek. Setzen Sie “Zählerkoeffizienten” auf [25 425] und “Nennerkoeffizienten” zu [1 62 925]Die
  4. Füge ein Umfang Block von der Spülbecken Bibliothek.
  5. Verbinde die Blöcke: [Step]->[Transfer Fcn]->[Scope]Die
  6. Führen Sie die Simulation für 1,0 s durch. Das Oszilloskop zeigt eine stabile, gleichmäßige Sprungantwort ohne Schwingungen.

Projekt 2: LQR-Zustandsrückkopplungsregelung für ein umgekehrtes Pendel

Ein umgekehrtes Pendel ist instabil und schwer zu kontrollieren. Wir werden sein Verhalten linearisieren, seine Eigenschaften überprüfen und ein optimales Pendel entwerfen. Linearer quadratischer Regler (LQR) um das Gleichgewicht zu wahren.

Unser Zustandsvektor:

$$x = \begin{bmatrix} x & \theta & \dot{x} & \dot{\theta} \end{bmatrix}^T$$

Dabei ist $x$ die Position des Wagens, $\theta$ der Pendelwinkel, $\dot{x}$ die Geschwindigkeit des Wagens und $\dot{\theta}$ die Winkelgeschwindigkeit.

Linearisierte Matrizen (instabil im offenen Regelkreis):

$$A = \begin{bmatrix} 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & -0.524 & -3.129 & 0 \\ 0 & -15.332 & 9.012 & -0.562 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 0 \\ 81.23 \\ -120.1 \end{bmatrix}$$$$C = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \end{bmatrix}, \quad D = \begin{bmatrix} 0 \\ 0 \end{bmatrix}$$

Dies ist ein MIMO System. Die Eingangsgröße ist die Kraft ($u$). Die Ausgangsgrößen sind die Wagenposition ($x$) und der Pendelneigungswinkel ($\theta$).

Das MATLAB-Optimierungsskript:

Führen Sie diesen Code aus, um Ihre LQR-Rückkopplungsmatrix $K$ zu berechnen.

% Project 2: Inverted Pendulum LQR Design
clear; clc; close all;

% System Matrices
A = [0,       0,      1,      0;
     0,       0,      0,      1;
     0,  -0.524, -3.129,      0;
     0, -15.332,  9.012, -0.562];

B = [0; 
     0; 
 81.23; 
-120.1];

C = [1, 0, 0, 0;    % Output 1: Cart Position
     0, 1, 0, 0];   % Output 2: Pendulum Angle

D = [0; 
     0];

% Create state-space model
sys = ss(A, B, C, D);

% Calculate eigenvalues
E = eig(A);
fprintf('Open-Loop Eigenvalues:\n');
disp(E);

% Test Controllability
OC = ctrb(A, B);
N_C = rank(OC);
fprintf('Controllability Rank: %d\n', N_C);

% Test Observability
OB = obsv(A, C);
N_B = rank(OB);
fprintf('Observability Rank: %d\n', N_B);

% LQR Tuning Matrices
Q = diag([10, 0.01, 0.01, 0.1]); 
R = 45;
N = 0; 

% Compute feedback gain matrix K
[K, S, e] = lqr(sys, Q, R, N);
fprintf('Calculated LQR Feedback Gain Matrix K:\n');
disp(K);

% Create Closed-Loop System (u = -Kx)
sysT = ss(A - B*K, B, C, D);

% Plot closed-loop step response
figure(1)
step(sysT)
grid on;
legend('Cart Position (x)', 'Pendulum Angle (theta)');
title('Closed-Loop LQR Step Response');

Die Eigenwerte des offenen Regelkreises zeigen, dass das System instabil ist. Die Steuerbarkeits- und Beobachtbarkeitsmatrizen haben beide den Rang 4. Dies bedeutet, dass unser System vollständig steuerbar und beobachtbar ist, wodurch wir einen LQR-Regler konstruieren können.

So führen Sie dieses Modell in Simulink aus:

  1. Füge ein Zustandsraum Block aus der kontinuierlichen Bibliothek.
  2. Konfigurieren Sie die Parameter:
    • Satz A Zu A - B*KDie
    • Satz B Zu BDie
    • Satz C Zu CDie
    • Satz D Zu D. (Stellen Sie sicher, dass Ihr MATLAB-Skript zuerst ausgeführt wurde, damit diese Variablen in Ihrem Arbeitsbereich aktiv sind).
  3. Verbinden Sie ein Schritt Blockierung des Eingangsports.
  4. Verbinden Sie ein Umfang Blockierung des Ausgangsports.
  5. Führen Sie die Simulation durch. Ihr Oszilloskop zeigt zwei Linien an. Die Position des Wagens stabilisiert sich gleichmäßig, und der Pendelwinkel kehrt nach einer kurzen, kontrollierten Bewegung zu 0° (senkrecht stehend) zurück.

Johnnys Checkliste für sichere Steuerungssysteme

Zum Schluss hier meine persönliche Checkliste für den Aufbau von Regelkreisen in Simulink:

  • Zuerst die Steuerbarkeit prüfen: Bevor Sie stundenlang die Leistungssteigerung einer komplexen Anlage optimieren, führen Sie Folgendes aus: ctrb in MATLAB. Wenn der Rang zu niedrig ist, kann kein Algorithmus Ihr System stabilisieren.
  • Wählen Sie den richtigen Lösungsanbieter: Für Systeme mit nichtlinearen Blöcken wie Sättigung oder Gegenreaktion, einschalten Nulldurchgangserkennung. Verwenden Sie Solver mit variabler Schrittweite (wie ode45) für schnelle Tests, aber wechseln Sie zu einem Solver mit fester Schrittweite, wenn Sie bereit sind, Code für die tatsächliche Hardware zu kompilieren.
  • Halten Sie Ihre Variablen an einem Ort: Geben Sie niemals Rohzahlen direkt in die Parameterfelder von Simulink ein. Verwenden Sie stattdessen ein zentrales MATLAB-Initialisierungsskript. So bleibt Ihre Arbeit übersichtlich und strukturiert.

Melde dich bitte, falls du auf Probleme beim Einstellen oder Fehler im Solver stößt. Hinterlasse unten einen Kommentar, dann können wir darüber sprechen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Need a Quote or Have Questions?

Please fill out the form below, our engineers will contact you within 24 hours.