Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Ein System modellieren und überprüfen

Modellieren Sie jede Komponente innerhalb der Systemstruktur, um das physische oder funktionale Verhalten dieser Komponente darzustellen. Durch Simulation unter Verwendung von Testdaten können Sie dann das grundlegende Verhalten dieser Komponente überprüfen.

Das Systemlayout öffnen

Bei der Modellierung einzelner Komponenten ist ein allgemeiner Überblick über das gesamte System nützlich. Laden Sie zuerst das Layoutmodell. Geben Sie auf der MATLAB®-Befehlszeile den folgenden Befehl ein:

open_system('system_layout.slx')

Die Komponenten modellieren

Grundlage eines Simulink®-Modells einer Komponente sind mehrere Ausgangspunkte:

  • Eine explizite mathematische Beziehung zwischen der Ausgabe und der Eingabe einer physischen Komponente: Die Ausgaben der Komponente können Sie direkt oder indirekt über algebraische Berechnung und Integration von Differenzialgleichungen aus den Eingaben berechnen. Ein Beispiel für eine explizite Beziehung ist die Berechnung des Wasserstandes in einem Tank bei gegebener Zuflussrate. Die Ausführung jedes Simulink-Blocks basiert auf der Definition der Berechnungen seiner Ausgaben anhand seiner Eingaben.

  • Eine implizite mathematische Beziehung zwischen Modellvariablen einer physischen Komponente: Da die Variablen voneinander abhängig sind, ist das Zuweisen einer Ausgabe und einer Eingabe zu einer Komponente keine einfache Angelegenheit. Zum Beispiel besteht zwischen der Spannung am Pluspol (+) eines Motors in einem Stromkreis und der Spannung am Minuspol (-) eine implizite Beziehung. Zum Modellieren einer solchen Beziehung in Simulink können Sie entweder Tools zur physischen Modellierung verwenden, wie zum Beispiel Simscape™, oder diese Variablen als Teil einer größeren Komponente modellieren, die eine Eingabe/Ausgabe-Definition ermöglicht. Manchmal hilft eine genauere Untersuchung der Modellierungsziele und Komponentendefinitionen bei der Definition der Eingabe/Ausgabe-Beziehungen.

  • Daten, die aus einem tatsächlichen System gewonnen wurden: Sie haben die Eingabe-/Ausgabedaten an der tatsächlichen Komponente gemessen, aber eine vollständig definierte mathematische Beziehung ist nicht vorhanden. Viele Geräte enthalten nicht modellierte Komponenten, auf die diese Beschreibung passt. Ein Beispiel dafür wäre die von einem Fernseher abgegebene Wärme. Zum Definieren der Eingabe/Ausgabe-Beziehung in einem solchen System können Sie die System Identification Toolbox™ verwenden.

  • Eine explizite Funktionsdefinition: Die Ausgaben einer Funktionskomponente können Sie über algebraische und logische Berechnungen aus den Eingaben definieren. Ein Beispiel dafür wäre die Schaltlogik eines Thermostats. Die meisten Funktionsbeziehungen können Sie als Simulink-Blöcke und -Subsysteme modellieren.

In diesem Tutorial werden physische und Funktionskomponenten mit expliziten Eingabe/Ausgabe-Beziehungen modelliert. In diesem Tutorial werden Sie:

  1. Die Systemgleichungen zum Erstellen eines Simulink-Modells verwenden.

  2. Simulink-Blöcke im Simulink Editor hinzufügen und verbinden. Blöcke stellen Koeffizienten und Variablen in den Gleichungen dar.

  3. Das Modell für jede Komponente separat erstellen. Die effektivste Methode ein Modell eines Systems zu erstellen, besteht darin, zuerst die Komponenten unabhängig voneinander zu betrachten.

  4. Mit dem Erstellen einfacher Modelle unter Verwendung von Näherungen des Systems beginnen. Identifizieren Sie Voraussetzungen, die sich auf die Genauigkeit Ihres Modells auswirken können. Fügen Sie schrittweise weitere Details hinzu, bis der Komplexitätsgrad den Modellierungs- und Genauigkeitsanforderungen entspricht.

Die physischen Komponenten modellieren

Beschreiben Sie die Beziehungen zwischen den Komponenten, zum Beispiel für Daten-, Energie- und Kraftübertragung. Verwenden Sie die Systemgleichungen, um ein grafisches Modell des Systems in Simulink zu erstellen.

Vor dem Modellieren einer Komponente sollten Sie sich zunächst einige Fragen stellen:

  • Welches sind die Konstanten einer Komponente? Welche Werte ändern sich nur dann, wenn Sie sie ändern?

  • Welches sind die Variablen einer Komponente? Welche Werte ändern sich im Zeitverlauf?

  • Wie viele Zustandsvariablen hat eine Komponente?

Leiten Sie anhand wissenschaftlicher Prinzipien die Gleichungen für jede Komponente ab. Viele Systemgleichungen lassen sich einer der folgenden drei Kategorien zuordnen:

  • Bei stetigen Systemen beschreiben Differenzialgleichungen die Änderungsrate für Variablen, wobei die Gleichungen für alle Zeitwerte definiert sind. Zum Beispiel ergibt eine Differenzialgleichung erster Ordnung die Geschwindigkeit eines Autos:

    dv(t)dt=bmv(t)+u(t)

  • Bei diskreten Systemen beschreiben Differenzgleichungen die Änderungsrate für Variablen, wobei die Gleichungen nur für bestimmte Zeitwerte definiert sind. Zum Beispiel gilt für das Steuersignal eines PD-Reglers (proportional-derivative controller):

    pd[n]=(e[n]e[n1])Kd+e[n]Kp

  • Gleichungen ohne Ableitungen sind algebraische Gleichungen. Zum Beispiel ergibt eine algebraische Gleichung den Gesamtstrom in einem Parallelstromkreis mit zwei Komponenten:

    It=Ia+Ib

Räder und Linearbewegung.  An einem Rad wirken zwei Kräfte:

  • Durch den Motor ausgeübte Kraft: Die Kraft F wirkt in Richtung der Geschwindigkeitsänderung und ist eine Eingabe für die Rad-Subsysteme.

  • Widerstandskraft (Roll- und Luftwiderstand): Die Kraft Fdrag wirkt entgegen der Richtung der Geschwindigkeitsänderung und ist eine Funktion der Geschwindigkeit.

    Fdrag=kdragV|V|

Die Beschleunigung ist proportional zu der Summe dieser Kräfte:

(m/2)V˙=FFdrag(m/2)V˙=FkdragV|V|V˙=FkdragV|V|(m/2)

Dabei ist kdrag der Widerstandskoeffizient und m ist die Masse des Roboters. Jedes Rad trägt die Hälfte dieser Masse.

Erstellen Sie das Radmodell:

  1. Doppelklicken Sie im Modell system_layout auf das Subsystem mit dem Namen Right Wheel, damit das leere Subsystem angezeigt wird.

  2. Um die Geschwindigkeit und Beschleunigung zu modellieren, fügen Sie einen Integrator hinzu. Lassen Sie die Anfangsbedingung 0 unverändert. Die Eingabe dieses Blocks ist die Beschleunigung Vdot und die Ausgabe ist die Geschwindigkeit V.

    The Integrator block has an unconnected input signal named Vdot and an output signal labeled V that is connected to an Outport block named Speed. An unconnected Inport block named Force is to the left of the unconnected signal line for the signal Vdot.

  3. Um die Widerstandskraft zu modellieren, fügen Sie einen MATLAB Function-Block aus der Bibliothek „User-Defined Functions“ hinzu. Der MATLAB Function-Block bietet eine Methode zum schnellen Implementieren mathematischer Ausdrücke in Ihrem Modell. Zum Bearbeiten der Funktion doppelklicken Sie auf den Block, um den MATLAB Function Block Editor zu öffnen.

  4. Geben Sie im MATLAB Function Block Editor den MATLAB®-Code ein, um die Widerstandskraft zu berechnen.

    function Fdrag=get_fdrag(V,k_drag)
    
    Fdrag=k_drag*V*abs(V);

    The MATLAB Function Block Editor shows the code for a MATLAB function named Fdrag that calculates the drag force.

  5. Definieren Sie die Argumente für den MATLAB Function-Block. Klicken Sie im MATLAB Function Block Editor auf „Edit Data“ . Klicken Sie auf k_drag, legen Sie Scope auf Parameter fest und klicken Sie auf Apply.

  6. Subtrahieren Sie mithilfe eines Subtract-Blocks die Widerstandskraft von der Motorkraft. Vervollständigen Sie mithilfe eines Gain-Blocks mit dem Parameter Gain (im Format 1/(m/2)) die Gleichung zur Berechnung der Beschleunigung aus der Kraft.

  7. Um die Richtung des MATLAB Function-Blocks umzukehren, wählen Sie den Block aus. Klicken Sie danach auf der Simulink-Symbolleiste auf der Registerkarte Format auf „Flip left-right“ . Verbinden Sie die Blöcke.

    In the wheel model, the MATLAB Function block is in a feedback loop between the speed output signal. The Subtract block subtracts the drag force calculated by the MATLAB Function block from the force input to the subsystem. The Subtract block and Gain block are between the force input and the input to the Integrator block.

  8. Die Dynamik der zwei Räder ist identisch. Erstellen Sie eine Kopie des soeben erstellten Subsystems Right Wheel und fügen Sie sie im Subsystem Left Wheel ein.

  9. Um die oberste Ebene des Modells anzuzeigen, klicken Sie „Navigate Up To Parent“ .

Rotationsbewegung.   Wenn sich die zwei Räder in entgegengesetzte Richtung drehen, beschreiben sie einen Kreis mit dem Radius r und bewirken damit eine Rotationsbewegung des Roboters. Wenn sich die zwei Räder in dieselbe Richtung drehen, erfolgt keine Rotation. Wenn vorausgesetzt wird, dass die Geschwindigkeiten der Räder betragsmäßig immer gleich groß sind, können Sie die Rotationsbewegung als Größe modellieren, die von der Differenz der Geschwindigkeiten der zwei Räder VR und VL abhängig ist:

θ˙=VRVL2r

Erstellen Sie das Modell der Rotationsdynamik:

  1. Doppelklicken Sie auf der obersten Ebene im Modell system_layout auf das Subsystem mit dem Namen Rotation, damit das leere Subsystem angezeigt wird. Löschen Sie die Verbindung zwischen dem Inport- und dem Outport-Block.

  2. Um die Winkelgeschwindigkeit und die Position zu modellieren, fügen Sie einen Integrator-Block hinzu. Lassen Sie die Anfangsbedingung 0 unverändert. Die Ausgabe dieses Blocks ist die Drehposition theta und die Eingabe ist die Winkelgeschwindigkeit theta_dot.

  3. Berechnen Sie die Winkelgeschwindigkeit aus der Tangentialgeschwindigkeit. Fügen Sie einen Gain-Block hinzu und geben als Parameter Gain für den Block 1/(2*r) an.

  4. Verbinden Sie die Blöcke.

    An Inport block named Speed difference connects to the Gain block, which connects to an Integrator block, which connects to an Outport block named Angle

  5. Um die oberste Ebene des Modells anzuzeigen, klicken Sie „Navigate Up To Parent“ .

Die Funktionskomponenten modellieren

Beschreiben Sie die Funktion der Ausgabe als Funktion der Eingabe. Diese Beschreibung kann algebraische Gleichungen und logische Konstrukte enthalten, die Sie zum Erstellen eines grafischen Modells des Systems in Simulink verwenden können.

Koordinatentransformation.  Die Geschwindigkeit des Roboters in Richtung der Koordinaten x und y (VX und VY) lässt sich aus Lineargeschwindigkeit VN und Winkel theta ermitteln:

VX=VNcos(θ)VY=VNsin(θ)

Erstellen Sie das Modell der Koordinatentransformation:

  1. Doppelklicken Sie auf der obersten Ebene im Modell system_layout auf das Subsystem mit dem Namen Coordinate Transform, damit das leere Subsystem angezeigt wird.

  2. Um trigonometrische Funktionen zu modellieren, fügen Sie einen SinCos-Block aus der Bibliothek „Math Operations“ hinzu.

  3. Um Multiplikation zu modellieren, fügen Sie zwei Product-Blöcke aus der Bibliothek „Math Operations“ hinzu.

  4. Verbinden Sie die Blöcke.

    The coordinate transformation model has two inputs named Linear speed and Angle and two outputs named Y speed and X speed. The X and Y speeds are calculated by multiplying the sine and cosine of the angular position by the linear speed input.

  5. Um die oberste Ebene des Modells anzuzeigen, klicken Sie „Navigate Up To Parent“ .

Modellparameter festlegen

Sie können geeignete Werte für die Parameter in Ihrem Modell mithilfe verschiedener Quellen bestimmen, zum Beispiel:

  • Schriftliche Spezifikationen wie zum Beispiel Standardeigenschaftentabellen oder Datenblätter der Hersteller

  • Direkte Messungen an einem vorhandenen System

  • Schätzungen anhand von Systemein- und -ausgaben

Für dieses Modell werden die folgenden Parameter verwendet:

ParameterSymbolWert
Massem2,5 kg
Rollwiderstandk_drag30 Ns2/m
Roboterradiusr0,15 m

Ein Simulink-Modell kann auf Parameterwerte zugreifen, die mithilfe von Variablen im MATLAB-Workspace definiert worden sind. Sie können diese Variablen definieren, indem Sie Befehle in das MATLAB-Befehlsfenster eingeben.

m = 2.5;
k_drag = 30;
r = 0.15;

Komponenten durch Simulation überprüfen

Überprüfen Sie die Komponenten, indem Sie eine Eingabe vorgeben und die Ausgabe beobachten. Schon aus einer solchen einfachen Validierung können sich unmittelbar Möglichkeiten zum Verbessern des Modells ergeben. In diesem Beispiel wird das folgende Verhalten überprüft:

  • Wenn eine Kraft kontinuierlich auf ein Rad ausgeübt wird, erhöht sich die Geschwindigkeit, bis es eine konstante Geschwindigkeit erreicht.

  • Wenn sich die Räder in entgegengesetzte Richtung drehen, erhöht sich der Drehwinkel mit einer konstanten Rate.

Komponente „Rad“ überprüfen

Erstellen Sie ein Testmodell für die Komponente „Rad“ und führen Sie es aus:

  1. Erstellen Sie ein neues Modell. Klicken Sie auf der Registerkarte Simulation auf New . Kopieren Sie den Subsystem-Block mit dem Namen Right Wheel in das neue Modell.

  2. Um eine Testeingabe zu erstellen, fügen Sie einen Step-Block aus der Bibliothek „Sources“ hinzu und verbinden Sie ihn mit der Eingabe des Subsystems mit dem Namen Right Wheel. Lassen Sie den Parameter Step time mit dem Wert 1 unverändert.

  3. Fügen Sie der Ausgabe einen Scope Viewer hinzu. Klicken Sie mit der rechten Maustaste auf den Ausgabeport des Subsystem-Blocks Right Wheel und wählen Sie Create & Connect Viewer > Simulink > Scope aus.

    A Step block connects to the input of a Subsystem block named Right Wheel. The input port of the subsystem is named Force, and the output port of the subsystem is named Speed. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer..

  4. Simulieren Sie das Modell. Klicken Sie auf der Registerkarte Simulation auf Run .

    The scope viewer plots the output signal of the subsystem named Right Wheel.

Das Simulationsergebnis zeigt, dass das Modell das erwartete Verhalten aufweist. Es findet keine Bewegung statt, bis zum Zeitpunkt „Step time“ Kraft ausgeübt wird. Wenn die Kraft ausgeübt wird, steigt die Geschwindigkeit zunächst an und stellt sich dann auf einen konstanten Wert ein, sobald die ausgeübte Kraft und die Widerstandskraft ein Gleichgewicht erreichen. Zusätzlich zur Validierung bietet diese Simulation auch Informationen zur maximalen Geschwindigkeit des Rades bei der gegebenen Kraft.

Komponente „Rotation“ überprüfen

Erstellen Sie ein Testmodell für das Modell der Rotation und führen Sie es aus:

  1. Um ein neues Modell zu erstellen, klicken Sie „New“ . Kopieren Sie den Subsystem-Block mit dem Namen Rotation in das neue Modell.

  2. Um eine Testeingabe zu erstellen, fügen Sie einen Step-Block aus der Bibliothek „Sources“ hinzu. Lassen Sie den Parameter Step time mit dem Wert 1 unverändert. Verbinden Sie den Ausgang des Step-Blocks mit dem Eingang des Subsystems Rotation. Diese Eingabe stellt die Differenz der Geschwindigkeiten der Räder dar, wenn sich die Räder in entgegengesetzte Richtungen drehen.

  3. Fügen Sie der Ausgabe des Subsystems mit dem Namen Rotation einen Scope Viewer hinzu. Klicken Sie mit der rechten Maustaste auf den Ausgabeport des Subsystems und wählen Sie Create & Connect Viewer > Simulink > Scope aus.

    A Step block connects to the input of a Subsystem block named Rotation. The input port of the subsystem is named Speed difference, and the output port of the subsystem is named Angle. A scope icon next to the subsystem output port indicates that the output port is connected to a scope viewer.

  4. Simulieren Sie das Modell. Klicken Sie auf der Registerkarte Simulation auf Run .

    The scope viewer plots the output signal of the subsystem named Rotation.

Diese Simulation zeigt, dass der Winkel stetig zunimmt, wenn sich die Räder mit derselben Geschwindigkeit in entgegengesetzte Richtungen drehen. Sie können das Modell verbessern, um die Interpretation der Winkelausgabe zu vereinfachen. Sie können zum Beispiel Folgendes tun:

  • Sie können die Einheiten des Ausgangssignals von Radiant in Grad konvertieren, indem Sie einen Gain-Block mit einem Gain von 180/pi hinzufügen.

  • Sie können den Ausgabewert in Zyklen von 360° anzeigen, indem Sie einen Math Function-Block mit der Funktion mod hinzufügen.

Bei den trigonometrischen Funktionen in MATLAB werden die Eingaben in Radiant verwendet.

Das Modell überprüfen

Nachdem Sie einzelne Komponenten überprüft haben, können Sie eine ähnliche Validierung am vollständigen Modell durchführen. In diesem Beispiel wird das folgende Verhalten überprüft:

  • Wenn auf beide Räder dieselbe Kraft in derselben Richtung ausgeübt wird, bewegt sich der Roboter auf einer Linie.

  • Wenn auf beide Räder dieselbe Kraft in entgegengesetzte Richtungen ausgeübt wird, dreht sich der Roboter auf der Stelle.

  1. Doppelklicken Sie im Modell system_layout auf das Subsystem mit dem Namen Inputs, damit das leere Subsystem angezeigt wird.

  2. Erstellen Sie eine Testeingabe, indem Sie einen Step-Block hinzufügen. Lassen Sie den Parameter Step time mit dem Wert 1 unverändert. Verbinden Sie die Step-Block-Ausgabe mit beiden Outport-Blöcken.

    A Step block connects to two Outport blocks, one named Left force and one named Right force

  3. Verbinden Sie auf der obersten Ebene des Modells beide Ausgangssignale mit demselben Scope Viewer.

    The Coordinate Transform subsystem has two output ports named X speed and Y speed. Each output port connects to an Integrator block, and the outport of each Integrator block connects to a scope viewer.

  4. Simulieren Sie das Modell.

    The scope viewer plots the two output signals on the same graph, one in yellow and one in blue.

    Die gelbe Linie ist im Scope Viewer die X-Richtung und die blaue Linie die Y-Richtung. Da der Winkel null ist und sich nicht ändert, bewegt sich das Fahrzeug erwartungsgemäß nur in X-Richtung.

  5. Doppelklicken Sie auf das Subsystem Inputs. Um die Richtung für das linke Rad umzukehren, fügen Sie einen Gain-Block zwischen der Quelle und der zweiten Ausgabe hinzu und setzen Sie den Parameter Gain auf -1.

    The Step block connects directly to the Outport block named Right Force. The Gain block with a gain of -1 inverts the Step block output. The output from the Gain block connects to the Outport block named Left force.

  6. Fügen Sie der Winkel-Ausgabe einen Scope Viewer hinzu.

  7. Simulieren Sie das Modell.

Der mit den Geschwindigkeitssignalen x und y verbundene Scope Viewer zeigt, dass auf der X-Y-Ebene keine Bewegung stattfindet.

The scope viewer plots the X and Y speed signals on the same graph.

Der mit dem Winkelsignal verbundene Scope Viewer zeigt eine stetige Drehbewegung.

The scope viewer plots the angle output.

Dieses fertige Modell können Sie verwenden, um mit verschiedenen Eingaben viele Fragen zu beantworten.

  • Was geschieht, wenn der Anfangswinkel nicht null ist?

  • Wie lange dauert es, bis die Bewegung zum Stillstand kommt, wenn die Kraft auf null fällt?

  • Was geschieht, wenn der Roboter schwerer ist?

  • Was geschieht, wenn sich der Roboter auf einer glatteren Fläche fortbewegt, die einen geringeren Widerstandskoeffizienten aufweist?

Verwandte Themen