Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Diplomarbeit D2
Lehrgebiet:
Prozesssteuerung und Regelungstechnik
Fachbereich Elektrotechnik
Fernuniversität Hagen
Fernuniversität Hagen
16. Januar 2003
Betreuer:
Dipl.-Ing. Ivan Másar
Markus Stark 5032520 2
Erklärung
Ich versichere, dass ich diese Diplomarbeit selbstständig verfasst und keine anderen als die
angegebenen Quellen und Hilfsmittel verwendet, sowie Zitate kenntlich gemacht habe.
Markus Stark
Hagen, 16. Januar 2003
Markus Stark 5032520 3
Inhaltsverzeichnis
1 EINLEITUNG 5
3 PROGRAMMDOKUMENTATION 11
3.2 GUI-Implementierung 11
3.2.1 Programmaufbau 12
3.2.2 Dateiorganisation 15
3.2.3 Funktionen und Callback-Routinen 17
4 VRML 31
5.1 PID-Regler 52
5.1.1 Grundlagen und Entwurf 52
5.1.2 Simulationsergebnisse 54
5.4 Feedforward-Regler 61
5.4.1 Grundlagen 61
5.4.2 Entwurf 61
5.4.3 Simulationsergebnisse 63
6 ZUSAMMENFASSUNG 75
7 LITERATURVERZEICHNIS 76
1 Einleitung
Grundlage dieser Diplomarbeit ist die Aufgabenbeschreibung laut Dokument „Ausgabe der
Diplomarbeit“ vom 16.01.2002 mit dem Titel:
Schwerpunkt dieser Arbeit sind der Entwurf eines grafischen Benutzer-Interfaces, die
Programmierung regelungstechnischer Anwendungen, die über dieses GUI gestartet werden
können, sowie die Erstellung einer virtuellen Arbeitsumgebung .
Die erforderlichen Anwendungen, die über das GUI implementiert werden sollen, sind:
Ziel der Regelung ist es, die Last in möglichst kurzer Zeit ohne Überschwingen des Pendels in
die Endposition zu transportieren.
In diesen Abschnitten erfolgt die Herleitung des mathematischen Modells der Kran-x-Achse
(nichtlineares gekoppeltes Differentialgleichungsystem). Hierzu wird das System in seine
zwei Teilsysteme 'Kranwagen' und 'Pendel' zerlegt, d.h. freigeschnitten (s. Abb. 2.3). Die
horizontal und vertikal wirkenden Kräfte (rote Vektoren) und die durch die Freischneidung
entstehenden Kräfte V und H sind in untenstehender Grafik eingezeichnet.
• Systemzustandsgrößen
• Systemeingangsgröße
M = M0 + M1 (2.1)
Θ = Θs + M1 ls2 (Satz von Steiner) (2.2)
∂2
V = −M 1 [l s ⋅ cos(ϕ (t ))] + M 1 g (2.4)
∂t 2
Aus dem Drehimpulssatz folgt:
M 0&(t ) = F (t ) − H − Fr r&(t )
r& (2.6)
Einsetzen von Gleichungen (2.3) und (2.4) in Gleichungen (2.5) und (2.6) unter
Verwendung von (2.1) u. (2.2) ergibt folgende nichtlineare Differentialgleichungen:
M ⋅ r&
& [
(t ) + Fr ⋅ r&(t ) − M 1 ⋅ l s ⋅ ϕ& ]
&(t ) ⋅ cos(ϕ (t )) − (ϕ&(t )) 2 ⋅ sin(ϕ (t ) = F (t ) (2.8)
Gleichungen (2.7) und (2.8) beschreiben das mathematische Systemmodell in Form eines
nichtlinearen gekoppelten Differentialgleichungssystems.
mit der Systemmatrix A und dem Eingangsvektor b. Wenn der Zustandsvektor als Ausgang
gewünscht wird, ist die Ausgangsmatrix C eine Einheitsmatrix. Es handelt sich um konstante,
d.h. zeitinvariante Matrizen.
0 0 1 0 0
0 0 0 1 0
Θ
− N 2g − ΘFr − Cr N
A = 0 b= 2
N1
2
N1
2
N1
2
N1
− MNg − Fr N − Cr M N
0 2 2 2
2
N1 N1 N 1 N 1
1 0 0 0 0
0 1 0 0 0
C= d=
0 0 1 0 0
0 0 0 1 0
Das lineare zeitinvariante System ermöglicht nun die Anwendung der üblichen
Reglerentwurfs-Techniken (und auch Beobachterentwurf falls zur Regelung nur ein Teil des
Zustandsvektors zur Verfügung steht).
Das reale System verhält sich bei kleinen Pendelausschlägen nahezu linear. Es gilt also
cos(ϕ(t)) ≈ 1 und sin(ϕ(t)) ≈ ϕ .
Wenn man zusätzlich noch die Beeinflußung der Laufkatze durch die kleine Pendelmasse
vernachlässigt, vereinfachen sich Gleichung (2.7) und (2.8) zu:
Dies gilt natürlich nur solange das Massenverhältnis der Laufkatze zum Pendel viel größer als
1 und die Pendellagerreibung sehr klein ist. Für das Laborsystem gilt beispielsweise folgendes
Massenverhältnis: M1/M0 = 7/0.06. Die Vereinfachung ist also absolut zulässig.
Markus Stark 5032520 10
i/ g
F (t ) = K S ⋅ CU ⋅ ⋅ u (t ) = K ⋅ u (t ) (2.16)
rg
Um die Zustandsmatizen an die neue Eingröße Spannung u(t) anzupassen, muß nur der b-
Vektor mit K (s. Gl. 2.16) multipliziert werden.Gleichung (2.16) in (2.15) eingesetzt und
laplacetransformiert, ergibt die Übertragungsfunktion der Wagenposition:
R( s) K Kw
= = (2.17)
U ( s ) s ( M ⋅ s + Fr ) s (Tw ⋅ s + 1)
Φ(s) M 1 ⋅ ls ⋅ s 2 K p ⋅ s2
= = (2.18)
R( s) Θ ⋅ s 2 + C r ⋅ s + M 1 ⋅ l s ⋅ g 1
s2 + s+ Kp ⋅g
Tp
K p ⋅ Kw
⋅ s2
Φ(s) Tw (2.19)
=
U (s) 2 1 1
s + s + K p ⋅ g ⋅ s + ⋅ s
Tp Tw
K p ⋅ Kw
⋅ s2
Tw
=
1 1 1
s 4 + + ⋅ s3 + + K p ⋅ g ⋅ s2 + K p ⋅ g ⋅ s
T T ⋅T
p Tw p w
Markus Stark 5032520 11
3 Programmdokumentation
3.1 Allgemeine Programminformation
Die Anwendung wurde mittels des Programmpaketes MATLAB / SIMULINK erstellt. Die
Programmgrundstruktur und die GUI-Ressourcen wurden mittels Matlabs GUIDE, eines
GUI-Entwicklungstools, implementiert. Das virtuelle 3D-Modell der Krananlage wurde in
VRML modelliert und mittels der Virtual Reality Toolbox , einer Erweiterung von Simulink,
animiert.
Die beiden folgenden Kapitel behandeln die Anwendung. In Kapitel 3.2 wird die technische
Implementierung, d.h Programmstruktur, der Anwendung vorgestellt. In Kapitel 3.3 stehen
die Funktionen der Anwendung 'Kranregelung' selbst im Vordergrund.
Die Entwicklung einer Grafischen Benutzeroberfläche (GUI) wird durch MATLAB's Tool
GUIDE (graphical user interface development environment) vereinfacht und beschleunigt.
GUIDE ist hauptsächlich eine Sammlung von Layout-Tools. Jedoch generiert GUIDE auch
ein M-file, das den Initialisierungscode enthält. Dieses M-file (s. Abb. 3.2) stellt ein Gerüst
für die Implementierung der callbacks (die Funktion, die ausgeführt wird, wenn eine GUI-
Komponente aktiviert wird) zur Verfügung.
GUI-Implementierung:
Markus Stark 5032520 12
Matlab ermöglicht zwar die GUI-Erstellung per Hand; es ist aber bedeutend einfacher die
GUI-Komponenten interaktiv mit GUIDE zu erstellen und die Dateien zu erzeugen, die dieses
GUI sichern und starten:
• FIG-file – enthält die komplette Beschreibung des GUI und seiner children (Uicontrols),
als auch aller Objekteigenschaften.
• M-file – enthält die Funktionen zum Starten und Kontrollieren des GUI und die callbacks,
die als Subfunktionen definiert sind.
Das M-file enthält nicht den Code, der die GUI-Komponenten definiert; diese Information ist
im FIG-file, d.h. gespeichert..
3.2.1 Programmaufbau
MATLAB generiert ein Programmgerüst und eine Datenstrukur (handles) zur GUI-Steuerung,
d.h. es müssen 'nur noch' die callback-Routinen der GUI-Komponenten programmiert
werden. Dieses Programmgerüst unterstützt eine robuste und effiziente Programmierung, z.B.
wird die handles-Datenstruktur automatisch jeder Funktion übergeben. Der vollständige Code
inklusive der callbacks ist im M-file der Anwendung enthalten.
Das M-file ohne Argumente aufgerufen, startet das GUI; wird es hingegen mit dem
Namen einer Subfunktion als erstes Argument aufgerufen, wird die entsprechende
Subfunktion ausgeführt (z.B. eine callback-Routine eines GUI-Objektes).
Markus Stark 5032520 13
• GUI-Initialisierung
Der Initialisierungsteil des M-files enthält einige nützliche Techniken zur GUI-
Handhabung:
• öffnet das FIG-file (enthält GUI-Objekte)
• prüft ob GUI bereits geöffnet
• positioniert das GUI auf dem Bildschirm unabhängig von der Auflösung
• erzeugt automatisch eine handles-Datenstruktur der GUI-Komponeten (ermöglicht
den Zugriff auf die GUI-Objekte)
Der folgende Code ist der Initialisierungsteil des Anwendungs-M-files. Dieser Code wird
durch GUIDE erzeugt.
• GUI-Theorie
Jedes grafische Objekt eines GUI hat eineListe von Objekteigenschaften (property), die
das Objektverhalten definieren. So können für die meisten grafischen Objekte
verschiedene Typen von callbacks definiert werden, die festlegen wie auf ein bestimmtes
Userverhalten reagiert wird. Die Erstellung intuitiver interaktiver grafischer
Anwendungen wird durch Verwendung der callbacks bedeutend vereinfacht.
Kranregelung('BodePlot_Callback',gcbo,[],guidata(gcbo))
DeleteFcn: Funktion wird vor dem Löschen des Objekts ausgeführt. Wird
z.B. beim Schließen eines Fenster oder der ganzen Anwendung
benutzt um noch die Anwenderdaten zu retten!
GUIDE stellt einen Mechanismus zum Speichern und Laden globaler Daten zur
Verfügung, indem sie die gleiche Datenstruktur benutzt. Dieser handles-Struct enthält alle
Zeiger auf benannte GUI-Komponenten. Dieser Datenstruktur können die Anwenderdaten
hinzugefügt und somit automatisch jeder Funktion, die durch einen callback aufgerufen
wird, übergeben werden.
Markus Stark 5032520 15
Das folgende Code steht im Initialisierungsteil des M-files und verdeutlicht diese
Technik:
...
fig = openfig(mfilename,'reuse'); % Öffnet GUI falls nicht schon geöffnet
handles = guihandles(fig); % Erzeugt handles-Datenstruktur der GUI-
Komponenten
handles.System.Cr = 0.00035 % Fügt die globalen Anwenderdaten hinzu
...
guidata(fig,handles); % Sichert die aktualisierte Datenstruktur
...
3.2.2 Dateiorganisation
a) Programmdateien
handles =
figure1: 99.0002 % pointer auf das GUI-Window
pushbutton_laden: 137.0002 % pointer auf pushbutton 'Laden'
menu_Beenden: 121.0002 % pointer auf Menü 'Beenden'
menu_Hilfe: 120.0002 % usw...
...
System: [1x1 struct] % Anwenderdaten
handles.System =
Cr: 0.00035 % Reibungskonstante des Pendels in [kgm^2/s]
Fr: 36.5000 % Reibungskonstante des Wagens in [kg/s]
Markus Stark 5032520 16
Die Anwenderdaten werden dem handles-Strukt bei Bedarf hinzugefügt und stehen
somit jeder weiteren Funktion zur Verfügung. Es besteht also keine Notwendigkeit,
einzelne Parameter explizit anzugeben. Es kann z.B. auf die Daten des
zeitkontinuierlichen linearisierten Kranmodells mit handles.System.Cont oder auf die
Systemmatrix mit handles.System.Cont.a zugegriffen werden.
handles.System.Cont =
a =
x1 x2 x3 x4
x1 0 0 1 0
x2 0 0 0 1
x3 0 -0.06374 -5.136 -0.0001695
x4 0 -33.54 -17.67 -0.08916
b =
F(t)
x1 0
x2 0
x3 0.1407
x4 0.4842
c =
x1 x2 x3 x4
r(t) 1 0 0 0
phi(t) 0 1 0 0
d/dt(r(t)) 0 0 1 0
d/dt(phi(t)) 0 0 0 1
d =
F(t)
r(t) 0
phi(t) 0
d/dt(r(t)) 0
d/dt(phi(t)) 0
Continuous-time model.
Markus Stark 5032520 17
c) Simulink-Modelle
d) VRML-Modelle
Es werden nur einige wesentliche Funktionen und nur ein paar exemplarische callback-
Routinen vorgestellt, da der Programmablauf der Funktionen sich sehr gleicht.
a) Funktion 'Linearsierung'
%--------------------------------------------------------------------
% Linearisierung der nichtlin. Diffgl. des Kranes um den Arbeitspunkt
% phi...Winkel (pos. im Uhrzeigersinn)
% r...Position
% Eingabe: Systemparameter des Kranes, Naturkonstanten
% Ausgabe: Zustandsraumdarstellung des linear. Kranmodells
%--------------------------------------------------------------------
if (nargin~=1)
Cr=0.00035;Fr=36.5;M0=7;M1=0.061;
ls=0.22;O=0.0039;g=9.81;...
end
% Anwenderdaten des handles-Strukt auslesen
...
N=M1*ls;
N012=O*M+N^2;
% Matlab-Statespace-System erzeugen
sys=SS(A,B,C,D);
...
return
b) Funktion 'Polplazierung'
%------------------------------------------------------
% Zustandsreglerdesign mit Full-State-Feedback für Kran
% Entwurf mittels Polvorgabe (Poleplacement)
% Eingabe (Systemmatrixen A,B)
% Ausgabe (Konstante Reglermatrix K)
%------------------------------------------------------
%((str2num(answer{1,1})>=0)|(str2num(answer{2,1})>=0)|(str2num(answer{3,1})>=0)|
(str2num(answer{4,1})>=0)),
answer=inputdlg(prompt,dlgTitle,1,def);
% Komma durch Punkt ersetzen
answer=strrep(answer,',','.');
if and(iscell(answer), ~isempty(answer))
fehlereingabe=0;
else
%Fehlermeldung ausgeben, je nach Fehler
fehlereingabe=1;
end
end
Pol1 = str2num(answer{1,1});
Pol2 = str2num(answer{2,1});
Pol3 = str2num(answer{3,1});
Pol4 = str2num(answer{4,1});
P=[Pol1 Pol2 Pol3 Pol4];
Markus Stark 5032520 19
K=place(A,B,P);
return
c) callback-Routine 'BodePlot'
Jedes grafische Objekt eines GUI hat eineListe von Objekteigenschaften (property), die
das Objektverhalten definieren. So hat jedes Objekt callbacks, die festlegen wie auf ein
bestimmtes Userverhalten reagiert wird. Die Erstellung intuitiver interaktiver grafischer
Anwendungen wird durch Verwendung der callbacks bedeutend vereinfacht.
Kranregelung('BodePlot_Callback',gcbo,[],guidata(gcbo))
Fogende callback-Routine steht exemplarisch für fast alle callbacks die im Anwendungs-
M-file durch aktivierte GUI-Objekte (Uicontrols; Uimenu, ...) ausgelöst werden:
%----------------------------------------------------------
% BodePlot_Callback wird durck pushbutton 'Bodeplot' ausgelöst
% Die handles-Datenstruktur wird übergeben und somit ist ein
% Zugriff auf die GUI-Objekte und Anwenderdaten möglich
Markus Stark 5032520 20
%----------------------------------------------------------
% show buttons
set(handles.text1,'String','Bodeplot');
set(handles.pushbutton_Hauptmenu,'visible','on');
return
Nach Eingabe des Befehls Kranregelung am Matlab-Prompt öffnet sich das Hauptfenster (s.
Abb. 3.3) mit dem Haupt-Menü der Anwendung. Von hier kann über die Menüleiste oder das
Bedienfeld in die Untermenüs verzweigt werden. Es wird in jedem Fenster eine
kontextabhängige Hilfe angeboten. Es kann aus jedem Untermenü zurück ins Hauptfenster
gesprungen oder das Programm beendet werden. Die System- bzw. Anwenderdaten werden
bei Programmende automatisch in der Datei 'Kranparameter.MAT' gesichert. Falls diese Datei
nicht vorhanden ist, wird sie aus Defaultwerten generiert.
3.3.1 Systemparameter
Markus Stark 5032520 21
3.3.2 Systemlinearisierung
In diesen Untermenü wird die Linearisierung der Krananlage (s. Abb. 3.5) stufenweise
bildlich dargestellt. Es wurde eine Slideshow implementiert, in der der Linearisierungprozeß
vom realen System bis hin zu den linearen Systemmatrizen verdeutlicht wird. Durch
vor/zurück-Buttons erreicht man jeweils das nächste bzw. vorherige Bild. Im Startbild kann
durch Mausklick auf die Systemblöcke eine Zusatzinformation abgerufen werden.
1. Blockstruktur
2. Systemvariablen
3. Zerlegung in zwei Untersysteme: Portalwagen und Pendel
4. Aufstellen der nichtlinearen Systemgleichungen von Wagen und Pendel
5. Zustandsraumbeschreibung nach Linearisierung um Arbeitspunkt
6. Systemmatrizen
Markus Stark 5032520 22
3.3.3 Systemdarstellung
Hier hat der Anwender die Möglichkeit das linearisierte System im Zustandsraum, als
Übertragungsfunktion oder als faktorisierte Übertagungsfunktion (Pole und Nullstellen)
darzu-
Markus Stark 5032520 23
stellen. Zusätzlich besteht die Wahl zwischen der zeitkontinuierlichen und zwei zeitdiskreten
Darstellungen. Das Kransystem kann durch Eingabe der Abtastfrequenz in [Hz] in die digitale
Form gebracht werden. Es stehen zwei Konvertierungsmethoden zur Verfügung:
ZOH (Zero Order Hold): Das Signal wird zwischen den Abtastwerten konstant gehalten
(Sample & Hold)
FOH (First Order Hold): Das Signal verläuft linear zwischen den Abtastwerten
Im diesem Menü können die Pole und Nullstellen des Kransystemes dargestellt werden.
Markus Stark 5032520 24
Da es sich beim Kran um ein System 4. Ordnung handelt, es einen Eingang, die Spannung
U(t), und vier Ausgänge, d.h den Zustandsvektor x(t), besitzt, wird es in seine 4 Teilsysteme
zerlegt. Diese können über ein Optionsmenü ausgewählt werden. Durch Klick auf die rechte
Maustaste erhält man weitere Informationen. Klick auf die linke Maustaste öffnet ein
Optionsmenü (s. Abb. 3.8). Hier können z.B. Teilsysteme, Charakteristiken ausgewählt oder
Grafen gezoomt werden. Diese Möglichkeit besteht immer wenn Grafen dargestellt werden,
also z.B. auch bei 'Bodeplot', 'Impulsantwort' usw.
Mit Hilfe des I/O-Selectors (s. Abb. 3.9) können Teilsysteme des SIMO-Systems genauer
dargestellt werden. Wählen Sie z.B. das Feld r(t)-U(t), so wird nur die Pole und Nullstellen
zwischen dem Eingang U(t) und dem Ausgang r(t) dargestellt. Klick auf Feld [all] stellt alle
Diagramme gleichzeitig dar. Anmerkung: Bei nur einem Systemeingang haben natürlich alle
Teilsysteme den gleichen Nenner, d.h. die gleichen Pole.
3.3.5 Nyquist-Plot
Darstellung des Nyquistplots für alle vier Teilsysteme. Es gelten die Optionen des Maustasten
von Punkt 3.3.4.
Es kann hier noch der darzustellende Frequenzbereich, d.h. die Minimal- u. Maximalfrequenz
in [Hz] eingegeben werden.
3.3.6 Bode-Plot
Darstellung des Bode-Plots für alle vier Teilsysteme. Es gelten die Optionen des Maustasten
von Punkt 3.3.4.
Markus Stark 5032520 26
3.3.7 Wurzelortskurve
Darstellung der Wurzelortskurven. Optionen des Maustasten siehe Punkt 3.3.4.
In diesen beiden Untermenüs kann jeweils der darzustellende Zeitbereich eingestellt werden.
Es gelten auch die Optionen der Maustasten (siehe Kapitel 3.3.4).
3.3.9 Reglerentwurf
• PID-Regler: Der Anwender gibt die PID-Reglerparameter in die Eingabefelder ein und es
wird automatisch die Sprungantwort des geregelten System dargestellt.
• Zustandsreglerentwurf mittels Polvorgabe nach Ackermann: Nach Eingabe der 4 Pole
wird der Reglervektor berechnet und die Sprungantwort des Regelkreises dargestellt.
• Zustandsreglerentwurf mittels Minimierung eines quadratischen Gütemaßes:
(Linear Quadratic Regulator): Nach Eingabe der Gewichtsmatrizen Q und S wird der LQ-
Regler automatisch berechnet und die Sprungantort des Regelkreises dargestellt.
Der Reglerentwurf kann iterativ durchgeführt werden, d.h. die Reglerparameter können
jederzeit geändert und das veränderte Systemverhalten sofort beurteilt werden.
3.3.10 Simulation
Das Simulink-Modell 'Kran mit Zustandsregler', 'Kran mit PID-Regler', 'Kran mit LQ-Regler'
und 'Kransteuerung'.Sie erhalten den Positions-Sollwert (VR Source) vom VRML-Modell des
Kranes und geben den simulierten und transformierten Zustandsvektor an das Modell (VR
Sink) zurück. Das im Browser animierte VRML-Modell verhält wie das reale System. Der
Vorteil der Simulation für den Anwender (Student) ist die bessere Veranschaulichung der
Regelung.
3.3.11 Bahninterpolation
Im Untermenü 'Bahninterpolation' wird das Simulink-Modell 'Online-Generator' geöffnet. Es
handelt sich hier um einen Feedforward-Regler (s. Abb. 3.17).
Abbildung 3.17: Kran mit Zero Tracking Error State Controller (Feed Forward Controller)
Markus Stark 5032520 30
Druch Drücken des grünen 'Bahninterpolation starten'-Buttons wird eine kleine GUI gestartet
durch die eine Krantrajektorie analytisch, d.h sie steht als Funktion der Zeit zur Verfügung
und somit können die Ableitungen nahezu fehlerfrei berechnet werden, definiert wird. Die
genaue Kenntnis ist für ein exaktes Regelverhalten wichtig.
Der Funktionsblock 'Parser' erzeugt daraus zu jedem Zeitpunkt k∆t einen Positions-,
Geschwindigkeits- u. Beschleunigungswert. Der Feedforward-Regler kann nun mittels dieser
Werte die Trägheits- u. Reibungskräft im Voraus berechnen. Dadurch wird die Regeldifferenz
beträchtlich verkleinert und es müssen nur noch die Fehler 0. Ordnung ausgeregelt werden.
Der Positionsfehler läßt sich mittels dieses Reglers in der Größenordnung 10-4 m halten.
4 VRML
4.1 Was ist VRML?
VRML (Virtual Reality Modelling Language) kann als eine Erweiterung der grafischen
Fähigkeiten von HTML (HyperText Markup Language) angesehen werden.
• Zweck:
VRML ist ein Datenformat zum Beschreiben dreidimensionaler Objekte und Welten. Es
wurde speziell für den Einsatz im Internet oder Intranet entworfen (geringe Bandbreite).
Sie ist als universelles Datenformat für 3D-Grafik und Multimedia geeignet. VRML ist
durch Interaktion und Animation gekennzeichnet, so daß man aufgrund der
Berücksichtigung der Zeitkomponente von einer 3D/4D-Sprache ausgehen kann.
VRML bietet neben der Repräsentation statischer und animierter Objekte weiterhin die
Möglichkeit, Verknüpfungen (Hyperlinks) zu anderen Medien wie Sound und Video
herzustellen. Darüber hinaus enthält VRML eine Schnittstelle zur Programmiersprache
JAVA. Somit ist es nicht nur möglich interaktive 3D Repräsentationen zu schaffen,
sondern eine plattformunabhängige Programmiersprache und Netzwerkzugriffe zu nutzen.
VRML-Browser bzw. Plugins aber auch Programme zum Erstellen von VRML-Dateien
sind für alle Rechnertypen erhältlich. Andere 3D-Datenformate wie etwa OpenGL sind
aufgrund ihres hohen Bandbreitebedarfs nicht für das WWW geeignet.
• Einsatzgebiete:
VRML bietet viele Anwendungsmöglichkeiten, wie z.B: Visualisierung im technisch-
wissenschaftlichen Bereich, Präsentationen, Veranschaulichung von Lehrinhalten in der
Ausbildung oder Studium, aber auch attraktivere Gestaltung von Webseiten oder
virtuellen Welten.
• Entwicklungsgeschichte:
VRML 1.0 Spezifikation 1995
VRML 97 / 2.0 Spezifikation 1997
X3D (und Java3D) Spezifikation (noch im Entwicklungsstadium)
• Design:
Generierbarkeit
Dadurch wird die Entwicklung von Anwendungs-Generatoren und –Editoren sowie der
Import von Datenformaten anderer Industrieformate ermöglicht. Hierbei sind vor allem
Konverter aus dem Bereich CAD/CAE und 3D-Modellierer gemeint.
Komponierbarkeit
In VRML erstellte Elemente sind in Kombination zu gebrauchen und können wieder
verwendet werden.
Erweiterbarkeit
Stellt die Möglichkeit zur Verfügung neue nicht in VRML definierte Objekt-Typen, wie
z.B: Video und Audio-Objekte, hinzuzufügen.
Markus Stark 5032520 32
Plattformunabhängigkeit
VRML ist auf einer breiten Palette von Systemen implementierbar und lauffähig.
Performance
Schwerpunkt liegt auf Interaktion und Plattformunabhängigkeit.
Skalierbarkeit
Es ist möglich, theoretisch unendlich große Kompositionen von 3D-Szenen zu erzeugen.
Kosten
Im Vergleich zu herkömmlichen Videodateien ist die Herstellung von VRML-
Repräsentationen um ein Vielfaches günstiger. Aber auch die spätere Nutzung durch den
Anwender, in erster Linie im Internet, erfordert wesentlich weniger Bandbreite.
• Informationsquellen
VRML 2 Spezifikation:
http://www.web3d.orgtechnicalinfo/specifications/vrml97/
Bücher:
Hartman Jon, Wernecke Josie: The VRML 2.0 Handbook: building moving
worlds on the web. Addison Wesley Developers Press, August 1996, ISBN 0-
201-47944-3
Schlüter Oliver: VRML Sprachmerkmale, Anwendungen, Perspektiven.
O’Reilly Verlag, Köln, 1. Auflage 1998, ISBN 3-89721-121-1
Brutzman Don: The Virtual Modeling Language and Java.
http://www.stl.nps.navy.mil/~brutzman/vrml/vrmljava.pdf
• Ein VRML-File ist im wesentlichen eine Sammlung von Objekten, die Knoten (nodes)
genannt werden und sich auf physische, z.B. Quader, Zylinder, Kugeln, oder
nichtkörperliche Objekte, wie z.B. Sound, Hyperlinks und Transformationen, beziehen.
• Jeder Knoten enthält Felder (fields) mit den Daten des Knotens.
• Manche Knoten sind Container-oder Gruppierungsknoten (container, grouping)
• Die Knoten sind in hierarchischen Strukturen namens Szenegraphen (szene graph)
angeordnet. Der Szenegraph enthält und ordnet alle Knoten. Knoten die früher im
Graphen aufgelistet sind dürfen, später angeordnete Knoten ändern.
VRML ist eine Beschreibungssprache und alle Deklarationen werden in der Reihenfolge
ausgeführt, wie sie erscheinen. Sie hat statische (Objekte) und dynamische (Animationen)
Eigenschaften.
1. Den Kopf (header), der dem Browser mitteilt um welche Version von VRML es sich
handelt. Der Header muß immer angegeben werden und hat folgende Syntax: #VRML
V2.0 utf8
2. Kommentare: Sie beginnen mit #.
3. Knoten: Der Rest der VRML-Datei besteht aus Knoten (nodes).
Beispiel 1:
1. Gruppenknoten (grouping node): => Sie werden benutzt um die virtuelle Welt
hierarchisch zu strukturieren. Die Kinder (children) der Gruppenknoten sind die
Transformationen (Translation, Rotation und/oder Skalierung). Jeder Gruppenknoten
definiert ein Koordinatensystem für seine Kinder. Die Koordinatensysteme des Kindes
und der Eltern gelten relativ zueinander, d. h. die Transformationen von höherer zu
niedrigerer Hierarchie im Szenegrafen summieren sich.
2. Spezielle Gruppenknoten: Der Inline-Knoten liest die Daten seiner Kinder aus dem World
Wide Web. Der LOD-Knoten (level of detail) spezifiziert die Genauigkeit und
Komplexität der Objektdarstellung und ermöglicht somit ein schnelleres Rendern der
Szene. Der Schalter-Gruppenknoten (switch) erlaubt die Auswahl der im Auswahlfeld
(choicefield) definierten Knoten, d.h je nach Schalterstellung wird z.B. ein anderes Objekt
dargestellt.
3. Allgemeingültige Knoten: Sie werden benutzt um etwa den Hintergrund (background),
das Licht (light), Ansichtspunkte (camera, viewpoint) usw. einzustellen und beziehen sich
auf die ganze VRML-Datei.
4. Sensorknoten (sensors): Ein Sensor generiert ein Ereignis (event), falls er aktiviert wird.
Es gibt geometrische Sensorknoten (ProximitySensor, TouchSensor, PlaneSensor,
SphereSensor, CylinderSensor) die abhängig von der Eingabe des Users, z.B. einen
Mausklick oder eine Annäherung an ein Objekt, ein Ereignis generieren. Zusätzlich gibt
es noch Zeitsensoren (TimeSensor), die je nach Einstellung in regelmäßigen Zeitabständen
Ereignisse auslösen.
5. Geometrieknoten (Geometry): Sie müssen einen Formknoten (Shape) enthalten, um
sichtbar zu sein. Der Shapeknoten enthält stets einen Geometrieknoten in seinem
Geometriefeld (geometry).
Markus Stark 5032520 34
• VRML-Koordinatensystem:
Der Shapeknoten muß angegeben werden um ein Objekt sichtbar zu machen. Er hat zwei
untergeordnete Knoten: den Geometrieknoten und den Appearance-Knoten.
Es gibt 4 Grundgeometrien:
1. Quader (Box):
2. Zylinder (Cylinder):
3. Kegel (Cone)
4. Kugel (Sphere)
Markus Stark 5032520 35
Beispiel 2: Bausteine.Wrl
#VRML V2.0 utf8
#Eimer: Oberer Zylinderdeckel wird nicht gezeichnet,
# da Zylinderfeld top=FALSE gesetzt
Shape {
geometry Cylinder{
height 1
radius 0.5
bottom TRUE
side TRUE
top FALSE}
appearance Appearance {
material Material { diffuseColor 0.1 0.5 0.9 }}
}
}
}
]
}
# Zeichne einen um 90° um die z-Achse gedrehten grünen Kegel ohne Boden,
# d.h. das bottom-Feld des Cone-Geometrieknotens = FALSE
Transform {
rotation 0 0 1 1.57
children [
Shape {
geometry Cone {
bottom FALSE}
appearance Appearance {
material Material { diffuseColor 0 1 0 }
}
}
]
}
Die Felder des Materialknotens definieren die Objektfarbe und die Lichtreflektionen.
Natürlich sollten vorher auch die Position und Intensität der Lichtquelle(n) festgelegt
werden, denn ohne Licht keine Reflexion.
url "http://www.fernuni-hagen.de/"
description "Link zur Fernuni-Homepage"
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0 0 1
}
}
geometry Sphere {}
}
]
}
Es gibt insgesamt 53 verschiedene Knotentypen, die den Umfang dieser Einführung aber
sprengen würden (s. Informationsquellen).
• Wiederverwendbarkeit
• Eine wichtige Fähigkeit von VRML ist Wiederverwendbarkeit von bereits definierten und
mit einem Namen bezeichneten Objekten. Der DEF-Knoten ermöglicht die Benennung
von Knoten. Dies bietet zusätzlich den Vorteil einer Dokumentation der VRML-Datei.
Mit USE können dann multiple Instanzen des benannten Knotens erzeugt und dann
wiederverwendet werden.
Beispiel 4: Stern.Wrl
}
Transform {
rotation 0 0 1 2.0944
children USE ACHSE
}
• Ein weitere Möglichkeit Code wieder zu verwenden ist Inlining, d.h bereits existierende
VRML-Welten können in die eigene Welt eingebunden werden.
• Prototyping
Je komplizierter die Welten, desto wichtiger ist es auch eigene Knotentypen kreieren und
wiederbenutzen zu können. Der PROTO-Knoten erlaubt die Definition eigener Knoten
mit beliebigen Feldtypen und Feldnamen. Anders formuliert können PROTO-Knoten die
Fähigkeiten der VRML-Sprache nahezu beliebig erweitern. Die Syntax des Proto-Knotens
stimmt mit der Syntax der anderen Knoten (s. Materialknoten) überein:
PROTO prototypename [ field fieldtypename name defaultValue
field fieldtypename name defaultValue
]
{node}
Punkten hin und her bewegt werden, würden die Angabe von Anfangs- und Endpunkt
genügen. Die Zwischenschritte werden daraufhin interpoliert.
Am folgenden Beispiel 5 sollen die zur Animation notwendigen Schritte gezeigt werden. Es
werden dabei folgende Objekte benötigt [Schlüter Oliver, 1998, S.59]:
Um die Routen verbinden zu können, müssen die Objekte mittels DEF einen Namen
erhalten.
Beispiel 5: Animation.Wrl
#VRML V2.0 utf8
#Animation mit TimeSensor: Eine Drehung um die Z-Achse in
# 20 Sekunden
DEF robjekt Transform {
children [
...
]
}
DEF rtimer TimeSensor {
loop TRUE
cycleInterval 20
}
DEF rengine OrientationInterpolator {
key [0,.25,.5,1]
keyValue [0 1 0 0, 0 1 0 2.094,0 1 0 4.188, 0 1 0 0]
}
ROUTE rtimer.fraction_changed TO rengine.set_fraction
ROUTE rengine.value_changed TO robjekt.set_rotation
Durch den TimeSensor wird ein Zeitintervall auf 20 Sekunden gesetzt und permanent
wiederholt (loop TRUE). Im OrientationInterpolation werden vier Skalenabschnitte
mittels key definiert die Bruchteilen des Zeitintervalls entsprechen. Die Skalenabschnitte
korrespondieren mit denen in keyValue vorgegebenen Positionen des Objektes. Durch die
Routeverbindungen entstehen folgende Nachrichtenverbindungen zwischen den Objekten:
4.2.4 Skript-Knoten
Der Scriptknoten besitzt die gleichen Eigenschaften wie die anderen Knoten und kann
über die Ereignisse angesprochen werden und daraufhin entsprechende Ereignis-Kaskaden
auslösen. Im URL-Feld kann anstatt einer Adresse auch Programmcode einer
Scriptsprache wie JavaScript oder VrmlScript stehen.
x-Achse:
• Laufkatze
• Pendel
• Endschalter
• Näherungsschalter
• 2 Schlitten mit darauf befestigter Laufschiene, Umlenkrollen und Zahnriemen
• x-Antrieb
y-Achse:
• Laufschiene mit Umlenkrollen und Zahnriemen (2x)
• 2 Endschalter
• 2 Näherungsschalter
• y-Antrieb
• Verbindungswelle der beiden parallelen y-Achsen
Krantisch:
• Auf dem Krantisch sind die beiden y-Achsen montiert, auf der wiederum die x-Achse
montiert ist.
Sollpositionsmarkierung:
Markus Stark 5032520 42
• Der grüne Kegel auf der Bodenplatte markiert die Endposition der Laufkatze.
Alle animierten VRML-Knoten befinden sich auf der x-Achse, d.h. es wird entweder die
x-Achse selbst in y-Richtung verschoben, die Laufkatze in x-Richtung und das daran
befestigte Pendel um seine Drehachse gedreht. Die Näherungs- u. Enschalter, als auch die
Motoren und Übersetzungen werden in dieser Version noch nicht animiert. Der
Verfahrweg in x- Richtung ist 2m und in y-Richtung 3m lang. Der Koordinaten-Ursprung
befindet sich in der Mitte, d.h x∈[-100cm, 100cm] und y∈[-150cm, 150cm]. Mehrmals
vorhandene Baugruppen (Schalter, Umlenkrollen, Schienen) wurden wiederverwendet.
Alle geometrischen Objekte wurden in [cm] definiert.
Die Komplexität der Modellierung wurde möglichst einfach gehalten, da sie sich
wesentlich auf die Geschwindigkeit der Animation auswirkt und aufgrund der Größe des
Modells kleinere Einzelheiten sowieso nicht gut zu erkennen sind.
• Endschalter:
• Näherungssensor:
Wie bereits erwähnt, ist für möglichst realistische Darstellungen der Einsatz eines CAD-
Programmes mit VRML-Filter unabdingbar.
Die Virtual Reality Toolbox ist eine Werkzeug zur Visualisierung und Interaktion mit
dynamischen Systemen in einer 3-dimensionalen virtuellen Umgebung. Diese Systeme
werden mit MATLAB und Simulink beschrieben. Mittels der VRML-Technologie können
realistisch animierte 3-dimensionale Welten erzeugt und von MATLAB und Simulink
gesteuert werden.
• Simulink Interface
Sie können eine Simulation ihres dynamischen Systems mittels eines realistischen 3D-
Modells durchführen. Ein Großteil der VR-Toolbox-features kann mit Simulink-Blöcken
(VR-Sink, VR-Source,..) implementiert werden. Fügt man diese Blöcke in ein Simulink-
Modell ein, so erhält man die Möglichkeit Signale zwischen Simulink und der virtuellen
Welt auszutauschen und diese 'zum Leben zu erwecken'.
Die VR-Toolbox durchsucht die ausgewählte virtuelle Welt nach ansteuer- bzw. lesbaren
VRML-Knoten. Diese Knoten (nodes) können hierarchisch aufgelistet werden. Durch
einfaches Anklicken wählt man die Freiheitsgrade die mit Simulink gesteuert werden
sollen aus. Nachdem die anzusteuernden (VR-Sink) bzw. zu lesenden (VR-Source)
Knoten ausgewählt wurden, verbindet man sie mit passenden Simulink-Signalen. Die
Simulation kann mittels eines Browsers mit VRML-Plugin visualisiert werden.
• MATLAB Interface
Es besteht auch unter MATLAB die Möglichkeit die VR-Toolbox und damit das VRML-
Modell direkt über Befehle anzusprechen.,
Die VR-Toolbox stellt zwei Simulink-Block-Typen zur Verfügung, die die Verbindung mit
der virtuellen Welt vereinfachen:
• VR-Source:
Dieser Block sendet Signale an das Simulink-Kranmodell, d.h. es werden die Feldinhalte
des gewünschten Knotens ausgelesen. Nur auf die Felder der mit DEF gekennzeichnete
Markus Stark 5032520 46
Knoten kann ein Schreib- bzw. Lesezugriff erfolgen. Durch Doppelklick auf den VR-
Source-Block öffnet sich ein Fenster, in dem das darzustellende VRML-Modell
ausgewählt werden kann. Ist die VRML-Welt ausgewählt, öffnet sich eine Baumstruktur
(s. Abb. 4.15) der VRML-Knoten. Hier können die Knoten markiert werden, die an
Simulink Signale senden sollen. Unser Simulink-Modell benötigt als Eingangssignal die
Sollposition. Diese wird im VR-Modell als kleiner grüner Kegel symbolisert (s. Abb.
4.16). Der zu markierente VRML-Knoten der Kegelposition lautet also
Marker.translation. Der Kegel kann mit der Maus (Mausklick auf Touchsensor-
Fläche) innerhalb der X/Y-Fahrgrenzen des Kranes positioniert werden. Die Sollposition
wird automatisch an Simulink weitergeleitet.
• VR-Sink:
Dieser Block empfängt Signale aus Simulink, d.h. er beschreibt die Felder des VRML-
Modells. Mit Hilfe dieses Blocks wählt man das VRML-Modell und die Felder ,die
Signale empfangen sollen, aus (wie VR-Source).
Im VRML-Kranmodell werden nur drei Felder beschrieben und ein Feld gelesen. Um die
Animation mit dem VRML-Modell zu verbessern, bietet sich ein Fülle von Möglichkeiten an.
In diesem Abschnitt wird die konkrete Realisierung mit Hilfe der VR-Toolbox und
Matlab/Simulink beschrieben. Das Simulink-Modell 'Kran mit Zustandsregler' (Abb.: 4.17)
steht als Beispiel für die anderen Simulink-Modelle mit PID- o. LQ-Regler.
Die Variable u ist die vektorielle Ausgangsgröße des jeweiligen Multiplexers. u[1] ist also
die Kraft F auf den Kranwagen in der oberen Funktionsgleichung, u[2] entspricht der
Zustandsgröße ϕ'(t) usw.
Dieser Block ist der Zustandsregler K für die x-Achse, der mittels der Polvorgabe nach
Ackermann entworfen wurde. Er führt folgende Operation aus:
• Block 'Vorfilter x'
r (t )
ϕ (t )
r = K ⋅ x(t ) = [K 1 K 2 K 3 K 4 ] ⋅
r&(t )
ϕ&(t )
Mit K1 bis K4 sind nun die 4 Pole (Kran mit Pendel ist System 4. Ordnung) des
geschlossenen Regelkreises festgelegt. Der stationäre Zustand entspricht aber noch nicht
dem Sollzustand (hier: Position) – zum Einstellen des Sollwertes ist also noch ein
Freiheitsgrad notwendig -> das Vorfilter! Das Vorfilter ist ein einfacher Verstärker mit
dem Wert K1.
Funktionsblock:
Markus Stark 5032520 49
Hier hätte man zur Modellierung auch einen Zustandsraumblock verwenden können,
da die Differentialgleichung der y-Achse linear ist, wenn man die von Getriebe und
Reibung verursachten Nichtlinearitäten vernachlässigt.
• Blöcke 'Koordinaten-Transformation'
Die x-Achse stimmt in beiden Koordinatensystemen überein (auch mit der Kran-x-
Achse). Das VRML-Modell wurde aber in [cm] konstruiert, d.h. die Matlabkoordinaten
müssen mit dem Faktor [m]/[cm]=100 in die VRML-Koordinaten umgerechnet werden
und umgekehrt.
VRML erwartet für Translationen einen 3D-Vektor mit folgenden Foramt: T=[x y z] in
[cm]. Mit der Kranposition (x-Achse) rx(t) in [m] folgt also für Tx (s. Abb. 4.21 oben):
Tx=100*[rx(t) 0 0]
Die y-Achse des Kranes stimmt mit der –z-Achse im VRML-Modell überein. Mit rx(t) in
[m] folgt also für den VRML-Translationsvektor Ty (s. Abb. 4.22):
Ty=-100*[0 0 ry(t)]
• Block VR Source
Dieser Block gibt die aktuelle Sollposition des Kranes in der VRML-Syntax für
Translationen, d.h. als 3-dim. Vektor T=[x y z]/[cm], an Matlab weiter.
• Block VR Sink
4.5.3 Bedienungsanleitung:
Um die virtuelle Welt animieren zu können, müssen im Simulink- bzw. VRML-Modell
folgende Schritte ausgeführt werden:
Simulink:
• Im Simulink-Modell auf den VR Sink o. Source Block doppelklicken -> der
Blockparameter-Dialog erscheint.
• Auf den View button klicken -> die mit Simulink verbundene virtuelle Welt wird im
Web-Browser geöffnet.
• Im Simulink Simulationsmenü den Start-Button drücken -> Die Simulation läuft und wird
mittels der Simulink-Signale animiert.
• Es ist sinnvoll das Simulink-Fenster und das VRML-Modell nebeneinander darzustellen.
VRML-Browser:
• Durch Mausklick auf die Touchsensorfläche wird die neue Kran-Sollposition definiert und
durch einen kleinen grünen Kegel markiert. Der virtuelle Kran nimmt die neue
Sollposition ein.
• Rechter Mausklick öffnet ein Menü. Hier können Navigationsmodi, Viewpoints und die
Qualtiät und Geschwindigkeit der Grafik eingestellt werden.
• Der mittlere Knopf und die beiden rechten Buttons dienen zur Navigation.
Markus Stark 5032520 52
• Der kleine kreisförmige Button blendet das Kontrollfeld aus bzw .ein.
5.1 PID-Regler
Entwurfskrierien: Die Regelung soll möglichst geringes Überschwingen des Pendels in der
Endstellung erreichen und nicht zu langsam sein.
Die Regler werden mittels der Wurzelortskurve entwickelt, da der Entwurf nach dem
Betragsoptimum nicht das gewünschte Ergebnis gebracht hat. Positions- u. Winkelkreis lassen
sich nicht entkoppeln, da das System nur einen Eingang hat. Als Winkelregler wird ein P-
Regler verwendet.
Markus Stark 5032520 53
Aus der Wurzelortskurve des Winkelkreises ist im Verstärkungsbereich von etwa k=2 bis
Die Wurzelortskurve des Positionskreises neigt für k-Werte >2 zum Schwingen. Da die
Strecke schon einen I-Anteil enthält wird ein PD-Regler gewählt der die
Streckenzeitkonstante kürzt. Hiermit erhält das Gesamtsystem annähernd PT1-Verhalten.
5.1.2 Simulationsergebnisse
Die Regelung ist trotz der Kopplung zufriedenstellend. Der maximale Pendelausschlag
beträgt 0.25 rad schwingt aber im Vergleich zu den Zustandsreglern länger nach (s 5.2.3 und
–5.3.3).
Markus Stark 5032520 55
5.2.1 Grundlagen
Das dynamische Verhalten eines Systems wird durch seine Eigenwerte definiert. Diese
Eigenwerte sind die Nullstellen des charakteristischen Polynomes der Systemmatrix A.
Grundgedanke dieser Entwurfsmethode ist also: Um die Dynamik eines Systems im Sinne des
Anwenders zu verbessern, müßte man die Eigenwerte und damit die Systemmatrix vorgeben.
Die Eigenwertvorgabe (Polvorgabe) erreicht man durch negative Rückkopplung (s. Abb. 5.6)
des Zustandsvektors x(t) mit einem konstanten Reglervektor r. Voraussetzung ist natürlich die
Steuerbarkeit des Systems. Falls das System nur eine Steuergröße hat, vereinfacht sich der
Reglerentwurf beträchtig und es gilt nach Ackermann [6]:
x0
- x(t)
(5.1)
x&(t ) = A ⋅ x(t ) + b ⋅ u (t )
(5.2)
u (t ) = −r ⋅ x(t ) (5.3)
x&(t ) = ( A − b ⋅ r ) ⋅ x(t )
(5.4)
det[s ⋅ I − A] = s n + a n −1 s n −1 + ... + a 0
det[s ⋅ I − ( A − b ⋅ r )] = s n + p n −1 s n −1 + ... + p 0
r = [ p 0 − a 0 , p1 − a1 ,..., p n −1 − a n −1 ] = [r1 r4 ]
T
r2 r3
Markus Stark 5032520 56
(5.5)
(5.6)
Wird das System (Gleichung 5.1) über den Reglervektor r (Gleichung 5.2) rückgekoppelt, so
erhält man die neue Systemgleichung (5.3). Die Koeffizienten der charakteristischen
Gleichungen (5.4) und (5.5) legen dann den Reglervektor r (5.6) fest (es gilt w=0).
Im stationären Zustand (t→∞) des Kransystemes sind alle Zustände bis auf x1 = y gleich Null.
Die allgemeine Herleitung des Vorfilters findet man z.B. in [6,
u ∞ = M ⋅ w∞ − r1 x1∞ = 0 S.467]. Es gilt:
y ∞ = x1∞ = w∞
M = r1
(5.7)
Das Vorfilter M ist bei einem Eingrößensystem und y(t)=x1(t) gleich r1.
Hiermit ist der Zustandsreglerentwurf nach Ackermann abgeschlossen.
5.2.2 Reglerentwurf
In diesem Abschnitt wird der Reglerentwurf für das Kransystem mit seinen Defaultwerten
durchgeführt.
Wie zu erkennen ist, handelt es sich um System 4.Ordnung. Die charakteristische Gleichung
des Ursprungsystems (Gl. 5.4) s^4 + 5.225 s^3 + 33.99 s^2 + 171.1 s hat also die
Koeffizienten: a3=5.225; a2=33.99; a1=171.1; a0=0
Die Pole des neuen Systems sollen alle in der negativen Halbebene, nicht komplex und etwa
gleich sein, d.h. die Dynamik des neuen Systems enthält keine Schwingungen und alle
Markus Stark 5032520 57
Zustandsgrößen nehmen nach ungefähr gleicher Zeit den Endzustand an. Diese Endverhalten
ist gerade bei der Laufkatze mit Pendel wünschenswert, da ein Überschwingen des Pendels in
der Endposition somit vermieden wird.
Polvorgabe: Es werden 4 Pole in der Nähe der negativen, reellen Achse bei λi=-4 gewählt.
Zu beachten ist, das kein mehrfacher Pol gewählt wird. Daraus folgt für die Koeffizienten pi
dem Reglervektor r und dem Vorfilter M:
Man kann r mittels des Matlabbefehls r=PLACE(A,b,P)oder mit (Gl. 5.6) bestimmen:
Es kann durch geschickte Polwahl bereits auf Anhieb ein gutes Resultat erzielt werden.Wenn
das Systemverhalten den Erfordernissen noch nicht genügt, wird man die Polplazierung
solange variieren bis ein zufriedenstellendes Ergebnis erreicht wird.
5.2.3 Simulationsergebnisse
Wie zu erkennen, wird ein sehr gutes Übergangsverhalten, d.h. kein Überschwingen des
Pendels an der Endposition, erreicht. Das Pendel hat einen Maximalausschlag von 0.25 rad =
14°. Alle Systemzustände haben nach ca. 3 Sekunden ihren stationären Zustand erreicht.
Markus Stark 5032520 58
Durch Linksverschieben der Pole könnte auf Kosten des Pendelausschlags das Zeitverhalten
verbessert werden.
Abbildung 5.8: Stellgröße u(t) des Krans mit Zustandsregler nach Ackermann
5.3.1 Grundlagen
Das Gütemaß besteht aus zwei Forderungen und ist folgendermaßen definiert:
• Minimierung der erforderlichen Steuerenergie
• Optimieren des zeitlichen Übergangs (nicht zu langsam und ohne starke Schwingungen)
Diese beiden Forderungen kann man mathematisch durch ein quadratisches Gütemaß
ausdrücken:
∞
1
20
T
(
J = ∫ x Q x + u S u dt
T
) (5.8)
−1 T
u = −S B P ⋅ x = − R ⋅ x (5.10)
5.3.2 Entwurf
Der Kran soll ein möglichst schwingungsarmes Übergangsverhalten und nicht zu langsam
sein. Dies widerspricht aber gleichzetig Forderung zwei nach einem geringen
Energieverbrauch. Ein schnelles, schwingsarmes Übergangsverhalten soll in dieser
Anwendung wichtiger als der Energieverbrauch sein. Daraus folgt für die Gewichtsmatrizen
Q und S:
Matlab bietet ein numerisches Lösungsverfahren der Riccati-Gleichung unter dem Befehl LQR
an. Durch Eingabe von [r,S,E] = LQR(A,b,Q,S,[0;0;0;0]) wird r bestimmt.
Q und S müssen positiv definit sein. Systemmatrix A und Eingangsvektor b wie bei
Polvorgabe. Es ergibt sich für den Reglervektor r:
Da auch hier kein Soll/Istwertvergleich stattfindet (s. Polvorgabe), muß noch ein konstanes
Vorfilter M = r1 bestimmt werden (s. Abb. 5.6).
M = r1 = 3.873
5.3.3 Simulationsergebnisse
Markus Stark 5032520 60
Das Übergangsverhalten ist im Vergleich zum ersten Zustandsregler (Abb. 5.8) etwa um den
Faktor 1.5 schneller. Das Pendel hat dafür einen höheren Maximalausschlag von 0.5 rad. Die
Entwurfskriterien, d.h. kein Überschwingen in Endstellung und dynamisches Verhalten,
werden erreicht.
Alle Stellgrößen der drei vorgenannten Reglertypen haben ähnliche Struktur. Das lokale
Minimum zu Beginn verhindert zu starken Pendelausschlag.
Markus Stark 5032520 61
5.4 Feedforward-Regler
5.4.1 Grundlagen
Das Modell 'Kran mit Zero Tracking Error State Controller' wird im Menüpunkt
Automatische Bahninterpolation verwendet.
Bei analytisch bekannter Trajektorie x(t) (wird vorher bzw. on-line berechnet) können die
Trägheitskräfte FT = m*x"(t) = m*a(t) und Reibungskräfte FR = Fr*x'(t) = Fr*v(t) berechnet
werden. Die Regler müssen nur noch die Fehler 0. Ordnung ausregeln. Die Positionsfehler
(Tracking Error) und Geschwindigkeitsfehler können falls das Systemmodell genau bekannt
sind, sehr klein gehalten werden.
5.4.2 Entwurf
Eg(s) Geschwindigkeitsfehler
Rp(s) Positionsregler
Rg(s) Geschwindigkeitsregler
B=Fr
daraus folgt:
E p (s) 1 − G p ( s )( sB + s 2 M ) (5.11)
=
X (s) 1 + G p ( s )( R p + s ) R g
Eg(s)=EpRp+sX-sR=Ep(Rp+s) (5.12)
0.1407 0.1407
G p _ red ( s ) = → G g _ red ( s ) = G p _ red ( s ) ⋅ s =
s ( s + 5.117) s + 5.117
Fo _ g ( s ) = G g _ red ( s ) ⋅ R g ( s )
1
Fg _ g ( s ) =
1
+1
Fo _ g ( s )
Ig
K g (s + )
Ig Kg
Rg ( s) = K g + =
s s
Es bietet sich hier als Geschwindigkeitsregler Rg ein PI-Regler an, der den Pol von Gg_red
kürzt - zumindest theoretisch. Daraus folgt:
Ig
= 5.117
Kg
0.1407 ⋅ K g
Fo _ g ( s ) =
s
0.1407 ⋅ K g
Fg _ g ( s ) =
s + 0.1407 ⋅ K g
Markus Stark 5032520 63
Je größer Kg , desto schneller wird Sollgeschwindigkeit erreicht und desto kleiner werden
die Fehler von Position und Geschwindigkeit (näturlich Kg nicht zu groß wählen, da sonst
evtl. Reglerausgang an seine Grenzen fährt). Mit Ig=Kg*5,117 sind die beiden Parameter
von Rg bestimmt!
Bei der Wahl eines P-Reglers erhält der geschlossene Regelkreis PT2-Verhalten.
Durch Wahl von z.B. Kp=1/(4*Tg) bekommt die Übertragungsfunktion R(s)/X(s)
aperiodisches PT2-Verhalten mit der Zeitkonstanten Tg.
R( s) 1
= 2
X ( s)
s + 1
2Tg
5.4.3 Simulationsergebnisse
Die hier aufgeführte Methode zur Trajektorie-Generierung basiert auf einer Arbeit von Sonja
Mcfarlane [4]. Maximalwerte für Beschleunigung, Geschwindigkeit und Beschleunigungsrate
(jerk) werden entlang der ganzen Trajektorie eingehalten. Die Trajektorie wird durch eine
sequentielle Folge von Wegpunkten definiert. Sie besteht somit aus einer Folge von linearen
Teilstücken, die durch Splines (Übergangsfunktionen) an den Wegpunkten verbunden sind.
Um einen sanften sinusförmigen Trajektorieverlauf zu ermöglichen, wird jede Teiltrajektorie
zwischen zwei Wegpunkten durch Kontrollpunkte unterteilt. Für jeden Kontrollpunkt wird
durch einen Planer die Zeit, Position, Geschwindigkeit und die Beschleunigung bestimmt.
Aus diesen Werten können dann die Polynomparameter bzw. Splineparameter bestimmt und
an den Parser übergeben werden. Der Parser arbeitet die Liste der Kontrollpunkte ab, neue
können on-line hinzugefügt werden.
Markus Stark 5032520 64
In Abbildung 5.11 wird ein ein typischer Trajektorieverlauf gezeigt. Die Einhaltung der
Maximalwerte für die Geschwindigkeit smax=s2, die Beschleunigung amax und die
Beschleunigungsrate jmax ist deutlich zu erkennen.
5.5.1 Planer
Der Planer entscheidet ob die vom Scheduler (Definition des Trajektorieverlauf durch den
User, z.B. mittels GUI oder als Wegpunkte-Strukt) übergebenen Wegpunkte mit der
angegebenen Geschwindigkeit und Genauigkeit angefahren werden können, ohne die
kinematischen Grenzwerte zu überschreiten. Gegebenfalls werden die Geschwindigkeiten
angepaßt oder auch sich deckende bzw. benachbarte Wegpunkte gelöscht. Daraufhin werden
die Kontrollpunkte (sie enthalten Zeitpunkt, Position, Geschwindigkeit und Beschleunigung)
der Teiltrajektorien berechnet und an den Parser übergeben.
On-line Trajektorie-Generation ist die Berechnung des nächsten Trajektoriesegments (wird
durch zwei Kontrollpunkte definiert) während das Kransystem das aktuelle Segment ausführt
[2]. Folgen mehrere Segmente sehr kurz hintereinander, ist es dem Planer evtl. nicht möglich
Markus Stark 5032520 65
in der kurzen Zeitspanne, die gewünschten Kontrollpunkte zu berechnen. Es ist also sinnvoll,
je nach Schnelligkeit des Planers, eine Anzahl N von zukünftigen Kontrollpunkten im voraus
zu planen. Zusätzlich ist es notwendig, daß der letzte Wegpunkt immer ein Stopppunkt mit
Endgeschwindigkeit v=0 ist. Neue Wegpunkte können nach der Planung an die
Kontrollpunkt-Datenstruktur mit angepaßter Endpunktgeschwindigkeit angehängt werden.
Der Parser arbeitet die Kontrollpunkte nacheinander bis zum letzten Trajektoriesegment ab
und wartet auf neue Kontrollpunkte.
5.5.2 Parser
Um eine Trajektorie zwischen zwei Punkten zu berechnen, die die Start-u. Endpunkt-
bedingungen, d.h. Position, Geschwindigkeit und Beschleunigung für den Start- u. Endpunkt;
einhalten, sind 6 Freiheitsgrade notwendig. Es ist also mindestens ein Polynom 5. Ordnung
nötig, um allen Nebenbedingungen zu genügen. Ein Polynom 5. Ordnung bietet zusätzlich
den Vorteil einer ruckarmen Bewegung. Indem man den Polynomen passende Start- u.
Endbedingungen zuweist, ist es möglich einen sanften Trajektorieverlauf zu garantieren.
Für die Übergangsfunktionen von einem linearen Teilstück der Trajektorie zum nächsten wird
ein Spline 6. Ordnung [3] verwendet. Durch geeignete Parameterwahl können auch hier die
kinematischen Grenzwerte eingehalten werden.
Sind die kinematischen Größen (p,s,a) für alle Kontrollpunkte durch den Planer festgelegt,
können für alle linearen Teiltrajektorien die Polynomparameter durch den Parser berechnet
werden:
q (t ) = b0 + b1t + b2 t 2 + b3t 3 + b4 t 4 + b5 t 5
1 t1 t1
2
t1
3
t1
4
t1
5
b0 p1
2 3 4
0 1 2t1 3t1 4t1 5t1 b1 s1
0 0 2 6t1 12t1
2
20t1 b2 a1
3
2 3 4 5 =
1 t 2 t2 t2 t2 t 2 b3 p 2
0 1 2t 2 3t 2
2
4t 2
3
5t 2 b4 s 2
4
2 3
0 0 2 6t 2 12t 2 20t 2 b5 a 2
Die Parameter p1, s1 , a1 sind die Anfangswerte zum Startzeitpunkt t1 für Position,
Geschwindigkeit und Beschleunigung entlang der Trajektorie. Entsprechend handelt es sich
bei p2, s2 , a2 um die Endwerte zum Endzeitpunkt t2. Die Werte gelten entlang der Trajektorie
und sind folglich skalare Größen.
Das lineare Gleichungsystem 6. Ordnung läßt sich durch Nullsetzen von t1 in ein System 3.
Ordnung vereinfachen und somit die Lösung beträchtlich beschleunigen.
Mit pS als Startpunktvektor und pE als Endpunktvektor der Teiltrajektorie und q(t) als
Polynom 5. Ordnung, gilt somit zum Zeitpunkt tk in einem orthogonalen zweidimensionalen
Koordinatensystem für den Positions-, Geschwindigkeits- u. Beschleunigungsvektor:
Positionsvektor p(t):
ρ ρ
ρ p x (t k ) ρ ( p E − pS )
p(t k ) = = pS + ρ ρ q(t k )
p y (t k ) pE − pS
Markus Stark 5032520 66
Geschwindigkeitsvektor s(t):
ρ ρ
ρ s x (t k ) ( p E − p S )
s (t k ) = = ρ ρ q&(t k )
s y (t k ) p E − p S
Beschleunigungsvektor a(t):
ρ ρ
ρ a x (t k ) ( p E − p S )
a (t k ) = = ρ ρ q& &(t k )
a y (t k ) p E − p S
wobei gilt:
t2
t k = k∆t , 0≤k ≤
∆t
Die Teiltrajektorie beginnt also für t=0 im Startpunkt und endet füt t=t2 imEndpunkt. An den
Parser müssen also pro linearer Teiltrajektorie nur folgende Parameter übergeben werden: pE ,
pS, b0 bis b5 und t2.
5.5.2.2 Splinefunktion x(σ k) zwischen zwei linearen Teiltrajektorien qi(t) und qi+1(t):
Es wird eine Übergangsfunktion 6. Ordnung nach Hayward und Lloyd [3] verwendet. Sie
bietet wie das Polynom 5 .Ordnung den Vorteil alle kinematischen Grenzwerte entlang der
Trajektorie einzuhalten und garantiert deshalb ein sanftes Übergangsverhalten von einem
Teilstück zum nächsten.
5.5.2.3 Splinefunktion x(σ k) zwischen zwei linearen Teiltrajektorien qi(t) und qi+1(t):
Es wird eine Übergangsfunktion 6. Ordnung nach Hayward und Lloyd [3] verwendet. Sie
bietet wie das Polynom 5 .Ordnung den Vorteil alle kinematischen Grenzwerte entlang der
Trajektorie einzuhalten und garantiert deshalb ein sanftes Übergangsverhalten von einem
Teilstück zum nächsten.
Markus Stark 5032520 67
Der Näherungsradius (tightness) legt fest, wie genau ein Wegpunkt angefahren werden muß.
Je größer er ist, desto schneller kann der Übergang gefahren werden, ohne die kinematischen
Grenzwerte zu überschreiten.
Die Schnittpunkte des tightness-Kreises mit der Trajektorie, bestimmen die Anfangs- u.
Endpunkte p1a, p1b der Übergangsfunktion. Die Punke p1a, p1b sind somit auch die neuen
Start- u. Endpunkte der linearen Trajektoriesegmente.
p0, p1 und p2 sind Wegpunkte der Trajektorie. Die Beschleunigung in den Anfangs- u.
Endpunkten der Trajektoire soll 0 und die Anfangs- u. Endeschwindigkeiten gleich sein. Die
Übergangszeit von p1a nach p1b ist 2τ. Die Übergangsfunktion ist zeitskaliert und muß nach
Berechnung rückskaliert werden.
tk 2τ
σk = , t k = k∆t , 0≤k ≤ ,
2τ ∆t
ρ ρ ρ
x1 (σ k ) = b1 + m1σ k ,
ρ ρ ρ
x 2 (σ k ) = b2 + m2σ k ,
α (σ k ) = 6σ k 5 − 15σ k 4 + 10σ k 3 ,
β (σ k ) = σ k 6 − 3σ k 5 + 3σ k 4 − σ k 3 ,
ρ ρ ρ ρ ρ
b1 = p1a , b2 = p1b − 2τv1b ,
ρ ρ ρ ρ
m1 = 2τv1a , m2 = 2τv1b ,
ρ ( pρ1 − ρ
p1a )
v1a (t ) = s ρ ρ , vρ = m ρ ρ
p1 − p1a d 2 − m1 ,
ρ ( pρ1b − pρ1 )
v1b (t ) = s ρ ρ , κ = 15 / 2.
p1b − p1
wobei:
ρ ρ t ρ
x (t ) = x ( ) = x (σ ),
2τ
ρ d ρ 1 ρ
v (t ) = x (σ ) = v (σ ),
dt 2τ
ρ d ρ 1 ρ
a (t ) = v (σ ) = a (σ ).
dt 2τ
An den Parser müssen also pro Übergangsfunktion nur die Parameter b1, b2, m1, m2 und τ
übergeben werden, um zum Zeitpunkt tk die Vektoren x, v und a zu bestimmen.
Markus Stark 5032520 69
Scheduler
Wegpunkt-Struct:
Position, Geschwindigkeit, Genauigkeit
Planer
Kontrollpunkt-Matrix:
Polynom- u. Splineparameter, Zeitpunkte
Parser
Trajektorie-Vektor:
p(tk), v(tk), a(tk)
System Kran
5.5.3.1 Datenstrukturen
Die Wegpunkte werden vom User vorgegeben, vom Planer auf Machbarkeit geprüft, evtl.
angepaßt und an den Parser mittels der Kontrollpunktmatrix übergeben. Sie enthält die
Koordinaten der Wegpunkte mit der zugeordneten Geschwindigkeit und dem jeweiligen
Näherungsradius (tightness). Start- .u Endgeschwindigkeit werden immer auf s1=sN=0
gesetzt. Ebenso Start- .u Endtightness r1=rN=0, da diese Punkte exakt angefahren werden.
• Kontrollpunkt-Matrix:
Um z.B. in Matlab auf die Polynom-Koeffizienten bi zuzugreifen, muß man beachten, daß
in Matlab der Index mit 1 startet. Wenn c die Kontrollpunkt-Matrix ist, folgt: b=c(1,2:7).
Es wird also auf die aktuelle, d.h. die erste Zeile der Matrix zugegriffen und der 2. bis 7.
Wert der Variablen b zugewiesen.
• Trajektorie:
rx ry vx vy ax ay
PLANER:
Wegpunkte prüfen und
evtl. anpassen
geprüfte Wegpunkt-
Trajektorie zeichnen
Trajektorie berechnen,
d.h. Kontrollpunkt-matrix
erzeugen
Kontrollpunkt-
matrix
Die Funktion 'Parser.M' greift im Matlab-Workspace auf die vom Planer erzeugte
Kontrollpunkt-Matrix zu, und erzeugt die Trajektoriewerte zum Zeitpunkt t für das System
Kran. Die Zeilen der Kontrollpunkt-Matrix enthalten die Polynomparameter und
Splineparameter in der abzuarbeitenden Sequenz (s. Datenstruktur). Je nach Aufbau der
Kontrollpunktparameter wird entschieden, ob es sich um ein Polynom oder einen Spline
handelt. Ist der Kontrollpunkt abgearbeitet, wird er gelöscht und auf den nächsten
zugegriffen.
Diese Funktion wird alle ∆t Sekunden aufgerufen, sollte also in Assembler oder C
implementiert sein. Das hier realisierte M-File ist zur Simulation gut, unter Realtime-
Bedingungen aber nur bedingt geeignet.
aktueller Kontroll-
punkt, Zeit t
N
Polynom
Ende der J
Teiltrajek-
torie ?
Kontrollpunkt löschen;
auf nächsten zugreifen
N
Ende der J
Trajektorie ?
N
auf nächsten Aufruf auf nächste
zum Zeitpunkt t+∆t Trajektorie warten
warten
5.5.4 Simulationsergebnisse
Dieses Beispiel wird die Genauigkeit der Regelung mit On-line-Generator verdeutlicht.
• Trajektorie-Definition:
Abbildung 5.17: Vergleich der benutzerdefinierten (a) mit der erzeugten Trajektorie (b)
Die Trajektorie wird mittels einer kleinen GUI definiert. In Abb. 5.17a sind die
Näherungsradien (tightness) eingezeichnet. Wegpunkt 1 ist Startpunkt und Wegpunkt 5 ist
Stopppunkt. Wegpunkte mit tightness=0 bzw Geschwindigkeit=0 werden exakt
angefahren. In Abbildung 5.17b ist der durch die Näherungsradien ermöglichte sanfte
Trajektorieverlauf zu erkennen. Die Radien wurden zu 0.1m, die Maximalgeschwindigkeit
zu 0.5m/s gewählt.
Markus Stark 5032520 73
In Abb. 5.18 ist das Einhalten der Anfangs-u. Endbedingung am Punkt 1 bzw. 5 (v=0) zu
erkennen. Durch den sanften Trajektorieverlauf wird der Pendelauschlag in Grenzen
gehalten
Positionsfehler (s. Abb. 5.20) und Geschwindigkeitsfehler (s. Abb. 5.21) liegen in der
Größenordnung 10-4 m bzw. 10-3 m. In Trajektoriesegmenten mit a = 0 gehen beide Fehler
gegen Null. Der vom On-line-Generator erzeugte sanfte Trajektorieverlauf ist also
verfolgbar (trackable). Die Genauigkeit der Regelung könnte durch Vergrößern der
Verstärkung bzw. durch verbesserte Übergangsfunktionen der Trajektorie noch verbessert
werden.
Markus Stark 5032520 75
6 Zusammenfassung
In dieser Diplomarbeit wurde für einen regelungstechnischen Praktikumsversuch eine
virtuelle Versuchs- u. Arbeitsumgebung geschaffen. Der Praktikant erhält die Möglichkeit
über eine intuitiv und leicht zu bedienende Software einfache und komplexere Verfahren und
Methoden der Regelungstechnik kennenzulernen und anzuwenden. Hierzu wurde ein reales
System 'XY-Tisch mit Laufkatze und Pendel' grafisch und mathematisch modelliert. Das
virtuelle 3D-Modell der Krananlage wurde in VRML erstellt und mit Hilfe der Virtual Reality
Toolbox , einer Erweiterung von Simulink, animiert. Die regelungstechnischen
Anwendungen wurden mit Hilfe des Software MATLAB umgesetzt.
Markus Stark 5032520 76
7 Literaturverzeichnis
[1] Sciavicco L., Siciliano B., “Modeling and Control of Robot Manipulators”, 1996: S. 167-256
[2] Bazaz, S., Tondu, B., “3-Cubic Spline for On-Line Cartesian Space Trajectory Planning of an
Industrial Manipulator”, International Workshop on Advanced Motion Control, 1998: S. 493-498.
[3] Lloyd, J., Hayward, V., “Trajectory Generation for Sensor-Driven and Time-Varying Tasks”,
International Journal of Robotics Research, Vol. 12, No. 4, 1993: S. 380-393.
[4] Macfarlane, S., “On-Line Smooth Trajectory Planning for Manipulators”, University of New
Brunswick, 2001.
[5] Schlüter Oliver, “VRML Sprachmerkmale, Anwendungen, Perspektiven.”, O’Reilly Verlag, Köln,
1. Auflage 1998.
1. Anwendung:
Blockstruktur.Jpg
Systemvariablen.Jpg
Untersysteme.Jpg
nichtlineare Gleichungen.Jpg
Zustandsraumbeschreibung.Jpg
Systemmatrix.Jpg
PRT-Logo.Jpg
Pendulum.Jpg
Pendel.Jpg
Reglerentwurf.Jpg
Simulation.Jpg
Bahninterpolation.Jpg
3. SIMULINK-Modelle:
Kran_PIDRegler_VR.Mdl
Kran_Zustandsregler_VR.Mdl
Kran_Steuerung_VR.Mdl
Online_Generator.Mdl
4. VRML-Modelle: