Institut für Regelungstechnik

Ähnliche Dokumente
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Dokumentation IBIS Monitor

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Primzahlen und RSA-Verschlüsselung

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Datensicherung. Beschreibung der Datensicherung

Versuch 3. Frequenzgang eines Verstärkers

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Güte von Tests. die Wahrscheinlichkeit für den Fehler 2. Art bei der Testentscheidung, nämlich. falsch ist. Darauf haben wir bereits im Kapitel über

Mediator 9 - Lernprogramm

Wir arbeiten mit Zufallszahlen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Die Größe von Flächen vergleichen

Institut für Leistungselektronik und Elektrische Antriebe. Übungen Regelungstechnik 2

1 topologisches Sortieren

4 Aufzählungen und Listen erstellen

Zwischenablage (Bilder, Texte,...)

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Professionelle Seminare im Bereich MS-Office

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Projekt 2HEA 2005/06 Formelzettel Elektrotechnik

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Jederzeit Ordnung halten

3.14 Die Programmieroberfläche Programmierung

1 Mathematische Grundlagen

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Verwalten und Organisieren von Fotos,

Modellbildungssysteme: Pädagogische und didaktische Ziele

Elektrische Logigsystem mit Rückführung

Informationsblatt Induktionsbeweis

Speicher in der Cloud

PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN

UMSTELLUNG DER RÖNTGEN-SCHNITTSTELLE DÜRR-DBSWIN AUF DÜRR-VDDS

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

AUSBILDUNG eines OBEDIENCE HUNDES

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

100 % weniger Maschinen Störungen deshalb = 100 % mehr Maschinen Effizienzen

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Dokumentation Schedulingverfahren

Konfiguration der Messkanäle. Konfiguration der Zeitachse. Abb. 3: Konfigurationsmenü des Sensoreingangs A. Abb. 4: Messparameter Konfigurationsmenü

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Elektrischer Widerstand

Zahlen auf einen Blick

Drucken aus der Anwendung

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Programme im Griff Was bringt Ihnen dieses Kapitel?

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

Erstellen von x-y-diagrammen in OpenOffice.calc

Offset, Buffer, Nullpunkt, DpH, Asymmetrie oder ph = 7.

7 Rechnen mit Polynomen

1 Vom Problem zum Programm

A Lösungen zu Einführungsaufgaben zu QueueTraffic

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

1.Unterschied: Die Übungen sind nicht von deinem Mathe-Lehrer...

FAQ Spielvorbereitung Startspieler: Wer ist Startspieler?

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Technische Informatik Basispraktikum Sommersemester 2001

Fachbereich Physik Dr. Wolfgang Bodenberger

Anleitung über den Umgang mit Schildern

LEITFADEN ZUR SCHÄTZUNG DER BEITRAGSNACHWEISE

Info zum Zusammenhang von Auflösung und Genauigkeit

Simulation LIF5000. Abbildung 1

Fotostammtisch-Schaumburg

Elektrische Messtechnik Protokoll - Bestimmung des Frequenzgangs durch eine Messung im Zeitbereich

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Standard-Formatvorlagen in WORD und WRITER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Institut für Regelungstechnik

Grundlagen der Theoretischen Informatik, SoSe 2008

Protokoll des Versuches 7: Umwandlung von elektrischer Energie in Wärmeenergie

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Lizenzierung von SharePoint Server 2013

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

1 C H R I S T O P H D R Ö S S E R D E R M A T H E M A T I K V E R F Ü H R E R

Fallbeispiel: Eintragen einer Behandlung

DSO. Abtastrate und Speichertiefe

Das "Softwarepaket für Falcon und Eagle Framegrabber"

Kapitel 3 Bilder farblich verändern - Arbeiten mit Objekten

Dokumentenverwaltung im Internet

Pädagogik. Melanie Schewtschenko. Eingewöhnung und Übergang in die Kinderkrippe. Warum ist die Beteiligung der Eltern so wichtig?

Physik & Musik. Stimmgabeln. 1 Auftrag

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Zeichen bei Zahlen entschlüsseln

Umwandelung einer Physikalischen Größe in eine Elektrische

Lineare Gleichungssysteme

Korrigenda Handbuch der Bewertung

Moni KielNET-Mailbox

Woche 1: Was ist NLP? Die Geschichte des NLP.

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Präventionsforum+ Erfahrungsaustausch. HANDOUT GRUPPEN-ADMINISTRATOREN Anlage zum Endnutzer-Handbuch. Stand: Änderungen vorbehalten

s.beat DAP-10X White Paper USB Stromversorgung am Apple Macintosh und deren Auswirkung

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

Transkript:

Institut für Regelungstechnik TECHNISCHE UNIVERSITÄT BRAUNSCHWEIG Prof. Dr.-Ing. W. Schumacher Prof. Dr.-Ing. M. Maurer Prof. em. Dr.-Ing. W. Leonhard Regelungstechnisches Praktikum I Digitale Regelung eines fahrerlosen Transportsystems Datum: 21. April 2015

III Inhaltsverzeichnis 1 Einleitung 1 2 Systemaufbau des fahrerlosen Transportfahrzeugs 2 3 Modellbildung 6 4 Digitale Regelung mit dem Echtzeitbetriebssystem QNX 10 4.1 Betriebssyteme.................................. 10 4.2 Echtzeitfähigkeit................................. 11 4.3 Zeitliche Messgrößen für die digitale Regelung................. 12 4.4 Digitale Reglerauslegung............................. 14 4.5 Relevante QNX API............................... 15 4.5.1 Signale................................... 15 4.5.2 Timer................................... 16 5 Versuchsdurchführung 18 5.1 Hausaufgabe: Reglerimplementierung...................... 18 5.2 Programmierung mit der QNX API....................... 19 5.2.1 Timer-Programmierung......................... 20 5.2.2 Zugriff auf die Peripherie......................... 21 5.2.3 Implementierung einer einfachen Regelung............... 23 5.3 Reglerentwurf................................... 25

IV

1 1 Einleitung Autonome Fahrzeuge werden heute vielfach eingesetzt, sei es z. B. im industriellen Umfeld zur Automatisierung von Transportvorgängen oder im wissenschaftlichen Bereich zur Erforschung unwirtlicher Regionen. So unterschiedlich die Anforderungen an diese Systeme, ihre Komplexität und ihre Einsatzgebiete auch sein mögen, so gleichermaßen identisch sind sie in ihrem prinzipbedingten Aufbau, denn sie verfügen alle über: eine Umfeldsensorik zur Ermittlung der Position im Raum eine Steuereinheit mit einer Bahnplanung, die aus den Daten der Umfeldsensorik ermittelt, wie das vorgegebene Ziel erreicht werden kann eine Aktorik zur Erreichung des Ziels Wie sich dieser Aufbau praktisch darstellt, soll anhand dieses Laborversuchs demonstriert werden. Dazu wurde am Institut für Regelungstechnik ein einfaches, aber voll funktionsfähiges fahrerloses Transportfahrzeug (FTF) aufgebaut, welches zunächst vorgestellt wird. Nach einer folgenden allgemeinen Einführung in die Eigenschaften von Echtzeitbetriebssystemen wird es die Aufgabe sein, hierfür einen digitalen Regler zu implementieren.

2 2 Systemaufbau des fahrerlosen Transportfahrzeugs Für die Erfüllung der Transportaufgaben im innerwerklichen und innerbetrieblichen Bereich stehen seit den 50er Jahren fahrerlose Transportsysteme zur Verfügung. Ein fahrerloses Transportsystem (FTS) besteht im wesentlichen aus zwei Elementen, den Fahrzeugen und der Anlage. Fahrerlose Transportfahrzeuge (FTF) sind spurgebundene Fördermittel mit einem eigenen Fahrantrieb, die automatisch geführt und gesteuert werden. Sie werden mit oder ohne Ladehilfsmittel zum Ziehen, Schieben, Tragen, Heben, Stapeln bzw. Einlagern von Transportgut eingesetzt. Durch ihre hohe Flexibilität in der Streckenführung, ihren vollautomatischen Betrieb und ihren geringen Platzbedarf stellen sie eine betriebswirtschaftlich sinnvolle Alternative zu manuell bedienten Flurförderzeugen dar. Das FTF dieses Labors ist als Dreiradfahrzeug aufgebaut und in Bild 2.1 dargestellt. Als Antriebseinheit wird eine aus Fahr- und Lenkantrieb kombinierte Einheit eingesetzt. Die beiden Gleichstrommotoren werden durch zwei PWM-Leistungsteile angesteuert. Die Spurführung erfolgt induktiv über einen Leitdraht. Bild 2.1: Links: FTF ohne Verkleidung. Rechts: Kombinierte Antriebseinheit

3 Der Systemaufbau des Fahrzeugs ist in Bild 2.2 veranschaulicht. Die einzelnen Komponenten sollen im Anschluss kurz vorgestellt und ihr Zusammenwirken verdeutlicht werden. Sie umfassen neben Sensorik, Steuerung und Aktorik, auch ein Sicherheits- und Not-Aus-System. Bild 2.2: Bestandteile des FTF. Wichtig ist vor allem die Lage der Sensoren und Motoren. 1 Antriebsmotor: Ein permanent erregter Gleichstrommotor mit einer Leistung von 0,13kW/24V treibt das Fahrzeug mit einer maximalen Geschwindigkeit von 1 ms 1 an. 2 Lenkmotor: Über den Lenkmotor kann das Fahrzeug gesteuert werden. Dabei wird die komplette Antriebseinheit inklusive des Antriebsmotors geschwenkt. 3 & 18 Mikrolenksensor: Das Fahrzeug besitzt zwei Mikrolenksensoren (MLS) am vorderen und hinteren Ende, die den Abstand zum Leitdraht messen. Nur der Vordere von beiden wird in diesem Labor verwendet werden. Das Messprinzip ist in Bild 2.3 veranschaulicht. Es beruht auf der eingekoppelten Spannung einer senkrecht und einer horizontal angeordneten Spule, die durch die vom Leitdraht verursachten magnetischen Wechselfelder induziert wird. 4 Lenkpotentiometer: Mit dem Schwenken der Antriebseinheit wird über ein Zahnrad ein kleines Präzisionspotentiometer verändert, aus dessen Stellung der Lenkwinkel ermittelt werden kann.

4 2 Systemaufbau des fahrerlosen Transportfahrzeugs Mikrolenksensor Differenzspule Summenspule Fahrebene Lesehöhe Leitdraht Bild 2.3: Skizze des Messprinzips der Mikrolenksensoren 5 Inkrementalgeber: Gleichermaßen wichtig wie der Lenkwinkel ist auch die gefahrene Geschwindigkeit. Diese wird mit einem Inkrementalgeber gemessen, der direkt an der Motornabe angebracht ist. 6 Ultraschallsensoren: Zur Erkennung von Hindernissen sind an der Vorderseite zwei Ultraschallsensoren angebracht, die den Bereich vor dem Fahrzeug abtasten und den Abstand zu möglichen Hindernissen messen. 8 Elektromagnetbremse: Im Falle eines Not-Aus zieht die Bremse an und stoppt das Fahrzeug unmittelbar. Dies erfolgt entweder bei Betätigung des Not-Aus-Schalters oder bei Verformung des Bumpers, einem um das Fahrzeug herum angebrachten gummischlauchartigen pneumatischem Detektionssystem, das bei eingedrückter Auswölbung eine Druckänderung registriert. 10 Energieversorgung: Zwei 10Ah/12V Gel-Batterien sorgen für die nötige Energieversorgung des Fahrzeugs, das im Fahrbetrieb etwa 4A Strom zieht. Diese Spannung wird über den DC/DC-Wandler stabilisiert und der Steuereinheit zugeführt. 12 Industrie-PC: Auf dem Fahrzeug ist ein kompakt aufgebauter Computer (Pentium 150MHz) untergebracht, der unter dem Echtzeitbetriebssystem QNX die Steuerung des Fahrzeugs übernimmt. Alle Sensorsignale werden auf ihm zusammengeführt und ausgewertet, entsprechende Stellsignale anschließend ausgegeben. Dazu ist der Rechner mit einem zusätzlichen IO-Modul, einem sogenannten IP-Modul ausgerüstet. Dieses ist über Kette von Kommunikationsbussen und Interfaces mit dem Rechner verbunden und verfügt über einen FPGA, dessen einkonfigurierte Komponenten die Ein- und Ausgabe von digitalen Spannungen sowie Teile der Auswertung und Erzeugung der Signale übernehmen können.

5 13 & 14 PWM-Module: Die Motoren werden mit einer PWM-Spannung angetrieben. Die hier dargestellten PWM-Module sind reine Leistungsendstufen der Motoren, die die digitalen PWM-Signale verstärken. Diese Signale werden von dem IP-Modul mit der Frequenz 10 khz und einem vorgebbaren Tastverhältnis generiert. Das Tastverhältnis kann vom PC aus in das ansteuernde Register auf dem FPGA geschrieben werden. 16 Hauptschalter, Start- und Not-Aus-Taster: Über den Hauptschalter wird das Fahrzeug gestartet und ein Steuerstromkreis eingeschaltet, sodass der Rechner hochfährt. Durch Betätigung des Start-Tasters wird der Antriebsstromkreis zugeschaltet. Die PWM-Module sind nun betriebsbereit und die Elektromagnetbremse ist gelöst. Erst jetzt kann das Fahrzeug losfahren. Mittels des Not-Aus-Schalters oder des Bumpers wird nur dieser Antriebsstromkreis unterbrochen und das Fahrzeug wird gestoppt, der Rechner und die Steuerung bleiben hingegen in Betrieb.

6 3 Modellbildung Der Fahrzeugaufbau ist recht simpel gehalten. Daher gestaltet sich die Modellbildung für das Querverhalten problemlos. Das folgende Modell stellt die zur regelnde Strecke dar, und wird von einem zunächst nichtlinearen Modell auf ein einfaches lineares Modell reduziert werden. Ziel der späteren Regelung ist das repititive Ajustieren des Lenkwinkels durch Vergleich des Querabstands mit 0, sodass das Fahrzeug der Sollspur nachgeführt wird. Die Dynamik der Vorwärtsbewegung wird in diesem Labor hingegen nicht betrachtet werden und wird daher für die Querdynamik als konstant angenommen. Die Modellbildung kann mithilfe der Abbildung 3.1, die schematisch das FTF mit Leitdraht zeigt, erfolgen. v dt dq q +dq 0 q 0 Leitdraht Bild 3.1: Modell der Querkinematik

7 Der Leitdraht stellt das Referenzsystem für die Messung und Modellierung dar. Der Querabstand q wird stets senkrecht zu ihm gemessen. Die Lage dieses Referenzsystems im Weltkoordinatensystem ist für die Regelung völlig ohne Belang. Relativ zum Draht schließt die Fahrzeugmittelachse den sogenannten Gierwinkel γ ein. Zusammen mit dem Lenkwinkel δ ergibt die Summe beider Winkel den Gesamtwinkel zwischen Leitdraht und der Orientierung des Antriebsrades. Alle Winkel werden wie im Bild angedeutet im mathematisch positiven Sinn gezählt. In Bild 3.2 sind die Winkel zur Veranschaulichung noch einmal mit gebogenem Leitdraht dargestellt. Bild 3.2: Modell der Querbewegung in einer Kurve Für die Regelung des Fahrzeugs wird die Strecke derart modelliert, dass die Eingangsgröße der Lenkwinkel des Fahrzeugs δ und die Ausgangsgröße der Abstand q ist. Der Gierwinkel γ, der auch durch eine gekrümmte Verlegung des Leitdrahts verursacht werden kann, wirkt als Störgröße, da eine Änderung das Fahrzeug aus der Spur führt. Zu beachten ist, dass der Querabstand q nicht genau gemessen wird, da der vordere MLS ca. 10 cm vor dem Rad befestigt ist. Da die so ermittelte Messgröße der Fahrrichtung des FTF vorausgeht, wird diese Anordnung als eine Art Vorsteuerung der Regelung wirken. Betrachtet man nun den kurzen Zeitraum dt, so ergibt sich für den Querabstand q der folgende Zusammenhang, wobei v die Geschwindigkeit des Radvortriebs bezeichne: dq dt dq = v sin (δ + γ) dt (3.1) = q = v sin (δ (t) + γ (t)) (3.2) Integriert man diese Gleichung, wobei Lenk- und Gierwinkel als konstant über den Integrationszeitraum angenommen werden und berücksichtigt ferner den anfänglichen Querabstand

8 3 Modellbildung q 0, so erhält man die gesuchte Beschreibung für das Querverhalten: q (t) = q 0 + t τ=0 v sin (δ + γ) dτ (3.3) Mit der gefundenen Gleichung (3.3) lässt sich das nichtlineare Blockschaltbild aus Bild 3.3 zeichnen, welches das Übertragungsverhalten der Querbewegung verdeutlicht. Dabei ist ein Proportionalitätsfaktor eingefügt, der den Winkel von Grad ins Bogenmaß überführt, was später für die Linearisierung genutzt werden wird. Bild 3.3: Blockschaltbild der Querkinematik Die als konstant angenommene Geschwindigkeit v kann vereinfacht ebenfalls als Verstärkung angenommen und dadurch die Nichtlinearität des Produktgliedes eliminiert werden. Des Weiteren folgt das Fahrzeug mit funktionierender Regelung der Spur, sodass die Summe aus Lenk- und Gierwinkel δ + γ sehr klein sein wird. Die Sinus-Funktion kann somit linearisiert werden, indem sie durch ihr Argument im Bogenmaß ersetzt wird. Das gesamte, linearisierte Übertragungsverhalten entspricht also einem einfachen Integrator. Normiert man nun die Gleichung für eine standardisierte Darstellung auf einen Querabstand q n, so folgt für q 0 = 0 die linearisierte Gleichung zu: q q n = π v 180q n t τ=0 Die Integrationszeitkonstante lautet dann: δ dτ + d(t) (3.4) }{{} π v 180qn γ t T 3 = 180q n π v (3.5) und die Querdynamik lässt sich mit der Übertragungsfunktion eines Integrators beschreiben: G(s) = 1 T 3 s (3.6)

9 Da die Dynamik des Stellgliedes Lenkmotor nicht zu vernachlässignen ist, wird sie der Strecke zugeordnet. Dieser kann in seiner Übertragungsfunktion von Spannung zu Winkel mit einem IT1-Glied modelliert werden, sodass sich die Dynamikmodell der Strecke als das Gesamtblockschaltbild in Bild 3.4 ergibt. Bild 3.4: Modell der Querbewegung in einer Kurve Die Gesamtübertragungsfunktion von PWM-Verhältnis u LM als Eingang in den Lenkmotor bis zum Querabstand q q n lautet dann: G(s) = q q n u F M = 1 (T 1 s + 1) T 2 s } {{ } Lenkmotor 1 T 3 s }{{} Querdynamik (3.7) Die Zeitkonstanten T 1 und T 2 sind aus einer Identifikation mittels Sprungantwort und Regression bekannt. Der Abstandssensor misst in Millimetern. Aus diesem Grund wird der Normierungsabstand q n zu 1mm gewählt. Die Zeitkonstante T 3 hängt von der gefahrenen Geschwindigkeit ab, es zeigt sich aber aus Praxisversuchen, dass eine Annahme von v = 0,1 ms 1 das gesamte Geschwindigkeitsspektrum sehr gut abdeckt. Die Zeitkonstanten betragen somit: T 1 = 57,9ms T 2 = 0,7296s T 3 = 0,573s Hiermit ist das Modell der Querdynamik vollständig und kann für die spätere Reglerauslegung verwendet werden.

10 4 Digitale Regelung mit dem Echtzeitbetriebssystem QNX Regelungen werden heutzutage meist digital realisiert. Dabei ist auf sehr einfachen Systemen wie z.b. auf Mikrocontrollern der Anwendungsentwickler meist allein für alle Aspekte des Rechensystems zuständig. Je komplexer die Systeme werden, desto mehr macht es Sinn, Softwarekomponenten zu Modularisieren, insbesondere wenn an dem System mehrere Personen oder gar Teams arbeiten. Auf komplexeren Steuergeräten in der Automobilindustrie werden nicht nur eine Vielzahl von Regelfunktionen gleichzeitig ausgeführt, sondern es gibt eine Vielzahl an zusätzlichen Service-Routinen oder Automatenlogik im Automatisierungssystem. Diese reagieren entweder auf externe Ereignisse oder werden in bestimmten Zeitabständen ausgeführt. Einen Teil der Softwaremodule, die die Mechanismen bereitstellt, um diese Komplexität zu bewältigen, werden zu einem Betriebssystem zusammengefasst. 4.1 Betriebssyteme Ein Betriebssystem führt eine Abstraktionsschicht ein, die die Funktionalität der Hardware über eine Schnittstelle zur Verfügung stellt. Das geschieht zum Beispiel über die Bereitstellung von Funktionen über C-Bibliotheken, die in den Programmiercode eingebunden werden. Solch eine Kapselung ermöglicht Wiederverwendung von Software auf verschiedener Hardware-Plattformen. Unterhalb dieser Schicht siedeln sich die verschiedenen Ansteuerungstreiber der Hardware an, zu der auch die Kommunikation mit der Peripherie gehört. Durch das Einziehen dieser Abstraktionsschicht ist die Aufgabe des Betriebssystems auch die Verwaltung dieser Hardware. Zunächst fällt die Verwaltung der Ressource CPU hierunter, wenn es mehrere nebenläufige Prozesse bzw. Tasks gibt. Ein Scheduling-Algorithmus legt die Reihenfolge fest, wann ein Prozess die Ressource Rechenzeit auf der CPU erhält und wann er wieder unterbrochen wird, um einen anderen Prozess vorzulassen. Durch dieses Multitasking wird der Eindruck von Gleichzeitigkeit erweckt und der Prozessor effizient genutzt. Die

4.2 Echtzeitfähigkeit 11 Verteilung von Speicherplatz im Arbeitsspeicher ist eine weitere solche Verwaltungsaufgabe von Ressourcen. Weiterhin gibt es sogenannte Synchronisierungsmechanismen, die die kurzzeitige Blockierung von Ressourcen wie zum Beispiel der Peripherie erlauben, sodass kein anderer Prozess in diesem Zeitraum die blockierte Ressource beschreiben kann und damit möglicherweise ein Fehlverhalten verursacht. Dies hat auch Auswirkungen auf das Zeitverhalten, denn der eine Prozess muss in diesen Fällen darauf warten, dass der andere Prozess die Ressource wieder frei gibt, bis er selbst weiterarbeiten kann. Es kann sogar zu einer gegenseitiger Blockierung kommen, die nur in seltenen zeitlichen Konstellationen vorkommt, bei der sich mehrere Prozesse am weiterarbeiten hindern, sodass keiner von ihnen weiter bearbeitet wird. Diese Situation wird als Deadlock bezeichnet. Das Betriebssystem muss entweder garantieren, dass diese Situation nicht vorkommen kann oder Mechanismen zur Auflösung einer Solchen implementieren. 4.2 Echtzeitfähigkeit Für die digitale Regelung werden ein viele Fällen hohe Anforderungen an zeitlichen Determinismus der Berechnung gestellt. Den Begriff der Determiniertheit definiert die DIN 44300 folgendermaßen: Realzeitbetrieb ist der Betrieb eines Rechensystems, bei dem Programme zur Verarbeitung anfallender Daten ständig betriebsbereit sind, derart, dass die Verarbeitungsergebnisse innerhalb einer vorgegebenen Zeitspanne verfügbar sind. Die Daten können je nach Anwendungsfall nach einer zeitlich zufälligen Verteilung oder zu vorherbestimmten Zeitpunkten einmalig oder in regelmäßigen Abständen anfallen. Diese Möglichkeit zeitliche Determiniertheit festzulegen wird auch als Echtzeitfähigkeit bezeichnet. Im Allgemeinen gibt es eine Möglichkeit für den Systemkonfigurator, der die Einstellungen für die Ausführung der Software-Pakete auf der Rechenplattform vornimmt, auf diese Zeiteigenschaften Einfluss zunehmen. Diese sind hauptsächlich durch das Scheduling-Verfahren und dessen Parameter bestimmt. Es existieren zwei unterschiedliche Strategien, um die geforderten Zeiteigenschaften zu garantieren: Der Scheduler implementiert eine Scheduling Strategie, die die Reihenfolge der Prozesse dynamisch derart anordnet, dass eine spezifizierte Deadline eingehalten wird. Für

12 4 Digitale Regelung mit dem Echtzeitbetriebssystem QNX bestehende Verfahren ist die Beweisbarkeit für reale Rechensysteme jedoch noch nicht gegeben und die Anzahl der integrierbaren Funktionen ist geringer als bei der folgenden zweiten Methode. Das Verhalten des Schedulers ist hinreichend vorhersagbar und konfigurierbar. Der Systemintegrator kann dann Abschätzungen über das zeitliche Verhalten machen bzw. komplizierte Wechselwirkungen können minimiert werden, die ein sprunghaftes Ansteigen der Berechnungszeit bedeuten würden. Es existieren zudem Software-Tools, die auch für komplizierte Systeme das Worst-Case Zeitverhalten berechnen können. Die Beeinflussung des Zeitverhaltens wird hier durch die Vergabe von Prioritäten bestimmt. Prozesse mit hohen Prioritäten erhalten Vorrang vor anderen und sind damit in ihrem Zeitverhalten unabhängig von den niederprioren Prozessen und erfahren dadurch weniger Verzögerung. In diesem Labor wird diese zweite Methode benutzt werden. Für ein vollständiges Echtzeitverhalten zu regelungstechnischen Zwecken muss hierfür jedoch nicht nur der Rechner selber, sondern die gesamte Plattform ein Echtzeitverhalten aufweisen. Das bedeutet, dass auch die Kommunikation und angeschlossene Hardware-Logik den Zeitansprüchen des Systems genügen müssen. Besonders bei verteilten Regelungssystemen ist dies von tragender Bedeutung. Ein Beispiel hierfür ist die Arbitrierung des CAN- Kommunikationsstandards in der Automobilindustrie, das Prioritätenvergabe für Telegramme mittels ihrer Message-ID ermöglicht. 4.3 Zeitliche Messgrößen für die digitale Regelung Wie oben angesprochen, variiert die Ausführungszeit von Regelprozessen im Allgemeinen. Hierfür sind nicht allein Scheduling-Effekte verantwortlich. Auch ist die Rechenzeit auf der CPU von den Daten in der Pipeline des Prozessors und dem Inhalt des Prozessor-Caches abhängig. Auch wenn der Prozess hohe Priorität hat, mag es System-Interrupts geben, die die Ausführung verzögern können. Zudem kann die Ausführungsdauer eines Prozesses von Betriebszuständen des Automatisierungssystems abhängen. Dies äußert sich im Quelltext durch die Benutzung von If-Anweisung, die auf unterschiedlich komplexe Berechnungen verzweigen. Man muss sich klarmachen, dass für regelungstechnische Systeme nur das zeitliche Verhalten eine Auswirkung hat, was auch von der Strecke am Aktuator erfahren wird. Die Beschreibungsgrößen für diese zeitlichen Effekte sind in Bild 4.1 dargestellt. Als wichtigste Größe wird die nominale Sampling Periode, auch Regeltakt, mit h gekennzeichnet. Das Einlesen der

4.3 Zeitliche Messgrößen für die digitale Regelung 13 Messwerte, im Englischen Sampling, zu den Zeitpunkten t S k ist jedoch durch oben genannte Effekte potentiell für jede Nummer der Ausführung k unterschiedlich, sodass im Allgemeinen h k ungleich h. Der Abstand gegenüber den nominellen Sampling-Zeitpunkten h k wird mit dem Sampling-Delay d S k bezeichnet. In blau ist die Zeitspanne markiert, die die Platform zur Erzeugung der neuen Aktuator-Werte benötigt, die mit dem Sampling-to-Actuation Delay d StA k zu den Zeitpunkten t A k auf den Digital-Analog-Umsetzer gegeben werden. Bild 4.1: Zustandsübergänge von Prozessen Die Variation dieser zeitlichen Größen wird Jitter genannt und ist in vielen Fällen unerwünscht. Die Auswirkungen hiervon auf die Regelgüte des Systems sind jedoch abhängig von der Art des Reglers und der Strecke. Das Echtzeitsystem ermöglicht durch Prioritätenvergabe den Jitter zu minimieren. Eine weitere Möglichkeit ist die implementierung einer Logical Execution Time (LET). Hier werden die Daten über sehr hochpriore zeitgesteuerte Interrupts zu einem spezifizierten Zeitpunkt eingelesen und durch einen weiteren wieder herausgeschrieben. Die Bearbeitung erfolgt irgendwann zwischen diesen Zeitpunkten mit geringerer Priorität. Dies Bedeutet zwar eine Erhöhung der Determiniertheit aber auch eine starke Erhöhung des Sampling-to-Actuation Delay, da man hier die höchste erwartbare Bearbeitungszeit einstellen muss. Es muss also eine Abwägung getroffen werden.eine erhöhte Determiniertheit vergrößert den Delay, auf der anderen Seite kann eine gewisse Regelgüte sicherer garantiert werden. Ein hoher Delay bedeutet aber immer, dass der Regler nur bedingt schnell gemacht werden kann. Diesen kann man entweder durch die Wahl einer höheren Priorität reduzieren oder eine schnellere Platform z.b. einen leistungsfähigeren Prozessor oder die Implementierung im FPGA wählen, was allerdings gemeinhin mehr Kosten verursacht.

14 4 Digitale Regelung mit dem Echtzeitbetriebssystem QNX 4.4 Digitale Reglerauslegung Die Theorie zur Beschreibung von digitalen Systemen wurde in der Vorlesung Grundlagen der Regelungstechnik ausführlich behandelt. Zur Reglerauslegung gab es hierfür grundsätzlich zwei Methoden: Die Auslegung in der digitalen Domäne: Hier wird der Regler direkt in z ausgelegt. Hierfür sind nicht alle Auslegungsverfahren des Kontinuierlichen verfügbar. Allerdings gibt es auch neue Reglerarchitekturen, die im Kontinuierlichen nicht gut realisierbar sind. Die Auslegung des Reglers im Kontinuierlichen Vereinfachte Auslegung: Der Regler wird zunächst als kontinuierlich angenommen und es werden traditionelle Auslegungsmethoden angewendet. Danach wird der Regler nach z transformiert. Jedoch vernachlässigt dies die Abtasteffekte und rechnet lediglich die Parameter in die z-ebene um. Durch das Halteglied entstehen jedoch auch zusätzliche Nullstellen in z. Die Strecke wird nach z-transformiert mittels der exakten z-transformation, dann wird mit Hilfe der Tustin-Formel die Strecke mitsamt den zusätzlichen Nullstellen zurück nach s transformiert. Mit dieser Näherung wird der Regler mit konventionellen Methoden ausgelegt. Abschließend wird der so ausgelegt regler nach z transformiert. Gemäß der Vorlesung kann man die Signallaufzeit vernachlässigen, wenn sie nicht 5% der Regelperiode überschreitet. Ist das nicht der Fall, lässt sich die Laufzeit als Verzögerung sowohl in s als auch in z modellieren. Die Berücksichtigung von Sampling Jitter als auch StA Delay Jitter ist schwierig. Denn das Intervall von möglichen Systemantworten des Regelsystems hängt auch von den statistischen Eigenschaften des Jitters ab. Dazu wäre nicht nur eine Beschreibung der Wahrscheinlichkeitsverteilung sondern auch von der zeitlichen Abfolge der Signale nötig. Das bedeutet, wenn das System nicht vollständig konstante Signallaufzeit aufweist, wie beispielsweise durch LET wird ein Teil des Systems nicht mitmodelliert und es können Abweichungen im Verhalten in Bezug auf die Auslegung entstehen. Simulation ist ein Mittel, um dies mit möglichst realistischen Ausführungszeitmesswerten zu überprüfen. Jedoch sind je nach Variabilitäten im System viele realistische Timingszenarien durchzuspielen, wenn das System empfindlich auf Jitter reagiert. Eine Timing-Modellierung mit Rauschprozessen ist häufig nicht realistisch.

4.5 Relevante QNX API 15 4.5 Relevante QNX API Ein Echtzeitbetriebssystem besteht wie bereits vorgestellt aus vielen Komponenten. In diesem Labor wird die Programmierung von Timern, Initialisierung von Prozessen und Abstimmung mittels Signalen benutzt werden. Es wird dabei auf Funktionen der C API aber auch auf die QNX eigene Neutrino API zurückgegriffen werden. 4.5.1 Signale Für die effiziente Kommunikation zwischen Prozessen werden von Betriebssystemen wie QNX Signale bereitgestellt. Diese ermöglichen, den Prozess in den wartenden Modus zu versetzen und somit den Prozessor für andere Prozesse frei zu machen, bis von außen das Signal erzeugt wird, auf das gewartet wird. Ein Prozess kann mit der Funktion sigaction() einem Signal einen bestimmten Funktionsaufruf zuordnen. Man spricht dann auch von einem Handler für dieses Signal. Alternativ kann im Programmfluss auch auf eines oder mehrere ausgewählte Signale gewartet werden, um sich mit einem anderen Prozess zu synchronisieren. Dazu existiert der Befehl sigwaitinfo(): #include <sys/signal.h> // return: signal_id int sigwaitinfo (const sigset_t *signale, NULL); Der Funktion muss eine Liste mit Signalen signale übergeben werden, auf die gewartet werden soll. Wenn die Programmausführung an dieser Stelle angelangt ist, blockiert die Programmzeile nun solange, bis ein Signal aus dieser Liste eintrifft. Dann ist das Programm im Betriebssystem wieder als Ausführungfähig markiert und es wird abhängig von der Scheduling-Strategie wieder CPU-Zeit gewährt. Dann fährt es mit der nächsten Instruktion aus dem Quelltext fort. Als Rückgabewert wird die ID des Signals übergeben. Eine vollständige Liste aller Signale im System kann z. B. mit sigfillset() erzeugt werden. #include <sys/signal.h> sigset_t signale; sigfillset (&signale);

16 4 Digitale Regelung mit dem Echtzeitbetriebssystem QNX Diese Art der Interprozess-Kommunikation bietet sehr vielfältige Möglichkeiten, Prozesse miteinander zu synchronisieren, so stellt das Betriebssystem über sechzig Signal-IDs für verschiedenste Ereignisse zur Verfügung, u. a. gibt es die Signale SIGUSR1 und SIGUSR2, die für den Anwender reserviert sind. 4.5.2 Timer Mit Timern wird eine Möglichkeit geschaffen, Aktionen zu bestimmten Zeitpunkten zu planen, sei es periodisch, z. B. die regelmäßige Abtastung in einer Regelung, oder einmalig, z. B. beim zeitversetzten Eingriff in der Prozessautomatisierung. Unter QNX sind Timer mit den beiden Funktionen timer_create() und timer_settime() realisierbar. Der erste Befehl meldet den Timer beim Betriebssystem an, beschreibt die Aktion, die beim Ablauf des Timers gestartet werden soll, z. B. kann ein Signal ausgelöst oder ein paralleler Thread gestartet werden und definiert eine Timer-ID für ihn. Der zweite Befehl stellt die Zeiten des Timers ein und startet ihn anschließend. #include <time.h> #include <sys/siginfo.h> // return: ungleich 0 wenn Fehler int timer_create (CLOCK_REALTIME, struct sigevent *event, timer_t *timer_id); // return: ungleich 0 wenn Fehler int timer_settime (timer_t timer_id, 0, struct itimerspec *zeiteinstellung_des_timers, NULL); Zur Zeiteinstellung des Timers werden die Datenstrukturen struct timespec und struct itimerspec benötigt. Sie sind wie folgt definiert: #include <time.h> // Definiert eine Zeit struct timespec { long tv_sec, // Zeit in Sekunden tv_nsec; // plus Zeit in Nanosekunden } // Definiert die Einstellung des Timers struct itimerspec {

4.5 Relevante QNX API 17 } struct timespec it_value, it_interval; // Zeit, wann der Timer ausloesen soll // Periode fuer regelmaessiges Ausloesen des Timers // ansonsten 0, wenn nur einmalig. Mithilfe der Struktur struct sigevent wird festgelegt, welche Aktion beim Auslösen des Timers erfolgen soll. Diese Struktur ist sehr komplex, daher sind zur Vereinfachung einige Makros definiert, mit denen die Initialisierung leicht erfolgen kann. Im einfachsten Fall kann ein Signal ausgelöst werden: #include <sys/siginfo.h> struct sigevent event; SIGEV_SIGNAL_INIT (&event, signal_nummer);

18 5 Versuchsdurchführung 5.1 Hausaufgabe: Reglerimplementierung Ein PI-Regler besitzt bekanntlich die kontinuierliche Übertragungsfunktion: K(s) = u e = V pi T i s + 1 T i s Da die Regelung aber aufgrund der Abtastung zeitdiskret ist, muss auch der Regler zeitdiskret sein. In einer ersten Näherung kann man bei einer Abtastperiode T die folgende Substitution durchführen: s = 2 T 1 z 1 1 + z 1 Hausaufgabe 1: Setzen Sie diese Substitution in die Übertragungsfunktion ein und lösen Sie sie nach der Stellgröße u auf. Wie sieht nun eine Programmsequenz aus, die einen zeitdiskreten PI-Regler implementiert? Geben Sie diese in Pseudo-Code an. Hinweis: Durch den Ausdruck z 1 wird auf alte Werte aus vorhergehenden Abtastungen zurückgegriffen, z. B. bedeutet u z 1 = u(t T ) und u z 2 = u(t 2T ), dass zum aktuellen Zeitpunkt t auch die berechneten Stellgrößen aus der letzten (t T ) und vorletzten Abtastung (t 2T ) einfließen. In der Praxis wird häufig der PI-Regler leicht modifiziert verwendet. Das Blockschaltbild in der Abbildung 5.1 zeigt diese etwas veränderte Form, die häufig etwas bessere Regelungsergebnisse liefert. Hausaufgabe 2: Zeigen Sie, dass es sich bei der in Abbildung 5.1 dargestellten Struktur tatsächlich um einen PI-Regler handelt, indem Sie die Differenzengleichung für die Stellgröße berechnen. Vernachlässigen Sie dazu den nichtlinearen Einfluss der Begrenzungen.

5.2 Programmierung mit der QNX API 19 Bild 5.1: Blockschaltbild des diskreten PI-Querreglers Hausaufgabe 3: Der PI-Regler soll nun in Pseudo-Code implementiert werden. Wie lautet die Programmsequenz unter Berücksichtigung der Stellgrößenbegrenzung für das in der Abbildung 5.1 dargestellte Blockschaltbild? Hausaufgabe 4: Machen Sie sich mit der Reglerauslegung im Kapitel 5.3 vertraut und berechnen Sie die Kaskadenregelung entsprechend der gegebenen Anleitungsschritte. 5.2 Programmierung mit der QNX API Im ersten Teil des Labors sollen zunächst die Mechanismen eines Echtzeitbetriebssytems anhand von QNX, wie sie entsprechend dem einführenden Kapitel erläutert worden sind, verdeutlicht werden. Nachdem diese vertraut sind, kann im Anschluss der Zugriff auf die Peripherie erfolgen und die Motoren und Sensoren in Betrieb genommen werden. Mit den Kenntnissen ist es dann bereits möglich, eine einfache Regelung zu implementieren und das FTF fahren zu lassen. Wie in Bild 5.2 dargestellt, sind in den Labor-Versuch zwei Rechner involviert. Starten Sie zur Versuchsdurchführung den Terminal- und den FTF-Rechner und loggen Sie sich anschließend ein: Terminal-Rechner Login: labor Passwort: ftf

20 5 Versuchsdurchführung FTF-Rechner Login: root Passwort: ftf Bild 5.2: FTF-Rechner und Labor-Rechner sind über WLAN gekoppelt Der FTF-Rechner bootet nicht automatisch in die grafische Oberfläche Photon. Diese kann aber bei Bedarf mit dem Befehl ph gestartet werden. Auf beiden Rechner existiert ein Verzeichnis /net/. In diesem Verzeichnis tauchen unter irt52 (Terminal-Rechner) und irt55 (FTF-Rechner) die jeweiligen Verzeichnisstrukturen der beiden beteiligten Rechner auf. Mit dem Befehl dir oder l kann die Verzeichnisstruktur angezeigt und mit cd manövriert werden. Überprüfen Sie zunächst, ob die Netzwerkverbindung zwischen beiden Rechnern besteht. Öffnen Sie dazu auf dem Terminal-Rechner ein Eingabefenster und pingen Sie den FTF- Rechner mit dem Befehl ping irt55 an. Wechseln Sie anschließend auf dem Terminal-Rechner in ihr Home-Verzeichnis /home/labor/ und richten Sie die Labor-Umgebung durch Aufruf des Skripts labor für die Versuchsdurchführung ein. Die Einrichtung der Laborumgebung erfolgt sowohl auf dem Terminal- als auch auf dem FTF-Rechner über die exisitierende Netzwerkverbindung! 5.2.1 Timer-Programmierung Eine grundlegende Voraussetzung für eine zeitdiskrete Regelung ist das Abtasten zu äquidistanten Zeitpunkten. Dazu muss ein Timer programmiert werden. Wechseln Sie auf dem Terminal-Rechner in das Verzeichnis /home/labor/timer/ und ergänzen Sie die Vorlage entsprechend der Aufgabenstellung.

5.2 Programmierung mit der QNX API 21 Aufgabe 1: Programmieren Sie einen Timer, der in periodischen Abständen das Signal SI- GUSR1 generiert. Erzeugen Sie eine regelmäßige Ausgabe auf dem Bildschirm und verifizieren Sie anschließend Ihre Lösung. 1. Wechseln Sie in das Verzeichnis /home/labor/timer/ und ergänzen Sie die Vorlage timer.c. (Zum Editieren können Sie den JED-Editor verwenden, Aufruf: jed timer.c) 2. Compilieren und linken Sie Ihr Programm mit make. 3. Starten Sie Ihr Programm und überprüfen Sie die zeitäquidistante Ausgabe, indem Sie die eingebaute Stoppuhr in der Vorlagendatei benutzen und die Periodendauer in verschiedenen Iterationsschritten anpassen. Aufgabe 2: Wie kann nun der Quellcode für eine einfache Regelung aussehen? Schreiben Sie ein Programm in Pseudo-Code. Gehen Sie dabei nicht zu sehr ins Detail, sondern benutzen Sie Anweisungen im Sinne von z. B.: Regleralgorithmus: Berechnung der neuen Stellgröße. 5.2.2 Zugriff auf die Peripherie Nachdem Sie die allgemeine Grundstruktur einer Regelung diskutiert haben, sollen in einem vorbereitenden Schritt zunächst die Motoren und Sensoren angesteuert werden. Über das IP-Modul, das aus einem programmierbaren Logikbaustein mit DA-/AD-Wandlern besteht und als Erweiterungskarte auf dem FTF-Rechner die I/O-Verbindung realisiert, wird auf die Hardware zugegriffen. Damit Sie sich mit der eigentlichen Programmierung der Hardware- Ansteuerung nicht beschäftigen müssen, wurde eine Klasse implementiert, die die benötigten Funktionen zur Verfügung stellt. #include <IP_Modul.h> #include <SysDef_FTF.h> cip_modul::cip_modul (IP_MODUL_SLOT) Die Klasse ruft bei der Instanziierung automatisch ihren Konstruktor auf, der die nötigen Initialisierungen durchführt. Mit den folgenden Member-Funktionen erfolgt der entsprechende Zugriff recht einfach. float cip_modul::messegeschwindigkeit (); float cip_modul::messelenkwinkel (); cip_modul::steuerdrehzahlmotor ({FAHRMOTOR LENKMOTOR}, float tastverhaeltnis);

22 5 Versuchsdurchführung Die ersten beiden Funktionen erklären sich von selbst, die dritte steuert die beiden Motoren an, wobei der jeweilige Motor angegeben werden muss. Das Tastverhältnis des PWM-Signals kann im Bereich von -100%..+100% liegen. Ein positiver Wert entspricht einer Vorwärtsfahrt bzw. einer Rechtsdrehung der Lenkung, ein negativer Wert wirkt entsprechend entgegengesetzt. Aufgabe 3: Analog zu ihrem Pseudo-Code soll nun zunächst eine Steuerung implementiert werden. Dazu soll der Fahrmotor langsam vorwärts und rückwärts drehen. Die Wechsel sollten nicht abrupt, sondern idealerweise oszillierend erfolgen. Gleichzeitig soll der Lenkmotor die Antriebseinheit hin und her schwenken 1. Geben Sie zu regelmäßigen Zeitpunkten die Messwerte für Lenkwinkel und Geschwindigkeit aus. 2 1. Starten Sie die grafische Oberfläche Photon auf dem FTF-Rechner mit ph. 2. Öffnen Sie ein Terminal und wechseln Sie in das Verzeichnis /usr/ftf/labor/motoren/. 3. Vergleichen Sie Ihren Pseudo-Code mit der Vorlage motoren.cpp. Handelt es sich bei der Vorlage um eine Steuerung oder Regelung? Begründen Sie Ihre Antwort. 4. Ergänzen Sie die Vorlage um die fehlenden Hardware-Zugriffe und Programmzeilen. 5. Compilieren und linken Sie Ihr Programm mit make. 6. Bocken Sie das FTF mithilfe des kleinen roten Kunststoffblocks auf! 7. Überprüfen Sie, dass die Antriebseinheit etwas in der Luft hängt! 8. Fahren Sie erst fort, wenn Sie sich davon überzeugt haben! 9. Starten Sie den Antriebsstromkreis durch Drücken des Start-Buttons. Ein deutliches Anziehen des Schützes muss durch ein Klacken hörbar sein. Ist dies nicht der Fall, so ist wahrscheinlich der Not-Aus-Schalter noch eingerastet. Entrasten Sie ihn durch ein leichtes Drehen nach links. 10. Starten Sie ihr Programm, beobachten Sie die Motoren und vergleichen Sie das Verhalten mit der Ausgabe auf dem Bildschirm. 11. Stoppen Sie ihr Programm mit STRG+C. 1 Für den Lenkmotor bietet es sich in diesem Versuch an, die Amplitude auf das Intervall [ 2,5; 2,5] (Angabe in Prozent) zu beschränken. 2 Dies sollte nicht in jeder Abtastperiode, sondern nur etwa jede zehnte geschehen, da sonst zuviel Rechenperformance verloren geht und die Abtastintervalle evtl. nicht mehr eingehalten werden können. Außerdem ist die Ausgabe sonst auch viel zu schnell für eine Beobachtung.

5.2 Programmierung mit der QNX API 23 Hinweis: Sollten sich nach Abbruch Ihres Programms die Motoren noch drehen, obwohl ihr Programm nicht mehr aktiv ist, so können Sie mit dem Befehl stoppe die Motoren anhalten und neu ausrichten. 5.2.3 Implementierung einer einfachen Regelung Im nächsten Schritt soll nun eine einfache Regelung mit einem Proportional-Glied erfolgen. Dazu muss der Abstand der Lenkeinheit vom Leitdraht gemessen werden. Dies kann mit der folgenden Klasse geschehen: #include <Mikrolenksensoren.h> #include <SysDef_FTF.h> cmikrolenksensoren::cmikrolenksensoren (false); Die Member-Funktion messeabstand() misst den Abstand des vorderen und hinteren Mikrolenksensors vom Leitdraht in Millimeter, wobei für Vorwärtsfahrt der hintere Sensor nicht interessiert und nicht weiter berücksichtigt werden soll. cmikrolenksensoren::messeabstand (float *abstand_vorne, float *abstand_hinten); Aufgabe 4: Erweitern Sie nun Ihr Steuerungsprogramm aus der vorhergehenden Aufgabe zu einer Regelung. Benutzen Sie dazu die gegebene Vorlage bzw. greifen Sie auf Ihre Lösung aus der vorhergehenden Aufgabe zurück. Als Regler verwenden Sie einen einfachen P-Regler mit der Verstärkung: V = 2, 5 Die Längsbewegung soll ungeregelt bleiben, stellen Sie das Tastverhältnis des Antriebsmotors auf maximal 65 Prozent ein. 1. Wechseln Sie auf dem FTF-Rechner in das Verzeichnis /usr/ftf/labor/regelung/. 2. Verifizieren Sie den Code der Vorlage regelung.cpp. Handelt es sich um eine Regelung? Ergänzen Sie anschließend die noch fehlenden Programmzeilen. 3. Compilieren und linken Sie Ihr Programm mit make. 4. Richten Sie das FTF so aus, dass es an der Vorderseite mittig über dem Leitdraht platziert ist.

24 5 Versuchsdurchführung 5. Bocken Sie das FTF mithilfe des kleines roten Kunststoffblocks auf! 6. Überprüfen Sie, dass die Antriebseinheit etwas in der Luft hängt! 7. Fahren Sie erst fort, wenn Sie sich davon überzeugt haben! 8. Starten Sie den Antriebsstromkreis durch Drücken des Start-Buttons. 9. Schalten Sie die Stromversorgung für den Leitdraht ein und stellen Sie einen Wechselstrom von 30mA bei einer Frequenz von 5,2kHz an der Konstantstromquelle ein. 10. Starten Sie Ihr Programm und beobachten Sie die Lenkbewegung. Wird die Antriebseinheit immer über dem Leitdraht ausgerichtet, wenn Sie das FTF seitlich etwas hin und her schieben? Ist dies nicht der Fall, überprüfen Sie Ihren Code nochmals. Ansonsten können Sie nun das Fahrzeug fahren lassen. Stoppen Sie dazu Ihr Programm mit STRG+C. Sollten die Motoren noch laufen, so halten Sie sie mit dem Befehl stoppe an. Fahren Sie nun wie folgt fort: 1. Schließen Sie die grafische Oberfläche über den Launch-Button in der linken unteren Hälfte: Shutdown Photon Session. 2. Stellen Sie vom Terminal-Rechner aus eine Telnet-Verbindung her: telnet irt55 und loggen Sie sich ein. 3. Wechseln Sie in das Verzeichnis /usr/ftf/labor/regelung/. 4. Entfernen Sie den kleinen roten Aufbockblock vom FTF, sowie sämtliche Kabel und Anschlüsse. 5. Schalten Sie den Antriebsstromkreis ein, falls dieser abgeschaltet wurde. 6. Da in dieser Regelung noch keinerlei Sicherheitsabschaltungen eingebaut sind, sollte eine Person mit dem FTF mitgehen und eine Hand über dem Not-Aus-Button halten, falls eine kritische Situtation eintritt. 7. Rufen Sie nun Ihr Regelungsprogramm auf: regelung 8. Halten Sie das FTF an, nachdem es einige Zeit gefahren ist, indem Sie Ihr Programm beenden. Das Prinzip der Regelung sollte an dieser Stelle klar geworden sein. Jedoch ist der eingebaute Regler noch sehr rudimentär. Bei einer höheren Geschwindigkeit ist er nicht mehr in der Lage, das Fahrzeug auf dem Draht zu führen. Aus diesem Grund soll im nächsten Teil des Versuchs eine bessere Regelung entwickelt werden.

5.3 Reglerentwurf 25 Aufgabe 5: Bei genauer Betrachtung ist es erstaunlich, dass bereits ein einfacher P-Regler in der Lage ist, das FTF auf dem Leitdraht zu führen. Denn anhand der durchgeführten Modellbildung lässt sich die Strecke mit einem verzögerten doppelten Integrator beschreiben. Aus den Grundlagen der Regelungstechnik ist aber bekannt, dass ein P-Regler niemals in der Lage ist, eine solche Strecke (I2T) zu stabilisieren. Warum gelingt es trotzdem? Untersuchen Sie dazu das Verhalten des FTF bei hoher Geschwindigkeit, indem Sie das Fahrzeug wieder aufbocken und das Tastverhältnis für das PWM-Signal auf hundert Prozent setzen. 5.3 Reglerentwurf Die Übertragungsfunktion der Querbewegung lautet entsprechend der Modellbildung: G(s) = q q n u F M = 1 (T 1 s + 1) T 2 s } {{ } Lenkmotor 1 T 3 s }{{} Querdynamik (5.1) Mit den Zeitkonstanten: T 1 = 57,9ms T 2 = 0,7296s T 3 = 0,573s Es wird eine Kaskadenstruktur gewählt. Die innere Schleife regelt den Lenkwinkel, die äußere den Querabstand. Die folgende Abbildung 5.3 stellt diese Struktur dar und zeigt die beiden vorgeschlagenen Regler. Bild 5.3: Kaskadenstruktur der Regelung Im ersten Schritt wird die innere Kaskade ausgelegt. Der P-Regler arbeitet auf einer IT1- Strecke. Durch den Integrator ist der geschlossene Kreis im Führungsverhalten sogar sta-

26 5 Versuchsdurchführung tionär genau, jedoch nicht im Störübertragunsverhalten. Dies muss im Anschluss von der äußeren Kaskade übernommen werden. Aufgabe 9: Bestimmen Sie zunächst die Übertragungsfunktion des inneren geschlossenen Kreises und berechnen Sie anschließend durch einen Koeffizientenvergleich mit der Normalform eines PT2 die Verstärkung des P-Reglers für eine Dämpfung von D=1. Die innere Kaskade wird nun implementiert. Aufgabe 10: Modifizieren Sie Ihr Regelungsprogramm aus dem vorherigen Kapitel so, dass die innere Kaskade implementiert wird. 1. Geben Sie eine beliebige Sollvorgabe für den Lenkwinkel vor. Idealerweise programmieren Sie eine Rechteckfunktion (T 10s), sodass der Lenkwinkel laufend wechselt. 2. Programmieren Sie die innere Kaskade, indem Sie den Lenkwinkel messen und den Regelfehler berechnen. Zur Verifikation geben Sie den aktuellen Lenkwinkel und den Sollwinkel aus. float IP_Modul::messeLenkwinkel(); 3. Compilieren und linken Sie Ihr Programm mit make. 4. Bocken Sie das FTF mithilfe des kleines roten Kunststoffblocks auf. 5. Überprüfen Sie, dass die Antriebseinheit etwas in der Luft hängt! 6. Fahren Sie erst fort, wenn Sie sich davon überzeugt haben! 7. Starten Sie den Antriebsstromkreis durch Drücken des Start-Button. 8. Starten Sie Ihr Programm und beobachten Sie die Lenkbewegung. Folgt der Lenkwinkel der Sollvorgabe. Im zweiten Schritt wird nun die äußere Kaskade ausgelegt. Aufgabe 11: Approximieren Sie den inneren geschlossenen Kreis durch ein PT1-Glied. Legen Sie anschließend den PI-Regler für die sich ergebende IT1-Strecke nach dem symmetrischen Optimum bei einer Dämpfung von D=1 aus. Aufgabe 12: Erweitern Sie Ihr Regelungsprogramm um die äußere Kaskade. 1. Fügen Sie den PI-Regler entsprechend dem Blockschaltbild aus Abbildung 5.1 in Ihr Programm ein und parametrieren Sie ihn mit den Ergebnissen Ihrer Rechnung. 2. Compilieren und linken Sie Ihr Programm mit make. 3. Bocken Sie das FTF mithilfe des kleines roten Kunststoffblocks auf!

5.3 Reglerentwurf 27 4. Überprüfen Sie, dass die Antriebseinheit etwas in der Luft hängt! 5. Fahren Sie erst fort, wenn Sie sich davon überzeugt haben! 6. Starten Sie den Antriebsstromkreis durch Drücken des Start-Buttons. 7. Schalten Sie die Stromversorgung für den Leitdraht ein und stellen Sie einen Wechselstrom von 30mA bei einer Frequenz von 5,2kHz an der Konstantstromquelle ein. 8. Starten Sie Ihr Programm und beobachten Sie die Lenkbewegung. Folgt die Antriebseinheit auch dem Leitdraht, wenn Sie das FTF etwas hin- und herschieben? Ist dies der Fall, so können Sie das FTF erneut auf dem Leitdraht fahren lassen. Stoppen Sie dazu zunächst das Programm. 1. Schließen Sie die grafische Oberfläche über den Launch-Button in der linken unteren Hälfte: Shutdown Photon Session. 2. Stellen Sie vom Terminal-Rechner aus eine Telnet-Verbindung her: telnet irt55 und loggen Sie sich ein. 3. Wechseln Sie in das Verzeichnis /usr/ftf/labor/regelung/. 4. Entfernen Sie den kleinen roten Aufbockblock vom FTF, sowie sämtliche Kabel und Anschlüsse. 5. Schalten Sie den Antriebsstromkreis ein, falls dieser abgeschaltet wurde. 6. Da in dieser Regelung noch keinerlei Sicherheitsabschaltungen eingebaut sind, sollte eine Person mit dem FTF mitgehen und eine Hand über dem Not-Aus-Button halten, falls eine kritische Situtation eintritt. 7. Rufen Sie nun Ihr Regelungsprogramm auf: regelung 8. Halten Sie das FTF an, nachdem es einige Zeit gefahren ist, indem Sie Ihr Programm beenden.