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