Meine Diplomarbeit - Institute of Automatic Control and Control
Transcription
Meine Diplomarbeit - Institute of Automatic Control and Control
Technisch-Naturwissenschaftliche Fakultät Regelung eines 3-Tank-Labormodells mit einem Linux-Echtzeitsystem auf einem PC/104-Modul Projektseminar in der Studienrichtung Mechatronik Angefertigt am Institut für Regelungstechnik und Prozessautomatisierung Beurteilung: o.Univ.–Prof. Dipl.–Ing. Dr.techn. Kurt Schlacher Mitwirkung: Univ.–Ass. Dipl.–Ing. Dr.techn. Karl Rieger, MSc. Eingereicht von: Leopold Grießler 3233 Kilb, Christenberg 8 16. März 2010 Linz, März 2010. Johannes Kepler Universität Linz A-4040 Linz, Altenberger Str. 69, Internet: http://www.jku.at, DVR 0093696 Inhaltsverzeichnis Einleitung 1 1 Aufbau 1.1 3-Tank-Labormodell . . . . . . . . . . . 1.1.1 Tanks . . . . . . . . . . . . . . . 1.1.2 Pumpen . . . . . . . . . . . . . . 1.1.3 Sensoren . . . . . . . . . . . . . . 1.2 Verbesserungen am 3-Tank-Labormodell 1.2.1 Neue Schlauchanordnung . . . . . 1.2.2 Pumpen- und Abflussschläuche . 1.3 PC/104 System . . . . . . . . . . . . . . 1.4 Elektrische Zusammenschaltung . . . . . 2 Software und Installation 2.1 Betriebssystem Debian GNU/Linux . 2.2 Grafikbibliothek MesaLib . . . . . . . 2.3 Systembibliothek eFLTK . . . . . . . 2.4 Patchen des Linux-Kernels . . . . . . 2.5 Konfiguration des Linux-Kernels . . . 2.6 Konfiguration des Bootloaders Grub 2.7 Bibliothek ComediLib . . . . . . . . 2.8 RTAI (1) . . . . . . . . . . . . . . . . 2.9 Comedi . . . . . . . . . . . . . . . . 2.10 RTAI (2) . . . . . . . . . . . . . . . . 2.11 Testen der Ein-/Ausgabekarte . . . . 2.12 Scilab / Scicos . . . . . . . . . . . . . 2.13 RTAI-Lab Add-on für Scilab . . . . . 2.14 QRtaiLab . . . . . . . . . . . . . . . 2.15 Matlab für RTAI konfigurieren . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 4 4 5 6 6 7 8 11 . . . . . . . . . . . . . . . 13 13 14 15 16 17 17 18 18 19 20 21 21 22 22 23 INHALTSVERZEICHNIS INHALTSVERZEICHNIS 3 Modellbildung 3.1 Modell eines Tanks . . . . . . . . . . . . . . . . . . . 3.2 Modell einer Pumpe . . . . . . . . . . . . . . . . . . 3.2.1 Elektrisches Teilsystem . . . . . . . . . . . . . 3.2.2 Mechanisches Teilsystem . . . . . . . . . . . . 3.2.3 Gesamtsystem der Pumpe . . . . . . . . . . . 3.3 Modell des Gesamtsystems . . . . . . . . . . . . . . . 3.4 Modellreduktion . . . . . . . . . . . . . . . . . . . . . 3.4.1 Vernachlässigung der elektrischen Dynamik . . 3.4.2 Vernachlässigung der mechanischen Dynamik . . . . . . . . . . . . . . . . . . 4 Parameterbestimmung 4.1 Parameterbestimmung der Drucksensoren . . . . . . . . . 4.2 Parameterbestimmung der Tanks . . . . . . . . . . . . . 4.2.1 Ausfließverhalten im Hauptbetriebsbereich . . . . 4.2.2 Ausfließverhalten im Bereich Geringer Pegelstand 4.3 Parameterbestimmung der Pumpen . . . . . . . . . . . 4.3.1 Durchfluss aufgrund der Ankerspannung . . . . . 4.3.2 Durchfluss aufgrund der Pegelstände . . . . . . . 4.4 Parameterbestimmtes Gesamtsystem . . . . . . . . . . . 5 Mehrgrößenregelung der Pegelstände 5.1 Strecke . . . . . . . . . . . . . . . . . 5.2 Stellgrößentransformation . . . . . . 5.3 PI-Regler . . . . . . . . . . . . . . . 5.4 Aufbau und Test der Regelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . II . . . . . . . . . 25 25 28 28 29 30 30 32 32 33 . . . . . . . . 34 35 36 38 40 42 42 44 47 . . . . 50 50 51 53 56 6 Softwareseitige Umsetzung 60 6.1 Betriebssysteme und Rechner . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.2 Umstellung auf Scilab/Scicos . . . . . . . . . . . . . . . . . . . . . . . . . 60 7 Inbetriebnahme 63 A Anhang 68 A.1 Messungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 A.2 Simulationsmodelle in Scilab/Scicos . . . . . . . . . . . . . . . . . . . . . . 70 Literaturverzeichnis 72 Abbildungsverzeichnis 1 Gesamtsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 3-Tank-Laboraufbau . . . . . . . . . . . . . . . . . Tank . . . . . . . . . . . . . . . . . . . . . . . . . . Tauchpumpe . . . . . . . . . . . . . . . . . . . . . . Drucksensor . . . . . . . . . . . . . . . . . . . . . . Aufwallen des Wassers bei alter Schlauchanordnung Neue Schlauchanordnung . . . . . . . . . . . . . . . Motherboard Wafer-LX 3.5 . . . . . . . . . . . . . . Ein-/Ausgabekarte von Sensoray . . . . . . . . . . PC/104 System Innenansicht . . . . . . . . . . . . . PC/104 System Außenansicht . . . . . . . . . . . . Blockschaltbild Gesamtsystem . . . . . . . . . . . . Verbindungsbox . . . . . . . . . . . . . . . . . . . . Anschlussbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 3 4 5 6 7 7 9 9 10 10 11 12 12 2.1 Architektur RTAI [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.1 3.2 3.3 3.4 Tank . . . . . . . . . . . . . . . . . . . . . . . . . Ausfließkennlinie . . . . . . . . . . . . . . . . . . Elektrisches Schaltbild einer Gleichstrommaschine Höhendifferenzen . . . . . . . . . . . . . . . . . . . . . . 25 28 28 31 4.1 4.2 4.3 4.4 4.5 Strecke mit Pumpenansteuerung und Sensorspannungsmessung . . . . . . . Sensorkennlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ausfließkennlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in Abhängigkeit der Pegeldifferenz ∆h . . . . . Ausfließgeschwindigkeit dh dt dh Ausfließgeschwindigkeit dt in Abhängigkeit des darunterliegenden Pegelstandes hu am Bspl. von Tank 2 . . . . . . . . . . . . . . . . . . . . . . . . Pumpenkennlinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erforderliche Spannungen uA,i zum Halten eines Pegels . . . . . . . . . . . Füllgeschwindigkeit dh in Abhängigkeit von uA . . . . . . . . . . . . . . . . dt Blockschaltbild der simulierten Strecke . . . . . . . . . . . . . . . . . . . . 34 35 38 40 4.6 4.7 4.8 4.9 III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 43 45 47 48 ABBILDUNGSVERZEICHNIS ABBILDUNGSVERZEICHNIS IV 4.10 Stellgröße . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.11 Pegelstände . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1 5.2 5.3 5.4 5.5 5.6 5.7 Regler und Strecke mit überlagerter Stellgrößentransformation PI-Regler mit Transformation und Stellgrößenbeschränkung . PI-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PI-Regelung Simulation . . . . . . . . . . . . . . . . . . . . . PI-Regelung PC/104-System . . . . . . . . . . . . . . . . . . . Ergebnis der PI-Regelung . . . . . . . . . . . . . . . . . . . . Stellgröße der PI-Regelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 55 56 57 57 58 59 6.1 Scopes Manager von qRtailab . . . . . . . . . . . . . . . . . . . . . . . . . 62 7.1 7.2 7.3 7.4 Oberfläche von qRtailab . . . . . . . . . . . . . . . . . Sprungvorgabeparameter . . . . . . . . . . . . . . . . . Führungssprungvorgabeparameter . . . . . . . . . . . Führungsverlauf-Vorgabe bei der Ablaufregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 65 65 66 A.1 A.2 A.3 A.4 A.5 A.6 A.7 Messungen zur Identifikation von Pumpe 1 Messungen zur Identifikation von Pumpe 2 Messungen zur Identifikation von Pumpe 3 Blockschaltbild der Strecke . . . . . . . . . Blockschaltbild eines Tanks . . . . . . . . Blockschaltbild des Sammelbehälters . . . Blockschaltbild einer Pumpe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 69 70 70 71 71 71 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tabellenverzeichnis 1.1 Abmessungen der Tanks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 Mit Synaptic einzubindende Pakete . . . . . . . . . . . . . . . . . . . . . . 14 2.2 Benötigte Softwarepakete . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 5.1 Gewählte Eigenwerte beim PI-Regler . . . . . . . . . . . . . . . . . . . . . 54 7.1 Dateien-Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 7.2 Beispiel zur Regelung mit dem Sprungmodus . . . . . . . . . . . . . . . . . 66 V Einleitung Im Rahmen dieses Projektseminars wird ein kompaktes Linux basierendes Automatisierungssystem zur Pegelstandsregelung eines bestehenden 3-Tank-Labormodells entwickelt. Die Simulation und Regelung werden dabei ausschließlich mit Open-Source Paketen durchgeführt. Das gesamte System ist in Abbildung 1 dargestellt. Es handelt sich um übereinanderliegende Tanks, die mit Pumpen aus einem darunterliegenden Sammelbehälter versorgt werden. Die Tanks sind so miteinander verbunden, dass der Abfluss von Tank 1 in Tank 2, jener von Tank 2 in Tank 3 und jener von Tank 3 in den Sammelbehälter führt. Die Pegelstände der Tanks werden mit Drucksensoren gemessen. Die Pumpen werden über ein Automatisierungssystem angesteuert und geregelt. Als Automatisierungssystem wird ein PC/104 System mit einem durch RTAI (Real T ime Application I nterface) erweiterten Linux -Betriebssystem entwickelt. Durch diese Erweiterung können die für Echtzeitanwendungen strengen Zeitbeschränkungen bezüglich Lese- und Schreibprozesse eingehalten werden. Abbildung 1: Gesamtsystem Zur Übersicht dieser Arbeit werden die Inhalte der einzelnen Kapitel an dieser Stelle erläutert. Der Aufbau des Labormodells, vorgenommene Verbesserungen an diesem und der Aufbau des PC/104 Systems werden in Kapitel 1 erklärt. In Kapitel 2 wird die vollständige Installation des echtzeitfähigen Betriebssystems, des Open-Source Simulationspaketes Scilab/Scicos und des Visualisierungspaketes qRtailab am PC/104 System beschrieben. Mit der mathematischen Modellbildung und der Bestimmung der benötigteParameter befassen sich Kapitel 3 und 4. Die Mehrgrößenregelung der Pegelstände, welche eine Vorgabe 1 TABELLENVERZEICHNIS TABELLENVERZEICHNIS 2 für alle drei Pegelstände gleichzeitig zulässt, ist in Kapitel 5 erklärt. Dieses Kapitel enthält ebenso einen Vergleich von der Simulation der Regelung am mathematischen Modell und der Regelung am realem 3-Tank-Labormodell. In Kapitel 6 wird auf die softwareseitige Umsetzung des Projektes eingegangen. Weiters wird auf Probleme aufmerksam gemacht, die bei der Umstellung vom Programm Matlab/Simulink auf das Open-Source Projekt Scilab/Scicos entstanden sind. Die Inbetriebnahme des 3-Tank-Labormodells sowie die Durchführung einer Regelung werden in Kapitel 7 erläutert. 1 Aufbau In diesem Kapitel wird der Aufbau des 3-Tank-Labormodells vorgestellt. Abschnitt 1.1 beschreibt die konstruktiven Elemente des alten Modells [3], welche bis auf die in Abschnitt 1.2 beschriebenen Verbesserungen, übernommen wurden. Unter Abschnitt 1.3 wird das neue Automatisierungssystem, ein für das 3-Tank-Labormodell entwickelte PC/104 System, erklärt. Dieses wird zur Ansteuerung und Regelung verwendet. Die Zusammenschaltung des PC/104 Systems mit dem 3-Tank-Labormodell sowie die Versorgung der elektrischen Komponenten wird in Abschnitt 1.4 beschrieben. 1.1 3-Tank-Labormodell Abbildung 1.1: 3-Tank-Laboraufbau Das 3-Tank-Labormodell (Abb. 1.1) besteht aus drei übereinander liegenden Tanks, welche mit Ausflussschläuchen verbunden sind. Jeder Tank wird mit einer Pumpe über einen Pumpenschlauch aus dem Sammelbehälter mit Wasser versorgt. Dazu wird angenommen, dass sich immer genug Wasser im Sammelbehälter befindet, damit die Pumpen keine Luft ansaugen können. Ein Überfließen der Tanks verhindern Sicherheitsschläuche. Alle Wasserleitungen sind als Schläuche ausgeführt, wodurch das Modell in Hinsicht auf Umbauten 3 1. Aufbau 1.1.1. Tanks 4 flexibel ist. Um den Pegelstand der Tanks zu messen, sind drei Drucksensoren an der Unterseite der Tanks angebracht. Die Sensoren messen den Differenzdruck zwischen Druck im Tank und Atmosphäre und geben diesen als Spannung proportional zum Pegelstand aus. Weiters können die Pegelstände an Skalen an den Tanks und am Sammelbehälter abgelesen werden. Im Folgenden wird auf die Komponenten Tanks, Pumpen und Sensoren genauer eingegangen. 1.1.1 Tanks Abbildung 1.2: Tank Es werden quaderförmige Tanks verwendet, welche aus Plexiglasteilen aufgebaut sind. Die Abmessungen können Tab. 1.1 entnommen werden. Der oberste Tank, welcher in Abb. 1.1 als Tank 1 bezeichnet ist, hat einen Zuflussschlauch von der Pumpe. Die beiden anderen Tanks haben zwei, einen von der Pumpe und einen vom darüberliegenden Tank. Alle drei Tanks haben zwei flüssigkeitsabführende Schläuche, einen Abflussschlauch und einen Sicherheitsschlauch, welche über eingeklebte Schlauchanschlüsse an den Tanks angebracht sind. Alle Schläuche haben einen Innendurchmesser von 10 mm. Tank 1, 2, 3 Sammelbehälter Höhe H 90 mm 100 mm Länge a 51 mm 70.5 mm Breite b 100 mm 501 mm Tabelle 1.1: Abmessungen der Tanks 1.1.2 Pumpen Es werden handelsübliche Gartenpumpen verwendet, da diese einen geringen Anschaffungspreis haben. Die Pumpen werden so ausgelegt, dass deren Fördermenge doppelt so hoch ist, als die durchschnittliche Ausfließgeschwindigkeit von 5 l/min, welche aus Messungen bestimmt wurde. Theoretisch können diese Pumpen damit einen Tank doppelt so schnell mit Flüssigkeit befüllen, als diese vom Tank ausfließen kann. 1. Aufbau 1.1.3. Sensoren 5 Abbildung 1.3: Tauchpumpe Die Pumpen sind Niederspannungs-Tauchpumpen und haben eine geringe Betriebsspannung von 12 V DC. Weiters sind sie als Membranpumpen ausgeführt, welche nach folgendem Prinzip funktionieren. Die Membran wird durch einen Stößel auf und ab bewegt, wodurch das Volumen einer Arbeitskammer ständig vergrößert und verkleinert wird. Diese Kammer hat ein Saug- und ein Druckventil, welche beide Flüssigkeit nur in eine Richtung durchlassen. Dadurch sind die Pumpen unabhängig von der Drehrichtung und fördern immer in die gleiche Richtung. In folgender Auflistung sind die wichtigsten Daten der Pumpen zusammengefasst: • Betriebsspannung von 12 V DC (nur für Intervallbetrieb (max. 30 Minuten ein/aus) zulässig) • Max. Fördermenge von 10 l/min • Max. Stromaufnahme 1.7 A • Max. zulässige Dauerspannung 9 V 1.1.3 Sensoren Zur Messung der Pegelstände werden Drucksensoren (Honeywell 164PC01D37 ) verwendet (siehe Abb. 1.4). Diese werden unter jedem Tank angebracht und mit einem dünnen Schlauch mit dem Tankboden verbunden. Somit kann der Druck im Tank gemessen werden. Über den Differenzdruck p = pT − p0 zwischen dem Druck im Tank pT und dem Umgebungsdruck p0 kann über die Bernouli-Gleichung p0 + ρgh = pT (1.1) die Verbindung zum Pegelstand h= p ρg 1. Aufbau 1.2. Verbesserungen am 3-Tank-Labormodell 6 Abbildung 1.4: Drucksensor mit ρ der Dichte des Wassers und g der Erdbeschleunigung, hergestellt werden1 . Der Sensor liefert eine Spannung proportional zum Differenzdruck p. Diese Spannung führt über die Empfindlichkeit des Sensors auf den Pegelstand. Die wichtigsten Daten der Sensoren sind hier angeführt: • Versorgungsspannung von 8 V • Empfindlichkeit von 19.69 V/m (0.5 V/in, 1 in = 25.4 mm) 1.2 Verbesserungen am 3-Tank-Labormodell Am alten Labormodell [3] sind einige Probleme aufgetreten. Diese werden durch konstruktive Verbesserungen in diesem Abschnitt gelöst. 1.2.1 Neue Schlauchanordnung Beim alten Labormodell enden die Zuflussschläuche am rechten Rand der Tanks, wie Abb. 1.5 entnommen werden kann. Da das Wasser mit einem gewissen Druck in die Tanks fließt, strömt das Wasser mit diesem Druck an den rechten Rand und wird dort in die Höhe gewallt (Abb. 1.5), da es sonst keine Ausweichmöglichkeiten gibt. Dieses Aufwallen ist sehr unregelmäßig und physikalisch nicht zu erfassen. Daher kann es nicht in die Modellbildung einfließen. Wenn an die Pumpen die maximale Spannung von 12 V gelegt wird, erhöht sich dadurch der Druck so hoch, dass das Wasser so stark nach oben wallt, dass es aus den Tanks spritzt. Daher wurden die Ankerspannungen bei der Regelung des alten Labormodells auf 10 V begrenzt, wodurch das Ausspritzen verhindert wurde, das Aufwallen jedoch nicht. 1 Die Dynamik wird dabei nicht berücksichtigt. 1. Aufbau 1.2.2. Pumpen- und Abflussschläuche 7 Abbildung 1.5: Aufwallen des Wassers bei alter Schlauchanordnung Aus diesem Grund wird folgende konstruktive Verbesserung durchgeführt: Die Schlauchanordnung der Pumpen- und Abflussschläuche wird verändert. Der wesentliche Unterschied ist, dass in der neuen Anordnung die Enden der Schläuche nach unten zeigen und nicht mehr an den rechten Rand. Dadurch kann sich das einfließende Wasser nun am Tankboden gleichmäßig verteilen. Versuche ergaben, dass bei der Platzierung der Pumpenschläuche in Tankmitte (siehe Abb. 1.6), das ruhigste Verhalten entsteht und kein Aufwallen des Wassers mehr stattfindet. Da das Wasser durch die Abflussschläuche mit weniger Druck in die Tanks fließt, genügt es, diese nach unten am linken Tankrand senkrecht zu platzieren, wie Abb. 1.6 entnommen werden kann. Durch die neue Anordnung können die Pumpen mit maximaler Betriebsspannung von 12 V betrieben werden und müssen nicht mit 10 V, wie beim alten Labormodell, begrenzt werden. Abbildung 1.6: Neue Schlauchanordnung 1.2.2 Pumpen- und Abflussschläuche Beim alten Labormodell wurden billige Schläuche verwendet. An manchen Stellen der Pumpen- und Abflussschläuchen wurden nach einiger Zeit Querschnittsverengungen sichtbar. Messungen ergaben, dass sich dadurch das Durchflussverhalten der Pumpen und das Ausfließverhalten der Tanks verändert hat. Daher mussten die Durchflussparameter der 1. Aufbau 1.3. PC/104 System 8 Pumpen und die Ausfließparameter neu identifiziert werden. Um eine weitere Identifikation in Zukunft zu vermeiden, wurden die alten Pumpen- und Abflussschläuche mit neuen hochwertigen PVC-Gewebeschläuchen ersetzt, welche einen dauerhaften Querschnitt und somit konstante Parameter garantieren sollen. 1.3 PC/104 System Zur Steuerung und Regelung des 3-Tank-Labormodells wird ein Automatisierungssystem benötigt. Am alten Labormodell [3] wurde ein kommerzielles System des Herstellers dSpace verwendet. Ziel dieses Projektseminars ist es, ein gleichwertiges viel kostengünstigeres System zu entwickeln. Das Betriebssystem Linux mit der Echtzeiterweiterung RTAI kann die für Echtzeitanwendungen geforderten, strengen Zeitbeschränkungen bezüglich Lese- und Schreibprozesse einhalten und läuft auf jedem standardmäßigen Rechner. Über eine entsprechende Ein/Ausgangskarte kann vom Rechner mit dem 3-Tank-Labormodell kommuniziert werden. Für industrielle Anwendungen wird kein herkömmlicher PC verwendet. Es werden Systeme verwendet, welche kompakt sind und an den jeweiligen Fall angepasst werden können. Darum wird für das 3-Tank-Labormodell ein PC/104 System verwendet. Im Folgenden wird dieses System näher erläutert. PC/104 ist ein Standard für kompakte eingebettete Systeme, auf dessen Basis underschiedliche Platinen angeboten werden. Als Beispiele können komplette Einplatinenrechner und Platinen für digitale und analoge Ein-/Ausgänge genannt werden. Verbunden können diese ein komplexes Rechensystem bilden. Folgende Ansprüche werden an das hier zu verwendete PC/104 System gestellt: • Installation eines echtzeitfähigen Betriebssystem. • Drei analoge Ausgänge zur Ansteuerung der drei Pumpen des 3-Tank-Modells. • Drei analoge Eingänge zum Einlesen der drei Drucksensoren des 3-Tank-Modells. • Ausreichend Anschlüsse für Peripheriegeräte. Folgende Komponenten wurden gewählt, um diesen Ansprüchen gerecht zu werden: • Motherboard: Wafer-LX 3.5” Low Power AMD Geode-LX 800 Motherboard von IEI Technology Corp. (Abb. 1.7) • Ein-/Ausgangskarte: PC/104 Multifunction I/O Board von Sensoray (Abb. 1.8) • 80 GB Festplatte Das PC/104 System hat nun folgende Eigenschaften: • 5V Versorgung 1. Aufbau 1.3. PC/104 System Abbildung 1.7: Motherboard Wafer-LX 3.5 Abbildung 1.8: Ein-/Ausgabekarte von Sensoray • AMD LX-800 500MHz Prozessor • 1 GB SDRAM • 4 USB-Anschlüsse • 2 Ethernet-Anschlüsse • 2 SATA-Kanäle • 4 Analoge Ausgänge • 8 Analoge Eingänge • 8 Digitale Ein-/Ausgänge • 4 Encoder Eingänge • 80 GB Festplattenspeicher 9 1. Aufbau 1.3. PC/104 System 10 • Latenzzeit von 61 µs2 Abbildungen 1.9 und 1.10 zeigen die einzelnen Komponenten, deren Verbindung und die Anschlüsse des gesamten PC/104 Systems. Abbildung 1.9: PC/104 System Innenansicht Abbildung 1.10: PC/104 System Außenansicht 2 Die Latenzzeit wird in Abschnitt 2.8 durch Ausführen des Echtzeittests bestimmt. 1. Aufbau 1.4 1.4. Elektrische Zusammenschaltung 11 Elektrische Zusammenschaltung Abbildung 1.11: Blockschaltbild Gesamtsystem In diesem Abschnitt wird beschrieben, wie das PC/104 System mit dem 3-Tank-Labormodell verbunden wird und welche Versorgung die Pumpen und Sensoren benötigen. Abb. 1.11 zeigt die Zusammenschaltung aller Komponenten. Über die Ein-/Ausgangskarte (I/OBoard) kann das PC/104 System analoge Signale an die Pumpen senden bzw. analoge Signale von den Sensoren empfangen. Als Schutz für das PC/104 System, wird dieses von den Pumpen und Sensoren potentialgetrennt. Dies erfolgt durch Trennverstärkerkarten (ISO-2/4 Analog vom Hersteller Imtron). Zur Ansteuerung der Pumpen wird Strom benötigt. Diesen liefern Leistungsverstärker (Universal Power Module von Quanser ), welche als Spannungsfolger mit hohem Innenwiderstand realisiert werden. Die Pumpen können bis zu einer Betriebsspannung von 12 V betrieben werden, die Ein-/Ausgangskarte des PC/104 Systems hat jedoch nur einen Spannungsbereich von ±10 V. Um die Pumpen mit voller Leistung betreiben zu können, werden in diesem Fall Kabel mit 3-facher Verstärkung verwendet, wodurch die 12 V erreicht werden können. Die Sensoren benötigen eine Versorgungsspannung von 8 V. Diese wird von einem Netzgerät bereitgestellt.Um das PC/104 System sicher mit den Trennverstärkerkarten verbinden zu können, wurde die Verbindungsbox (Abb. 1.12) mit den entsprechenden Anschlusssteckern hergestellt. Ebenso sorgt die Anschlussbox (Abb. 1.13) dafür, dass die Sensoren und Pumpen am 3-Tank-Labormodell einfach und sicher mit Kabel angeschlossen werden können. 1. Aufbau 1.4. Elektrische Zusammenschaltung Abbildung 1.12: Verbindungsbox Abbildung 1.13: Anschlussbox 12 2 Software und Installation Dieses Kapitel beschreibt die Installation eines echtzeitfähigen Betriebssystems mit ausschließlich Open-Source-Software am PC/104 System, welches in Kapitel 1.3 beschrieben ist (vgl. [1, 2]). 2.1 Betriebssystem Debian GNU/Linux Aufgrund von Erfahrungen aus anderen Projekten (unter anderem aus [1, 2]) wird als Betriebssystem die stabile Linux -Distribution Debian GNU/Linux 4.0r3 “Etch”) ausgewählt. Diese steht im Internet unter [4] frei zur Verfügung. Eine genaue Installationsanleitung und eine umfassende Dokumentation ist ebenfalls unter [4] zu finden. Für dieses System wird das netinst-Image mit Basispaketen für ein i386-System ausgewählt. Die Installation erfolgt über ein externes CD-ROM-Laufwerk, welches über den eSata-Anschluss mit dem PC/104 System verbunden wird. Dazu muss im BIOS-Setup-Menü1 unter Advanced BIOS Features/First Boot Device : CDROM eingestellt werden. Nach dem Booten der CD sind folgende Schritte durchzuführen: • Sprache und Tastaturlayout auswählen: Deutsch, Österreich. • Netzwerkeinstellungen werden per DHCP automatisch eingerichtet. Wenn sich der Rechner in keinem Netzwerk befindet, können die Einstellungen auch manuell getätigt werden. • Partionierung der 80 GB Festplatte: Standardeinstellung primäre Partition von 78,5 GB und swap Speicher von 1,5 GB bestätigen. Der swap Bereich dient als Auslagerungsspeicher, um den Arbeitsspeicher zu erweitern. • Passwort für den “root”-Administrator eingeben und einen regulären Benutzer anlegen. • Die Pakete Desktop und Web für die Verwendung des Rechners auswählen. • Netzwerkspiegel auswählen, von dem die erforderlichen Pakete heruntergeladen werden können. • Für alle weiteren Eingaben können die Standard-Einstellungen belassen werden. 1 Ins BIOS-Menü gelangt man beim Award BIOS durch Drücken von Strg-Alt-Esc oder Enf während des POST (Power on S elf T est). 13 2. Software und Installation 2.2. Grafikbibliothek MesaLib 14 • Der Grafikchip ist vom Hersteller AMD. Damit die grafische Oberfläche funktioniert, muss der AMD Geode Driver installiert werden: Das Paket xf86-video-geode-2.11.3 kann von http://cgit.freedesktop.org/xorg/driver/xf86-video-geode/ heruntergeladen und mit der Synaptic-Paketverwaltung installiert werden. Nach der Grundinstallation von Linux werden für die folgenden Schritte, die in Tabelle 2.1 aufgelisteten Pakete benötigt, welche mit der Synaptic-Paketverwaltung installiert werden. Um alle Rechte zu haben und Probleme auszuschließen, sollen ab jetzt alle Kommandomake g77 automake autoconf pvm-dev libtool bison doxygen libqt3-mt-dev libgtk2.0-dev cvs gcc-3.4 g++-3.4 gettext ocaml initrd-tools swig flex ruby lshw ruby1.8-dev python2.4-dev docbook-utils docbook-to-man patch sablotron tcl8.4-dev tk8.4-dev xaw3dg-dev Tabelle 2.1: Mit Synaptic einzubindende Pakete zeilenoperationen mit Administratorrechten ausgeführt werden. Um das zu ermöglichen, muss im Startbildschirm unter dem Menü Aktionen die Option Systemadministrator einloggen möglich ausgewählt werden. Abschließend werden die verwendeten Kompiler im Root-Terminal mit folgenden Operationen eingestellt: cd /usr/bin ln -sf gcc-3.4 gcc ln -sf gccbug-3.4 gccbug ln -sf g++-3.4 g++ ln -sf cpp-3.4 cpp Im nächsten Schritt werden die Quellcodes der benötigten Softwarepakete, welche in Tabelle 2.2 aufgelistet sind in ein beliebiges Download-Verzeichnis z.B. root/Desktop/ Download heruntergeladen, woraus diese dann später installiert werden. Die gewählten Versionen sind bewusst nicht die aktuellsten. Diese haben jedoch bereits auf anderen Systemen erfolgreich und stabil funktioniert. Die Bedeutung und Verwendung der einzelnen Softwarepakete wird später bei der jeweiligen Implementierung erläutert. 2.2 Grafikbibliothek MesaLib Die 3D-Grafikbibliothek MesaLib wird für die grafische Verarbeitung des Visualisierungspaketes qRtailab benötigt. Sie ist vergleichbar mit DirektX unter Microsoft Windows, aber plattformunabhängig und ein Open-Source Paket. In den folgenden Schritten wird die Version MesaLib-6.4.2 installiert und eingerichtet. Als Download-Verzeichnis wird root/Desktop/Download gewählt. 2. Software und Installation Softwarepaket Mesa Bibliothek EFLTK Bibliothek Linux Kernel RTAI Comedi Comedi Bibliothek Scilab RTAI-Erweiterung für Scilab 2.3. Systembibliothek eFLTK Quelle www.mesa3d.org www.equinox-project.org www.kernel.org www.rtai.org www.comedi.org www.comedi.org www.scilab.org wiki4students 15 Datei MesaLib-6.4.2.tar.bz2 efltk-2.0.7.tar.gz linux-2.6.17.14.tar.bz2 rtai-3.5.tar.bz2 comedi-0.7.76.tar.gz comedilib-0.8.1.tar.gz scilab-4.1.2-src.tar.gz scilab-4.1.2-rtailab.tgz Tabelle 2.2: Benötigte Softwarepakete cd /usr/local/src cp /root/Desktop/Download/MesaLib-6.4.2.tar.bz2 . →Achte auf das Leerzeichen und den Punkt am Ende dieser Anweisung. tar xjvf MesaLib-6.4.2.tar.bz2 →Hier werden die Dateien in ein Verzeichnis mit dem selben Namen entpackt. cd Mesa-6.4.2 make realclean →Dieser Befehl entfernt die nicht mehr benötigten Dateien. make linux -x86-static →Damit werden die Dateien für ein x86 System kompiliert. make install →Folgende Pfade müssen bei den folgenden Abfragen angegeben werden: /usr/x11R6/include /usr/x11R6/lib 2.3 Systembibliothek eFLTK Efltk (E xtended f ast l ight toolkit) ist die zweite Systembibiliothek, die für die grafische Verarbeitung von qRtailab notwendig ist. Mit folgenden Anweisungen wird dieses Paket installiert: cd /usr/local/src cp /root/Desktop/Download/efltk-2.0.7.tar.gz . tar xzf efltk-2.0.7.tar.gz ln -s efltk-2.0.7 efltk cd efltk ./efltk-config.in –prefix=/usr/local/ –multithread ./emake 2. Software und Installation 2.4. Patchen des Linux-Kernels 16 ./emake install gedit /etc/ld.so.conf →Die Anweisung /usr/local/lib wird am Anfang der Datei eingefügt. →Mit “Speichern” und “Beenden” wird diese Änderung abgeschlossen. ldconfig 2.4 Patchen des Linux-Kernels RTAI (Real T ime Application I nterface) ist eine Erweiterung von Linux zu einem Echtzeitsystem. Als Grundlage dient der noch unveränderte Linux-Kernel, welcher mit dem RTAI-Patch erweitert wird. Wie in Abb. 2.1 zu sehen ist, wird durch diesen Patch ein Echtzeit-Kernel zwischen Hardware (Prozessor) und Linux-Kernel eingefügt. Danach verwaltet dieser die Interrupts des Prozessors mit folgender Rangordnung: Der ursprüngliche Linux-Kernel erhält die niedrigste Priorität, wodurch für die Echtzeittasks die höchste Priorität bleibt und die strikten Zeitbeschränkungen bezüglich Lese- und Schreibprozessen gewährleistet werden können. Der Linux-Kernel wird also immer nur dann ausgeführt, wenn die Echtzeittasks nichts zu tun haben. Die folgenden Anweisungen führen das Pat- Abbildung 2.1: Architektur RTAI [6] chen des Kernels durch. cd /usr/src cp /root/Desktop/Download/linux-2.6.17.14.tar.bz2 . tar xjvf linux-2.6.17.14.tar.bz2 mv linux-2.6.17.14 linux-2.6.17.14-rtai ln -s /usr/src/linux-2.6.17.14-rtai linux cp /root/Desktop/Download/rtai-3.5.tar.bz2 . tar xjvf rtai-3.5.tar.bz2 ln -s /usr/src/rtai-3.5 rtai 2. Software und Installation 2.5. Konfiguration des Linux-Kernels 17 cd linux patch -p1 < /usr/src/rtai/base/arch/i386/patches/... ...hal-linux-2.6.17-i386-1.5-02.patch make oldconfig →Alle Abfragen mit ENTER-Taste bestätigen um den Standard-Wert auszuwählen. make xconfig →Siehe Abschnitt 2.5 make make modules install make install mkinitrd -o /boot/initrd.img-2.6.17.14-rtai 2.6.17.14-rtai gedit /boot/grub/menu.lst →Siehe Abschnitt 2.6 Die Installation wird in Abschnitt 2.7 fortgesetzt. 2.5 Konfiguration des Linux-Kernels Die Konfiguration wird vom Linux-Knoppix-Kernel übernommen und ist auf der beigelegten CD angeführt (kernel configuration.rtf). 2.6 Konfiguration des Bootloaders Grub Als Bootloader dieses Linux Systems wird der Haupt-Bootloader für i386 Grub (Gr and unified bootloader) verwendet. Durch gedit /boot/grub/menu.lst kann man die Datei menu.lst, welche das Aussehen und die Funktionalität des Bootmenüs festlegt, bearbeiten und folgende Flags setzen: default = 0 howmany = all memtest86 = false Die Änderungen mit “Speichern” und “Beenden” abschließen und mit update-grub aktualisieren. Danach muss das System neu gestartet werden. Bei jedem Start erscheint nun das Bootmanager-Menü, in dem das gewünschte startfähige Betriebssystem mit dem richtigen Kernel, ausgewählt werden kann. 2. Software und Installation 2.7 2.7. Bibliothek ComediLib 18 Bibliothek ComediLib Comedi (Control and measurement d evice i nterface) stellt den Treiber für die Ein-/ Ausgabekarte bereit. Dieses Open-Source Paket steht für viele der gängigsten Messkarten zur Verfügung. Die folgenden Anweisungen installieren die Bibliothek von Comedi mit der Version Comedilib-0.8.1. cd /usr/local/src cp /root/Desktop/Download/comedilib-0.8.1.tar.gz . tar xzf comedilib-0.8.1.tar.gz cd comedilib-0.8.1 sh autogen.sh ./configure -sysconfdir=/etc -localstatedir=/var make gedit /usr/local/src/comedilib/doc/Makefile →Die Einträge install man und uninstall man auskommentieren. make install make dev Nach erfolgreicher Installation sollen im Verzeichnis /dev die Comedi Devices comedi0 comedi9 erstellt worden sein. 2.8 RTAI (1) Aufgrund der Abhängigkeit von RTAI und Comedi wird im ersten Schritt RTAI ohne Comedi-Unterstützung installiert. cd /usr/src/rtai make xconfig →Machine(x86): Number of CPUs auf 1 setzen, speichern und beenden. make make install gedit /etc/bash.bashrc →Anweisung export PATH=/usr/realtime/bin:$PATH am Ende der Datei einfügen. →Speichern, beenden und System neu starten. Um RTAI verwenden zu können, müssen Module geladen werden. Dazu wird dieses Startskript loadrtai geschrieben, welches am Beginn jedes Tasks ausgeführt werden muss. gedit /usr/realtime/bin/loadrtai #!/bin/bash 2. Software und Installation 2.9. Comedi 19 mknod -m66/dev/rtai shm c 10 254 for n in ‘seq 0 9‘ do f=/dev/rtf$n mknod -m 666 $f c 150 $n done MOD DIR=/usr/realtime/modules insmod $MOD DIR/rtai hal.ko insmod $MOD DIR/rtai lxrt.ko insmod $MOD DIR/rtai fifos.ko insmod $MOD DIR/rtai sem.ko insmod $MOD DIR/rtai mbx.ko insmod $MOD DIR/rtai msg.ko insmod $MOD DIR/rtai netrpc.ko ThisNode=”10.0.0.50”2 insmod $MOD DIR/rtai shm.ko insmod $MOD DIR/rtai signal.ko insmod $MOD DIR/rtai tasklets.ko #!/usr/realtime/bin/urtnet & →Speichern und beenden cd /usr/realtime/bin chmod a+x loadrtai gedit /etc/profile →Nach der Zeile export PATH Anweisung export PATH=/usr/realtime/bin: $PATH einfügen Mit folgender Anwendung wird ein Echtzeittest des Systems durchgeführt, mit dem eine erfolgreiche Installation überprüft werden kann. loadrtai cd /usr/realtime/testsuite/kern/latency ./run Hier dürfen bei der Ausgabe keine zeitlichen Überläufe (overruns) vorkommen. 2.9 Comedi An dieser Stelle wird nun die Schnittstelle zwischen der Sensoray Ein-/Ausgabekarte und dem Linux-Echtzeitsystem mit der Version Comedi-0.7.76 installiert. 2 10.0.0.50: Hier wird die IP-Adresse des Rechners im verwendeten Netzwerk angegeben. 2. Software und Installation 2.10. RTAI (2) 20 mkdir /usr/local/src/comedis586 cd /usr/local/src/comedis586 cp /root/Desktop/Download/comedi.tar.bz2 . tar xvf comedi.tar.bz2 gedit /usr/src/linux/.config →Am Ende folgende Anweisung anfügen: CONFIG RTHAL=y →Speichern und beenden make make install cp include/linux/comedi.h /usr/include/ cp include/linux/comedilib.h /usr/include/ ln -s /usr/include/comedi.h /usr/include/linux/comedi.h ln -s /usr/include/comedilib.h /usr/include/linux/comedilib.h ln -s /usr/include/linux /usr/local/include/linux Die Treiber der Sensoray-Karte werden mit folgendem Startskript loadcomedi geladen: gedit /usr/realtime/bin/loadcomedi #!/bin/bash insmod /lib/modules/2.6.17.14-rtai/comedi/comedi.ko insmod /lib/modules/2.6.17.14-rtai/comedi/kcomedilib/kcomedilib.ko insmod /lib/modules/2.6.17.14-rtai/comedi/drivers/s526.ko comedi config /dev/comedi0 s526 0x200,0x33 modprobe comedi fc sync insmod /usr/realtime/modules/rtai comedi.ko sync 2.10 RTAI (2) Mit dem eingebundenen Paket Comedi kann nun im zweiten Schritt RTAI mit Comedi Unterstützung installiert werden. cd /usr/src/rtai make xconfig • Add-ons: 3 0x200 ist die Adresse der Sensoray-Karte. Als Standard ist 0x2c0 eingestellt. Diese kann durch den Jumper J1 auf der Karte verändert werden. Genauere Informationen können im Handbuch der Karte unter www.sensoray.com nachgelesen werden. Die eingestellte Adresse muss mit der Adresse, welche im BIOS unter Integrated Peripherals/IT8888 ISA Decode IO/Decode I/O Addr. eingegebenen ist, übereinstimmen. 0x3 beschreibt die Interrupt-Linie, welche auch durch den Jumper J1 auf der Sensoray-Karte gesetzt wird. 2. Software und Installation 2.11. Testen der Ein-/Ausgabekarte 21 – Comedi support over LXRT - aktivieren – COMEDI installation directory: /usr/local eingeben • RTAI-Lab – RTAI-Lab - aktivieren – EFLTK installation directory: /usr/local eingeben →Speichern und beenden. make make install 2.11 Testen der Ein-/Ausgabekarte Um die Sensoray-Karte zu prüfen, kann das Testprogramm tut2.c von wiki4students 4 im Verzeichnis /usr/local/src/comedilib/demo ausgeführt werden. Dieses Programm liest einen analogen Eingang ein und schreibt einen Wert auf einen analogen Ausgang. Die Information über die Adressen und Kanäle der Karte, welche im Programm zugewiesen werden müssen (mit gedit tut2.c), erhält man über die Anwendung: ./board info Mit ./tut2.c kann die Karte nun getestet werden. 2.12 Scilab / Scicos Das Open-Source Paket Scilab/Scicos wird für die Simulation des mathematischen Modells und der zugehörigen Regler sowie für die automatische Echtzeitcodegenerierung von RTAI verwendet. In diesem Abschnitt wird das Softwarepaket mit der Version Scilab-4.1.2 installiert. 4 wiki4students ist ein Studentennetzwerk und internes Informationsportal über RTAI des Institut für Regelungstechnik und Prozessautomatisierung der JKU Linz. 2. Software und Installation 2.13. RTAI-Lab Add-on für Scilab 22 cd /usr/local cp /scilab-4.1.2.tar.gz . tar xzvf scilab-4.1.2.tar.gz cd scilab-4.1.2 ./configure –without-java make all cd /usr/src/rtai/rtai-lab/scilab/macros gedit Makefile →Scilab-Version auf 4.1.2 umstellen make install ln -s /usr/local/scilab-4.1.2/bin/scilab /usr/local/bin/scilab5 Mit Eingabe von scilab im root-Terminal kann nun das Programm gestartet werden. 2.13 RTAI-Lab Add-on für Scilab Um in Scicos einen Echtzeitcode generieren zu können, wird dieses Zusatzpaket installiert. cd /usr/local cp /root/Desktop/Download/scilab-4.1.2-rtailab.tgz . tar zxvf scilab-4.1.2-rtailab.tgz Nun müssen die Dateien vom Add-on /usr/local/scilab-4.1.2-rtailab im Verzeichnis /usr/src/rtai-3.5/rtai-lab/scilab/ überschrieben werden. cd scilab-4.1.2-rtailab/macros make install exit make user Beim Start von Scilab soll nun die Kommandozeile RTAI ready erscheinen. Weiters stehen in Scicos die Optionen CodeGen und Set Target und die RTAI-Lib-Palette zur Verfügung. 2.14 QRtaiLab QRtailab ist ein Visualisierungspaket, mit dem Daten eines laufenden Echtzeitprozesses angezeigt und verändert werden können. Dieses kann nur auf einem Linux-Betriebs-system mit RTAI-Erweiterung verwendet werden. Hier folgt der Installationsvorgang für qRtailab. • qRtailab on etch von wiki4students herunterladen und den Anweisungen in readme.txt folgen: 5 Dieser Link wird gesetzt, damit Scilab in jedem Verzeichnis gestartet werden kann. 2. Software und Installation 2.15. Matlab für RTAI konfigurieren 23 • Zeilen mit “file:/// ” und “etch-backports main” von sources.list am Ende der Systemdatei /etc/apt/sources.list (mit gedit /etc/apt/sources.list) hinzufügen. • Pakete von rootfs/root/Desktop/Downloads nach /root/Desktop/Downloads am System ablegen. • Synaptic Paketverwaltung aktualisieren und alle qt4-4 -Pakete und das Paket libqwt5qt4-dev aus den etch backports installieren. • Die ausführbare Datei qRtailab von /qrtailab on etch/binary etch in den Ordner /usr/realtime/bin ablegen. • Mit ./qrtailab starten. 2.15 Matlab für RTAI konfigurieren In Matlab besteht die Möglichkeit eine automatische Echtzeitcodegenerierung durchzuführen. Im aktuellen Projekt kommt dies zur Anwendung, um die bereits vorhandenen Reglerentwürfe in Matlab am Windows-dSpace-System mit dem Linux-PC/104-System zu vergleichen. Im folgenden Abschnitt wird die Einbindung von RTAI in Matlab beschrieben. Dabei muss auf die verwendeten Softwareversionen Rücksicht genommen werden. Bei diesem Projekt werden RTAI-3.5 und Matlab R14 SP3 verwendet. (Die Kombination RTAI-3.5 und Matlab R2007b funktioniert zur Zeit noch nicht.) • Kopiere vom Linux -System den Inhalt des Ordners /usr/src/rtai-3.5/rtai-lab/ matlab in den Ordner C:\Program Files\Matlab\2007a\rtw\c\rtai 6 am Windows- Rechner • Führe die Datei setup.m vom rtai -Ordner in Matlab aus. Danach sollten in der Simulink -Bibliothek RTAI-Devices auswählbar sein. • Verändere die Datei rtai.tmf im rtai -Ordner folgendermaßen: – MATLAB ROOT=/usr/local/matlab →Es wird das Matlab-Arbeitsverzeichnis am Linux-System angegeben. – COMPUTER=GLNX86 →Es wird vorausgesetzt, dass das Linux-System eine x86-Architektur besitzt. – LINUX HOME=/usr/src/linux →Installationsverzeichnis von Linux – RTAIDIR=/usr/realtime →Installationsverzeichnis von rtai – COMEDI HOME=/usr/src/comedi →Installationsverzeichnis von comedi 6 Dieser Pfad hängt vom Installationsverzeichnis von Matlab ab. Er könnte z.B. auch C:\Matlab701\rtw\c\rtai sein. 2. Software und Installation 2.15. Matlab für RTAI konfigurieren 24 – Lösche folgende Zeilen im root-Abschnitt: |>START EXPAND RULES<|%.o : |>EXPAND DIR NAME<| /%.c gcc -c $(CFLAGS) $< |>END EXPAND RULES<| • Kopiere die drei Ordner extern, rtw und simulink vom Verzeichnis C:\Program Files\Matlab\2007a\ im Windows-System in den am Linux -System erstellten Ordner /usr/local/matlab. Überprüfe, ob alle c Dateien vom \rtw\c\libsrc-Ordner mitkopiert wurden. • Um die Code-Generierung zu testen, kopiere die Datei C:\Program Files\Matlab\2007a\rtw\c\rtai\examples\test.mdl in einen anderen Ordner z.B. C:\Program Files\Matlab\2007a\work. Öffne diese Datei in Simulink und führe sie aus. • Überprüfe, ob RTAI-Target unter dem Menüpunkt Simulation/Configuration Parameters/Real-Time Workshop ausgewählt ist und generiere den Code mit Build. • Danach kopiere den generierten Ordner test rtai ins Linux-System z.B. nach /usr/local/src/tests. Folgende Anweisungen kompilieren und führen das Testprogramm 5 sec aus. Die Eingaben müssen als root-Benützer durchgeführt werden. cd /usr/local/src/tests/test rtai make -f test.mk cd /usr/local/src/tests/ ./test -v -f 5 • Um das Visualisierungsprogramm zu testen, starte den Prozess test im Warte-Modus und führe qRtaiLab aus: ./test & qrtailab & 3 Modellbildung Die hier angeführte Modellbildung basiert auf der Modellbildung in [3]. Der wesentliche Unterschied zu [3] ist, dass in dieser Arbeit nur die Untersuchung von dem verwendeten Modell mit dichtem Abfluss, wie in Abb. 3.1 dargestellt, durchgeführt wird. Jedes Teilsystem (Tank und Pumpe mit Motor) wird im Einzelnen betrachtet und am Ende zu einem Gesamtsystem zusammengefasst. 3.1 Modell eines Tanks Abbildung 3.1: Tank Jeder Tank lässt sich allgemein als dynamisches System q zu (t) dh(t) = −fab (h(t), hu (t)) + dt A qab (t) = fab (h(t), hu (t))A (3.1) (3.2) beschreiben. Der Zustand h stellt den Pegelstand des betrachteten Tanks dar. Der Pegelstand des darunterliegenden Tanks hu und der Zufluss qzu , angegeben als Volumenstrom, sind die beiden Eingänge des Systems. Der Ausgang des Tankmodells ist der Abfluss 25 3. Modellbildung 3.1. Modell eines Tanks 26 qab , ebenfalls angegeben als Volumenstrom. Aus physikalischer Sicht wird nur der Bereich h(t) ≥ 0 betrachtet. A ist der Querschnitt des Tanks. Die Funktion fab beschreibt das Ausfließverhalten. Das Wasser wird durch einen Schlauch in den darunterliegenden Tank geführt. Das Ende dieses Schlauches liegt am Boden und somit unter dem Wasserpegel dieses Tanks. Das Wasser wird als inkompressibles Fluid (r =const.) modelliert. Weiters wird der Pegelstand waagrecht und gleich über dem gesamten Tank angenommen. Oberflächenwellen werden vernachlässigt. Das hinunterfließende Wasser tritt am Ende des Abflussschlauches aus (siehe Abb. 3.1 Drucklevel 2). Dort herrscht ein höherer Druck als der Atmosphärendruck p0 . Mit dem erweiterten Satz von Bernoulli (mit Reibung) wird das Ausfließverhalten modelliert. Dieser wird zweimal angesetzt. In Gl. 3.3 wird die Stromröhre zwischen Drucklevel 1 und Drucklevel 2 (siehe Abb. 3.1) betrachtet und in Gl. 3.4 die Stromröhre zwischen Drucklevel 3 und Drucklevel 2 (siehe Abb. 3.1). Drucklevel 1 variiert mit dem Pegelstand h, sowie Drucklevel 3 mit dem Pegelstand des darunterliegenden Tanks hu . Drucklevel 2 befindet sich an der Austrittsstelle des Wassers am Boden des darunterliegenden Tanks und ist konstant. p0 + ρg(h + H) = p2 + ρv 2 (1 + ζ) 2 p0 + ρghu = p2 (3.3) (3.4) v ist die Austrittsgeschwindigkeit aus dem Schlauch, p0 der Atmosphärendruck, p2 der hydrostatischer Druck an der Austrittsstelles des Wassers am Boden des darunterliegenden Tanks, ζ die Druckverlustzahl des Ausflusses, welche alle Reibungsverluste der Strömung beschreibt, und H der vertikale Abstand der beiden Tanks. Aus den beiden Gleichungen 3.3 und 3.4 ergibt sich die Austrittsgeschwindigkeit im Schlauch v(h) = s 2g(h + H − hu ) . 1+ζ (3.5) Aus dieser Austrittsgeschwindigkeit v(h) und der Beziehung ASch A wird das Ausfließverhalten fab (h) = v(h) mit dem Schlauchquerschnitt ASch ASch fab (h) = A s 2g(h + H − hu ) 1+ζ hergeleitet. Das nun erhaltene dynamische System (3.6) (3.7) 3. Modellbildung 3.1. Modell eines Tanks ASch dh(t) =− dt A s 2g(h(t) + H − hu (t)) qzu (t) + 1+ζ A s 2g(h(t) + H − hu (t)) qab (t) = ASch 1+ζ 27 (3.8) (3.9) hat h(t) als Zustand, qzu (t) und hu (t) als Eingänge und qab (t) als Ausgang. Hier lässt sich die Verkoppelung der Tanks erkennen. Der untere Pegelstand hu (t) beeinflusst das Ausflussverhalten des Tanks. Totzeiten treten auf Grund der Massenkontinuitätsbeziehung keine auf, da ein inkompressibles Fluid zu Grunde gelegt wird1 . Um das Ausfließverhalten des Tanks über die Zeit zu betrachten, wird die Differentialgleichung 3.8 für h(t) gelöst, wobei qzu (t) = 0 angenommen wird, um nur das Ausfließverhalten ohne Zufluss zu erhalten. Der Anfangszustand h(0) wird mit h0 festgelegt. Zuerst wird allgemein folgende Differentialgleichung mit Anfangsbedingung betrachtet, welche die Lösung p dx(t) = −a x(t), x(0) = x0 dt x(t) = ( √ 0 x0 − at 2 2 √ (3.10) x für t < 2 a 0 √ x für t > 2 a 0 (3.11) besitzt. Mit Hilfe von Gl. 3.10 und Gl. 3.11 kann Gl. 3.8 mit a = h(t) + H − hu gelöst werden. Die Lösung lautet √h + H − h − 0 u h(t) = 0 ASch A q 2 2g t 1+ζ 2 − H + hu ASch A für t < 2 A √ für t > 2 A √ q 2g 1+ζ und x(t) = (h0 +H−hu )(1+ζ) √ ASch 2g (3.12) (h0 +H−hu )(1+ζ) √ ASch 2g und stellt eine Parabel dar, wie Abb. 3.2 zeigt. Es wird nur der Bereich h(t) ≥ 0 betrachtet. 1 Im kompressiblen Fall ergeben sich vernachlässigbar kleine Totzeiten (Druckwellen mit Schallgeschwindigkeit). 3. Modellbildung 3.2. Modell einer Pumpe 28 80 60 h in mm 40 20 0 −20 −40 −60 −80 −100 −120 0 5 t in s 10 15 Abbildung 3.2: Ausfließkennlinie 3.2 Modell einer Pumpe Der Antrieb der Pumpe wird als Gleichstrommotor modelliert, welcher die Ankerspannung uA (t) als Eingangsgröße besitzt. Das System wird in zwei Teilsysteme unterteilt: • Elektrisches Teilsystem: Gleichstrommotor ohne Massenträgheit • Mechanisches Teilsystem: Pumpe mit zusätzlicher Massenträgheit des Motors 3.2.1 Elektrisches Teilsystem Abbildung 3.3: Elektrisches Schaltbild einer Gleichstrommaschine In Abbildung 3.3 ist das elektrische Schaltbild der Pumpe dargestellt. Daraus lässt sich die Maschengleichung 3.13, mit dem Ankerwiderstand RA , der Ankerinduktivität LA und der induzierten Spannung ui (t), aufstellen uA (t) = RA iA (t) + LA diA (t) + ui (t). dt (3.13) 3. Modellbildung 3.2.2. Mechanisches Teilsystem 29 Mit dieser und den Motorgleichungen für die induzierte Spannung (Gl. 3.14) und das elektrische Drehmoment (Gl. 3.15), mit der Motorkonstante kM und der Winkelgeschwindigkeit ω(t), ui (t) = kM ω(t) (3.14) Mel (t) = kM iA (3.15) lässt sich das elektrische Teilsystem (Gl. 3.16 und 3.17) herleiten. Der Ankerstrom iA (t) stellt den Zustand dieses dynamischen Systems dar, uA (t) und ω(t) die Eingänge und das elektrische Drehmoment Mel (t) den Ausgang dieses Systems. 3.2.2 1 diA = (uA (t) − RA iA (t) − kM ω(t)) dt LA (3.16) Mel (t) = kM iA (t) (3.17) Mechanisches Teilsystem Das mechanische Teilsystem besteht aus den rotierenden Massen des Gleichstrommotors und der Pumpe. Für die Motorwelle gilt der Drallsatz (Gl. 3.18), mit dem Moment der Pumpe MP (t) und den Massenträgheitsmomenten JM des Motors und JP der Pumpe. dω(t) (3.18) dt In den folgenden Gleichungen 3.19 - 3.23 wird das noch unbekannte Moment der Pumpe hergeleitet. Dazu wird die Fördermenge der Pumpe qP (t) als Volumenstrom proportional mit der Pumpenkonstante kP zur Winkelgeschwindigkeit ω(t) angenommen (Gl. 3.19). Mel (t) − MP (t) = (JM + JP ) qP (t) = kP ω(t) (3.19) Weiters wird die Leistungsbilanz (Gl. 3.20) mit konstantem Wirkungsgrad ηP angesetzt. MP (t)ω(t)ηP = 4p(t)qP (t) (3.20) Der Druckanstieg der Pumpe ∆p(t) ist dem hydrostatischen Druck der zu überwindenden Förderhöhe hP (t) gleichzusetzen (Gl. 3.21) 4p(t) = ρghP (t), (3.21) wobei hP (t) unter Gl. 3.27 definiert ist. Durch Zusammenführen der Gleichungen 3.19 - 3.21 erhält man folgende Beziehung (Gl. 3.22), aus welcher die Unabhängigkeit des Moments der Pumpe von der Winkelgeschwindigkeit ersichtlich wird. 3. Modellbildung 3.2.3. Gesamtsystem der Pumpe MP (t)ω(t)ηP = ρghP (t)kP ω(t) 30 (3.22) Durch Umformen der Gl. 3.22 ergibt sich folgendes Moment der Pumpe. MP (t) = 1 ρghP (t)kP ηP (3.23) Die zeitliche Änderung von hP (t) ergibt sich durch die Pegeländerung des Tanks, in den gepumpt wird, und von der Pegeländerung des Sammelbehälters. Die 3.2.3 Gesamtsystem der Pumpe Das dynamische Gesamtsystem der Pumpe ergibt sich durch Zusammenführen der Gl. 3.16 und 3.17 aus dem elektrischen Teilsystem (Abschnitt 3.2.1) und den Gl. 3.18 und 3.22 aus dem mechanischen Teilsystem (Abschnitt 3.2.2), mit iA (t) und ω(t) als Zustände, uA (t) und hP (t) als Eingänge und qP (t) als Ausgang. diA dt dω(t) dt = 1 (uA (t) − RA iA (t) − kM ω(t)) LA 1 (kM iA (t) − η1P ρgkP hP (t)) JM +JP qP (t) = kP ω(t) (3.24) (3.25) Das Wasser wird als inkompressibles Fluid vorausgesetzt. Daher treten keine Totzeiten auf. 3.3 Modell des Gesamtsystems Die in den vorherigen Abschnitten hergeleiteten Teilsysteme für einen Tank (Gl. 3.8 und 3.9) und eine Pumpe (Gl. 3.24 und 3.25) werden zu dem Gesamtsystem mit 3 Tanks und 3 Pumpen zusammengesetzt. Der Eingang qzu (t) setzt sich aus dem Ausgang qP des Pumpenteilsytems bzw. dem Ausgang qab des darüberliegenden Tanks zusammen. Daraus ergibt sich ein System mit neun Zuständen, drei Eingängen und 3 Ausgängen. • Zustände: h1 (t), h2 (t), h3 (t), ω1 (t), ω2 (t), ω3 (t), iA,1 (t), iA,2 (t), iA,3 (t) • Eingänge: uA,1(t), uA,2(t), uA,3(t) • Ausgänge: h1 (t), h2 (t), h3 (t) Weiters wird das Verhalten des Sammeltanks benötigt. Dessen Pegel hS (t) lässt sich direkt aus den Pegelständen h1 (t), h2 (t), h3 (t) der Tanks und den Anfangsfüllständen h1,0 = h1 (0), h2,0 = h2 (0), h3,0 = h3 (0), hS,0 = hS (0) berechnen, wobei AS der Querschnitt des Sammeltanks und A1 , A2 , A3 die Querschnitte der jeweiligen Tanks sind. 3. Modellbildung 3.3. Modell des Gesamtsystems 31 (h1,0 − h1 (t))A1 + (h2,0 − h2 (t))A2 + (h3,0 − h3 (t))A3 + hS,0 (3.26) AS Die wirksamen Förderhöhen der Pumpen sind abhängig von den Pegelständen der Tanks und setzen sich wie folgt zusammen. hS (t) = hP,i (t) = Hi + hi (t) − hS (t) mit i = 1, 2, 3 (3.27) Abbildung 3.4: Höhendifferenzen Es ergibt sich folgendes dynamisches System, welches in die Simulation eingebunden wird 3. Modellbildung dh1 (t) dt dh2 (t) dt dh3 (t) dt dω1 (t) dt dω2 (t) dt dω3 (t) dt diA,1 (t) dt diA,2 (t) dt diA,3 (t) dt = 3.4. Modellreduktion q ASch,1 k ω (t) 2g(h1 (t)+H1,2 −h2 (t)) + P,1A11 A1 1+ζ1 q q ASch,1 A k ω (t) 2g(h1 (t)+H1,2 −h2 (t)) 2g(h2 (t)+H2,3 −h3 (t)) − Sch,2 + P,2A22 A1 1+ζ1 A2 q 1+ζ2 q 2g(h3 (t)+H3,S −hS (t)) A k ω (t) ASch,2 2g(h2 (t)+H2,3 −h3 (t)) − Sch,3 + P,3A33 A2 1+ζ2 A3 1+ζ3 1 1 (kM,1 iA,1 (t) − ηP,1 ρgkP,1(H1 + h1 (t) − hS (t)) JM,1 +JP,1 1 1 (kM,2 iA,2 (t) − ηP,2 ρgkP,2(H2 + h2 (t) − hS (t)) JM,2 +JP,2 1 1 (kM,3 iA,3 (t) − ηP,3 ρgkP,3(H3 + h3 (t) − hS (t)) JM,3 +JP,3 1 (uA,1(t) − RA,1 iA,1 (t) − kM,1 ω1 (t)) LA,1 1 (uA,2(t) − RA,2 iA,2 (t) − kM,2 ω2 (t)) LA,2 1 (uA,3(t) − RA,3 iA,3 (t) − kM,3 ω3 (t)) LA,3 − 32 . (3.28) Die verwendeten Höhenangaben können Abb. 3.4 entnommen werden. Hi ist die Höhendifferenz zwischen dem Tank i und dem Sammeltank und Hi,j ist die Höhendifferenz zwischen Tank i und Tank j. Dabei werden die Angaben auf die Böden der jeweiligen Tanks bezogen. 3.4 Modellreduktion Um den Reglerentwurf zu vereinfachen, wird die Dynamik der Teilsysteme genauer untersucht und schnelle Systeme als statisch angesehen. Daraus ergeben sich folgende Reduktionen: 3.4.1 Vernachlässigung der elektrischen Dynamik Das dynamische System lässt sich durch Vernachlässigung der elektrischen Dynamik auf sechs Zustände reduzieren, indem die Ankerinduktivität LA = 0 gesetzt wird. Durch diese Vernachlässigung entsteht aus den Gleichungen 3.13 und 3.14 eine statische Beziehung zwischen Ankerstrom iA,i (t), Ankerspannung uA,i (t) und der Winkelgeschwindigkeit ωi (t) für die Pumpe i (Gl. 3.29) iA,i (t) = 1 (uA,i (t) − kM,i ωi (t)). RA,i Dadurch entsteht folgendes reduzierte dynamische System (3.29) 3. Modellbildung dh1 (t) dt dh2 (t) dt dh3 (t) dt dω1 (t) dt dω2 (t) dt dω3 (t) dt 3.4.2 = 3.4.2. Vernachlässigung der mechanischen Dynamik q 33 ASch,1 k ω (t) 2g(h1 (t)+H1,2 −h2 (t)) + P,1A11 A1 1+ζ1 q q ASch,1 A k ω (t) 2g(h1 (t)+H1,2 −h2 (t)) 2g(h2 (t)+H2,3 −h3 (t)) − Sch,2 + P,2A22 A1 1+ζ1 A2 q 1+ζ2 q 2g(h3 (t)+H3,S −hS (t)) A k ω (t) ASch,2 2g(h2 (t)+H2,3 −h3 (t)) − Sch,3 + P,3A33 A2 1+ζ2 A3 1+ζ3 1 1 1 (kM,1 RA,1 (uA,1(t) − kM,1 ω1 (t))) − ηP,1 ρgkP,1(H1 + h1 (t) − hS (t)) JM,1 +JP,1 1 1 1 (kM,2 RA,2 (uA,2(t) − kM,2 ω2 (t))) − ηP,2 ρgkP,2(H2 + h2 (t) − hS (t)) JM,2 +JP,2 1 1 1 (kM,3 RA,3 (uA,3(t) − kM,3 ω3 (t))) − ηP,3 ρgkP,3(H3 + h3 (t) − hS (t)) JM,3 +JP,3 − . (3.30) Vernachlässigung der mechanischen Dynamik Eine weitere Reduzierung des dynamischen Systems kann erfolgen, wenn angenommen wird, dass das hydraulische Teilsystem, das Modell der Tanks, langsamer als das mechanische Teilsystem der Pumpen ist. Hiermit verhalten sich die Pumpen rein statisch. Die Trägheiten von Pumpen und Motoren werden als vernachlässigbar klein angenommen und zu Null gesetzt. Folglich ergibt sich aus dem Gesamtsystem der Pumpe Gl. 3.24 und 3.25 folgendes statische Beziehung 1 kp uA (t) − RA ρg qP (t) = kM ηP kP kM 2 hP (t), (3.31) welche zu einem dynamischen System dritter Ordnung führt dh1 (t) dt dh2 (t) dt dh3 (t) dt = + + + q ASch,1 2g(h1 (t)+H1,2 −h2 (t)) A1 1+ζ1 q q ASch,2 ASch,1 2g(h1 (t)+H1,2 −h2 (t)) 2g(h2 (t)+H2,3 −h3 (t)) − A2 A1 1+ζ1 1+ζ2 q q 2g(h3 (t)+H3,S −hS (t)) ASch,3 ASch,2 2g(h2 (t)+H2,3 −h3 (t)) − A3 A2 1+ζ2 1+ζ3 − kp,1 u (t)− η 1 RA,1 ρg kM,1 A,1 P,1 kP,1 kM,1 A 1 kp,2 u (t)− η 1 RA,2 ρg kM,2 A,2 P,2 kp,3 u (t)− η 1 kM,3 A,3 P,3 kP,2 kM,2 2 2 (H1 +h1 (t)−hS (t)) (H2 +h2 (t)−hS (t)) A 2 2 k RA,3 ρg k P,3 (H3 +h3 (t)−hS (t)) M,3 A3 . (3.32) Dieses vollständig reduzierte dynamische System (3.32) dient als Grundlage für den Reglerentwurf unter Kap. 5. 4 Parameterbestimmung Dieses Kapitel beschreibt die Parameterbestimmung des Labormodells. Die grundsätzliche Vorgangsweise wurde [3] entnommen und an dieses Projekt angepasst. Zur sinnvollen mathematischen Beschreibung wird das Gesamtsystem in folgende Teilsysteme zerlegt und die Parameter getrennt voneinander bestimmt: • Drucksensoren • Tanks • Pumpen Insbesondere werden die Sensorkennlinien, die Ausfließkennlinien der Tanks und die Pumpenkennlinien aufgenommen und anschließend die Kennlinien parametriesiert. 1 Scope Ankerspannungen Demux Scope Sensor COMEDI D/A comedi0 CH−0 Demux Stellgroesse COMEDI A/D comedi0 CH−1 Sensor 2 Pumpe 2 COMEDI D/A comedi0 CH−2 Pumpe 3 Demux Sensor 1 Pumpe 1 COMEDI D/A comedi0 CH−1 1/3 COMEDI A/D comedi0 CH−0 u_S Mux COMEDI A/D comedi0 CH−2 offset h Scope Pegelstaende −K− Demux Pegelstaende Sensor 3 Step Offset−Abgleich 1 Step Offset−Abgleich 2 Mux Step Offset−Abgleich 3 Abbildung 4.1: Strecke mit Pumpenansteuerung und Sensorspannungsmessung Die dazu nötige Ansteuerung der Pumpen und Messung der Sensorspannungen werden ausschließlich mit dem PC/104 System durchgeführt. Abb. 4.1 zeigt die Implementierung der Strecke mit Pumpenansteuerung und Sensorspannungsmessung in Scilab/Scicos. Der Subblock Stellgroesse dient der Aufschaltung der Ankerspannungen. Der Dämpfungsfaktor 1/3 drittelt die Ankerspannungen damit sie im ±10 V Ein-/Ausgangsbereich des PC/104 Systems sind. Die Signale werden durch die 3-fache Kabelverstärkung, wie unter Abschnitt 1.4 beschrieben, wieder auf Originalgröße skaliert. Die COMEDI -Blöcke sind Hardwaretreiber, welche die Verbindung mit der Ein-/Ausgabekarte von Comedi darstellen. Diese 34 4. Parameterbestimmung 4.1. Parameterbestimmung der Drucksensoren 35 Blöcke dienen zur Ansteuerung der Pumpen und zur Messung der Sensorspannungen. Signale, welche zu den Scope-Blöcken führen, können über das Visualisierungspaket qRtailab angezeigt und gemessen werden. Der Subblock Pegelstaende und die Blöcke Offset-Abgleich dienen der Umrechnung der Sensorspannungen auf die Pegelstände, welche im Abschnitt 4.1 näher erläutert wird. 4.1 Parameterbestimmung der Drucksensoren Die Parameter der Sensoren werden einzeln bestimmt. Dazu werden die Abflüsse der Tanks abgeschlossen und manuell mit Wasser gefüllt1 . Dies kann in 10 mm Schritten erfolgen um genügend Messpunkte über den ganzen Pegelbereich zu erhalten. Als Vergleichsmaß dient die Skala an den Tanks. Die Sensorspannungen zu den vorgegebenen Pegelständen werden mit dem PC/104 System (Abb. 4.1) gemessen und in Kennlinien aufgenommen. Abb. 4.2 zeigt die Messpunkte, sowie die angenäherten Kennlinien. 3.5 3.0 uS in V 2.5 2.0 Sensor 1 Näherung Sensor 1 Messpunkte Sensor 2 Näherung 1.5 Sensor 2 Messpunkte Sensor 3 Näherung Sensor 3 Messpunkte 1.0 0 10 20 30 40 50 60 70 80 90 100 hi in mm Abbildung 4.2: Sensorkennlinien Diese werden durch Regressionsgeraden durch Minimieren der Fehlerquadrate erhalten. uS,i (hi ) = uS0,i + kS,i hi hi (uS,i ) = 1 uS,i − uS0,i kS,i Das Abschließen der Tanks kann durch Ersetzen der Abflussschläuche mit Stöpsel erfolgen. (4.1) (4.2) 4. Parameterbestimmung 4.2. Parameterbestimmung der Tanks 36 Daraus werden die Sensorparameter uS0,i und kS,i berechnet, wobei uS0,i die Sensorspannung bei leerem Tank darstellt. Folgende Parameter werden bestimmt: • uS0,1 = 1.580 V • uS0,2 = 1.503 V • uS0,3 = 1.521 V • kS,1 = 19.178 V m • kS,2 = 18.371 V m • kS,3 = 19.266 V m Jede durch die Sensoren gemessene Sensorspannung wird mit Gl. 4.2 auf den dazugehörigen Pegelstand umgerechnet. Aus mehreren Messungen wird festgestellt, dass sich die Offsetspannung verschieden einstellt. Ein Grund könnte die unterschiedliche Wasser-Luft-Zusammensetzung im dünnen Verbindungsschlauch von Sensor und Tankboden (siehe Abb. 1.4) sein. Dieser Verbindungsschlauch hat ein kleines Volumen. Wenn dieses Volumen voll mit Wasser ist, ergibt das eine höhere Sensorspannung, als würde es voll mit Luft gefüllt sein. Da es schwierig ist, in diesem Verbindungsschlauch immer die gleiche Zusammensetzung von Wasser und Luft zu erhalten, kann eine Änderung der Offsetspannung dadurch nicht verhindert werden. Ein weiterer Grund könnten Ungenauigkeiten der Sensoren sein. Die Sensoren sind schon alt und verlieren mit der Zeit an Genauigkeit. Dagegen würde jedoch nur ein Austauschen der Sensoren Abhilfe schaffen. Da weiterhin die alten Sensoren verwendet werden, ist bei jeder Inbetriebnahme ein Offsetabgleich durchzuführen. Der Offsetabgleich und die Umrechnung von Sensorspannung auf Pegelstand, welche im Subblock Pegelstaende integriert ist, sind in jeder verwendeten Scicos-Schaltung (siehe u. a. Abb. 4.1) implementiert. Die Sensorspannungsmessung ist rein statisch, da der eingeschwungene Zustand gemessen wird. Die Dynamik des Sensors ist schwierig zu messen, da kein geeignetes Referenzmaß vorhanden ist. Jedoch kann verfolgt werden, dass bei angeregter Wasseroberfläche, die Sensorspannungen den Pegelschwingungen folgen. Somit wird von einer ausreichend schnellen Sensordynamik ausgegangen. Die gemessenen Schwingungen bewegen sich um 10 Hz. 4.2 Parameterbestimmung der Tanks Beim Tankmodell, wie in Abschnitt 3.1 hergeleitet, wird ein konstanter Wasserstand über die gesamte Wasseroberfläche angenommen. Somit hat das dynamische System eines Tanks, welches bei der Parameterbestimmung verwendet wird, einen Zustand, den 4. Parameterbestimmung 4.2. Parameterbestimmung der Tanks 37 Pegelstand hi . Durch die Annahme, dass überlagerte Pegelschwingungen einen geringen Einfluss haben, können diese vernachlässigt werden. Eine wesentliche Rolle bei der Parameterbestimmung der Tanks und Pumpen spielen die verwendeten Zu- und Abflussschläuche. Außerhalb des Betriebs ist in den Schläuchen Luft. Werden die Tanks mit Wasser befüllt, fließt dieses durch die Schläuche und verdrängt, durch die höhere Dichte die Luft. Damit nirgendwo Luft in die Schläuche dringen kann, müssen die Schläuche entsprechend abgedichtet sein und an den Enden in Wasser führen. Luftblasen in den Schläuchen würden den Durchflusswiderstand vergrößern. Diese veränderlichen Luftblasen bzw. der daraus entstehende Widerstand können nicht gemessen und daher nicht identifiziert werden. Dieser Umstand macht folgende Maßnahmen notwendig, um ein nachvollziehbares Ausfließverhalten des Wassers zu garantieren: • Nach jedem Einschaltvorgang muss solange Wasser durch die Schläuche fließen, bis die gesamte Luft aus den Schläuchen verdrängt wurde. Dadurch erhält man ein eindeutiges, sich nicht veränderntes Ausfließverhalten2 . • Das Labormodell kann erst ab einem gewissen Pegelstand identifiziert und geregelt werden, da ab einer geringen Wasserhöhe auf Grund der Saugwirkung Luft in die Schläuche dringt, wodurch das Ausfließverhalten nicht mehr nachvollziehbar ist. Dieser kritische Pegelstand kann am Labormodell beobachtet werden. Um das Ausfließverhalten zu messen, müssen die Pumpen weggeschalten werden, damit kein Wasser durch die Pumpen abfließen kann3 . Danach werden alle drei Tanks über das PC/104 System mit der Pumpensteuerung (Abb. 4.1) oder manuell voll befüllt, damit das Ausfließverhalten über den ganzen Bereich gemessen werden kann. Sobald lange genug Wasser durch die Schläuche geflossen ist, sodass sich keine Luftblasen mehr darin befinden, kann der Ausfließvorgang und somit die Messung beginnen. Dabei werden die Pegelstände hi aller drei Tanks über die mit dem PC/104 System gemessenen Sensorspannungen uS,i und der integrierten Umrechnung laut Gl. 4.2 berechnet und in einer Kennlinie über die Zeit aufgenommen. Abb. 3.2 zeigt dieses Ausfließverhalten der drei Tanks. Die Ausfließkennlinien werden in zwei Bereiche unterteilt. Der hinterlegte Bereich ist jener, in dem ein nachvollziehbares Ausfließen stattfindet, und das 3-Tank-Labormodell normalerweise betrieben wird. Dieser Bereich wird im Folgenden Hauptbetriebsbereich genannt. Beim nicht hinterlegten Bereich haben die Tanks nur noch einen geringen Pegelstand. Ab diesem Grenzpegelstand tritt auf Grund der Saugwirkung bereits Luft in die Abflussschläuche. Dieser Effekt zeigt sich unterschiedlich und ist nicht nachvollziehbar. Daher können die Parameter in diesem Bereich nicht eindeutig bestimmt werden. Er wird im Folgendem Bereich bei geringem Pegelstand bezeichnet. 2 Dieser Vorgang kann durch gezieltes Zusammendrücken der Schläuche an entsprechenden Stellen beschleunigt werden. 3 Die einfachste Methode um die Pumpen “wegzuschalten” ist die Pumpenschläuche aus den Tanks zu ziehen. Die Schlauchenden sollen sich über den Tanks befinden, damit die Tanks weiterhin befüllt werden können. 4. Parameterbestimmung 4.2.1. Ausfließverhalten im Hauptbetriebsbereich 38 Abbildung 4.3: Ausfließkennlinien 4.2.1 Ausfließverhalten im Hauptbetriebsbereich Der Hauptbetriebsbereich ist jener Bereich, in dem der Tank noch voll genug ist und keine Luft in den Abflussschlauch dringt. Zur Parameterbestimmung darf aus der Messung in Abb. 4.3 nur jener Bereich ausgewählt werden, in dem der darüberliegende Tank schon leer ist und beim aktuellen Tank noch keine Luft in den Abflussschlauch gesaugt wird4 . Die Differentialgleichung dhi (t) ASch,i =− dt Ai s 2g∆hi (t) 1 + ζi (4.3) beschreibt das Ausfließverhalten eines Tanks, welches in Abschnitt 3.1 hergeleitet wurde. ∆hi (t) = hi (t)+Hi,i+1 −hi+1 (t) ist die Pegeldifferenz zum darunter liegenden Wasserspiegel mit hi (t) als Pegel des betrachteten Tanks, hi+1 (t) als Pegel des darunterliegenden Tanks und Hi,i+1 als vertikaler Abstand der beiden Tankböden. ζi beschreibt die Druckverlustzahl im Abflussschlauch, ASch,i den Schlauchquerschnitt und Ai den Tankquerschnitt. Durch die Definition von 4 Der darüberliegende Tank muss leer sein, damit die Bedingung, dass nichts zufließt, erfüllt ist. 4. Parameterbestimmung 4.2.1. Ausfließverhalten im Hauptbetriebsbereich ASch,i αi = Ai r 2g 1 + ζi 39 (4.4) lässt sich die Differentialgleichung 4.3 kompakt darstellen: q dhi (t) = −αi hi (t) + Hi,i+1 − hi+1 (t) (4.5) dt Die einzigen unbekannten Parameter sind αi . Diese müssen identifiziert werden. Gl. 4.5 lässt sich für hi nicht lösen, da hi+1 unbekannt ist. Wenn in Gl. 4.5 dhidt(t1 ) und p hi (t1 ) + Hi,i+1 − hi+1 (t1 ) für einen Zeitpunkt t1 bekannt sind, lässt sich αi (t1 ) mit der Beziehung αi (t1 ) = − p dhi (t1 ) dt hi (t1 ) + Hi,i+1 − hi+1 (t1 ) (4.6) berechnen. Die Bestimmung von dhdti (t) erfolgt mit nummerischer Differenzierung, da die Messungen von hi (t) und hi+1 (t) Abtastungen mit der Abtastzeit TA = 10 ms sind und in Form der Folgen (hi,k ) und (hi+1,k ) mit dem Abtastindex k vorliegen. hi,k+1 − hi,k ∆hi,k = ∆tk tk+1 − tk (4.7) Für jeden Abtastpunkt k ergibt sich durch Verknüpfen der Gleichungen 4.6 und 4.7 ein αi,k : αi,k = − p ∆hi,k ∆tk (4.8) hi,k + Hi,i+1 − hi+1,k Der Mittelwert aller αi,k führt zum identifizierten Wert αi : √ m s √ 0.0322 sm √ 0.0286 sm • α1 = 0.0333 • α2 = • α3 = Mit diesen Parametern lässt sich die Ausfließgeschwindigkeit Pegeldifferenz ∆hi (t) = hi (t) + Hi,i+1 − hi+1 (t) ermitteln. dhi (t) dt in Abhängigkeit der 4. Parameterbestimmung 4.2.2. Ausfließverhalten im Bereich Geringer Pegelstand 40 −9 Tank 1 Tank 2 −10 Tank 3 dh/dt in mm/s −11 −12 −13 −14 −15 −16 100 120 140 160 180 200 220 240 260 280 ∆h in mm Abbildung 4.4: Ausfließgeschwindigkeit dh dt in Abhängigkeit der Pegeldifferenz ∆h Aus Abb. 4.4 lässt sich ablesen, dass bei vollem und leerem darunterliegenden Tank (größtes ∆h) eine maximale Ausfließgeschwindigkeit von 15 mm/s erreicht werden kann. Weiters kann erkannt werden, dass durch die Variation der Pegelstände hi und hi+1 die Ausfließgeschwindigkeit bis zu einem Drittel verändert werden kann. Der Rest ist durch den fixen Höhenunterschied der Tanks bestimmt. Die Auswirkung der Ausfließgeschwindigkeit vom Pegelstand des darunterliegenden Tanks kann Abb. 4.5 entnommen werden. In dieser Abbildung wird angenommen, dass z. B. bei leerem Tank 3 keine Pegeländerung im Tank 2 stattfindet. Wird jedoch der darunterliegende Tank 3 auf hu befüllt, würde sich aufgrund der Kopplung Tank 2 mit bis zu 3.5 mm/s auffüllen. Ein höherer Pegelstand des darunterliegenden Tanks bremst also den Ausfluss, da die Höhendifferenz ∆h verringert wird. 4.2.2 Ausfließverhalten im Bereich Geringer Pegelstand In diesem Bereich kann angenommen werden, dass an der Ausfließkante des Tanks Umgebungsdruck herrscht und das Ausfließverhalten unabhängig vom darunterliegenden Tank ist. Die Gleichung 4.3 aus Abschnitt 4.2.1 führt zu folgender Differentialgleichung dhi (t) ASch,i =− dt Ai s 2ghi (t) 1 + ζL,i (4.9) 4. Parameterbestimmung 4.2.2. Ausfließverhalten im Bereich Geringer Pegelstand 41 4.0 h=0mm h=50mm 3.5 h=80mm dh/dt in mm/s 3.0 2.5 2.0 1.5 1.0 0.5 0.0 0 10 20 30 40 50 60 70 80 hu in mm Abbildung 4.5: Ausfließgeschwindigkeit standes hu am Bspl. von Tank 2 dh dt in Abhängigkeit des darunterliegenden Pegel- mit ζL,i der Druckverlustzahl, welche nun auch abhängig von der Luft im Abflussschlauch ist. Werden die konstanten Parameter zu s ASch,i 2g αL,i = (4.10) Ai 1 + ζL,i zusammengefasst, lässt sich die Differentialgleichung 4.9 mit p dhi (t) = −αL,i hi (t) dt kompakt darstellen. Die Lösung dieser Gleichung hi (t) = p αL,i t hi (0) − 2 (4.11) 2 (4.12) stellt die Ausflusskurve dar. Die Parameter αL,i sollen bestimmt werden. Mit Einsetzen von Randbedingungen kann diese Gleichung gelöst werden. Folgende Werte ergeben sich für αL,i : √ m s √ 0.0665 sm • αL,1 = 0.0553 • αL,2 = 4. Parameterbestimmung • αL,3 = 0.0877 4.3. Parameterbestimmung der Pumpen 42 √ m s Aus mehreren Messungen ergibt sich, dass diese Parameter unterschiedlich sind. Der Grund dafür ist, die fehlende Nachvollziehbarkeit der Menge an Luft, welche in den Abflussschlauch dringt und nicht gemessen werden kann. Um den ganzen Pegelbereich simulieren zu können, werden die angeführten Parameter αL,i verwendet. 4.3 Parameterbestimmung der Pumpen Die Pumpe verhält sich etwas anders als im mathematischen Pumpenmodell Abschnitt 3.2 hergeleitet. Die Funktionsweise kann Abschnitt 1.1.2 entnommen werden. Durch Messungen stellte sich heraus, dass sich die Dynamik der Pumpe im 100 ms-Bereich befindet. Im Vergleich zum dynamischen Gesamtverhalten, welches im Sekundenbereich liegt, ist die Pumpendynamik ausreichend klein und kann vernachlässigt werden. Dadurch wird jede Pumpe mit dem statischen Zusammenhang 1 kp,i (uA,i (t) − RA,i ρg qP,i (t) = kM,i ηP,i kP,i kM,i hP,i (t)) (4.13) welcher im Abschnitt 3.4.2 hergeleitet wurde, beschrieben. Mit hP,i (t) = Hi + hi (t) − hS (t) in Gl. 4.13 eingesetzt, wird ersichtlich, dass der Durchfluss von der Ankerspannung uA,i (t) und von der Förderhöhe hP,i (t) bzw. den veränderlichen Pegelständen hi (t) und hS (t) abhängt. Es wird eine Funktion qP,i = fP,i (uA,i , hi , hS ) (4.14) gesucht. 4.3.1 Durchfluss aufgrund der Ankerspannung Der Durchfluss qP,i hängt theoretisch über die Beziehung qP,i (t) = Ai dhi (t) dt (4.15) mit der Änderung des Pegelstandes dhdti (t) und dem Tankquerschnitt Ai zusammen. Die Änderung des Pegelstandes kann nur über die Ankerspannung der Pumpe gesteuert werden. Daher wird vorerst die Abhängigkeit der Pegelstände nicht berücksichtigt. Durch Messungen stellte sich heraus, dass eine konstante Ankerspannung der Pumpe eine bestimmte Änderung des Pegelstandes nach sich zieht und zu einem bestimmten Durchfluss führt. Es ist eine Beziehung für den Durchfluss qP,i = gP,i (uA,i ) (4.16) 4. Parameterbestimmung 4.3.1. Durchfluss aufgrund der Ankerspannung 43 in Abhängigkeit der Ankerspannung gesucht. Bei verschlossenem Abfluss der Tanks5 werden Messungen mit dem PC/104 System mit Variation der Spannung uA,i über den gesamten Betriebsbereich von 0 - 12 V für alle drei Pumpen durchgeführt und die jeweiligen Änderungen des Pegelstandes ermittelt. Diese Messungen sind im Anhang A zu finden. • An die Pumpe wird über das PC/104 System eine Spannung uA,i angelegt, wodurch der Tank befüllt bzw. bei niedrigen Spannungen entleert wird und eine Änderung des Pegelstandes erfolgt. • Währenddessen wird der Pegelstand hi über die mit dem PC/104 System gemessene Sensorspannung uS,i und der integrierten Umrechnung laut Gl. 4.2 berechnet und in eine Kennlinie über die Zeit aufgenommen (Abb. A.1 - A.3). • Aus dieser Kennlinie ist ein linearer Verlauf erkennbar, welcher durch eine Gerade angenähert wird. Die Steigung dieser Gerade ist die Änderung des Pegelstandes dhdti (t) bei einer bestimmten Spannung uA,i . • Daraus erhält man über die Beziehung 4.15 eine Durchfluss-Spannungsabhängigkeit, welche in der Pumpenkennlinie Abb. 4.6 dargestellt ist. Pumpenkennlinie 10 8 qP in l/min 6 4 2 Pumpe 1 Näherung 0 Pumpe 1 Messung Pumpe 2 Näherung Pumpe 2 Messung −2 Pumpe 3 Näherung Pumpe 3 Messung −4 0 2 4 6 8 10 12 uA in V Abbildung 4.6: Pumpenkennlinie Die Funktion 5 In den folgenden Messungen wird nur das Pumpenverhalten untersucht. Um den Ausfluss wegzuschalten, werden die Abflüsse der Tanks mit Stöpseln geschlossen. 4. Parameterbestimmung qP,g,i 4.3.2. Durchfluss aufgrund der Pegelstände ( √ β1,1,i (uA,i − uA,0,i ) − β1,2,i 5 uA,0,i − uA,i = √ β2,1,i (uA,i − uA,0,i ) + β2,2,i uA,i − uA,0,i für 0 ≤ uA,i ≤ uA,0,i für uA,0,i ≤ uA,i 44 (4.17) stimmt fast vollkommen mit den Messpunkten überein, wobei uA,0,i der Ankerspannung bei qP,g,i = 0 entspricht. Folgende Parameter der Funktion sind zu bestimmen: • β1,1,i ,β1,2,i ,β2,1,i ,β2,2,i • uA,0,i Bevor diese Parameterbestimmung durchgeführt werden kann, muss die Untersuchung der Durchflussabhängigkeit von den Pegelständen der Tanks erfolgen. 4.3.2 Durchfluss aufgrund der Pegelstände Aus den Messungen aus Abschnitt 4.3.1 ist ein konstanter Durchfluss bei konstanter Ankerspannung festgestellt worden. Bei genauer Betrachtung stimmt dieser Zusammenhang jedoch im Bereich qP,i ≈ 0, in dem kein Durchfluss zustande kommt, nicht ganz. Diese Abweichung kann auf die vorher vernachlässigte Abhängigkeit des Durchflusses von den Pegelständen zurückgeführt werden und wird in diesem Abschnitt vervollständigt. Um den Durchfluss durch die Ankerspannung wegzublenden, wird untersucht, welche Ankerspannung nötig ist, um einen Pegel auf konstantem Level zu halten. Zur Messung wird Tank i auf ungefähr halbe Tankhöhe hi,0,id gefüllt, welcher den Startpegelstand darstellt. Die Höhe des Pegels des Sammelbehälters hS,0,id,i zu diesem Zeitpunkt wird an der Skala abgelesen. Wird eine Ankerspannung uA,H,i angelegt, welche qP,i ≈ 0 erzeugt, der sogenannten Haltespannung, pendelt sich der Wasserpegel auf einer bestimmten Höhe hi ein. Der Pegelstand des Sammelbehälters hS berechnet sich zu diesem Zeitpunkt mit (hi,0,id − hi )Ai (4.18) hS = hS,0,id,i + AS Die Haltespannung uA,H,i und die Höhendifferenz ∆hi = (hi −hi,0,id −hS + hS,0,id,i ) werden in einem Diagramm eingetragen. Dieser Vorgang wird durch eine minimale Veränderung der Ankerspannung mehrmals durchgeführt bis der ganze Pegelbereich erfasst ist. Die Messungen können Abb. 4.7 entnommen werden. 4. Parameterbestimmung 4.3.2. Durchfluss aufgrund der Pegelstände 45 40 Pumpe 1 Näherung 30 Pumpe 1 Messung Pumpe 2 Näherung 20 Pumpe 2 Messung ∆h in mm Pumpe 3 Näherung 10 Pumpe 3 Messung 0 −10 −20 −30 −40 −50 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0 uA in V Abbildung 4.7: Erforderliche Spannungen uA,i zum Halten eines Pegels Daraus lässt sich erkennen, dass sich die Haltespannung uA,H,i für beliebige hi und hS nach dem Gesetz uA,H,i(hi , hS ) = kH,i ∆hi + uA,0,i (4.19) verhält, wobei uA,0,i die Haltespannung bei den Pegelständen hi,0,id und hS,0,id,i ist. Durch die Minimierung der quadratischen Abweichung der Messpunkte können die Parameter kH,i und uA,0,i bestimmt werden. V • kH,1 = 3.35 m V • kH,2 = 3.91 m V • kH,3 = 6.74 m • uA,0,1 = 3.8V • uA,0,2 = 3.2V • uA,0,3 = 2.4V Im Rahmen der Messungen für die Pumpenkennlinie ist der gesamte Pegelbereich der Tanks ausgenutzt worden. Es wird angenommen, dass Gl. 4.17 das Pumpenverhalten für hi (t) = hi,0,id und hS (t) = hS,0,id,i beschreibt. Daher gilt 4. Parameterbestimmung 4.3.2. Durchfluss aufgrund der Pegelstände qP,g,i (t) = gP,i (uA,i (t)) = fP,i (uA,i (t), hi,0,id , hS,0,id,i ) 46 (4.20) Da nun die Parameter uA,0,i bekannt sind, lassen sich auch alle weiteren Parameter aus Gl. 4.17 durch Minimierung der quadratischen Abweichung der Messpunkte bestimmen: 3 3 3 3 , β1,2,1 = −308 · 10−7 m , β2,1,1 = 52 · 10−7 m , β2,2,1 = 269 · 10−7 m • β1,1,1 = 36 · 10−7 m Vs Vs Vs Vs 3 3 3 3 • β1,1,2 = 36 · 10−7 m , β1,2,2 = −276 · 10−7 m , β2,1,2 = 69 · 10−7 m , β2,2,2 = 255 · 10−7 m Vs Vs Vs Vs 3 3 3 3 • β1,1,3 = 8 · 10−7 m , β1,2,3 = −248 · 10−7 m , β2,1,3 = 66 · 10−7 m , β2,2,3 = 221 · 10−7 m Vs Vs Vs Vs Die Funktionen mit diesen Parametern sind in Abb. 4.6 ersichtlich, und ergeben eine gute Annäherung an die Messpunkte. Die Durchflussabhängigkeit von der Ankerspannung gP,i (uA,i (t)) und der Haltespannungsanteil kH,i ∆hi (t) werden zusammengeführt. Daraus entsteht das fertige Modell für jede Pumpe qP,i (t) = gP,i (uA,i (t) − kH,i ∆hi (t)), (4.21) welches eingesetzt in Gl. 4.17 die vollständige Form qP,g,i p β1,1,i (uA,i − kH,i ∆hi − uA,0,i ) − β1,2,i 5 uA,0,i − (uA,i − kH,i ∆hi ) für 0 ≤ uA,i − kH,i ∆hi ≤ uA,0,i p = (uA,i − kH,i ∆hi ) − uA,0,i β (u − k ∆h − u ) + β 2,1,i A,i H,i i A,0,i 2,2,i für uA,0,i ≤ uA,i − kH,i ∆hi (4.22) mit ∆hi = (hi − hi,0,id − hS + hS,0,id,i ) annimmt. Der Pegelstand des Sammelbehälters hS hängt allgemein von allen drei Tanks ab und lässt sich mit (h1,0 − h1 )A1 + (h2,0 − h2 )A2 + (h3,0 − h3 )A3 (4.23) AS berechnen. Aus der Pumpenkennlinie kann direkt auf die Füllgeschwindigkeit in Abhängigkeit der Ankerspannung geschlossen werden. In Abb. 4.8 wird ersichtlich, dass durch die Pumpe eine Füllgeschwindigkeit von 25 mm/s erreicht werden kann. Dies setzt jedoch voraus, dass kein Abfließen durch die Abflussschläuche aus den Tanks stattfindet. Weiters kann die Ausfließgeschwindigkeit durch die Pumpe um 10 mm/s erhöht werden. hS = hS,0 + 4. Parameterbestimmung 4.4. Parameterbestimmtes Gesamtsystem 47 Pumpenkennlinie 30 25 dh/dt in mm/s 20 15 10 5 0 −5 Pumpe 1 −10 Pumpe 2 Pumpe 3 −15 0 2 4 6 8 10 12 uA in V Abbildung 4.8: Füllgeschwindigkeit 4.4 dh dt in Abhängigkeit von uA Parameterbestimmtes Gesamtsystem Die parameterbestimmten Teilmodelle werden zum Gesamtmodell p dh1 (t) h1 (t) + H1,2 −α 1 p− h2 (t) p dhdt2 (t) = α1p h1 (t) + H1,2 − h2 (t) − α2p h2 (t) + H2,3 − h3 (t) dt dh3 (t) α h2 (t) + H2,3 − h3 (t) − α3 h3 (t) + H3,S − hS (t) 2 dt g (u (t)−kH,1 (h1 (t)−hS (t)+hS,0,id,1 −h1,0,id )) + P,1 A,1 A1 gP,2 (uA,2 (t)−kH,2 (h2 (t)−hS (t)+hS,0,id,2 −h2,0,id )) + A2 gP,3 (uA,3 (t)−kH,3 (h3 (t)−hS (t)+hS,0,id,3 −h3,0,id )) + A3 (4.24) zusammengeführt. Für dieses mathematische Modell wird nur der Hauptbetriebsbereich g (u (t)−kH,i (hi (t)−hS (t)+hS,0,id,i −hi,0,id )) der Tanks berücksichtigt. Die Terme P,i A,i in den GleiAi chungen beschreiben die nichtlinearen Pumpenkennlinien, die anderen Terme die Ausq ASch,i 2g fließkennlinien der Tanks mit αi = Ai . Dieses Modell wird dem Reglerentwurf in 1+ζi Kap. 5 zugrunde gelegt. Der Bereich mit geringem Pegelstand, indem ein anderes Ausfließverhalten auftritt, wird im Regelbetrieb nicht erreicht. In der Simulation ist der gesamte Pegelbereich implementiert. Abb. 4.9 zeigt die identifizierte Strecke implementiert in Scilab/Scicos. Das detailierte Simulationsmodell der Strecke mit allen Unterblockschaltbildern ist im Anhang A abgebildet (Abbildungen A.4 - A.7). 4. Parameterbestimmung 4.4. Parameterbestimmtes Gesamtsystem 48 + To workspace − u_sim Stellgröße + u_A 1 − Mux h 1e3 Ein/Aus Füllstände Strecke To workspace h_sim + − Abbildung 4.9: Blockschaltbild der simulierten Strecke Es wird eine Simulation durchgeführt, bei der die in Abb. 4.10 gezeigten Ankerspannungen angelegt werden. Das zeitliche Verhalten der Pegelstände, zeigt das Ergebnis in Abb. 4.11. Stellgröße Tank 1 u in V 9 8 7 6 5 4 3 2 1 0 0 5 10 15 20 25 30 t in s 5 Stellgröße Tank 2 u in V 4 3 2 1 0 0 5 10 15 20 25 30 t in s 5 Stellgröße Tank 3 u in V 4 3 2 1 0 0 5 10 15 20 t in s Abbildung 4.10: Stellgröße 25 30 4. Parameterbestimmung 4.4. Parameterbestimmtes Gesamtsystem h in mm 80 60 40 20 0 49 Pegelstand Tank 1 0 5 10 15 20 25 30 t in s h in mm 80 60 40 20 0 Pegelstand Tank 2 0 5 10 15 20 25 30 t in s h in mm 80 60 40 20 0 Pegelstand Tank 3 0 5 10 15 20 25 30 t in s Pegelstand Sammelbehälter h in mm 70 60 50 40 0 5 10 15 t in s Abbildung 4.11: Pegelstände 20 25 30 5 Mehrgrößenregelung der Pegelstände Dieses Kapitel befasst sich mit einem Reglerkonzept, welches in der Simulation und am Labormodell durch Implementierung mit dem PC/104 System getestet wird. Es baut auf das Reglerkonzept, welches unter [3] verwendet wurde, auf und wurde an dieses Projekt angepasst. In Abschnitt 5.1 wird die Strecke untersucht, für welche der Regler entworfen werden soll. Unter Abschnitt 5.2 wird eine Stellgrößentransformation durchgeführt, um die Strecke zu entkoppeln und den Reglerentwurf zu vereinfachen. In Abschnitt 5.3 wird ein PI-Regler entworfen, welcher zeitdiskret mit einer Abtastzeit von Ta = 10 ms aufgebaut wird. Das verwendete Simulationsmodell ist im Abschnitt 5.4 als Scicos-Blockschaltbild dargestellt. Weiters wird in diesem Abschnitt ein Testergebnis der Mehrgrößenregelung präsentiert. 5.1 Strecke Als Strecke für den Reglerentwurf wird das identifizierte Gesamtmodell aus Kap. 4.4 verwendet. Wird der Pegelstand h als Zustand x x1 h1 x = x2 = h2 x3 h3 (5.1) und die Ankerspannug uA als Eingang u u1 uA,1 u = u2 = uA,2 u3 uA,3 (5.2) eingeführt, kann das Gesamtmodell in folgender allgemeinen Form ẋ = f(x, u) (5.3) y = g(x, u) (5.4) mit y als Ausgang angeführt werden. In dieser Darstellung ergibt sich die Strecke zu 50 5. Mehrgrößenregelung der Pegelstände 5.2. Stellgrößentransformation 51 p (x1 + H1,2 −α ẋ1 1 p− x2 ) p ẋ2 = α1 (x1 + H1,2 − x2 ) − α2 (x2 + H2,3 − x3 ) p p ẋ3 α2 (x2 + H2,3 − x3 ) − α3 (x3 + H3,S − xS ) g (u −k (x −x +h −h )) + P,1 1 h,1 1 AS1 S,0,id,1 1,0,id g (u −k (x −x +h −h )) + P,2 2 h,2 2 AS2 S,0,id,2 2,0,id g (u −k (x −x +h −h )) + P,3 3 h,3 3 AS3 S,0,id,3 3,0,id y1 x1 y2 = x2 y3 x3 (5.5) (h1,0 − x1 )A1 + (h2,0 − x2 )A2 + (h3,0 − x3 )A3 . AS (5.7) (5.6) mit dem Pegelstand des Sammelbehälters xS = hS,0 + 5.2 Stellgrößentransformation Das System aus Gl. 5.5 und Gl. 5.6 ẋ = f(x, u) (5.8) y=x (5.9) ū = f(x, u) (5.10) u = fu−1 (x, ū) (5.11) kann mit der Stellgrößentransformation nach Invertierung dieser1 auf die lineare Form von drei entkoppelten Integratoren 1 s 0 0 y(s) G(s) = = 0 1s 0 ū(s) 0 0 1s (5.12) gebracht werden. Die Stellgrößentransformation kann jedoch nur diskret implementiert werden. uk = fu−1 (xk , u¯k ) (5.13) 1 Wie Gl. 5.5 entnommen werden kann, ist f (x, u) nach u invertierbar. 5. Mehrgrößenregelung der Pegelstände 5.2. Stellgrößentransformation 52 Wie in Abb. 5.1 zu erkennen ist, befindet sich durch die diskrete Implementierung ein Digital/Analog-Wandler (DA) zwischen der Stellgrößentransformation und der zeitkontinuierlichen Strecke, wodurch Abweichungen entstehen. Unter der Annahme, dass diese Abweichungen klein genug sind, wird die Strecke auf die Form von drei entkoppelten Integratoren gebracht. Ta 0 0 z−1 Ta 0 G(z) = 0 z−1 (5.14) Ta 0 0 z−1 Abbildung 5.1: Regler und Strecke mit überlagerter Stellgrößentransformation Werden die Gleichungen 5.10 und 5.13 auf die Strecke aus Gl. 5.5 angewendet, ergibt sich die Stellgrößentransformation p −1 gP,1 (A1 (ū1,k + α1 x1,k + H1,2p− x2,k )) u1,k p −1 u2,k = gP,2 (A2 (ū2,k − α1 px1,k + H1,2 − x2,k + α2 p(x2,k + H2,3 − x3,k )) −1 u3,k gP,3 (A3 (ū3,k − α2 x2,k + H2,3 − x3,k + α3 x3,k + H3,S − xS,k )) +kh,1 (x1,k − xS,k + hS,0,id,1 − h1,0,id ) +kh,2 (x2,k − xS,k + hS,0,id,2 − h2,0,id ) , (5.15) +kh,3 (x3,k − xS,k + hS,0,id,3 − h3,0,id ) −1 welche zu jedem Abtastzeitpunkt durchgeführt wird. Die Bestimmung von gP,i erfolgt −1 numerisch, da sie analytisch schwer durchführbar ist. Die Funktion gP,i (uA,i ) wird in Abständen von ∆uA,i = 1 mV ausgewertet und dazwischen linear interpoliert. Diese Interpolation lässt sich leicht invertieren und wird als Lookup-Table in Scilab-Scicos implementiert. Der Reglerentwurf für lineare Abtastsysteme gestaltet sich wie für zeitkontinuierliche Systeme, wenn die q-Übertragungsfunktionen für Strecke und Regler verwendet werden. Dazu werden die Transformationsvorschriften zwischen z- und q-Bereich z= 1 + q T2a 1 − q T2a (5.16) 5. Mehrgrößenregelung der Pegelstände 5.3. PI-Regler 53 und 2 z−1 · Ta z + 1 verwendet, welche zur q-transformierten Strecke (5.17) q= G# (q) = 1−q T2a q 0 0 0 0 1−q T2a q 0 0 1−q T2a q (5.18) führen. Durch die Stellgrößentransformation können die Pegelstände als entkoppelt betrachtet werden und die Regler Ri# (q) einzeln für die Strecken G# i (q) 1 − q T2a = q (5.19) entworfen werden. Dies führt zu drei voneinander unabhängigen Regelkreisen mit den Regler 0 0 R1# (q) . R# (q) = 0 R2# (q) 0 0 0 R3# (q)0 (5.20) Somit kann der Reglerentwurf als Eingrößenentwurf durchgeführt werden. 5.3 PI-Regler Der PI-Regler wird mittels algebraischem Reglerentwurf [5] entwickelt, um im geschlossenen Regelkreis nur reelle Polstellen auftreten zu lassen2 . Die Pole werden bei diesem Entwurfsverfahren vorgegeben. Der PI-Regler RP#I,i (q) = VI,i + VP,i q q (5.21) führt zu den Führungsübertragungsfunktionen Ta V + V − V q − VP,i T2a q 2 −VP,i T2a (q − q0,1,i ) (q − q0,2,i ) I,i P,i I,i 2 · TP#I.i (q) = = Ta Ta Ta 2 1 − VP,i 2 (q − q∞,1,i ) (q − q∞,2,i ) VI,i + VP,i − VI,i 2 q + 1 − VP,i 2 q (5.22) 2 Komplexe Polstellen können ein Schwingen der Pegelstände zur Folge haben. Dies wird mit der Polvorgabe vermieden. 5. Mehrgrößenregelung der Pegelstände 5.3. PI-Regler 54 und den Störübertragungsfunktionen q2 1 · . 1 − VP,i T2a (q − q∞,1,i ) (q − q∞,2,i ) VI,i + VP,i − VI,i 2 q + 1 − VP,i 2 q 2 (5.23) Die Pole q∞,1,i und q∞,2,i werden laut Tabelle 5.1 vorgegeben. SP#I,i (q) = q2 Ta Ta q∞,1,i Regler 1 -1.15 Regler 2 -0.80 Regler 3 -0.95 = q∞,2,i -1.25 -0.90 -1.00 Tabelle 5.1: Gewählte Eigenwerte beim PI-Regler Damit ergibt sich der P-Anteil VP,i = und der I-Anteil 2(q∞,1,i q∞,2,i Ta − 2q∞,1,i − 2q∞,2,i ) (q∞,1,i Ta − 2) (q∞,2,i Ta − 2) (5.24) 4q∞,1,i q∞,2,i . (q∞,1,i Ta − 2) (q∞,2,i Ta − 2) (5.25) VI,i = Das Ergebnis bei einer Abtastzeit Ta =10 ms sind die Regler RP#I,1(q) = 2.4q + 1.438 q RP#I,2 (q) = 1.7q + 0.72 q RP#I,3(q) = 1.95q + 0.95 q im q-Bereich und 2.401z − 2.399 z−1 1.7z − 1.7 RP I,2(z) = z−1 RP I,1 (z) = RP I,3(z) = 1.95z − 1.95 z−1 5. Mehrgrößenregelung der Pegelstände 5.3. PI-Regler 55 im z-Bereich. Die Pole werden für jeden Regler unterschiedlich vorgegeben, da die Tanks verschieden sensibel auf schnelle Eigenwerte reagieren. Tank 2 ist mit den beiden anderen Tanks direkt über Schläuche verbunden und reagiert dadurch am Sensibelsten. Der Aufbau des Regelkonzeptes kann Abb. 5.2 und 5.3 in Form von Scicos-Blockschaltbildern entnommen werden. Abb. 5.2 zeigt den PI-Regler mit überlagerter Stellgrößentransformation sowie eine dem Regler übergeordnete Schutzabschaltung, die ein Überlaufen der Becken verhindert. Die Schutzabschaltung schaltet die betreffende Pumpe ab, wenn der Pegelstand 90 mm übersteigt. 1 * * Tiefpass r 1 + − e u u_dach udach y PI_Regler1 switch u Demux Transformation * Product * u Product * 1 Mux * Mathematical Expression y Product Mathematical 2 Expression Demux Mathematical Expression TP ein/aus 3 Abbildung 5.2: PI-Regler mit Transformation und Stellgrößenbeschränkung Der genaue Aufbau des PI-Reglers ist in Abb. 5.3 zu sehen. Hier ist zu erwähnen, dass der Eingang des Integrators auf Null geschalten wird, sobald sich die Stellgröße in der Begrenzung (uA,i =0 V oder uA,i =12 V) befindet. Somit bleibt der Ausgang des Integrators auf seinem Wert. Verlässt die Stellgröße die Begrenzung, wird der Integrator wieder aktiv3 . 3 Anti-Windup 5. Mehrgrößenregelung der Pegelstände 5.4. Aufbau und Test der Regelung 56 1 −K− e 1 u_dach 1 −K− Demux Mux −K− Mathematical Expression * * num(z) den(z) Product u Mathematical Expression 2 * * num(z) den(z) Product Demux Mathematical Expression * * num(z) den(z) Product Abbildung 5.3: PI-Regler 5.4 Aufbau und Test der Regelung Zum Testen wird ein Zyklus für die drei Soll-Pegelstände, bezeichnet als Führungsgröße r, vorgegeben. Dieser beinhaltet Pegelsprünge sowie gleichmäßige Pegelstandänderungen. Der Test wurde zuerst in der Simulation und anschließend am Labormodell durchgeführt. Abbildungen 5.4 und 5.5 zeigen den Aufbau der Regelung in der Simulation und am PC/104 System. 5. Mehrgrößenregelung der Pegelstände 5.4. Aufbau und Test der Regelung 57 Mux + − Führungsgröße regelung.Sprung_Ablauf Stellgröße r switch −K− y Ein/Aus TP ein/aus + − Mux u_sim u u_A 1 h 1e3 Füllstände Ein/Aus regelung.TP_ein To workspace Strecke PI−Regler + − To workspace h_sim Demux Abbildung 5.4: PI-Regelung Simulation 1 Scope Fuehrungsgroesse −K− Demux Scope Stellgroesse Demux Scope Sensor COMEDI D/A COMEDI A/D comedi0 CH−0 comedi0 CH−0 Pumpe 1 r y TP ein/aus u 0 1/3 Sensor 1 COMEDI D/A COMEDI A/D comedi0 CH−1 comedi0 CH−1 Sensor 2 Regler Ein/Aus Demux Pumpe 2 PI−Regler COMEDI D/A COMEDI A/D Stellgroesse Demux Mux comedi0 CH−2 comedi0 CH−2 Step Pumpe 3 u_S offset Scope h −K− Pegelstand Demux Pegelstaende Sensor 3 TP Ein_Aus Step Offset−Abgleich 1 Step Scope Demux u_y Demux Offset−Abgleich 2 Mux Step Offset−Abgleich 3 Abbildung 5.5: PI-Regelung PC/104-System Gemessen wurden die drei Ist-Pegelstände y und die drei Ankerspannungen u, welche als Stellgröße dienen. In Abb. 5.6 werden die Führungsgrößen r und die Ist-Pegelstände y dargestellt. Die dazugehörigen Ankerspannungen u zeigt Abb. 5.7. h in mm Tank 1 Vorgabe Messung Simulation 0 20 40 60 80 100 t in s h in mm Tank 2 Vorgabe Messung Simulation 0 20 40 60 80 100 t in s Tank 3 h in mm 80 70 60 50 40 30 Vorgabe Messung Simulation 0 20 40 60 80 100 t in s Sammelbehälter h in mm 80 70 60 50 40 30 Messung Simulation 0 20 40 60 100 58 t in s 80 5.4. Aufbau und Test der Regelung Abbildung 5.6: Ergebnis der PI-Regelung 80 70 60 50 40 30 5. Mehrgrößenregelung der Pegelstände 80 70 60 50 40 30 Messung uA in V 12 10 8 6 4 2 0 Simulation 20 40 60 80 100 t in s Tank 2 Messung uA in V 12 10 8 6 4 2 0 Simulation 0 20 40 60 80 100 t in s Tank 3 Messung uA in V 12 10 8 6 4 2 0 Simulation 0 20 40 60 80 100 5.4. Aufbau und Test der Regelung Abbildung 5.7: Stellgröße der PI-Regelung 0 5. Mehrgrößenregelung der Pegelstände Tank 1 t in s 59 6 Softwareseitige Umsetzung In diesem Kapitel wird beschrieben, wie die Umsetzung der Programmierung und Simulation durchgeführt wurde. Es wird weiters auf einzelne Probleme aufmerksam gemacht, um diese bei zukünftigen Projekten von vornherein auszuschließen. 6.1 Betriebssysteme und Rechner Wie Kapitel 2 entnommen werden kann, wurde auf das PC/104 System ein echtzeitfähiges Betriebssystem installiert. Es sollte auch die Möglichkeit geschaffen werden, mit dem Programm Scilab/Scicos direkt am PC/104 System die Simulation und Programmierung durchzuführen. Durch Testen stellte sich jedoch heraus, dass die Leistung von 500 MHz des PC/104 Systems nicht ausreicht um vernünftig darauf arbeiten zu können. Dadurch ist ein zusätzlicher Rechner erforderlich, auf dem die Programmierung und Simulation mit dem Programm Scilab/Scicos erfolgt. Wird eine RTAI-Code-Generierung auf einem gleichen, echtzeitfähigen Betriebssystem durchgeführt, kann eine Datei generiert werden, welche am PC/104 System ausgeführt werden kann. Dies führt zu folgender Vorgehensweise: Auf einem zweiten Rechner mit Windows-Betriebssystem wird das Programm Scilab/Scicos installiert und die Simulation durchgeführt. Zusätzlich wird das gleiche echtzeitfähige Betriebssystem, welches auf dem PC/104 System läuft, mit Hilfe von VMware Player 1 darauf installiert. Dazu wird das fertige Linux -Paket debian.vmx, auf welchem bereits das Programm Scilab/Scicos mit RTAI-Lab Add-on (siehe auch Kap. 2.13) integriert ist, von wiki4students heruntergeladen. Bei der VMware Player Version 2.5 ist standardmäßig der RAM-Speicher auf 196 MB eingestellt. Dies kann bei größeren Scicos-Programmen (>1 MB) zu wenig sein. Mit dem Programm VMmanager, welches ebenso frei aus dem Internet bezogen werden kann, lässt sich der RAM-Speicher erhöhen. Dabei ist darauf zu achten, ihn maximal auf die Hälfte des verfügbaren RAM-Speichers einzustellen. Damit können beide Betriebssysteme, die am Rechner laufen, auf den halben RAM-Speicher zugreifen. 6.2 Umstellung auf Scilab/Scicos Für die Simulation kann das Modell von Matlab/Simulink in Scilab/Scicos nachgebaut werden, da es sehr ähnlich ist. Da es schon einige Literatur gibt, die sich mit Dokumentationen über Scilab/Scicos beschäftigen, wird in diesem Abschnitt nur auf einige wenige 1 VMware Player bietet die Möglichkeit mehrere Betriebssysteme gleichzeitig auf einem PC ausführen zu können, ist Opensource-Software und kann aus dem Internet frei bezogen werden. 60 6. Softwareseitige Umsetzung 6.2. Umstellung auf Scilab/Scicos 61 nützliche Themen eingegangen, welche die Umsetzung von einem Matlab/Simulink -Modell auf dSpace auf ein Scilab/Scicos-Modell auf dem echtzeitfähigen PC/104 System, erleichtern sollen. Folgende Hinweise können dabei nützlich sein: • Mit dem Scicos-Block Mathematical Expression können Funktionen wie If - Bedingungen, Größer/Kleiner -Abfragen oder sin/cos-Funktionen implementiert werden. • Der Scicos-Block Generic Block ist vergleichbar mit einer s-function von Matlab/Simulink : Dazu muss eine sci-function in Scilab erstellt werden. Die Übergabeparameter dieser Funktion werden im Scicos-Block Generic Block definiert und nicht wie bei der s-function von Matlab/Simulink direkt in der Funktion. • Die Scicos-Blöcke Lookup-table und Curve verwenden ein Grafikfenster, in dem eine Funktion gezeichnet oder über eine Datei eingelesen werden kann. Die Datei hat ein xy-Format, welche folgendermaßen erstellt werden kann: Zwei Spalten-Vektoren x y werden in eine Matrix xy=[x y] zusammengefasst und mit save(’datei.xy’,xy) als xy-Datei gespeichert. Das Einlesen von datei.xy erfolgt über Data-read und anschließendem Speichern mit Edit-Ok. Für die Umstellung auf RTAI müssen folgende Punkte beachtet werden: • Alle Ein-/ und Ausgänge wie z.B. Steps und Scopes, sowie die comedi -HardwareTreiber müssen durch die Blöcke aus der Bibliothek RTAI-Lib ersetzt werden. • Um zu große Scicos-Dateien zu vermeiden, können Blöcke durch den Scicos-Block Mathematical Expression ersetzt werden. Dieser Block kann lange mathematische Ausdrücke beinhalten, und somit Blöcke einsparen wodurch die Dateigröße verkleinert wird. Als Visualisierungsprogramm wird qRtailab für das PC/104 System verwendet, welches equivalent zum Programm Control-Desk von dSpace ist. Auf folgende Problematiken ist zu achten: • Im Visualisierungspaket qRtailab können nur Parameter eines Scicos-Blocks eindeutig wieder erkannt werden, wenn diesem eine “Identifikation” unter FormatIdentification hinzugefügt wurde. Ansonsten hat dieser Block eine aufsteigende Nummer, wodurch dieser bei einem großen Programm mit vielen Blöcken schwer zu finden ist. Deshalb benötigen alle Blöcke, auf welche in qRtailab zugegegriffen werden soll, einen eindeutigen Identifikationsnamen. • Die Parameter der Blöcke in Scicos werden in einer Datenpunktliste gespeichert. qRtailab kann nur eine begrenzte Anzahl verarbeiten. Wenn die Anzahl der Parameter zu groß ist, wird der Fehler Speicherzugriffsfehler angezeigt und das Programm beendet. Bei der Verwendung von Scicos-Blöcken wie Lookup-Tables oder Curves werden Kurven implementiert. Besonders dabei soll darauf geachtet werden, diese Kurven mit nicht zu vielen Datenpunkten (<1000) zu beschreiben. 6. Softwareseitige Umsetzung 6.2. Umstellung auf Scilab/Scicos 62 • Bei der Verwendung von Scopes können Probleme auftreten, wenn qRtailab mehrere Verläufe mit vielen Datenpunkten anzeigen soll. Es kann zu langen Verzögerungen in der Menüführung kommen, was eine vernünftige Verwendung von qRtailab nicht gewährleistet. Um Verzögerungen zu verhindern, müssen folgende Einstellungen getätigt werden, bevor ein Verlauf angezeigt wird: Anzeigen eines kleineren Bereichs durch Senken von sec/div bzw. erhöhen der Abtastzeit durch Erhöhen des Dividers im Menüpunkt Display, damit nie das Datenpunktemaximum von 9999 erreicht wird. Ein vernünftiges Arbeiten erfolgt, je nach Anzahl der Anzeigen, bei bis zu 999 Datenpunkten. Weiters sollen die Anzahl der Frames auf maximal fünf eingestellt werden, um qRtailab nicht zu überlasten. Abbildung 6.1: Scopes Manager von qRtailab Wenn die Umsetzung direkt von Matlab/Simulink auf das PC/104 System durchgeführt wird, sind folgende Aspekte zu beachten: • Alle Ein-/ und Ausgänge wie z.B. Steps und Scopes, sowie die comedi -HardwareTreiber müssen mit den Blöcken aus der Simulink -Bibliothek RTAI-Devices ersetzt werden. • Bei der Verwendung von Lookup-Tables muss darauf geachtet werden, diese mit nicht zu vielen Datenpunkten (<1000) zu benutzen. Ansonsten würde die Simulink -Datei unnötig groß werden, wodurch es zu Problemen bei der Visualisierung mit qRtailab kommen kann. 7 Inbetriebnahme In diesem Kapitel wird beschrieben, wie das 3-Tank-Labormodell mit dem PC/104 System gesteuert und geregelt werden kann. Hier folgt eine Anleitung, wie Schritt für Schritt das 3-Tank-Labormodell in Betrieb genommen werden kann und darauf Regelungen, Steuerungen und Messungen durchgeführt werden können. Die dazu vorbereiteten Dateien können Tabelle 7.1 entnommen werden. Steuerung und Messung Regelung und Messung Ausführbare Datei qRtailab-Profil Verzeichnis Strecke rtai.exe s.qrl /home/exe PI rtai.exe r.qrl /home/exe Tabelle 7.1: Dateien-Übersicht 1. Vorbereitung der benötigten Komponenten: (a) Das 3-Tank-Modell nach Kap. 1 aufbauen und nach Abb. 1.11 verbinden, sowie die verwendenten elektrischen Komponenten, Leistungsverstärker, Netzgerät, Trennverstärkerkarten, PC/104 System und Bildschirm entsprechend mit Spannung versorgen und einschalten. Dabei muss am Netzgerät 8 V eingestellt und über den Schalter Output hinausgeführt werden. Das PC/104 System wird mit dem Hauptschalter und dem Ein/Aus-Taster (siehe Abb. 1.10) eingeschaltet. (b) Den Sammelbehälter auf Pegelhöhe 75 mm mit Wasser befüllen. 2. Das PC/104 System starten: (a) Am Betriebssystem Linux mit dem Benutzer “root” und dem Passwort “rtai” anmelden. (b) Den Root Terminal unter dem Menüpunkt Anwendungen/Zubehör/Root Terminal starten. (c) Im Root Terminal folgende Anweisungen durchführen: i. Durch Eingabe von loadrtai das rtai -Skript starten. ii. Durch Eingabe von loadcomedi das comedi -Skript starten. 3. Steuerungs- oder Regelungsprozess starten: (a) Im Root Terminal folgende Anweisungen durchführen: 63 7. Inbetriebnahme 64 i. In das Verzeichnis mit der ausführbaren Datei laut Tab. 7.1 wechseln: cd /home/exe ii. Den Steuerungsprozess durch Eingabe von ./Strecke rtai & bzw. den Regelungsprozess durch Eingabe von ./PI rtai & starten (siehe Tab. 7.1). iii. Einen neuen Reiter im Terminal öffnen und mit Eingabe von qrtailab & das Visualisierungspaket qRtailab starten. Abbildung 7.1: Oberfläche von qRtailab (b) Die weiteren Anweisungen sind im Visualisierungspaket qRtailab durchzuführen. In Abb. 7.1 ist die Oberfläche von qRtailab zu sehen. Weiters werden in dieser Abbildung die wichtigsten Werkzeuge des Visualisierungspaketes hervorgehoben. i. Das vorbereitete qRtailab-Profil s.qrl (für die Steuerung) bzw. r.qrl (für die Regelung) in qRtailab laden (siehe Abb. 7.1). Dadurch verbindet sich qRtailab mit dem laufenden Prozess Strecke rtai bzw. PI rtai und zeigt die gewünschten Anzeigen mit den richtigen Einstellungen. ii. Bei den Sensoren muss ein Offset-Abgleich durchgeführt werden. Der OffsetAbgleich erfolgt durch Änderung des Parameters Offset-Abgleich 1 für den Sensor 1. Im Feld V alue[0] wird die Differenz zwischen Skalenwert am Tank 1 und Anzeige 1 im Scope Pegelstand eingetragen. Dies erfolgt ebenso für die Sensoren 2 und 3 durch Änderung der Parameter Offset-Abgleich 2 und 3. 4. Steuerung durchführen: (a) Punkte 1 - 3 müssen ausgeführt sein. 7. Inbetriebnahme 65 (b) Zur Ansteuerung ist folgendes Steuerungsprofil eingebunden: Abbildung 7.2: Sprungvorgabeparameter Mit den Parametern T ein, T aus und r kann nach Abb. 7.2 im Parameters Manager ein Spannungssprung für die drei Pumpen vorgegeben werden. Zum Beispiel wird mit den Parameterwerten T1 ein = 0, T1 aus = 5, r1 = 12 an die Pumpe 1 ein fünf Sekunden andauernder Spannungssprung von 12 V angelegt. (c) Mit Ein Aus = 1 wird die Steuerung gestartet. (d) Beendet wird diese durch Setzen von Ein Aus = 0. (e) Eine Messung kann im Scopes Manager durch Auswählen des gewünschten Scope (z.B. Pegelstaende) im Menüpunkt Saving gespeichert werden. Nach Eingabe von Dateinamen, Verzeichnis und Dauer der Messung werden durch Klicken auf Save die Messwerte vom Scope Pegelstaende gespeichert. (f) Nach dem der Prozess laut Abb. 7.1 beendet wurde, kann durch Beenden von qRtailab die Steuerung abgeschlossen werden. Das Programm ist an dieser Stelle zum Starten eines neuen Prozess laut Punkt 3 bereit. 5. Regelung: Für die Regelung gibt es zwei Modi, den Sprung-Modus und den AblaufModus. (a) Punkte 1 - 3 müssen ausgeführt sein. (b) Regelung mit dem Sprung-Modus i. Beim Sprungmodus ist folgendes Führungsgrößenprofil eingebunden: Abbildung 7.3: Führungssprungvorgabeparameter Durch Setzen der Parameter Value[0]-Value[4] in r1, r2 und r3 im Parameters Manager kann nach diesem Führungsgrößenprofil geregelt werden. Als Beispiel werden alle drei Pegelstände durch Setzen der Parameter laut Tabelle 7.2 auf 50 mm geregelt. 7. Inbetriebnahme 66 r1 r2 0 0 0 0 0 0 0 0 50 50 Value[0] Value[1] Value[2] Value[3] Value[4] r3 0 0 0 0 50 Tabelle 7.2: Beispiel zur Regelung mit dem Sprungmodus ii. iii. iv. v. Mit Sprung/Ablauf = 0 den Sprung-Modus auswählen. Mit Sprung Ein/Aus = 1 den Sprung aufschalten. Mit Regler Ein/Aus = 1 den Regler einschalten Am Ende der Regelung den Sprung mit Sprung Ein/Aus = 0 und den Regler mit Regler Ein/Aus = 0 ausschalten. (c) Regelung mit dem Ablaufmodus i. Beim Ablaufmodus ist folgender Führungsverlauf eingebunden: Tank 1 h in mm 80 70 60 50 40 30 20 10 0 0 20 40 60 80 100 60 80 100 60 80 100 t in s Tank 2 h in mm 80 70 60 50 40 30 20 10 0 0 20 40 t in s Tank 3 h in mm 80 70 60 50 40 30 20 10 0 0 20 40 t in s Abbildung 7.4: Führungsverlauf-Vorgabe bei der Ablaufregelung ii. iii. iv. v. Mit Sprung/Ablauf = 1 in den Ablaufmodus wechseln. Mit Ablauf Ein/Aus = 1 den Ablauf einschalten. Mit Regler Ein/Aus = 1 den Regler einschalten Am Ende der Regelung den Ablauf mit Ablauf Ein/Aus = 0 und den Regler mit Regler Ein/Aus = 0 ausschalten.. 7. Inbetriebnahme 67 (d) Nach dem der Prozess laut Abb. 7.1 beendet wurde, kann durch Beenden von qRtailab die Regelung abgeschlossen werden. Das Programm ist an dieser Stelle zum Starten eines neuen Prozess laut Punkt 3 bereit. Bemerkung: Durch die Ungenauigkeiten der alten Sensoren stimmt der Skalenwert mit der Anzeige nicht immer überein. Es kann bei jedem Pegelstand zu jeder Zeit ein Offset-Abgleich nach Punkt 3.b.ii durchgeführt werden. A Anhang Im Anhang werden alle fehlenden Messungen zur Identifikation und die restlichen Simulationsmodelle in Scilab/Scicos angefügt. A.1 Messungen In den folgenden Diagrammen sind die Messungen zur Identifikation der drei Pumpen dargestellt. In jedem Diagramm ist die Reaktion des Pegelstandes hi auf eine angelegte Spannung uA,i über die Zeit t abgebildet. Aus den Abbildungen geht deutlich hervor, dass niedrige Ankerspannungen eine absteigende Kennlinie aufweisen und somit die Tanks entleeren und erst ab einer bestimmten Spannung die Tanks befüllt werden. 40 30 70 70 70 70 50 2 3 t in s 4 5 40 30 30 30 30 20 0 70 70 h in mm 80 50 40 1 2 3 t in s 4 5 6 60 50 20 0 90 1 2 3 4 5 t in s 6 7 8 9 2 5 6 7 5 10 70 65 65 60 60 55 50 5 6 7 20 1 2 3 4 t in s 5 6 7 0 uA = 6V 100 45 40 40 35 35 4 6 100 8 10 12 14 16 18 20 t in s uA = 10V 60 50 100 2 3 4 t in s 5 6 7 0 uA = 11V 85 1 2 3 t in s 4 5 6 uA = 12V 60 50 50 40 40 90 80 80 70 60 75 70 h in mm 70 60 90 h in mm 70 h in mm 80 h in mm h in mm 80 80 70 60 65 60 55 50 50 50 40 40 45 40 35 30 0.0 0.5 1.0 1.5 2.0 t in s 2.5 3.0 3.5 30 0.0 0.5 1.0 1.5 2.0 t in s 2.5 3.0 3.5 30 0.0 0.5 1.0 1.5 t in s 2.0 2.5 3.0 30 0.0 0.5 1.0 1.5 t in s 2.0 2.5 30 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 t in s Abbildung A.1: Messungen zur Identifikation von Pumpe 1 68 4 5 t in s 6 7 8 uA = 7V 70 60 40 30 1 3 50 40 0 2 80 70 30 2 1 90 80 50 50 30 0 90 55 45 0 uA = 9V 3 4 t in s 75 t in s 90 2 uA = 5V 80 70 15 1 60 40 20 0 30 0 uA = 8V 3 4 t in s 75 30 20 1 uA = 4V 80 40 30 20 0 uA = 3.5V 90 80 60 50 40 6 uA = 3V 90 50 60 40 h in mm 1 50 60 40 20 0 60 h in mm 70 h in mm 80 60 uA = 2.5V 90 80 h in mm 50 uA = 2V 90 80 h in mm 60 uA = 1.5V 90 80 h in mm h in mm h in mm 70 uA = 1V 90 80 h in mm 80 h in mm uA = 0.5V 90 h in mm uA = 0V 90 30 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 t in s A. Anhang A.1. Messungen 40 40 30 30 20 20 10 0 1 2 3 4 t in s 5 6 7 uA = 3V 90 20 0 1 2 3 4 5 t in s 6 7 8 uA = 4V 90 75 60 5 6 60 50 70 70 60 50 60 50 40 40 30 30 1 2 3 4 5 t in s 6 7 8 9 uA = 6V 20 70 70 60 50 1 2 3 4 5 6 t in s 7 8 9 10 0 uA = 7V 90 80 100 40 45 30 30 40 35 20 0 5 10 15 20 0 2 4 6 t in s t in s uA = 9V 90 80 80 70 h in mm 60 50 70 60 40 30 30 30 20 20 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 t in s 20 0.0 1.0 1.5 2.0 t in s 2.5 3.0 50 4 5 t in s 6 7 40 30 20 70 60 50 20 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 t in s 2 3 t in s 4 5 6 40 uA = 12V 110 80 70 60 50 40 0.5 1.0 1.5 t in s 2.0 2.5 30 0.0 3.0 0.5 1.0 1.5 t in s 2.0 2.5 30 30 1 2 3 4 5 t in s 6 7 8 9 uA = 3V 85 1 2 3 4 5 6 t in s 7 8 9 10 uA = 4V 90 90 3 4 5 6 t in s 7 8 9 10 uA = 5V 85 50 60 65 60 55 50 45 50 40 40 35 30 30 0 2 4 6 8 t in s 10 12 14 0 1 2 3 4 t in s 5 6 7 40 30 1 2 3 4 5 6 t in s 7 8 9 10 0 5 10 15 t in s uA = 6V 100 80 uA = 8V 90 75 80 70 h in mm 55 h in mm 60 70 60 50 0 75 70 65 h in mm h in mm 2 80 70 70 30 1 85 80 75 70 40 0 80 80 60 uA = 2V 90 80 50 20 0 uA = 1.5V 90 50 40 20 0 uA = 1V 60 40 60 30 1 h in mm 70 70 20 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 t in s 0 65 60 55 50 45 45 40 40 35 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 t in s 35 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 t in s h in mm 50 80 uA = 8V 30 90 90 80 h in mm h in mm 60 h in mm uA = 0.5V 90 12 30 8 h in mm uA = 0V 70 10 40 Abbildung A.2: Messungen zur Identifikation von Pumpe 2 80 8 80 60 100 10 0.0 3.5 3 50 40 0.5 2 60 50 40 1 uA = 11V 100 90 6 t in s 40 20 0 100 80 70 12 uA = 10V 110 90 10 h in mm 100 8 4 50 40 h in mm 50 2 90 50 55 50 30 0 80 60 40 20 0 90 60 h in mm 70 7 70 h in mm h in mm 65 3 4 t in s 80 70 70 2 90 80 80 1 uA = 5V 100 85 80 20 0 h in mm 30 h in mm 50 uA = 2.5V 90 80 h in mm 50 h in mm 50 60 h in mm h in mm 60 uA = 2V 90 80 h in mm 70 60 uA = 1.5V 90 70 40 h in mm uA = 1V 80 80 70 h in mm uA = 0.5V 90 80 h in mm uA = 0V 90 69 70 60 50 40 30 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 t in s A. Anhang uA = 9V 110 uA = 10V 100 100 90 90 70 70 60 0.5 1.0 1.5 t in s 2.0 2.5 3.0 30 0.0 0.5 1.0 1.5 t in s 2.0 2.5 3.0 30 0.0 60 50 40 40 40 uA = 12V 70 70 50 50 50 70 80 60 60 40 0.0 90 80 80 h in mm h in mm h in mm 80 uA = 11V 90 h in mm 100 A.2. Simulationsmodelle in Scilab/Scicos 0.5 1.0 1.5 t in s 2.0 2.5 30 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 t in s 3.0 Abbildung A.3: Messungen zur Identifikation von Pumpe 3 A.2 Simulationsmodelle in Scilab/Scicos Hier wird das detailierte Simulationsmodell der Strecke mit allen Unterblockschaltbildern gezeigt. Der Aufbau des in Abb. 4.9 benannten Block Strecke ist in Abb. A.4 dargestellt. In diesem Blockschaltbild sind die Blöcke Behälter, Sammelbehälter und Pumpe enthalten. q_zu h_unten h q_ab q_rueck Behälter1 h q_ab q_rueck q_zu h_unten Behälter2 q_zu h_unten h q_ab q_rueck Behälter3 u_A 1 h Demux Mux u_A h h_S q q Pumpe2 u_A h h_S q Pumpe3 + + + + + ++ − Pumpe1 u_A h h_S q_zu q_ab h_S Sammelbehälter Abbildung A.4: Blockschaltbild der Strecke Deren Aufbau wird in den Abbildungen A.5, A.6 und A.7 gezeigt. 1 A. Anhang A.2. Simulationsmodelle in Scilab/Scicos q_zu + 1 num(s) h −K− 1 den(s) − h_unten GENERIC 2 −K− 1/s q_ab 2 Mux tank(1).H_next * constant1 * tank(1).H + − q_rueck 3 Mathematical Product Expression constant1 Abbildung A.5: Blockschaltbild eines Tanks Abbildung A.6: Blockschaltbild des Sammelbehälters Abbildung A.7: Blockschaltbild einer Pumpe 71 Literaturverzeichnis [1] Ludwig P.: Regelung des Labormodells Wagen und Pendel mit minimalem Linux basierenden Echtzeitsystem und Open-Source Software, Projektseminar am Institut für Regelungstechnik und Prozessautomatisierung, JKU Linz, 2009 [2] Fürnhammer T.: Regelung des Labormodells Air Levitated Ball mittels Linux Echtzeitsystem und einer Hardware von National Instruments, Projektseminar am Institut für Regelungstechnik und Prozessautomatisierung, JKU Linz, 2009 [3] Wieser P.: Drei-Tank-Modell Aufbau, Identifikation und Regelung, Projektseminar am Institut für Regelungstechnik und Prozessautomatisierung, JKU Linz, 2008 [4] www.debian.org : Homepage des Betriebssystems Debian Gnu/Linux, 30.10.2009 um 06:12 [5] Schlacher K.: Vorlesungsskript aus Automatisierungstechnik II, WS 2009 [6] http://de.wikipedia.org/wiki/RTAI, 12.11.2009 um 14:32 72