Ein System in Simulink entwerfen
Model-Based Design ist ein Paradigma, in dessen Zentrum Modelle physischer Komponenten und Systeme stehen, die als Grundlage für Aktivitäten im Zusammenhang mit Entwurf, Test und Implementierung dienen. In diesem Tutorial wird eine entworfene Komponente einem vorhandenen Systemmodell hinzugefügt.
Systemmodell öffnen
Das Modell ist ein flacher Roboter, der sich mithilfe zweier Räder fortbewegen oder drehen kann, ähnlich einem Saugroboter für den Haushalt. Öffnen Sie das Modell, indem Sie auf der MATLAB®-Befehlszeile Folgendes eingeben:
open_system('system_model.slx')
In diesem Tutorial wird dieses System analysiert und ihm Funktionalität hinzugefügt.
Entworfene Komponenten und Entwurfsziele identifizieren
Die Festlegung der Entwurfsziele ist ein entscheidender erster Schritt beim Entwurf. Auch bei einem einfachen System kann es mehrere und sogar konkurrierende Entwurfsziele geben. Berücksichtigen Sie für das Beispielmodell die folgenden Ziele:
Entwurf eines Controllers, der die zugeführte Kraft so variiert, dass sich die Räder mit der gewünschten Geschwindigkeit drehen.
Entwurf von Eingaben, die bewirken, dass sich das Gerät auf einem vorbestimmten Pfad fortbewegt.
Entwurf eines Sensors und Controllers, die ermöglichen, dass das Gerät einer Linie folgt.
Entwurf eines Planungsalgorithmus, der ermöglicht, dass das Gerät einen bestimmten Punkt auf dem kürzesten Pfad erreicht und dabei Hindernissen ausweicht.
Entwurf eines Sensors und Algorithmus, die ermöglichen, dass das Gerät einen bestimmten Bereich überquert und dabei Hindernissen ausweicht.
In diesem Tutorial wird ein Warnsystem entworfen. Sie bestimmen die Parameter für einen Sensor, der die Entfernung zu einem Hindernis misst. Ein perfekter Sensor misst die Entfernung zu einem Hindernis genau. Ein Warnsystem tastet diese Messungen in festen Intervallen ab, damit die Ausgabe immer um weniger als 0,05 m von der Messung abweicht. Das System generiert rechtzeitig eine Warnung, damit der Roboter zum Stillstand kommt, bevor er auf das Hindernis trifft.
Mit Simulation das Systemverhalten analysieren
Beim Entwurf der neuen Komponente muss die Linearbewegung des Roboters analysiert werden, um Folgendes zu bestimmen:
Wie weit der Roboter bei Höchstgeschwindigkeit fahren kann, wenn die Stromzufuhr zu den Rädern unterbrochen wird
Die Höchstgeschwindigkeit des Roboters
Simulieren Sie das Modell mit einem Krafteingangssignal, das den Roboter in Bewegung versetzt, wartet, bis er eine konstante Geschwindigkeit erreicht, und dann die Kraft auf null setzt:
Doppelklicken Sie im Modell auf das Subsystem
Inputs
.Löschen Sie die vorhandene Schritteingabe und fügen Sie einen Pulse Generator-Block hinzu.
Legen Sie die folgenden Parameter für den Pulse Generator-Block fest:
„Amplitude“:
1
„Period“ (Periode):
20
„Pulse Width“ (Pulsbreite):
15
Diese Parameter sind so gestaltet, dass die Höchstgeschwindigkeit sicher erreicht wird. Sie können die Parameter auch ändern, um ihren Effekt zu beobachten.
Simulieren Sie das Modell für einen Zeitraum von 20 Sekunden.
Zur Analyse der Simulationsergebnisse lassen Sie sich die mit den Floating Scopes verbundenen Signale im Modell anzeigen.
Das erste Scope zeigt, dass die Geschwindigkeit des Roboters schnell abnimmt, nachdem der Puls, der die Eingangskraft darstellt, innerhalb einer Simulationszeit von
3
Sekunden auf null abfällt. Die Geschwindigkeit nähert sich asymptotisch dem Wert null, ohne ihn tatsächlich zu erreichen. Die akkurate Modellierung der Dynamik bei niedrigen Geschwindigkeiten ohne externe Kräfte erfordert eine weitaus komplexere Darstellung des Systems. Für das hier festgelegte Ziel ist diese nur näherungsweise korrekte Darstellung des Systems jedoch ausreichend.Das zweite Scope zeigt die Position des Roboters im Verlauf der Simulation. Zu Beginn verändert sich die Position schneller. Bei einer Simulationszeit von etwa
3
Sekunden verändert sich die Position langsamer, während die Geschwindigkeit des Roboters abnimmt.
Zoomen Sie das Scope-Diagramm, das die Roboterposition zeigt, heran. Zum Zeitpunkt 3
befindet sich der Roboter ungefähr an Position 0.55
m. Am Ende der Simulation befindet sich der Roboter ungefähr an Position 0.7
m. Da die Geschwindigkeit des Roboters zum Ende der Simulation sehr nah bei null liegt, zeigen die Ergebnisse, dass sich der Roboter weniger als 0.16
m bewegt, nachdem die externe Kraft auf null abgefallen ist.
So lässt sich die Höchstgeschwindigkeit ermitteln:
Zoomen Sie die flache Region des Geschwindigkeitssignals im Zeitbereich von 1 s bis 3 s heran.
Verlassen Sie den Zoom-Modus, indem Sie noch einmal auf die Zoom-Schaltfläche klicken.
Klicken Sie auf „Cursor Measurements“ .
Bewegen Sie den zweiten Cursor in die Region, in der die Geschwindigkeitskurve flach ist.
In der Spalte Value im Bereich Cursor Measurements ist angegeben, dass die Höchstgeschwindigkeit des Roboters 0.183
m/s beträgt. Um die Zeit, die der Roboter für eine Strecke von 0,05 m benötigt, zu berechnen, dividieren Sie 0,05 m durch 0,183 m/s. Das Ergebnis lautet 0,27 s.
Komponenten entwerfen und Entwurf überprüfen
Der Sensorentwurf besteht aus den folgenden Komponenten:
Messung der Entfernung zwischen dem Roboter und dem Hindernis: In diesem Beispiel wird angenommen, dass die Messung perfekt ist.
Das Zeitintervall zwischen allen vom Warnsystem ausgeführten Entfernungsmessungen: Um den Messfehler unter 0,05 m zu halten, muss das Abtastintervall kleiner als 0,27 s sein. Verwenden Sie 0,25 Sekunden.
Die Entfernung, bei der der Sensor eine Warnung ausgibt: Die Analyse zeigt, dass der Abbremsvorgang beginnen muss, wenn sich der Roboter in einer Entfernung von ca. 0,16 m zum Hindernis befindet. Bei der tatsächlichen Warnentfernung muss auch der Fehler der diskreten Messungen, der 0,05 m beträgt, berücksichtigt werden.
Entworfene Komponente hinzufügen
Erstellen Sie den Sensor:
Erstellen Sie ein Subsystem mit vier Eingabeports und einem Ausgabeport. Das Subsystem erhält Eingaben für die x- und y-Koordinaten des Roboters und für die x- und y-Koordinaten des Hindernisses. Das vom Sensor erzeugte Warnsignal stellt eine Verbindung zum Ausgabeport her.
Konstruieren Sie das Subsystem für die Entfernungsmessung. Verwenden Sie im Subsystem
Sensor model
den Block Subtract, den Block Math Function mit der Funktionmagnitude^2
, den Block Sum und den Block Sqrt, um die Entfernungsberechnung zu implementieren. Beachten Sie, dass innerhalb des Subsystems die Anordnung der Eingabeports nicht mit der Anordnung der Ports in der Schnittstelle des Subsystem-Blocks übereinstimmen muss.Zum Modellieren der Abtastung fügen Sie dem Subsystem einen Zero-Order Hold-Block aus der Bibliothek „Discrete“ hinzu und legen Sie den Parameter Sample time für den Block auf
0.25
fest.Verbinden Sie das Ergebnis der Entfernungsberechnung mit dem Eingang des Zero-Order Hold-Blocks.
Zum Modellieren der Warnlogik fügen Sie einen Compare to Constant-Block aus der Bibliothek „Logic and Bit Operations“ hinzu und legen Sie die folgenden Block-Parameter fest:
Operator:
<=
Constant Value:
0.21
Output data type:
boolean
Mit diesen Parameterwerten beträgt der Ausgabewert des Blocks
1
, wenn der Eingabewert kleiner oder gleich0.21
ist.Verbinden Sie den Ausgang des Zero-Order Hold-Blocks mit dem Eingang des Compare to Constant-Blocks.
Verbinden Sie abschließend den Ausgang des Compare to Constant-Blocks mit dem Outport-Block
Alert
.
Entwurf überprüfen
Testen Sie den Entwurf mit einem Hindernis an der Position X = 0.65, Y = 0 unter Verwendung von Constant-Blöcken als Eingaben für das Sensormodell-Subsystem. Bei diesem Test wird die Funktionalität des Entwurfs in X-Richtung überprüft. Sie können ähnliche Tests für andere Pfade erstellen. Dieses Modell generiert lediglich eine Warnung. Der Roboter wird nicht gesteuert.
Legen Sie die Position des Hindernisses fest. Fügen Sie zwei Constant-Blöcke aus der Bibliothek „Sources“ hinzu, um die konstanten Werte auf
0.65
und0
festzulegen. Verbinden Sie die Positionsausgänge des Roboters mit den Eingängen des Sensors.Fügen Sie ein Scope zum Ausgang „Alert“ hinzu.
Simulieren Sie das Modell.
Das Diagramm zur Position des Roboters im Scope sieht genauso aus wie beim vorherigen Durchgang.
Das mit dem Warnsignal verknüpfte Scope zeigt, dass der Wert des Warnsignals 1
wird, wenn sich der Roboter auf 0.21
m dem Hindernis nähert. Damit ist die Entwurfsanforderung für diese Komponente erfüllt.
Für reale Systeme mit komplexen Komponenten und formalen Anforderungen enthält die Produktfamilie Simulink® zusätzliche Tools zum Verfeinern und Automatisieren des Entwurfsprozesses. Die Requirements Toolbox™ enthält Tools zum formalen Definieren von Anforderungen und zum Verknüpfen dieser Anforderungen mit Modellkomponenten. Simulink Control Design™ kann den Entwurf erleichtern, wenn Sie einen Controller für diesen Roboter erstellen möchten. Simulink Verification and Validation™-Produkte bilden ein formales Framework für den Test von Komponenten und Systemen.