Einführung in Simulink

Werbung
MATLAB & Simulink – Eine Einführung
Mechatronik 3. Semester
2 CP, 2 SWS
Sommersemester 2010
Helmut Scherf
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-1-
MATLAB & Simulink – Eine Einführung
Allgemeines




MATLAB steht für Matrix Laboratory
MATLAB ist eine Hochsprache und eine interaktive Umgebung, mit der man
rechenintensive Aufgaben schneller als mit herkömmlichen Programmiersprachen wie C, C++ oder Fortran ausführen kann
Simulink ist eine MATLAB-Toolbox zur blockschaltbildorientierter Simulation
von dynamischen Systemen
Weiter Toolboxen für Regelungstechnik, Signalverarbeitung, Statistik,
Optimierung, C-Code-Generierung etc.
Pfad
Workspace
Command-Window
CommandHistory
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-2-
MATLAB & Simulink – Eine Einführung
Command Window
Dieser Bereich stellt das Kernstück von MATLAB dar. Hier werden alle Eingaben in
den Workspace gemacht und die Berechnungen ausgegeben. Der Prompt >>
signalisiert die Eingabebereitschaft.
>> (40^3 + 3*2e3) / 7
ans = 10000
Jede Eingabe wird mit der Taste ENTER abgeschlossen. Die Regel „Punkt vor
Strich“ sowie Klammern gelten wie gewohnt. Große Zahlen werden mit Exponent e
(bzw. auch E) eingegeben. Beendet wird MATLAB durch Schließen des Desktops
oder durch Eingabe des Befehls quit, exit oder mit der Tastenkombination Strg+q.
Ein Semikolon nach der Eingabe unterdrückt die Ausgabe.
Mit der Pfeiltaste ↑ können die letzten Befehle wiederholt werden.
Command History
Hier werden die im Command Window eingegeben Befehle gespeichert und
angezeigt.
Durch Doppelklicken können die Befehle wiederholt werden, auch
lassen sich einzelne oder mehrere Befehle ausschneiden, kopieren oder löschen.
Workspace
Hier werden alle im Workspace existierenden Variablen, Funktionen etc. mit ihrem
Namen, Dimension, Größe in Bytes und dem Datentyp angezeigt. Zusätzlich lassen
sich diese Daten speichern und Variablen mittels des Array Editors einfach
verändern.
Pfad
Hier sucht MATLAB nach Unterprogrammen, m-Files etc.
Variablen, Vektoren, Matrizen, Polynome
a=7
b=[4, 5, 6];
a=[6 4 22];
c=[4; 5; 6]
E=[3 a 9];
E(4)=input('Zahl
eingeben: ')
A=[1 4 5;4 6 8]
A(2,1)
A(2,:)
I=eye(3)
pi
c=1:.1:2
a*b
a.*b
b'
a*b'
a wird als Skalar interpretiert oder 1x1-Matrix
Zeilenvektor, Trennung durch Komma oder
Leerzeichen
Semikolon verhindert Antwort
Spaltenvektor, Trennung durch Semikolon
MATLAB unterscheidet Groß- und
Kleinschreibung
E ist der Vektor 3 6 4 22 9; jetzt wird das 4.
Element also die 22 ersetzt.
A ist eine 2x3-Matrix; Adressierung: Zeile, Spalte
Liefert 4 als Ergebnis
Liefert 4 6 8; : heißt alle Spalten
Liefert 3x3-Einheitsmatix

Erzeugt den Vektor [1 1.1 1.2 1.3 ... 2]
Zeile*Zeile = nicht definiert
Elementweise Multiplikation
Transposition -> Spaltenvektor
Zeile*Spalte = Skalarprodukt
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-3-
MATLAB & Simulink – Eine Einführung
a'*b
a.*b'
Elementweise Zeile*Spalte = geht nicht
Spalte*Zeile = dyadisches Produkt (Matrix)
clear a b
F=ones(2,3)
a=exp(-2)
A=[1 2 3; 3 4 5;4 5 99]
inv(A)
det(A)
b=0:0.1:5;
length(b)
[m,n]=size(A)
Löscht die Variablen a und b
2x3-Matrix mit Einsen
a  e 2
A(:,3)
A(2,:)
whos
help fft
lookfor fft
why
i
j
%Kommentar
str='Hallo Welt!'
roots([1 3 3 1])
poly ([1 2 3])
conv([1 3 3 1], [1 4])
deconv(...)
residue(...)
polyval(...)
polyadd(...)
Matrix A invertieren
Determinante berechnen
Liefert Vektor 0, 0.1, 0.2, 0.3, … 4.8, 4.9, 5.0
Gibt Länge des Vektors b an
m = Anzahl Zeilen, n = Anzahl Spalten
Adressierung: Zeile, Spalte
3. Spalte von A, : bedeutet alle Zeilen
2. Zeile von A, alle Spalten
zeigt alle Variablen an
Liefert Hilfe zu MATLAB-Befehl fft
Sucht alle Help-Texte nach dem Begriff fft ab
Liefert Universal-Antwort!
Imaginäre Einheit
Imaginäre Einheit
Eingabe von Zeichenketten
entspricht Vektor aus Buchstaben ['H' 'a' 'l' ...]
Wurzeln eines Polynoms x 3  3x 2  3x  1
bestimmen
Erstellt das Polynom mit den angegebenen
Wurzeln
Multiplikation von zwei Polynomen
Polynomdivision
Partialbruchzerlegung
Auswertung des Polynoms
Addition von Polynomen
Funktionen
Viele MATLAB-Funktionen sind skalare Funktionen und werden elementweise
ausgeführt, wenn sie auf Matrizen angewandt werden.
s. help elfun (elementare Funktionen) oder s. help specfun (spezielle
Funktionen)
Kategorie
Funktion
Beschreibung (gemäß Matlab)
Trigonometrisch sin
Sine
sinh
Hyperbolic sine
asin
Inverse sine
cos
Cosine
cosh
Hyperbolic cosine
acos
Inverse cosine
acosh
Inverse hyperbolic cosine
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-4-
MATLAB & Simulink – Eine Einführung
Exponentiell
tan
tanh
atan
atanh
cot
coth
acot
acoth
Tangent
Hyperbolic tangent
Inverse tangent
Inverse hyperbolic tangent
Cotangent
Hyperbolic cotangent
Inverse cotangent
Inverse hyperbolic cotangent
exp
expm1
log
log1p
log10
log2
Exponential
Compute exp(x)-1 accurately
Natural logarithm
Compute log(1+x) accurately
Common (base 10) logarithm
Base 2 logarithm and dissect floating point
number
Square root
Real n-th root of real numbers
sqrt
nthroot
Komplex
Runden und
Rest
abs
angle
complex
conj
imag
real
Absolute value
Phase angle
Construct complex data from real and imaginary
parts
Complex conjugate
Complex imaginary part
Complex real part
fix
Round towards zero
floor
ceil
round
mod
rem
sign
Round towards minus infinity
Round towards plus infinity
Round towards nearest integer
Modulus (signed remainder after division)
Remainder after division
Signum
Vektorfunktionen
Eine zweite Klasse von MATLAB-Funktionen sind Vektorfunktionen. Sie können
mit derselben Syntax sowohl auf Zeilen- als auch auf Spaltenvektoren angewandt
werden. Solche Funktionen operieren spaltenweise, wenn sie auf Matrizen
angewandt werden. Einige dieser Funktionen sind
Funktion
Beschreibung (gemäß MATLAB)
max
Largest component
mean
Average or mean value
median
Median value
min
Smallest component
prod
Product of elements
sort
Sort array elements in ascending or descending order
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-5-
MATLAB & Simulink – Eine Einführung
sortrows
std
sum
trapz
cumprod
cumsum
cumtrapz
diff
find
Sort rows in ascending order
Standard deviation
Sum of elements
Trapezoidal numerical integration
Cumulative product of elements
Cumulative sum of elements
Cumulative trapezoidal numerical integration
Difference function and approximate derivative
Find indices of nonzero elements
Spezielle Konstanten
MATLAB besitzt einige Funktionen, die nützliche Konstanten liefern
Funktion
Beschreibung (gemäß MATLAB)
pi
3,14159265 . . .
i
Imaginäre Einheit  1 ; sollte daher nicht als Zählindex
verwendet werden.
j
Wie i
eps
Relative Genauigkeit der Fliesskomma-Zahlen   2 52
realmin Kleinste Fliesskomma-Zahl 21022
realmax Größte Fliesskomma-Zahl 21024
Inf
Unendlich  , 1/0
NaN
Not-a-number, 0/0
Lineare Gleichungssysteme
3  x1  2  x2  3  x3  15
1  x1  4  x 2  4  x3  6
2
3
 x1 
 3
 15 




 A  x2  b, A  1  4  4 , b    6
 


 
 x3 
  2  3  2
  5
 2  x1  3  x 2  2  x3  5
 x1 
A  A   x2   A1  b
 
 x3 
A=[3 2 3;1 -4 -4;-2 -3 -2]
b=[15; -6; -5;]
inv(A)*b
1
Matrix A eingeben
Spaltenvektor
Programmsteuerung
MATLAB besitzt für die Programmsteuerung for-, while-, if- und switchcase-Konstrukte. Diese Elemente der MATLAB -Programmiersprache kann man
nicht nur in m-Files sondern auch direkt im Befehlsfenster eingeben.
If-Anweisung
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-6-
MATLAB & Simulink – Eine Einführung
e = exp(1);
if 2^e > e^2
disp('2^e ist größer')
else
disp('e^2 ist größer')
end
Logischer Ausdruck
For-Schleife
Berechnung der Summe der natürlichen Zahlen von 1 bis 100000.
N=1:100000;
Vektor generieren
SummeN=0;
tic
Start a stopwatch timer
for k=1:length(N)
SummeN=SummeN+N(k);
end
toc
Read the stopwatch timer
tic, sum(N),toc
Beachte: Die Performance ist sehr viel schlechter als mit einem geeigneten
MATLAB-Befehl!
Unterprogramme, m-Files
Mit MATLAB lassen sich eigene Funktionen schreiben, es können Parameter
übergeben werden.
Beachte: Die Variablen in einer Funktion sind lokal. Mit global können die Variablen
global definiert werden.
Berechnung der Summe aller Matrixelemente:
MATLAB-Editor aufrufen über File  NewM-File
Funktion schreiben
Abspeichern unter Funktionsname.m z.B. SummevonA.m
Damit die Funktion gefunden und ausgeführt werden kann, muss der Pfad auf das
Verzeichnis gesetzt werden, wo die Funktion abgespeichert ist.
%Diese Funktion berechnet
Kommentar
%die Summe aller Matrixelemente
einer Matrix
Eingabewert ist die
function summe=SummevonA(A)
Matrix A
Rückgabewert ist
summe
Unter SummevonA.m
abspeichern!
[m,n]=size(A)
Dimension feststellen
summe=0;
for zeile=1:m
Funktion
for spalte=1:n
summe=summe+A(zeile,spalte);
end;
end;
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-7-
MATLAB & Simulink – Eine Einführung
A=[3 2 3;1 -4 -4;-2 -3 -2]
SummevonA(A)
Matrix eingeben
Aufruf der Funktion vom
Command-Window
Hinweis: Eleganter und schneller geht es natürlich mit sum(sum(A))!
Es können auch mehrere Variable zurückgegeben werden:
function [summe,differenz]=plusundminus(a,b)
summe=a+b;
differenz=a-b;
Grafik
MATLAB besitzt sehr leistungsstarke Grafikfähigkeiten.
2D-Plots
x=linspace(2,57.9,100)
Vektor generieren
subplot(3,2,1)
Liefert 3x2-Matrix, 1. Bild
plot(x,sin(x))
Plot-Befehl, x und y-Vektoren
müssen gleiche Länge haben;
grid
Gitter
xlabel('x')
Achsenbeschriftung
ylabel('sin x')
Achsenbeschriftung
axis([0 50 -2 2])
Achsenskalierung
text(10,1.5,'Text bei 10, 1.5')
Text an Position einfügen
subplot(3,2,3)
Liefert 3x2-Matrix, 3. Bild
plot(x,sqrt(x))
grid
xlabel('x')
ylabel('Wurzel x')
axis([0 50 0 10])
subplot(3,2,5)
plot(x,sin(x).*sqrt(x))
grid
xlabel('x')
ylabel('sin x*sqrt(x)')
axis([0 50 -10 10])
subplot(3,2,2)
semilogx(x,sqrt(x))
grid
xlabel('x logarithmisch')
ylabel('Wurzel x')
subplot(3,2,4)
semilogy(x,sqrt(x))
grid
xlabel('x linear')
ylabel('Wurzel x logarithmisch')
subplot(3,2,6)
loglog(x,sqrt(x))
grid
xlabel('x logarithmisch')
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-8-
MATLAB & Simulink – Eine Einführung
ylabel('Wurzel x logarithmisch')
Die Plots lassen sich ganz leicht in Word oder Powerpoint integrieren.
Schritte:
1. Im Plot-Fenster unter Edit die Copy-Options einstellen
2.
3.
4.
5.
6.
Im Plot-Fenster unter Edit ->Copy Figure anklicken;
Powerpoint-Folie öffnen und ctrl+v (einfügen)
Zeichnen->Gruppierung aufheben: Umwandlung in Powerpoint-Objekt
Schritt 5 ggf. mehrfach durchführen
3D-Plots
2
2
Beispiel: Plotten der Funktion z  x  e x  y im Bereich  2  x  2,  2  y  2
x=-2:.1:2;
x-Vektor 1x41 Werte
y=-2:.1:2;
y-Vektor 1x41 Werte
[X,Y] = meshgrid(x,y);
Liefert 3D-Array X und Y: 41x41 Werte
Z = X .* exp(-X.^2 - Y.^2);
41x41 Werte
surf(X,Y,Z)
3D-Plotbefehl, s. auch mesh etc.
xlabel('x')
Achsenbeschriftung
ylabel('y')
zlabel('z=x*exp(-x^2-y^2)')
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-9-
MATLAB & Simulink – Eine Einführung
2 2
z=x*exp(-x -y )
0.5
0
-0.5
2
1
2
1
0
0
-1
y
-1
-2
-2
x
Differenzialgleichungen
dy
  y  e t  6  cos(7  t ), y (0)  3
dt
Funktion schreiben, die die rechte Seite der Dgl. enthält.
Geeignetes Integrationsverfahren wählen, hier ode45
Beispiel:
function dy = rechteSeite(t,y)
dy = -y-exp(-t)*6*cos(7*t);
SimZeit = [0,10];
y0 = -3;
[t,y] = ode45(@rechteSeite,SimZeit,y0);
plot(t,y,'-'), grid,
xlabel t, ylabel y(t)
Abspeichern unter
rechteSeite.m
Simulationszeit
Anfangsbedingung
@rechteSeite Zeiger
auf Funktion, die die Dgl.
enthält
Plot
Symbolisches Rechnen
Mit der Symbolic Math Toolbox kann man
 symbolische Variablen definieren,
 Differenzieren,
 Integrieren,
 symbolische Ausdrücke umformen,
 Gleichungssysteme lösen,
 Differenzialgleichungen lösen.
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-10-
MATLAB & Simulink – Eine Einführung
Viele Funktionen in Symbolic Math Toolbox haben dieselben Namen wie ihre
numerischen Gegenstücke. MATLAB wählt diejenige aus, welche dem Typ der
Eingabeparameter entspricht. Mit den Befehlen help eig bzw. help sym/eig
kann man Hilfe für die numerische bzw. symbolische Eigenwertberechnung
anzeigen.
Differenzieren
syms x y
diff(sqrt(5*x^2 7*x + 4))
pretty(ans)
symbolische Variablen definieren
Differenzieren; wenn nichts angegeben wird nach x,
sonst nach Variable, die x am nächsten steht.
Kosmetik
Integrieren
MATLAB kann bestimmte Integrale sowie Stammfunktionen berechnen unter der
Voraussetzung, dass sie existieren!
syms a b t x y z
symbolische Variablen definieren
int(sin(a*t + b))
Stammfunktion, t ist Integrationsvariable
int(sin(a*t + b),t)
Oder so
int(x/(x^2+1))
Stammfunktion, x ist Integrationsvariable
f=(2*x^21)/(x+1)^2/(x+3);
pretty(f)
int(f,x,0,1)
Bestimmtes Integral zwischen 0 und 1
syms a b

int(exp( at
a*t)*sin(b*t),0,inf)
 e  sin( b  t ) dt , existiert nur für a  0 , hier Protest
0
syms a b positive
int(exp(a*t)*sin(b*t),0,inf)
res = simplify(ans)
Daher hier Einschränkung
So geht's!
Ausdruck vereinfachen, s. help simple
Substituieren
Die Funktion subs erlaubt eine Variable in symbolischen Ausdrücken durch andere
Ausdrücke zu ersetzen, insbesondere auch durch Zahlwerte.
syms a b
f = a+b;
Symbolische Variable
subs(f,a,4)
In f wird a durch 4 ersetzt
subs(f,[a b],[4 -4])
Algebraische Gleichungen, Gleichungssysteme
Der Befehl solve(s) versucht die Nullstelle des symbolischen Ausdruck s zu
finden.
syms x
solve('3*x + 4 = 17')
f = '5^(x-1) = 10';
solve (f)
solve('tan(2*x) = sin(x)')
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-11-
MATLAB & Simulink – Eine Einführung
Wenn Zahlen mit Dezimalpunkt eingegeben werden (z.B. 1.2 statt 6/5), so wird
das Resultat numerisch statt symbolisch ausgegeben.
Auch lineare Gleichungssysteme können natürlich gelöst werden.
syms x y z
g1 = 'x + y + z = 0';
g2 = '4*x + 5*y + z = 3';
g3 = '-2*x + y - 3*z -5 = 0';
[x y z] = solve(g1,g2,g3)
Differenzialgleichungen
Die Funktion dsolve versucht gewöhnliche Differentialgleichungen zu lösen.
Wenn nicht genügend viele Randbedingungen gegeben werden, so enthält die
Lösung freie Parameter. Im Normalfall ist t die unabhängige Variable, D bedeutet
d/dt, D2 = d2/dt2 etc.
syms x y
Y = dsolve('Dy = x^2*y','x')
dy
 x2  y
dx
Hier ist x die unabhängige
Variable!
Y=dsolve('Dy = x^2*y','y(0)=4','x')
Jetzt mit Anfangsbedingung
dsolve('D2y + y = x^2','y(0)=4',
'Dy(0)=1','x')
Messwerte laden
Mit MATLAB können Messwerte hervorragend ausgewertet und dargestellt werden. Hierzu
müssen diese allerdings im Workspace vorliegen. Am einfachsten gestaltet sich die
Angelegenheit, wenn sich die Werte in einer ASCII-Datei befinden.
Beispiel:
Erzeugen einer Messwertdatei mit einem Editor: 1. Spalte Zeit, 2. Spalte Messwertvektor
Abspeichern unter y.txt
Laden der Messwert mit dem load-Befehl: load y.txt
Beachte: Pfad muss gesetzt sein, sonst wird die Datei nicht gefunden.
Eine weitere Möglichkeit besteht darin, dass der Import-Wizard benutzt wird unter
FileImport Data…
Hinweis: Im ASCII-File muss das Komma durch einen Punkt ersetzt werden!
Nützliche MATLAB-Funktionen
Name der Funktion
abs
acos
asin
atan
atan2
axis
bode
c2d
clear
clf
Beschreibung
Berechnet Absolutbetrag
Berechnet Arcuskosinus
Berechnet Arcussinus
Berechnet Arcustangens (2 Quadranten)
Berechnet Arcustangens (4 Quadranten)
Manuelles Skalieren der Achsen
Erstellt Bode-Diagramm
Konvertiert zeitkontinuierliches System in ein zeitdiskretes
Löscht Arbeitsbereich
Löscht Grafikfenster
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-12-
MATLAB & Simulink – Eine Einführung
conj
conv
cos
ctrb
damp
diary
d2c
eig
end
exp
expm
eye
feedback
for
format
grid on
help
hold on
i
imag
impulse
inf
j
legend
linspace
load
log
log10
loglog
logspace
lsim
margin
max
mesh
meshgrid
min
minreal
nan
num2str
nyquist
obsv
ones
pade
parallel
plot
pole
Berechnet konjugiert komplexe Zahl
Multipliziert 2 Polynome (Faltung)
Berechnet Kosinus
Berechnet Steuerbarkeitsmatrix
Berechnet Eigenwerte, Dämpfung, Eckfrequenzen
Speichert Sitzung auf der Festplatte
Konvertiert zeitdiskretes System in ein zeitkontinuierliches
Berechnete Eigenwerte und Eigenvektoren
Beendet Steuerungsstrukturen
Berechnet Exponenten zur Basis e
Berechnet Matrixexponenten zur Basis e
Erzeugt Einheitsmatrix
Berechnet Rückkopplungsverbindung zwischen 2 Systemen
Erzeugt eine Schleife
Definiert das Anzeigeformat der Ausgabe
Erzeugt ein Gitter in der Graphik
Hilfethema zu einem Befehl
Erhält die aktuelle Graphik im Fenster
Imaginäre Einheit
Berechnet den Imaginärteil
Berechnet Impulsantwort eines Systems
Stellt den Wert "unendlich" dar
Imaginäre Einheit
erstellt eine Legende für das aktuelle Diagramm
Erzeugt Vektor mit linearem Abstand
Lädt Variablen aus einer Datei
Berechnet natürlichen Logarithmus
Berechnet Zehnerlogarithmus
Erzeugt doppeltlogarithmische Diagramme
Erzeugt Vektor mit logarithmischen Abstand
Berechnet die Zeitantwort eines Systems auf ein beliebiges
Eingangssignal
Berechnet Amplitudenrand, Phasenrand und die
Übergangsfrequenz
Ermittelt Maximalwert
Erzeugt dreidimensionale Gitterflächen
Erzeugt Felder für die Funktion mesh
Ermittelt Minimalwert
Kürzen der Pole und Nullstellen in Übertragungsfunktionen
Not a number nichtnumerischer Ausdruck
Konvertiert Zahlen in Zeichenketten
Erstellt Ortskurve eines Übertragungssystems
Berechnet die Beobachtbarkeitsmatirx
Erzeugt eine Matrix mit Einsern
Berechnet die Pade-Approximation
Berechnet die parallele Verbindung zwischen Systemen
Erzeugt ein Diagramm
Berechnet die Pole eines Systems
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-13-
MATLAB & Simulink – Eine Einführung
poly
polyfit
polyval
printsys
pzmap
rand
rank
real
residue
rlocfind
rlocus
roots
semilogx
semilogy
series
shg
sin
sqrt
ss
step
subplot
syms
tan
text
title
tf
who
whos
why
xlabel
ylabel
zero
zeros
Berechnet Polynom aus den Wurzeln
Berechnet Polynomkoeffizienten eines Polynoms, das
Messwertreihe annähert
Analysiert Polynom
Druckt die beschreibenden Zustandgrößen etc. schön aus
Zeichnet Pol-Nullstellen-Diagramm
Liefert gleichverteilte Pseudozufallszahl
Berechnet Rang einer Matrix
Berechnet Realteil
Berechnet Partialbruchzerlegung
Ermittelt Verstärkung bei WOK
Berechnet WOK
Ermittelt Wurzeln eines Polynoms
Erzeugt halblogarithmisches Diagramm, y-Achse ist linear
Erzeugt halblogarithmisches Diagramm, x-Achse ist linear
Berechnet serielle Verbindung zwischen Systemen
Anzeige des Grafikfensters
Berechnet Sinus
Berechnet Quadratwurzel
Berechnet Zustandsmatrizen aus Übertragungsfunktion
Berechnet Sprungantwort
Teilt Grafikfenster in Unterfenster
Deklariert symbolische Variablen
Berechnet Tangens
Fügt aktueller Grafik Text hinzu, auch LaTeX-Befehle!
Fügt aktueller Grafik Titel hinzu
Erzeugt Übertragungsfunktion-Modellobjekt
Listet aktuell im Speicher befindlichen Variablen auf
Listet die aktuellen Variablen und Größen auf
Liefert alle Antworten dieser Welt auf nicht gestellte Fragen
Fügt aktueller Grafik Beschriftung der x-Achse hinzu
Fügt aktueller Grafik Beschriftung der y-Achse hinzu
Berechnet Nullstellen eines Systems
Erzeugt Matrix mit Nullen
Internet-Adressen
http://www.oldimrt.ethz.ch/education/tutorials/matlab/
http://www.math.mtu.edu/~msgocken/intro/intro.html
http://www.math.siu.edu/matlab/tutorials.html
http://math.ucsd.edu/~driver/21d-s99/matlab-primer.html
http://www.engin.umich.edu/group/ctm/
Literatur
Beucher, O.: MATLAB und Simulink, Scientific Computing, 3. Auflage 2006;
Schweizer, W.: MATLAB kompakt, Oldenbourg, 2006
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-14-
MATLAB & Simulink – Eine Einführung
Hoffmann, J.: MATLAB und Simulink: Beispielorientierte Einführung in die Simulation
dynamischer Systeme, Addison-Wesley, 1998
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-15-
MATLAB & Simulink – Eine Einführung
Einführung in Simulink
Allgemeines
-
Simulink ist eine Tollbox von MATLAB
Simulink arbeitet blockschaltbildorientiert
Verknüpfung von Blöcken durch Pfeile (Signale)
Rückwirkungsfrei: Signale gehen nur in Pfeilrichtung
Blöcke sind in einer Bibliothek hinterlegt
Simulation kontinuierlich, zeitdiskret oder hybrid
Schnittstelle zu MATLAB
Einfaches Lösen von gewöhnlichen Differenzialgleichungen und DglSystemen
Standard-Tool für Simulation dynamischer Systeme
Möglichkeit zur Erzeugung von C-Code aus dem Blockschaltbild
Beispiel
Zu lösen ist die Differenzialgleichung eines schwingungsfähigen Masse-FederDämpfersystems mit Krafterregung
m  x  d  x  c  x  F (t )
mit den Anfangsbedingungen
x (0)  0,5, x (0)  0 .
m  2 kg
Ns
d  0,5
m
N
c5
m
F  20 N  sin(2   f  t )
Masse
Geschwindigkeitsproportionale Dämpfung
Federkonstante
Sinusförmige Erregerkraft mit der Frequenz f= 2 Hz
Schritt 1:
Auflösen der Dgl. Nach der höchsten Ableitung
x 
 d  x  c  x  F (t )
m
(1)
Schritt 2:
Simulink starten: Im Workspace simulink eingeben
oder Button
Browser
in der Menüleiste anklicken; es erscheint der Simulink-Library-
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-16-
MATLAB & Simulink – Eine Einführung
Continuous:
Discrete:
User –
Defined
Functions
LookupTables
Math:
Nonlinear:
Ports &
Subsystems:
Sinks:
Sources:
Linear, continuous-time system elements (integrators, transfer
functions, state-space models, etc.)
Linear, discrete-time system elements (integrators, transfer functions,
state-space models, etc.)
User-defined functions
Tables for interpolating function values
Mathematical operators (sum, gain, dot product, etc.)
Nonlinear operators (coulomb/viscous friction, switches, relays, etc.)
Blocks for controlling/monitoring signal(s) and for creating subsystems
Used to output or display signals (displays, scopes, graphs, etc.)
Used to generate various signals (step, ramp, sinusoidal, etc.)
Schritt 3:
Öffnen eines neuen Simulink-Modells: FileNewModel; es erscheint ein leeres
Modell.
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-17-
MATLAB & Simulink – Eine Einführung
Schritt 4:
Im Simulink-Library-Browser Block Continuous doppelklicken und aus der sich
öffnenden Bibliothek den Block Integrator mit gedrückter linker Maustaste in das
leere Modell ziehen.
Schritt 4:
Block Integrator duplizieren: Block mit gedrückter rechter Maustaste nach rechts
ziehen und Maustaste loslassen
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-18-
MATLAB & Simulink – Eine Einführung
Schritt 5:
Blöcke verbinden: hierzu mit dem Mauszeiger auf den Ausgang des Blocks Integrator
gehen, es erscheint ein Kreuz und mit gedrückter Maustaste eine Linie zum Eingang
von Integrator1 ziehen.
Der Eingang des ersten Integrators ist x , der Ausgang ist damit x , und der Ausgang
des zweiten Integrators ist x . Aus Gleichung ( 1 ) geht hervor, mit welchen Blöcken
x erzeugt wird.
Schritt 6:
Aus dem Simulink-Library-Browser
-
Block Math Operations den Block Gain und Sum
Block Sources den Block Sine Wave
Block Sinks den Block Scope
in das Modell ziehen und verbinden.
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-19-
MATLAB & Simulink – Eine Einführung
Schritt 7:
Die Blöcke müssen nun parametriert werden. Dies erfolgt durch Doppelklicken auf
den jeweiligen Block.
Z. B.: Der Block Sine Wave sieht so aus:
Des Weiteren ist es ratsam, die Linien zu beschriften.
Das fertige Blockschaltbild sieht so aus:
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-20-
MATLAB & Simulink – Eine Einführung
Schritt 8:
In MATLAB müssen nun die Systemparameter eingegeben werden
f=2;
c=5;
d=0.5;
m=2;
damit diese bei der Simulation in Simulink bekannt sind.
Schritt 9:
Die Simulation ist startbereit: Drücken des Buttons
in der Symbolleiste. Durch
Doppelklicken auf das Scope kann der Weg x visualisiert werden.
Ergebnis:
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-21-
MATLAB & Simulink – Eine Einführung
Der Plot sieht denkbar merkwürdig aus! Was sind die Gründe?
Schritt 10:
Simulink arbeitet mit numerischen Integrationsverfahren. Hier gibt es gewisse
Standardeinstellungen, die für dieses Beispiel nicht ausreichend sind. Unter
Simulation Configuration Prameters… gelangt man zum Einstellungsmenu.
Neuseinstellung liefert
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-22-
MATLAB & Simulink – Eine Einführung
Ergebnis:
Schritt 11:
Die Ergebnisse lassen sich einfach dokumentieren. Im Scope, rechts neben dem
Druckersymbol, kann das Signal im Workspace abgespeichert werden, um es dann
mit MATLAB zu plotten. Es wird eine Matrix mit zwei Spalten abgespeichert:
1. Spalte: Zeit, 2 Spalte: x
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-23-
MATLAB & Simulink – Eine Einführung
Das Blockschaltbild kann ebenfalls im Menu EditCopy Model to Clipboard in die
Dokumentation übernommen werden.
Scope
x''
1
s
Integrator
x'
1
s
Sine Wave
x
Integrator 1
c
Federsteifig keit [N/m]
d
Dämpfungskonstante [Ns/m]
Gain 2
1/m
Bild 1: Blockschaltbild in Powerpoint-Folie übernommen
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-24-
MATLAB & Simulink – Eine Einführung
0.6
0.4
0.2
x
0
-0.2
-0.4
-0.6
-0.8
0
5
10
15
20
25
30
35
40
45
50
Zeit in s
Bild 2: Schwingweg x
Aufrufen eines Simulink-Blockschaltbildes unter MATLAB
Mit Hilfe des sim-Befehls lassen sich Simulink-Dateien ausführen. Dadurch erreicht
man höchste Flexibilität.
Beispiel:
Das Schwingungsbeispiel soll mit drei verschiedenen Dämpfungskonstanten
ausgeführt und in einem Plotfenster dargestellt werden.
%Aufrufen eines Simulnk-Files unter MATLAB
%Simulink-File: MasseFederDaempfer.mdl
%Dämpfung wird variiert
%----------------------------------------f=2;
%Erregerfrequez [Hz]
c=5;
%Federsteifigkeit [N/m]
daempfung=[0.05 0.5 5]; %Dämpferkonstante
Dämpfungsvektor
[Ns/m]
m=2;
%Masse [kg]
for k=1:3
d=daempfung(k);
sim('MasseFederDaempfer')
Aufruf des
subplot(3,1,k)
Simulink-BSB
plot(x(:,1),x(:,2))
grid
xlabel('Zeit in s')
ylabel('x')
legend(['d=',num2str(d)])
end;
subplot(3,1,1)
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-25-
MATLAB & Simulink – Eine Einführung
title('verschiedene Dämpfungen')
[x,y]=dsolve('m*D2x+k*cos(alpha)*sqrt((Dy)^2+(Dx)^2)=0','m*D2y+k*sin(alpha)*sqrt((Dy)
^2+(Dx)^2)+m*g=0','y(0)=0,x(0)=0,Dy(0)=10,Dx(0)=10')
Fakultät für Maschinenbau und Mechatronik
Prof. Helmut Scherf
Mechatronik
-26-
Herunterladen