Skip to content
Simulation der Regelung einer schwebenden Kugel.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
code
pics
README.md

README.md

12.2012

Inhaltsverzeichnis

  1. Zustandsregelung
    1.1. Motivation
    1.2. Fortsetzung

  2. Schwebekugel
    2.1. Vergleich der Systeme
    2.2. P-Regelung
    2.3. Beobachtung
    2.4. PI-Regelung

  3. Fazit

1. Zustandsregelung

Die Zustandsregelung beschreibt eine mathematisches Darstellung von Differentialgleichungen, die ein dynamisches System beschreibt. Grundsätzlich muss das System durch eine lineare (inhomogene) Differentialgleichung zu beschreiben sein. Falls das nicht der Fall ist, muss am Betriebspunkt linearisiert werden, um dort eine lineare Differentialgleichung zu erhalten.

Meistens liegt am Anfang also eine lineare Differentialgleichung mit einer höheren Ordung als n=1 vor. Durch eine Substitution kann man diese aber in lineare Differentialgleichungen aufspalten und erhält ein System. Durch diese neue Darstellung ergeben sich Verfahren, mit denen man Parameter und andere für die Regelungstechnik nützliche Dinge errechnen kann. In der numerischen Mathematik benutzt man diese Aufspaltung um die Differentialgleichung näherungsweise zu lösen.

1.1. Motivation

In der Vorlesung Systemdynamik haben wir ein Beispiel mit Praxisbezug durchgerechnet. Hier geht es unter anderem um die Aufstellung der Gleichungen, die Linearisierung und den späteren Einbau des Reglers.

Wir haben in den Laboren MatLab als Software benutzt, die mit der integrierten Software Simulink hervorragend dafür geeignet ist solche Regelkreise aufzubauen. Kostenlose Vergleichssoftware sind SciLab oder SciCosLab, die ebenfalls eine grafische Modellierung ermöglichen. Beide Programme benutzen dabei SciCos. In SciLab ist dieses Programm aber viel besser implementiert, mit SciCosLab lässt sich kaum arbeiten (keine Tastatureingaben), die Version ist aber aktueller.

Die beiden wissenschaftliche Programme sind trotzdem sehr mächtig, die MatLab in seiner Grundinstallation ähneln. Trotzdem sind sie im deutschen Raum kaum bekannt. MatLab führt wie Microsoft vorallem in Deutschland ein Monopol. MatLab wird oft in Hochschulen benutzt, da die Lizenzen wohl günstig zu haben sind. Studenten können oftmals auch kostenlos eine Lizenz für ihren Heimrechner erwerben. In der Industrie ist es bereits Standard.

Man muss auch ehrlich gestehen, dass Matlab sehr viele Werkzeuge mitbringt (zusätzlicher Kostenfaktor), die für die Regelungstechnik von Vorteil und in Vergleichssoftware nicht vorhanden sind. Dabei gibt es genug kostenlose Programme, vorallem im OpenSource-Bereich, die in Summe alles abdecken. Man muss diese eben gemeinsam benutzen, wie es das UNIX-Prinzip eigentlich auch vorsieht.

Das Prinzip der vielen kleine Programme scheint aber irgendwie verloren zu gehen. Heute versucht man Software zu entwickeln, die alles abdeckt. So kann ein heutiges Konstruktionsprogramm nicht nur konstruieren, sondern auch gleich eine FEM-Analyse bewerkstelligen. MatLab hat vor noch nicht allzulanger Zeit Mupad aufgekauft. Der Trend geht also in die Komplettpakete. Jede Entwicklung mischt also ihren eigenen Brei, anstatt auf schon vorhandene Konzepte zu setzen. Programme werden so auch immer grösser.

In Unix ähnlichen Betriebssystemen wie Linux oder BSD steht dieses Konzept der einzelnen Programme an der Tagesordnung. Man erkennt das an dem Prinzip der Paketverwaltung. Über die Paketverwaltung können Programme geladen werden und es wird zusätzlich gleich geschaut, welche Abhängigkeiten dazu nötig sind. Ein Beispiel: Maxima und Octave sind beides mathematische Programme. Für die grafische Anzeige benutzen beide GnuPlot. Wenn Maxima als erstes installiert wird, muss also GnuPlot mit heruntergeladen und installiert werden. Bei der nachfolgenden Installation von Octave ist das nicht mehr nötig. In Windows ist in den jeweiligen Programmverzeichnissen Octave und Maxima eine mitgebrachte Version von GnuPlot dabei. Das Programm wird also zwei mal heruntergeladen, obwohl man es nur einmal braucht. Hat aber auch Vorteile, so ist es nicht ;). In einer Zeit von DSL, Flatrate und riesigem Festplattenspeicher ist das sowas von egal.

Ich will dem ein bisschen entgegentreten und zeigen, dass es auch anderst geht. Ich setze hier auf Freemat und Maxima. Das eine ist eine numerische Software (ohne grafische Modellierung ala MatLab/Simulink) und die andere ein CAS (Computeralgebrasystem), mit der symbolisch gerechnet werden kann. In Kombination vollkommen ausreichend für die nachfolgenden Probleme ;).

1.2. Fortsetzung

Ich melde mich wieder zurück. Ich wollte ursprünglich den Artikel etwas anders gestalten, habe mich aber aufgrund der Tiefe der Thematik anderst entschieden. Das ganze wäre zu viel geworden. Ich werde also nur die numerische Sichtweise bzw. die Algorithmik von Freemat erläutern. Die algebraische Vorgehensweise ist natürlich auch sehr wichtig und wurde ebenfalls mit der Unterstützung von Programmen bewältigt. Ich werde hierzu aber nicht näher darauf eingehen, aber bestimmt mal dazu in einem anderen Artikel schreiben. Mathematik ist nur dann wirklich mächtig, wenn man Algebra und Numerik miteinander kombiniert. Viel Spass beim Lesen.

2. Schwebekugel

Der Leser meiner anderen Artikel weiß, dass ich gerne die Thematik mit ausführlichen Beispielen verbinde. Ich habe in meinem Studium auch interessante Vorlesungen, eine trägt den Namen Systemdynamik. In dieser Vorlesung wird uns das Konzept des Zustandraumes näher gebracht. Es wird erklärt, wie man eine Differentialgleichung erstmals mit physikalischer Beschreibung der Natur erhält. Danach wird substituiert um das Zustandsraummodell zu erhalten. Die Regelungstechnik bietet nun Verfahren an, wie die Eigenschaften (zum Beispiel die Stabilität) zu errechnen sind. Desweiteren gibt es Rezepte, wie man das System mit einem P-Regler oder sogar einem PI-Regler erweitert. Daneben gibt es viele Einstellungsmöglichkeiten. Ich will diese Sachen dem Leser einmal etwas näher bringen. Der Vorteil meines Artikels besteht darin, dass keine besondere Software (wie Matlab) dafür gebraucht wird. Zudem habe ich den Stoff erst vor kurzem gelernt, ich kann vll. sehr gut einschätzen, wo für manche der AHA-Effekt schwer zu verstehen ist.

Die Schwebekugel, wie soll es anderst sein, ist ebenfalls ein Beispiel, dass wir in dieser Vorlesung durchgenommen haben. Die Schwebekugel beschreibt eine magnetische Eisenkugel, die durch eine stromdurchflossene Spule (daher magnetisch) in der Luft vorerst gehalten wird. Es gibt auf den ersten Blick also 2 Kräfte. Einmal die Spule, die die Kugel durch die magnetische Wirkung nach oben zieht und die Erdanziehung, die die Kugel nach unten fallen lässt. Durch die einstellbare Spannung kann genau das Gleichgewicht gefunden werden, sodass die Kugel schwebt. Wenn man diese Einstellung mal dem Menschen überlässt, würde man wohl lange brauchen, bis man den Schwebezustand erreicht. Hier macht also eine Regelung Sinn.

Das Beispiel liegt nachgebaut im Labor vor und hat mich sehr beeindruckt. Geregelt wurde das ganze mit MatLab und dem Real-Time-Workshop. Das ganze kostet dem normalen Menschen sehr viel Geld. Man kann das ganze aber auch in C schreiben und somit auf einem Microcontroller übersetzen (Multiplikation und Division durch Hardware sollte gegeben sein). Der Aufwand ist aber ein wenig größer, zudem ist man weniger flexibel. Ich habe deshalb auf MatLab und die Simulink-Oberfläche verzichtet. Ganz so schwer wollte ich es mir aber dennoch nicht machen, deshalb benutze ich mit Freemat einen Interpreter und die Möglichkeit mit Matrizen zu rechnen. Das alleine vermindert den Aufwand schon enorm.

text

Die schematische Darstellung dürfte leicht nachvollziehbar sein. Jetzt muss man das ganze nur noch mathematisch Beschreiben, hierzu soll eine nach oben fliegende Kugel als positiv gedeutet werden.

Magnetische Kraft der Spule auf die Kugel:
k = Stoffeigenschaft der Spule
k * i^2 / y^2

Anziehungskraft der Erde
m*g

Beschreibung des Stromkreises
u = R*i + L*di/dt

Kräfte-Gleichgewicht ohne Luftreibung
m*a = -m*g + k*i^2/x^2

Systemgleichung aus Kräfte-Gleichgewicht
x1 = x
x2 = d(x)/dt = Geschwindigkeit
x3 = i = Stromstärke

(1) d(x1)/dt = x2
(2) d(x2)/dt = -g + k/m * (x3/x1)^2
(3) d(x2)/dt = u/L - R/L * x3

Da die Gleichungen nicht alle linear vorliegen, muss um einen Arbeitspunkt linearisiert werden. Nur dann können die Matrizen aufgestellt werden. Die Linearisierung geschieht bei einem Punkt x0 (Abstand zur Spule) und der Geschwindigkeit v0 = 0:

Parameter um den Betriebspunkt:

x0 = x10 = vorgegeben
v0 = x20 = vorgegeben = 0
i0 = x30 = (m*g/k)^0.5*x0
u0 = r * i0

text

D = 0

2.1. Vergleich der Systeme

Die Differentialgleichung bzw. das Differentialgleichungssystem liegt nun in einer linearisierten Form vor. Dadurch ist es mir erst möglich, regelungstechnische Dinge vorzunehmen. Das alles macht aber nur dann einen Sinn, wenn die orginale Funktion tatsächlich der linearisierten "genug" ähnlich ist. Es kann vorkommen, dass der Ort der Linearisierung so schlecht gewählt wurde, dass das linearisierte System kaum die Orginale widerspiegelt.

Man kann sich als Beispiel eine Normalparabel vorstellen, die an ihrem Scheitelpunkt linearisiert wurde. Deshalb sollte man vor Beginn weiterer Berechnungen mal schauen, wie der Vergleich beider Funktionen abschneidet. Ich habe dazu ein kleines Script erstellt, dass beide Funktionen in einem Koordinatensystem bei einer kleinen Verminderung der Spannung (delta_u < 0) vergleicht. Die Eisenkugel müsste sich also nach unten bewegen, weil die Anziehungskraft der Spule nicht mehr ausreicht, die Kugel auf Position x0 zu halten.

Folgende Dateien werden benötigt:

parameter.m
func_org.m
func_lin.m
vergleich_real_lin.m

Bei Aufruf von "vergleich_real_lin" in Freemat erhält man folgenden Plot:

text

blau = orginal
rot = linearisiert

Wie vorrausgesagt, fliegt die Kugel nach unten. Wie man sehen kann, sind sich die beiden Funktionen in den ersten Zeiteinheiten genügend ähnlich. Die Abweichung danach spielt keine Rolle, weil später der Regler früh genug auf kleine Abweichungen reagieren wird.

Ich habe die Differentialgleichungen (DGL's) mit dem Euler-Verfahren lösen lassen. Dieses Verfahren ist sehr einfach nachzuvollziehen und noch einfacher zu programmieren ;). Der Algorithmus besteht lediglich aus einer Zeile (s. Z. 30) (ohne die Startbedingungen...). Nachteil ist aber die geringe Genauigkeit und Fehlerfortpflanzung bei manchen DGL's. Für die obigen DGL's arbeitet dieses Verfahren aber ausreichend genug.

Bevor die Gleichungen aber gelöst werden, wird eine Parameterdatei geladen (s. Z. 7). Diese Datei beschreibt die Eigenschaften der verwendeten Teile und Instrumente. Da mir nur Werte von dem Labor der HS-Heilbronn vorliegen, habe ich ALLE Werte leicht abgeändert, damit ich keine Probleme mit dem Copyright bekomme. Die Werte befinden sich aber trotzdem noch in der Realität.

Desweiteren gibt es noch zwei Funktionen, func_org() und func_lin(), die jeweils für die Orginale und die linearisierte Funktion stehen. Ich habe die jeweiligen Scriptdateien ausführlich kommentiert. Weitere Erklärungen sind hier also nicht nötig.

Die linearisierte Funktion kann durch dieses Schaubild beschrieben werden:

text

Weiter gehts mit der Integration eines Reglers.

2.2. P-Regelung

Ein Regler beobachtet das System und nimmt bei Veränderung Einfluss darauf. In diesem Beispiel kann man den Regler dazu veranlassen, die Kugel auf eine bestimmte Position zu halten (x0). Falls die Kugel sich also nach unten bewegt, wird die Spannung erhöht. Bei einer Überschreitung wird sie wieder vermindert. Nach einer gewissen Zeit befindet sich die Kugel genau auf der gewünschten Position, die Kugel schwebt.

Wie schnell und präzise so eine Regelung eigentich auf Abweichungen reagiert, merkt man erst, wenn man mal selbst versucht, die Kugel durch einen Spannungsregler auf eine Position zu bringen und diese dann zu halten. Ich denke, der Mensch ist dazu gar nicht mehr in der Lage. Deshalb muss also eine "Mechanik" her, die diese Aufgabe übernimmt. Die "Mechanik" kann hier wie schon erwähnt durch einen Microcontroller erfolgen.

Die Integration eines einfachen Reglers (hier Führungsregler) ergibt folgendes Schaubild:

text

Es ändert sich im Vergleich zu oben eigentlich kaum etwas. "R" ist ein Vektor, der auf alle Zustandsgrössen Einfluss nimmt. Das bedeutet aber auch, dass alle Ausgänge gemessen werden müssen. Im Beispiel oben wäre es die Position, die Geschwindigkeit und die Stromstärke. Das ist nicht immer möglich und wie man später sehen wird, auch nicht nötig.

Wenn sich die Kugel genau auf der linearisierten Position befindet, ergibt die Ausgabe aller drei Zustandsgrössen "0". Es wird durch die Rückführung "R'" nichts bewirkt. Falls aber eine Abweichung vorhanden ist, wird diese mit einem Faktor, den "R'" mitbringt, multipliziert. Die Faktoren von "R'" entscheiden, wie schnell reagiert wird und ob das System überhaupt noch stabil dabei bleibt.

Bevor ich beschreibe, wie man diesen Vektor "B" errechnet, möchte ich noch einige Worte zu dieser Art von Regelung sagen. Die Regelung nennt sich nicht ohne Grund "Führungsgrößenregelung". Die Regelung ist dafür entworfen worden, einen durch den Benutzer vorgegebenen SOLL-Zustand exakt zu erreichen. Es handelt sich hier aber NUR um einen P-Regler, der Sollzustand kann also eigentlich nie erreicht werden, da eine gewisse Abweichung immer vorhanden sein muss (da dieser sonst nicht funktioniert). Deshalb muss man ein bisschen "schummeln" und die Eingangsgrösse "verstärken". Die Verstärkung nimmt zugleich eine Dimmensionsänderung vor, dass heisst man stellt dann zum Beispiel mit dem Potentiometer nicht mehr die Spannungsgrösse ein, sondern eine andere, hier die Position, also der Weg als Meter.

Leider findet man eine solche Erklärung nicht in Büchern über Regelungstechnik. Klar kann man die Dinge durch die Beweise herauslesen, aber eine kleine Info an solch einer Stelle würde einen AHA-Effekt schneller hervorrufen. Ich stelle immer wieder fest, dass Bücher immer weniger auf Verständnis ausgelegt sind. Hauptsache ein gutes Sachwortregister und die entsprechende Formel auf der verweisten Seite. Für das Bestehen einer Prüfung aber vollkommen ausreichend...

Falls die Regelung durch eine Störgröße beeinflusst wird, zum Beispiel durch eine etwas schwerere Kugel, wird das Verhalten einer P-Regelung sichtbar: Das System ist zwar meistens noch stabil, aber der SOLL-Zustand wird nicht mehr exakt erreicht. Eine bleibende Abweichung ist die Folge. Abhilfe schafft später ein PI-Regler.

Um den Vektor "R" zu errechnen, fasst man das ganze System zusammen und bestimmt seine Eigenwerte. Die Eigenwerte sind Lösungen des charakterischten Polynomes einer homogenen linearen Differentialgleichung n-ter Ordnung. Wenn die einzelnen Lösungen bestimmte Eigenschaften erfüllen, ist das System stabil. Da die Werte für den Vektor "R" noch nicht vorliegen, liegt eine Gleichung mit diesen Variablen vor (in diesem Beispiel drei Stück: r1, r2 und r3). Durch ein Vergleichspolynom kann man die einzelnen Eigenwerte nach Wünschen festlegen, muss dazu aber wieder ein Gleichungssystem lösen. Ich habe diesen Schritt ebenfalls in meinem Script ausführlich beschrieben.

parameter.m
func_lin.m
strecke.m
regler.m

Bei Aufruf von "regler" in Freemat erhält man folgenden Plot:

text

Mit imaginären Anteilen:

text

Ich habe das Script so gestaltet, dass die Eigenwerte vorgegeben werden können (s. Z. 20-26). Viel Spass beim experimentieren ;).

2.3. Beobachtung

Mit einer Beobachtung versucht man das Verhalten eines Systems nachzubilden. Eine Beobachtung liegt ja aufgrund der Beschreibung des Systems mit den Parametern und er Linearisierung schon vor. Diese ist aber dazu nicht geeignet, da man nie garantieren kann, dass die Startwerte dieselben sind wie die des realen Systems.

Deshalb muss ein Beobachter auch irgendwie wieder ein Regler sein, vll. einer, der die gewählte Ausgangsgröße mit der des Beobachters vergleicht ;). Um das Prinzip des Beobachters zu verstehen, sollte man auf jeden Fall ein Blick in die Theorie der Regelungstechnik werfen. Ohne Beobachter geht es nicht, in der Realität muss man darauf zurückgreifen.

Wieder eine kleine Skizze:

text

Dies ist ein einfacher Beobachter, der Fehler nur bei unterschiedlichen Anfangsbedingungen kompensieren kann. Verändert das reale System seine Eigenschaften, zum Beispiel der Widerstand der Spule duch Wärme, bleibt eine Regelabweichung zwischen System und Beobachter vorhanden! Hat man ein System, dass seine Eigenschaften relativ stark ändert, muss der Beobachter mit einer PI-Regelung betrieben werden, da sonst der aufgeschaltete Regler Mist bauen kann.

Der Vektor "L" verdankt seinen Namen dem amerikanischen Regelungstechniker David Lünberger. Für die Berechnung sieht man beide Systeme erstmal für sich und bildet dann die Differenz. Setzt man für die Differenz jeweils eine Variable (Deltas) ergibt sich eine neue Differentialgleichung. Die Eigenschaft dieser Differentialgleichung bestimmt das Stabilität des Systemes.

Haben beide Systeme oben dieselben Startwerte (s. Z. 60 u. Z. 64) und betrachtet beide Ausgänge, wird man nur eine Linie erkennen. Die andere befindet sich nämlich direkt darunter.

Das tolle an der Sache ist, dass nur eine Zustandsvariable von oben gemessen wird, aber alle 3 Zustandsgrößen durch den Beobachter errechnet werden. So kann man anschließend den Regler über den Beobachter installieren und ist nicht mehr von der Messung der anderen Zustandsgrößen abhängig. Der Beobachter sollte deshalb eine sehr schnelle Dynamik haben, die Eigenwerte sollten kleiner sein als der der Regelung (natürlich grundsätzlich negativ).

parameter.m
func_lin.m
strecke.m
func_beobachter.m
beobachter.m

Bei Aufruf von "beobachter" in Freemat erhält man folgenden Plot:

Rot = Regler mit linearisierter Funktion
Grün = Beobachter

text

Läßt man die Regelung über den Beobachter laufen (Z. 71) hat man am Anfang einen Einschwingvorgang:

text

Bei einer Messungenauigkeit oder veränderlichen Systemparameter (Spulenwiderstand verändert sich bei Wärme), ergibt sich eine doch recht grober Regelabweichung wenn die Regelung über den Beobachter läuft (Z. 68):

text

2.4. PI-Regelung

Mit der PI-Regelung ist der Artikel über das Zustandsraummodell abgeschlossen. Man könnte jetzt eigentlich alle Konzepte miteinader verbinden (bzw. mit Beobachter), aber das würde mir zuviel Arbeit machen. Die grundlegenden Dinge habe ich hier alle demonstriert. Das Konzept des PI-Reglers baut also nicht wirklich auf den Beobachter auf, sondern bringt sein eigenes mit:

text

Dieses ganze Ding kann man wieder zusammenfassen und erhält eine erweiterte Matrix "A_pi". Die Eigenwerte dieser Matrix entscheiden wieder über Stabilität und Dynamik.

Ich habe also die Matrix erstellt und mit einem Polynom 4. Grades verglichen um die Eigenwerte nach belieben festzulegen. Das entstandene Gleichungssystem war dann aber überbestimmt, so dass ich den Parameter "rp" zu "0" datiert habe (s. Z. 23).

Die entsprechenden Eigenwerte können vorgegeben werden (s. Z. 16 u. 30). Ich habe das Script wieder gut kommentiert, hier werden jetzt nur noch ein paar Bilder folgen.

parameter.m
func_lin.m
strecke.m
regler_func.m
pi_regler.m

Bei Aufruf von "pi_regler" in Freemat erhält man folgenden Plot:

text

Bei der Beobachtung habe ich angesprochen und das Resultat gezeigt, dass sich Systemparameter aufgrund eigener und äußeren Einflüssen leicht verändern können. Die Regelung arbeitete dann nicht mehr exakt zum Sollwert hin. Das Problem tritt hier nicht mehr auf, der I-Teil des Reglers korrigiert diese Abweichungen (Z. 83).

3. Fazit

Was hier jetzt eigentlich noch fehlt, ist der eigentliche Einbau der errechneten Dinge (wie Regelung und Beobachtung) in das reale System. Da würde sich der Funktionsverlauf ein wenig zum linearen System unterscheiden. Bei einem Regler, der schnell reagiert, fällt der Unterschied aber gering aus.

Der Artikel ist trotzdem umfangreich geworden. Ich habe aber auf viel Beschreibung verzichtet. Die Dinge hier sind Teil einer Vorlesung + Labor, die bei uns 4 Wochenstunden umfassen. Ich habe einiges aus der Vorlesung und vieles auch erst durch Eigenstudium verstanden.
Wer in der Regelungstechnik ganz neu ist, sollte sich erst einmal ein wenig grundlegende Mathematik aneignen. Wichtig sind hier allgemein Differentialgleichungen, vorallem die Theorie der linearen, inhomogenen.

Das reicht eigentlich schon aus, aber für die Beschreibung unserer Natur und damit der eigentlichen Umgebung braucht es noch Physik. Das "Beschreiben" durch infinitesimale kleine Einheiten ist übrigens meiner Meinung nach schwieriger als Rezepte der Regelungstechnik anzuwenden. Wie die Rezepte bewiesen werden ist wieder eine andere Sache, welche aber unwichtig für den Ingenieur sind. Wenn aber erst gar keine Differentialgleichung vorliegt, ist die ganze Theorie die Regelungstechnik umsonst. Deshalb: Physik ist genauso wichtig.

Ansonsten kann ich nur jedem empfehlen sich mal selbst mit den Dingen auch außerhalb (!) des Studiums zu befassen. Ich habe gedacht, schon alles zu wissen und bin doch beim Schreiben dieses Artikels auf die ein oder andere Sache gestoßen, die ich nicht gleich zu 100% nachvollziehen konnte.

Mit diesen Worten beende ich den Artikel nun. Ich freue mich wie immer auf Kritik. Auch Fragen und Anregungen sind nicht verkehrt.

You can’t perform that action at this time.