Definition und Layout eines Systems
Das Systemlayout oberster Ebene eines Simulink®-Modells ist ein gemeinsamer Kontext, den viele Entwicklungsteams verwenden können, und bildet die Grundlage für viele Aufgaben im Paradigma des Model-Based Design: Analyse, Entwurf, Test und Implementierung. Sie definieren ein System auf der obersten Ebene, indem Sie die Struktur und die einzelnen Komponenten identifizieren. Anschließend organisieren Sie Ihr Modell in einer hierarchischen Form, die den Komponenten entspricht. Danach definieren Sie Schnittstellen für jede Komponente und die Verbindungen zwischen Komponenten.
Das in diesem Tutorial vorgestellte Modell ist ein flacher Roboter, der sich mithilfe zweier Räder fortbewegen oder drehen kann, ähnlich einem Saugroboter für den Haushalt. In diesem Modell wird angenommen, dass der Roboter zwei Möglichkeiten der Fortbewegung hat:
Linearbewegung: Beide Räder drehen sich mit derselben Geschwindigkeit in dieselbe Richtung und der Roboter bewegt sich auf einer Linie.
Rotationsbewegung: Die Räder drehen sich mit derselben Geschwindigkeit in entgegengesetzte Richtungen und der Roboter dreht sich auf der Stelle.
Die Bewegung beginnt immer in einem Ruhezustand, das heißt, sowohl die Rotationsgeschwindigkeit als auch die Lineargeschwindigkeit ist null. Mit diesen Voraussetzungen können die Komponenten für die Linear- und die Rotationsbewegung separat modelliert werden.
Modellierungsziele bestimmen
Vor dem Entwurf eines Modells sollten Sie Ihre Ziele und Anforderungen festlegen. Die Ziele bedingen sowohl die Struktur als auch den Detaillierungsgrad für das Modell. Wenn das Ziel lediglich darin besteht, herauszufinden, wie schnell sich der Roboter fortbewegen kann, ist die Modellierung für die Linearbewegung ausreichend. Wenn das Ziel darin besteht, eine Reihe von Eingaben zu entwerfen, die bewirken, dass sich das Gerät auf einem bestimmten Pfad fortbewegt, dann ist die Komponente für die Rotationsbewegung erforderlich. Wenn ein Ziel darin besteht, Hindernissen auszuweichen, dann benötigt das System einen Sensor. In diesem Tutorial wird ein Modell mit Sensor erstellt. Das Ziel besteht darin, die Sensorparameter so zu gestalten, dass der Roboter rechtzeitig anhält, wenn er ein Hindernis auf seinem Weg erkennt. Um dieses Ziel zu erreichen, muss das Modell:
Bestimmen, wie schnell der Roboter zum Stillstand kommt, wenn die Motoren abgeschaltet werden
Eine Folge von Befehlen für die Linear- und die Rotationsbewegung bereitstellen, mit deren Hilfe sich der Roboter in einem zweidimensionalen Raum fortbewegen kann
Das erste Modellierungsziel ermöglicht Ihnen, die Bewegung zu analysieren, damit Sie den Sensor entwerfen können. Das zweite Ziel ermöglicht Ihnen, den Entwurf zu testen.
Systemkomponenten und Schnittstellen identifizieren
Sobald Sie Ihre Modellierungsanforderungen kennen, können Sie die Komponenten des Systems identifizieren. Das Identifizieren von einzelnen Komponenten und deren Beziehungen in einer Struktur oberster Ebene hilft, ein potenziell komplexes Modell systematisch zu erstellen. Diese Schritte führen Sie außerhalb von Simulink durch, bevor Sie mit dem Erstellen Ihres Modells beginnen.
Im Rahmen dieser Aufgabe müssen die folgenden Fragen beantwortet werden:
Welche Komponenten sind die Struktur- und Funktionskomponenten des Systems? Ein Layout, das die physische und funktionale Struktur abbildet, hilft Ihnen, das System zu verstehen, zu erstellen, darzustellen und zu testen. Dies wird noch wichtiger, wenn Teile des Systems in verschiedenen Phasen des Entwurfsprozesses implementiert werden sollen.
Welche Eingaben und Ausgaben müssen bei einer Komponente berücksichtigt werden? Zeichnen Sie ein Bild, das die Verbindungen zwischen Komponenten zeigt. Dieses Bild hilft Ihnen, den Signalfluss innerhalb des Modells zu visualisieren, die Quelle und die Senke jedes Signals zu identifizieren und zu bestimmen, ob alle notwendigen Komponenten vorhanden sind.
Welcher Detaillierungsgrad ist erforderlich? Nehmen Sie die wichtigen Systemparameter in Ihr Diagramm auf. Ein Abbild des Systems kann Ihnen dabei helfen, die Teile, die für das von Ihnen gewünschte Verhalten unbedingt erforderlich sind, zu identifizieren und zu modellieren. Alle Komponenten und Parameter, die zum Modellierungsziel beitragen, müssen im Modell dargestellt werden. Allerdings gibt es einen Zielkonflikt zwischen Komplexität und Lesbarkeit. Die Modellierung kann ein iterativer Prozess sein. Sie können mit einem allgemeinen Modell mit wenigen Details beginnen und dann bei Bedarf allmählich die Komplexität erhöhen.
Oft ist es von Vorteil, die folgenden Punkte zu berücksichtigen:
Welche Teile des Systems müssen getestet werden?
Welche Testdaten und Erfolgskriterien müssen berücksichtigt werden?
Welche Ausgaben sind für Analyse- und Entwurfsaufgaben erforderlich?
Komponenten für die Fortbewegung des Roboters identifizieren
Das System in diesem Tutorial definiert einen Roboter, der sich mit zwei elektrisch angetriebenen Rädern im zweidimensionalen Raum fortbewegt. Die Bestandteile sind:
Linearbewegung mit bestimmten Merkmalen
Rotationsbewegung mit bestimmten Merkmalen
Transformationen zum Bestimmen der Position des Systems in zwei Dimensionen
Ein Sensor zum Messen der Entfernung des Roboters zu einem Hindernis
Das Modell für dieses System enthält zwei identische Räder, zugeführte Kräfte, die auf die Räder ausgeübt werden, Rotationsdynamik, Koordinatentransformation und einen Sensor. Zum Darstellen einer Komponente verwendet das Modell ein Subsystem:
Öffnen Sie ein neues Simulink-Modell. Siehe Neues Modell öffnen.
Öffnen Sie den Library Browser. Siehe Simulink Library Browser öffnen.
Fügen Sie Subsystem-Blöcke hinzu. Ziehen Sie fünf Subsystem-Blöcke aus der Bibliothek Ports & Subsystems zum neuen Modell.
Klicken Sie auf ein Subsystem. Klicken Sie auf der Registerkarte Format auf die Dropdown-Liste Auto. Deaktivieren Sie das Kontrollkästchen Hide Automatic Block Names.
Ordnen Sie die Subsystem-Blöcke gemäß der Abbildung an und benennen Sie sie entsprechend um. Zum Ändern des Namens eines Blocks müssen Sie lediglich auf ihn doppelklicken und können dann den Text bearbeiten.
Schnittstellen zwischen Komponenten definieren
Identifizieren Sie die Verbindungen zwischen den Aus- und Eingängen der Subsysteme. Während einer Simulation ändern sich die Eingabe- und Ausgabewerte dynamisch. Linien, die Blöcke verbinden, stellen eine Datenübertragung dar. Die folgende Tabelle enthält die Eingaben und Ausgaben für die einzelnen Komponenten.
Block | Eingabe | Ausgabe | Zugehörige Informationen |
---|---|---|---|
Inputs | Keine | Auf das rechte Rad ausgeübte Kraft Auf das linke Rad ausgeübte Kraft | Entfällt |
Right Wheel | Auf das rechte Rad ausgeübte Kraft | Geschwindigkeit des rechten Rades | Gerichtet (unidirektional), negatives Vorzeichen bedeutet Richtungsumkehr |
Left Wheel | Auf das linke Rad ausgeübte Kraft | Geschwindigkeit des linken Rades | Gerichtet (unidirektional), negatives Vorzeichen bedeutet Richtungsumkehr |
Rotation | Geschwindigkeitsdifferenz zwischen rechtem und linkem Rad | Drehwinkel | Gegen den Uhrzeigersinn gemessen |
Coordinate Transformation | Normalgeschwindigkeit Drehwinkel | Geschwindigkeit in X-Richtung Geschwindigkeit in Y-Richtung | Entfällt |
Sensor | X-Koordinate Y-Koordinate | Keine | Kein Block für Modellierung erforderlich |
Einige Block-Eingaben stimmen nicht exakt mit Block-Ausgaben überein. Deshalb muss durch das Modell zusätzlich zur Dynamik der einzelnen Komponenten Folgendes berechnet werden:
Eingabe für die Rotationsberechnung: Subtraktion der Geschwindigkeiten der zwei Räder und Division durch zwei.
Eingabe für die Coordinate Transformation (Koordinatentransformation): Bildung des Durchschnitts der Geschwindigkeiten der zwei Räder.
Eingabe für den Sensor: Integration der Ausgaben von Coordinate Transformation (Koordinatentransformation).
Die Geschwindigkeiten der Räder sind betragsmäßig immer gleich groß und die Berechnungen sind unter dieser Voraussetzung genau.
Fügen Sie die erforderlichen Komponenten hinzu und stellen Sie die Verbindungen fertig:
Fügen Sie jedem Subsystem die erforderlichen Eingabeports und Ausgabeports hinzu. Doppelklicken Sie auf einen Subsystem-Block.
Jeder neue Subsystem-Block enthält einen Inport-Block (In1) und einen Outport-Block (Out1). Diese Blöcke definieren die Signalschnittstelle mit der nächsthöheren Ebene in einer Modellhierarchie.
Jeder Inport-Block erstellt einen Eingabeport am Subsystem-Block und jeder Outport-Block erstellt einen Ausgabeport. Im Modell werden die Namen dieser Blöcke durch die Namen der Eingabe- und Ausgabeports dargestellt. Fügen Sie weitere Blöcke für zusätzliche Eingangs- und Ausgangssignale hinzu. Klicken Sie auf der Symbolleiste im Simulink Editor auf die Schaltfläche Navigate Up To Parent , um zur obersten Ebene zurückzukehren.
Fügen Sie für jeden Block weitere Inport- und Outport-Blöcke hinzu und benennen Sie sie um.
Verwenden Sie beim Kopieren eines Inport-Blocks zum Erstellen eines neuen Blocks die Option Paste (Strg+V).
Berechnen Sie aus der Geschwindigkeit des linken Rades und der Geschwindigkeit des rechten Rades die erforderlichen Eingaben für die Subsysteme Coordinate Transform und Rotation.
Berechnen Sie die Lineargeschwindigkeit als Eingabe für das Subsystem Coordinate Transform. Fügen Sie einen Add-Block aus der Bibliothek „Math Operations“ hinzu und verbinden Sie ihn mit den Ausgängen der zwei Rad-Komponenten. Fügen Sie einen „Gain“-Block hinzu und legen Sie den Verstärkungsparameter auf
1/2
fest. Verbinden Sie den Ausgang des Add-Blocks mit diesem Gain-Block.Berechnen Sie die Geschwindigkeitsdifferenz als Eingabe für das Subsystem Rotation. Fügen Sie einen Subtract-Block aus der Bibliothek „Math Operations“ hinzu. Verbinden Sie die Geschwindigkeit des rechten Rades mit dem Eingang + und die Geschwindigkeit des linken Rades mit dem Eingang -. Verbinden Sie die Ausgänge der zwei Rad-Komponenten. Fügen Sie einen „Gain“-Block hinzu und legen Sie den Verstärkungsparameter auf
1/2
fest. Verbinden Sie den Ausgang des Subtract-Blocks mit diesem Gain-Block.
Berechnen Sie aus der Geschwindigkeit in X-Richtung und der Geschwindigkeit in Y-Richtung die X- und die Y-Koordinate. Fügen Sie zwei Integrator-Blöcke aus der Bibliothek „Continuous“ hinzu und verbinden Sie sie mit den Ausgängen des Coordinate Transform-Blocks. Lassen Sie bei den Integrator-Blöcken die Anfangsbedingung
0
unverändert.Vervollständigen Sie die Verbindungen für das System.
Parameter und Daten
Bestimmen Sie die zum Modell gehörigen Parameter und ihre Werte. Verwenden Sie Modellierungsziele, um zu bestimmen, ob diese Werte immer fest sind oder sich von Simulation zu Simulation ändern. Für Parameter, die zum Modellierungsziel beitragen, muss das Modell eine entsprechende explizite Wiedergabe enthalten. Die folgende Tabelle soll Ihnen helfen, beim Modellieren der einzelnen Komponenten den Detaillierungsgrad zu bestimmen.
Parameter | Block | Symbol | Wert | Typ |
---|---|---|---|---|
Masse | Left Wheel Right Wheel | m | 2,5 kg | Variable |
Rollwiderstand | Left Wheel Right Wheel | k_drag | 30 Ns2/m | Variable |
Roboterradius | Rotation | r | 0,15 m | Variable |
Anfangswinkel | Rotation | Keine | 0 rad | Fest |
Anfangsgeschwindigkeiten | Left Wheel Right Wheel | Keine | 0 m/s 0 m/s | Fest |
Anfangskoordinaten (X, Y) | Integrator | Keine | (0, 0) m | Fest |
Simulink verwendet den MATLAB®-Workspace zum Auswerten der Parameter. Legen Sie im MATLAB-Befehlsfenster die folgenden Parameter fest:
m = 2.5; k_drag = 30; r = 0.15;