Regelungstechnik Theorie und Umsetzung mit für

Transcription

Regelungstechnik Theorie und Umsetzung mit für
FH Aachen
Fachbereich 9 Medizintechnik und Technomathematik
Seminararbeit
im Studiengang Scientific Programming
Regelungstechnik
Theorie und Umsetzung
mit
LEJOS
für
NXT
Autor :
Mat.Nr.:
Erstprüfer:
Zweitprüfer:
Andrzej Pokora
836199
Prof. Dr. Andreas Terstegge
Heike Margot Jansen
Aachen, den 15.12.11
Inhaltsverzeichnis
1. Motivation
1.1 Eingebettete Systeme
1.2 Bachelor Arbeit
2. Regelungstechnik
2.1 Steuern und Regeln
2.2 Regelkreis
2.3 Arten der Regler
2.4 Gegenüberstellung der stetigen Regler
2.5 Zusammensetzung einfacher Regler
2.6 Zusammenfassung und Aufgabe
der Regelungstechnik
3. Praktische Anwendung – LeJOS und NXT
3.1 Anwendungsbeispiele im Alltag
3.2 LeJOS und NXT
3.3 Anwendungsbeispiel: Line Follower
4. Eidesstattliche Erklärung
11
12
13
23
Anhang A: Literaturverzeichnis
24
Anhang B: Bilderverzeichnis
25
2
2
3
4
5
5
8
10
1
1. Motivation
1.1 Eingebettete Systeme
Dieser Begriff bezeichnet ein Subsystem, das in ein größeres System eingebettet ist. Es
übernimmt kleinere Teilaufgaben, die für das zuverlässige Funktionieren des Ganzen
essentiell sind. Für die Benutzer der Geräte bleiben die eingebetteten Systeme meistens
unsichtbar. Deshalb sind sich auch die meisten Menschen deren Existenz nicht bewusst.
Dabei spielen die Systeme immer eine größere Rolle. Die Kontrolle und Überwachung von
Prozessen kann immer öfter mit diesen versteckten Vorgängen kontrolliert werden. Die
Menschen begegnen vielen eingebetteten Systemen in unserem Alltag ohne es zu wissen.
Auto, Waschmaschine, Kühlschrank oder DVD-Player sind nur wenige Beispiele. Die Geräte
versuchen bestimmte Werte konstant zu halten, z.B. Temperatur oder Geschwindigkeit. Das
ist die Stelle, an der die Regelungstechnik eintritt.
1.2 Bachelorarbeit
Der zweite Grund dafür, dass diese Arbeit sich mit Reglungstechnik beschäftigt ist eine
mögliche, zukünftige Bachelorarbeit. Während sich die Bachelorarbeit viel mehr auf der
praktischen Seite von Reglern in eingebetteten Systemen konzentriert, bildet die
Seminararbeit eine sehr gute Theoriebasis für spätere Bearbeitung.
2
2. Regelungstechnik
2.1 Steuern und Regeln
Im Themengebiet der Regelungstechnik gibt es zwei zentrale Begriffe: Steuern und Regeln.
Begriffe, die sich nicht viel unterscheiden, könnte man behaupten. Teilweise hätte man auch
Recht. Doch gibt es einen wesentlichen Unterschied zwischen den beiden Termini.
Die Definitionen nach DIN 19226 lauten:
„Das Steuern - die Steuerung - ist der Vorgang in einem System,
bei dem eine oder mehrere Größen als Eingangsgrößen
andere Größen als Ausgangsgrößen aufgrund der dem System
eigentümlichen Gesetzmäßigkeiten beeinflussen.“
„Das Regeln, die Regelung ist ein Vorgang, bei dem fortlaufend
eine Größe, die Regelgröße (zu regelnde Größe), erfasst,
mit einer anderen Größe, der Führungsgröße, verglichen und
im Sinne einer Angleichung an die Führungsgröße beeinflusst wird.“
Bei beiden Begriffen handelt es sich also um Systeme, die eingehende Größen verändern.
Beim Steuern wird der Wert allerdings nur ausgegeben. Wenn es eine weitere Aktion
erfordert muss diese von einem externen Agenten durchgeführt werden - einer Person oder
einem anderen System. Das Regeln dagegen hat die Aufgabe, die sich verändernde Größe
(Regelgröße) ständig an einen vorgegebenen Wert (Führungsgröße) anzupassen.
Es gibt eine Vielfalt an Möglichkeiten, den Werteunterschied, auch Regeldifferenz genannt,
auszugleichen. Der zentrale Bestandteil bleibt jedoch gleich - die Rückkopplung. Es erscheint
in der Form Gegen- oder Mitkopplung. Damit wird ein Teil der modifizierten Größe erneut in
das System eingeführt. Mitkopplung führt zur Signalverstärkung, während Gegenkopplung
den stationären Zustand erreichen lässt. Da es öfter darum geht, die Regeldifferenz
möglichst klein zu halten, findet die Gegenkopplung mehr Anwendung.
3
2.2 Regelkreis
Den Ablauf einer Größe in dem geschlossenen System zu manipulieren wird als Regelkreis
dargestellt. Es besteht aus mehreren Elementen, die eigene Aufgaben besitzen.
Ein einfacher Regelkreis könnte so aussehen:
Abb. 1 Einfacher Regelkreis
Führungsgröße w wird als Sollwert von außen in das System eingeführt. Es ist vorgegeben an
welchen Wert die Regelgröße x angepasst werden soll. Die gemessene Regelgröße wird von
der Sollgröße abgezogen und damit die Regeldifferenz e gebildet. Manchmal kann der
gemessene Wert nicht direkt in die Regeldifferenzberechnung übernommen werden. Dann
muss ein Messwertumformer eingesetzt werden, um die Regelgröße anzupassen. Nachdem
die Regeldifferenz berechnet wurde, wird sie an den Regler weitergeleitet, wo je nach
Verfahren eine Stellgröße bestimmt wird. Das passiert ohne jeglichen Einfluss von außerhalb
des Systems. Die Stellgröße wird dann an die Regelstrecke – Teil von dem System, das
eigentlich geregelt wird (z.B. Motor in dem Auto) – übermittelt. Der Wert wird nach
durchgeführter Aktion erneut gemessen und als Regelgröße wieder in das Regelkreis
geleitet. Zusätzlich kann in den Regelkreis noch eine Störung vom außen einfließen. Das Ziel
ist es, die Regeldifferenz e möglichst klein zu halten, was durch mehrere Durchläufe geleistet
wird.
4
2.3 Arten der Regler
Eine der Möglichkeiten Regler aufzuteilen wäre in digitale und analoge Regler. Die analogen
Regler unterteilen sich weiter in stetige und unstetige Regler. Stetige Regler können alle
Werte zwischen zwei sinnvoll gewählten Endpunkten als Stellgröße ausgeben. Die unstetigen
Regler dagegen arbeiten nur mit festgelegten, diskreten Werten. An und Aus wären in
diesem Sinne auch diskrete Werte.
Heutzutage finden mehr digitale Regler Anwendung. Die Produktion von Mikroprozessoren
ist recht günstig und dabei sind sie meistens leistungsfähiger als die analogen Vorgänger. Bei
Anwendung von digitalen Reglern muss man den Einsatz von Digital/Analog-Wandlern
beachten. Die Wandler arbeiten als Übergang zwischen dem elektronischen Regler und der
analogen Regelstrecke. Dadurch entstehen natürlich Verzögerungen im System, was ein
bedeutsamer Nachteil bei schnellen Regelstrecken sein kann. Ein großer Vorteil der digitalen
Regler ist die leichte Anpassung an verschiedenste Reglungsaufgaben.
2.4 Gegenüberstellung der stetigen Regler
Es existieren mehrere Reglertypen, die durch Analyse des Zeitverhaltens des Regelkreises
ermittelt werden können. Diese wurden nach den Typen von Ausgangssignalen benannt.
Man unterscheidet zwischen Proportionalregler (P-Regler), Integralregler (I-Regler) und
Differenzialregler (D-Regler).
2.4.1 P-Regler
Das Herz von einem P-Regler ist der Proportionalbeiwert Kp. Das Ausgangsignal xa ist dann
proportional zu dem Eingangssignal xe.
Die Gleichung zur Berechnung von dem Ausgangssignal lautet dann:
x a = Kp * x e
5
Wenn man die Gleichung betrachtet, wird ersichtlich, dass der Sollwert nie erreicht wird. Die
Regeldifferenz xe müsste dafür 0 annehmen, was dazu führen würde, dass kein
Ausgangssignal produziert wird:
x a = Kp * 0
xa = 0
Der Vorteil des P-Reglers ist die schnelle Reaktion auf Veränderungen der Regeldifferenz. Im
Idealfall geschieht dies ohne Zeitverzögerung.
Der Nachteil ist die schon erwähnte, verbleibende Regeldifferenz. Mit reinem P-Regler kann
der Sollwert nicht erreicht werden. Zusätzlich können große äußere Störungen das
Eingangssignal stark verändern
2.4.2 I-Regler
Ein I-Regler nimmt eine Integration der Regeldifferenz vor. Zusätzlich wird es mit der
Nachstellzeit Tn gewichtet. Die Integrationszeit fließt in den Integrierbeiwert KI und lässt die
Gleichung so aussehen:
xa = KI * x̂ e * t
wo KI =
x̂ e entspricht hier dem Mittelwert zweier Messwerte, da das Trapezverfahren als
Integrationsmethode verwendet wird.
6
Der I-Regler ist genauer als der P-Regler, weil er die Störung ohne bleibende Regeldifferenz
beseitigen kann.
Das Problem an dem Regler ist aber das langsame Verhalten. Dies führt zu großen
Verzögerungen und ist bei schnellen Regelkreisen besonders kritisch. Wenn man die
Integrationszeit zu reduzieren versucht, führt dies meistens zu großen Schwingungen bei
dem Regler.
2.4.3 D-Regler
Der D-Regler basiert auf der Differenzialrechnung. Diese Berechnungsmethode reduziert
stark die Eingangssignale. Der zu bestimmende Wert ist der Differentialbeiwert KD. Die
Gleichung sieht folgendermaßen aus:
x a = KD *
* xe
Wie man von der Gleichung ablesen kann, kann dieser Regler keine konstante Regeldifferenz
ausregeln. Das Ausgangssignal würde in diesem zu 0. Deswegen auch wird dieser Regler nur
in Verbindung mit anderen klassischen Reglern benutzt. Dank der Differentialkomponente
werden selbst die starken Störungen schnell ausgeregelt.
7
2.5 Zusammensetzungen einfacher Regler
Durch Betrachtung der Eigenschaften der einzelnen Regler kann man gewisse
Zusammenhänge finden. Zum besseren Vergleich habe ich folgende Tabelle aufgestellt:
Abb. 3 Vergleich der Eigenschaften von P, I und D Reglern
2.5.1 PI-Regler
Wenn man die Vorteile und Nachteile des P-Reglers und des I-Reglers genauer betrachtet,
sieht man, dass sie sich gegenseitig aufheben. Schnell und ungenau <-> langsam und genau.
Spätestens jetzt kommt man auf die Idee, die beiden Verfahren zu kombinieren.
Durch Zusammensetzung der Gleichungen kommt man auf diese Formel:
xaPI = xaP + xaI
xaPI = KP * x̂ e + KI * x̂ e * t
xaPI = KP * ( x̂ e +
∗
* x̂ e * t )
8
K P * TI = Tn
xaPI = KP * ( x̂ e +
* x̂ e * t )
Anhand dieser Gleichung kann man erkennen, dass es sich um eine Reihenstruktur handelt.
Zuerst wird die Integration durchgeführt und danach Multiplikation mit dem
Proportionalbeiwert.
2.5.2 PD-Regler
Eine andere mögliche Zusammenstellung der Regler wäre ein PD-Regler. Das kann mit dieser
Gleichung beschrieben werden:
xaPD = xaP + xaD
xaPI = KP * xe + KD * xe * t
xaPI = KP * (xe + TV * * xe )
Der PD-Regler ist ein sehr schneller Regler. Allerdings kann dies das Problem des P-Reglers,
die verbleibende Regeldifferenz, nicht komplett beheben. Zusätzlich kann das D-Teil
Störungen von außen verstärkt wieder in das System einführen, was aber eher bei großen
Regelvorgängen der Fall ist. Für normale kleine Anwendungen funktioniert der PD-Regler wie
beabsichtigt.
2.5.3 PID - Regler
Man kann auch alle von den drei Regler-Grundtypen kombinieren. Damit erhält man einen
mächtigen Regler der sich universell einsetzen lässt. Er kombiniert die guten Eigenschaften
aller Bestandteile – er ist schnell und genau. Deswegen kommt er auch in den meisten
Anwendungen zum Einsatz. Die kombinierte Gleichung sieht folgendermaßen aus:
xaPID = xaP + xaI + xaD
xaPID = KP * ( x̂ e +
* x̂ e * t + TV * * xe )
Das Problem an dem PID Regler ist, dass die drei Parameter bestimmt werden müssen. Die
optimale Einstellung muss gefunden werden, um die höchste Effektivität zu gewährleisten.
9
2.6 Zusammenfassung und Aufgabe der Regelungstechnik
Es existieren Systeme, bei denen bestimmte Werte ohne ständigen Überwachung und
Einfluss vom Außen geregelt werden müssen. Genau das steht auch in der DIN-Definition
von Regeln. Die veränderte Regelgröße wird wieder in das System eingeführt und von dem
Regler an die Führungsgröße angepasst. Es gibt verschiedene Typen von Reglern. Meistens
werden die digitalen und stetigen Regler benutzt. Die Gründe dafür sind niedrige Kosten,
Leistungsfähigkeit der Mikroprozessoren und große Wertebereiche von den zu regelnden
Elementen – Regelstrecken. Die populären einfachen Regler sind Proportionalregler,
Integralregler und Differentialregler. Alle haben unterschiedliche Eigenschaften die sich
kombinieren lassen. Mögliche Kombinationen sind PI, PD und PID Regler. Je mehr Regler
man vereinigt, desto bessere Effekte erhält man – schnelleren Regeldifferenzausgleich und
höhere Genauigkeit. Das Problem ist die Bestimmung optimaler Parameter für die Regler,
was mit deren zunehmender Anzahl schwerwiegender wird. Der Regler ermittelt eine
Stellgröße, die an die Regelstrecke weitergegeben wird. Danach wird der Wert gemessen
und erneut als Regelgröße in das System eingeführt. Zusätzlich finden Digital/Analog –
Wandler und Messwertumformer ihre Anwendung.
Die Aufgabe der Regelungstechnik ist es, aus der Vielfalt verfügbarer Regler die geeignete für
den jeweiligen Anwendungsfall zu finden und optimal einzustellen. Das heißt, dass die
Regeldifferenz möglichst konstant bleiben muss und damit der Sollwert möglichst schnell
erreicht werden soll.
10
3. Praktische Anwendung – LeJOS und NXT
Folgender Teil dieser Arbeit soll sich mich mehr der praktischen Seite des Themengebiets
Regelungstechnik widmen.
3.1 Anwendungsbeispiele im Alltag
Wir haben jeden Tag mit ganz vielen Beispielen der Anwendung zu tun. Die meisten bemerkt
man aber nicht. Einfache Raumtemperatur-Regelung wäre ein Beispiel. Was von uns einfach
als Heizung angesehen wird ist technisch gesehen ein geregeltes System. Unsere Regelgröße
wäre die tatsächliche Raumtemperatur. Thermostat misst die Temperatur analog mit einem
Dehnstoffkörper. Die Regelung arbeitet nicht mit den Temperaturen direkt, sondern mit
Ausdehnung von dem Dehnstoffelement, die wiederrum einer bestimmten Temperatur
entspricht. Der Sollwert ist von uns frei wählbare Temperatur. Der Regler erkennt dann die
Regeldifferenz und bewirkt mit der Stellgröße Änderung in der Regelstrecke – es wird
wärmer oder kälter. Auch bei diesem Beispiel findet man die Gegenkopplung wieder. Als
äußere Störungen könnte man ein offenes Fenster betrachten.
Ein anderes Beispiel wäre das Schweben von der Magnetschwebebahn. Die Regelgröße ist
der Abstand zwischen dem Stator und dem Tragmagnet. Der Sollwert ist der
Stator
Tragmagnet
Abb. 4 Funktionsschema Magnetschwebebahn
vorgegebene Abstand für die beiden Elemente. Der Abstand wird gemessen und an den
Regler weitergeleitet. Die Regeldifferenz wird in die Stellgröße umgewandelt. Die Stärke des
Magnets wird entsprechend der Stellgröße angepasst.
11
Es existieren auch Regelungsbeispiele außerhalb des technischen Bereichs. Die menschliche
Gesellschaft könnte man als großes System betrachten. Für eine Person wäre dann der
Regelkreis sein eigenes, soziales Umfeld. Das Handeln der Person stellt die Regelgröße dar.
Die Führungsgröße - das erwartete, sozial akzeptable Verhalten. Das Handeln von dem
Mensch wird gemessen und mit der Führungsgröße verglichen. Die Rolle des Reglers
übernimmt der Verstand. Das Verhalten einer Person wird dann immer weiter an das soziale
Umfeld angepasst.
In der Biologie findet man es in der Temperaturregelung bei Menschen wieder, zum Beispiel
wenn die Umgebungstemperatur zu niedrig wird. Die Regelgröße ist die Körpertemperatur.
Die Rezeptoren registrieren die Kälte und die Regeldifferenz zwischen der Solltemperatur
und der aktuellen Körpertemperatur wird gebildet. Das Gehirn regelt, wie stark es der
Änderung entgegenwirken soll. Die Regelstrecke - der menschliche Körper, wird durch
Muskelkontraktionen und die daraus entstehende Reibung erwärmt. Je größer die
Regeldifferenz, desto stärker die Kontraktionen.
3.2 LeJOS und NXT
Lego Mindstorms bezeichnet eine Produktserie der Firma Lego, die Sets mit
programmierbarem Minicomputer (NXT oder RCX) anbietet. Das aktuelle Modell von dem
NXT System ist 2.0. In den NXT (auch Brick genannt) ist ein 32-bit großer ARM7
Mikroprozessor integriert. Daten werden auf einem 100x64 Pixel LCD Display angezeigt. Der
Minicomputer verfügt über 4 Sensor- und 3 Motoranschlüsse. Der NXT kann mit dem
Rechner per USB-Kabel oder mit Bluetooth verbunden werden. Über Bluetooth kann sich das
Gerät auch mit anderen NXTs verbinden. Standardmäßig läuft auf dem NXT eigene LegoSoftware. Mit passender Software für den PC kann man Programme schreiben und diese
später auf den Brick hochladen.
12
Abb. 5 NXT-Brick
LeJOS ist eine Open Source Firmware, die die Standardsoftware von Lego überschreibt. Sie
stellt eine 10Kb große Java Virtual Maschine (TinyVM genannt) zur Verfügung. Da der NXT
nicht mit so viel Speicher ausgestattet ist, bringt die kleine Größe einen großen Vorteil. Der
größte Vorteil ist die Möglichkeit objektorientiert mit der Sprache Java zu programmieren.
Die Firmware ist ständig in Entwicklung und mit jeder Version kommen neue Features hinzu.
Zu
dem
umfangreichen
Paket
gehören
unter
anderem
Navigationsfunktionen,
Sensoransteuerung, Bluetooth-Verwaltung oder Anzeigemöglichkeiten. Von der technischen
Seite bietet LeJOS recht viel, wenn man die Größe von der Virtual Maschine betrachtet.
Threads, multidimensionale Arrays, Listener und Exceptions sind nur wenige Auszüge aus
dem breiten Spektrum der API. Die API ist sehr umfangreich und detailliert.
3.3 Anwendungsbeispiel Line Follower
In diesem Abschnitt wird eine Möglichkeit für die Anwendung der LeJOS Firmware mit der
Programmiersprache Java präsentiert. Als Anwendungsfall wurde das Entlangfahren an einer
schwarzen Linie mit dem Lichtsensor von NXT gewählt. Der Sensor kann die Helligkeit der
Umgebung messen und gibt einen Wert zwischen 0 und 1023. 0 bedeutet, dass kein Licht
vorhanden ist. Der Lichtsensor kann zwar keine Farben unterscheiden, man kann aber
dieses Problem mit Grauwerten umgehen. Zusätzlich ist der Lichtsensor mit Flutlicht in Form
13
einer LED ausgestattet. Sie ermöglicht es, das gespiegelte Licht zu messen, während sich der
Sensor nah an großen Flächen befindet und das Umgebungslicht nicht stark genug ist.
3.3.1 Regelkreis
Um den Anwendungsfall zu realisieren muss zuerst die theoretische Aufgabe als ein
Regelkreis umgesetzt werden. Die wichtigste Frage ist immer: Was muss geregelt werden? In
diesem Fall ist es die Fahrweise des Roboters. Das Ziel ist es, dass der Roboter die schwarze
Linie verfolgt. Die Orientierung verläuft also anhand der schwarzen Farbe. Die Farbe an sich
kann aber nicht als Regelgröße verwendet werden. Mit Hilfe des Lichtsensors wird ein Wert
bestimmt, der der Farbe des aktuellen Untergrundes. entspricht. Dieser Wert wird als
Regelgröße benutzt. Der Sollwert ist der Grauwert, der der schwarzen Linie entspricht. Um
das Erkennen der Untergrundfarbeänderung zu optimieren wird ein Mittelwert aus
Lichtwerten für weiß und schwarz gebildet. Die Regeldifferenz wird aus dem aktuell
gemessenen Lichtsensorwert und dem Sollwert gebildet. Der vom Regler berechnete
Stellwert fließt in das Steuerungssystem des Roboters und beeinflusst den so, dass er auf
der schwarzen Linie bleibt, während er weiter fährt.
3.3.2 Roboteraufbau und Fahrstrecke
Als Gerüst wird ein Tribot benutzt. Er hat Zwei Motoren zur Ansteuerung der Vorderräder
und ein kleineres Hinterrad. Der Lichtsensor wird möglichst nah an dem Boden angebracht,
um die durch Umgebungslicht verursachten Abweichungen beim Messen der Lichtwerte
möglichst gering zu halten. Der NXT-Brick wird schräg oben angebracht, um guten Zugang zu
den Buttons zu erlauben. Die Fahrstrecke besitzt folgende Form:
Abb. 6 Fahrstrecke
14
Abb. 7 Möglicher Aufbau eines Roboters mit Tribotgerüst
3.3.3 Regler
Als Regler wird ein PI-Regler eingesetzt. Die Anwendung ist nicht stark zeitkritisch und die
Erweiterung um einen D-Regler würde in diesem Fall zu viel Optimierungsaufwand
erfordern.
3.3.4 Umsetzung in Java
Da Java eine objektorientierte Programmiersprache ist, wird die Umsetzung möglichst stark
das Konzept verfolgen. Zuerst sollen die Klassen definiert werden. Der Regler soll mit einer
Klasse PI_Regler repräsentiert werden. Die Klasse ParamContainer enthält alle gespeicherte
Parameter - Proportionalbeiwert, Integralbeiwert und Grundgeschwindigkeit. Zusätzlich wird
ein Bremsfaktor eingeführt, um die Geschwindigkeit während dem Kurvenfahren in
Abhängigkeit von Regeldifferenz zu verringern. Da das Fahren/Regeln und BluetoothKommunikation parallel ansprechbar sein sollen, müssen die in separate Threads versetzt
werden. Es wird mit der Klassen BT_Thread, LF_Thread umgesetzt. Die Klasse LineFollow
besitzt die main()-Methode, in der die Threads gestartet werden. Zur Steuerung und
Übergabe der Parameter wird auf der PC Seite eine einfache GUI entwickelt.
15
In der Klasse LF_Thread wird ein DifferentialPilot zur Steuerung des Roboters benutzt. Hier
wird auch der Lichtsensor mit Hilfe des LightSensor-Objekts implementiert. Sollwert wird am
Anfang mit der setSollwert()-Methode bestimmt. Der Roboter dreht sich einmal im Kreis
während er alle Werte misst. Der Durschnitt dient dann als der Sollwert. Damit wird der
PI_Regler initialisiert. In der gleichen Methode wird dann in einer Schleife der Messwert des
Lichtsensors an den Regler übergeben. Als Rückgabewert bekommt die Methode den
Winkel, um den der DifferentialPilot die Motoren drehen soll.
Listing 1. LF_Thread.run()
public void run(){
double winkel;
PI_Regler pir = new PI_Regler(this.setSollwert());
this.pilot.setRotateSpeed(this.pc.getGrundGeschwindigkeit());
while(!Button.ESCAPE.isPressed()){
winkel = pir.regeln(this.ls.getNormalizedLightValue(), this.pc,
this.pilot, 1, reset);
this.pilot.steer(winkel);
this.reset = false;
}
}
Die stop()-Methode hält den Thread an.
Die Klasse BF_Thread arbeitet im Hintergrund und wartet auf einkommende Verbindungen.
In dieser Klasse werden die Parameter aktualisiert, der Roboter angehalten oder neuer Start
ausgeführt.
Die Klasse PI_Regler implementiert das PI-Reglungsverfahren nach dieser Gleichung:
xaPI = KP * ( x̂ e +
* x̂ e * t )
Als Attribute besitzt die Klasse die Führungsgröße, aktuelle Regeldifferenz, letzte
Regeldifferenz und das Integral.
16
Führungsgröße wird immer benutzt um die Regeldifferenz zu berechnen. Der aktuell
gemessene Wert wird von der Klasse LF_Thread übergeben. Wenn die Regeldifferenz zu
groß wird, wird die Geschwindigkeit auf einen, aus Regeldifferenz und Bremsfaktoren
berechneten Wert runtergesetzt:
Listing 2. Auszug aus PI_Regler.regeln()
if(Math.abs(this.getRegelDiff())>100){
pilot.setRotateSpeed((float)(pc.getGrundGeschwindigkeit()pc.getAbbruchFaktor()*this.getRegelDiff()));
}
Das Vorgehen wird in der Methode regeln() implementiert.
Letzte Regeldifferenz und Integral müssen für die Trapezintegration gespeichert werden. Die
Gleichung für Fläche des Trapez und damit auch des Integrals lautet:
A=
∗
a und b beschreiben die Basen des Trapez und h die Höhe. Für das Integral entsprechen die
Basen der letzten und aktuellen Regeldifferenz. Die Höhe wird durch die Integrationszeit
repräsentiert. Integral speichert die ganze bis jetzt berechnete Fläche. Die Logik wird in der
Hilfsmethode integrieren() umgesetzt.
Listing 3. PI_Regler.integrieren()
public void integrieren(double zeit, boolean reset){
if(!reset){
setIntegral(this.getIntegral() +
zeit*(this.getRegelDiff() + getLetzteDiff())/2);
setLetzteDiff(zeit*this.getRegelDiff());
}else{
setLetzteDiff(0);
setIntegral(0);
}
}
17
Mit dem Reset kann das Integral auf 0 gebracht werden.
Nach Bestimmung aller Werte wird nochmal mit Integralbeiwert und Proportionalbeiwert
multipliziert und der berechnete Stellwert wird zurückgegeben.
Die ParamContainer-Klasse besteht hauptsächlich aus 4 Attributen und zugehörigen Setter
und Getter:
Listing 4. ParamContainer
public class ParamContainer {
private double proportionalBeiwert;
private double integralBeiwert;
private double grundGeschwindigkeit;
private double bremsFaktor;
}
Setter und Getter wurden hier nicht aufgeführt.
Über die GUI soll die Veränderung der Parameter erfolgen. Dazu werden JTextFields und
JButtons eingesezt.
Daten werden per Bluetooth an den NXT übertragen. Zuerst gibt man Namen von dem NXT,
mit dem man sich verbinden möchte ein. Alle verfügbaren Geräte werden nach den Namen
überprüft.
Listing 5. GUI.btConnection()
private void btConnection(String name){
NXTConnector conn = new NXTConnector();
NXTInfo[] nxts;
int index=-1;
// Search all NXTs
nxts = conn.search("",null,NXTCommFactory.BLUETOOTH);
for(int i=0;i<nxts.length;i++){
if(nxts[i].name.equals(name)){
index = i;
18
break;
}
}
if(index!=-1){
// If found, connect to NXT
if(!conn.connectTo( nxts[index], NXTComm.PACKET )) {
System.out.println("Konnte nicht verbinden ... ");
System.exit (0);
}
// Get NXTComm Object for I/O
comm = conn.getNXTComm ();
}else{
System.out.println("Gesuchter NXT wurde nicht
gefunden!");
}
}
Wenn die Verbindung aufgebaut wurde, wird die GUI geladen. Start schickt die ersten Daten
an den Roboter. Wenn die Eingaben geändert wurden, können die mit Update geschickt
werden. Mit Reset wird das Integral auf Wert 0 gesetzt. Stop hält den Roboter an.
Abb. 8 Benutzeroberfläche
19
Daten werden in Byte-Form geschickt. Die Parameter sind für die Übertragung mit
Semikolon getrennt.
Listing 6. GUI.sendParameter()
//Send to NXT
String cmd =
Gg.getText()+";"+Kp.getText()+";"+Tn.getText()+";"+Bf.getText();
try {
comm.write(cmd.getBytes());
} catch (IOException e) {
System.out.println(e.getMessage());
}
In Abhängigkeit von Buttons werden auch „start“, „reset“ und „stop“ gesendet. Auf der NXT
Seite sieht der Empfang so aus:
Listing 7. BT_Thread.run()
try{
byte[] b = new byte[100];
int l = conn.read(b, b. length );
String cmd = new String(b ,0,l);
if (cmd.equalsIgnoreCase("stop")){
try
lf.stop();
}catch (InterruptedException e){
System.out.println("STOP");
}
}else if(cmd.equalsIgnoreCase("start")){
if(!lf.isAlive()){
lf.start();
20
System.out.println("START");
}
}
//Parameterübergabe
if(!setParameter(cmd)){
if(cmd.equalsIgnoreCase("reset")){
lf.setReset(true);
}
}
}catch(Exception e) {
System.out.println(e. getMessage ());
}
Da LeJOS keine implizite String.Split() Methode anbietet, musste diese neu programmiert
werden.
Listing 8. BT_Thread.setParameter()
public boolean setParameter(String para){
double[] params = new double[4];
int counter=0;
int last_start=0;
//String.Split
for(int i=0; i<para.length();i++){
if(para.charAt(i)==';'){
params[counter] =
Double.parseDouble(para.substring(last_start, i));
counter++;
last_start = i+1;
}}
if(counter==3){
21
pc.setGrundGeschwindigkeit(params[0]);
pc.setProportionalBeiwert(params[1]);
pc. setIntegralBeiwert(params[2]);
pc.setBremsFaktor(params[3]);
return true;
}
return false;
}
22
Eidesstattliche Erklärung
Hiermit versichere ich, dass ich die Seminararbeit mit dem Thema
Regelungstechnik
Theorie und Umsetzung mit LeJOS für NXT
selbstständig verfasst und keine anderen als die angegebenen Quellen und
Hilfsmittel benutzt habe, alle Ausführungen, die anderen Schriften
wörtlich oder sinngemäß entnommen wurden, kenntlich gemacht sind und
die Arbeit in gleicher oder ähnlicher Fassung noch nicht Bestandteil einer
Studien- oder Prüfungsleistung war.
Name: Andrzej Pokora
Aachen, den 15.12.2011
23
Anhang A: Literaturverzeichnis
[1] LUNZE, J. Regelungstechnik 1 : Systemtheoretische Grundlagen, Analyse und Entwurf
einschleifiger Regelungen, Springer-Verlag Berlin Heidelberg, 2010
[2]
TERSTEGGE,
A.
Robotik,
Programming
of
Embedded
Systems,
Grundlagen
Regelungstechnik, 2011
[3] http://mechatronik.elcms.de/content/e84/e100, gesehen am 14.12.2011
[4] http://de.wikipedia.org/wiki/Reglungstechnik, gesehen am 13.12.2011
[5] http://de.wikipedia.org/wiki/Regler, gesehen am 13.12.2011
24
Anhang B: Bilderverzeichnis
Abb. 1 – Regelkreis
Abb. 2 – Trapezverfahren
Abb. 3 – Vergleich der Eigenschaften von P, I und D Reglern
Abb. 4 – Abb. 4 Funktionsschema Magnetschwebebahn
Abb. 5 – NXT–Brick [Quelle: http://www.nxt-in-der-schule.de/bilder/nxt.jpg, 15.12.2001]
Abb. 6 – Fahrstrecke
Abb. 7 – Möglicher Aufbau eines Roboters mit Tribotgerüst [Quelle:
http://blogs.microsoft.co.il/blogs/vardi/NXT_Tribot_0EA5FC06.jpg, 15.12.2011]
Abb. 8 – Benutzeroberfläche
25

Documents pareils