DAY BY DAY zu RST 3MB -- Regelungs- und Steuerungstechnik für 3-MB und 3-EMo
(EN google-translate)
(PL google-translate)
Online-Unterricht ab 14.12.:
Die Online-Zeiten werden kurz gehalten und dort vorwiegend Aufgaben, bzw. Projektthemen ausgegeben und besprochen, die selbsttätig bearbeitet werden sollen. Der hierzu verwendete BBB-Link und ein Reservelink wurden Ihnen als E-Mail über Moodle zugesendet.
|
Mittwoch, 18.01.23 und Freitag 20.01.23 finden in Präsenz statt und dienen als E-Test-Prüfung, bzw. der Projektpräsentation.
Übersicht
|
Überblick der zu behandelnden Themen
|
Chronologisches Verzeichnis der im Verlauf des Semesters behandelten Themen
#V1 Mi 28.09.2022 VORLESUNG und ÜBUNGEN
Wie ist die Regelungstechnik entstanden?
Norbert Wiener - Anti-Aircraft Gun ... mit Filmmaterial -- youtubeWorum ging es in dem vorangehenden Film?
Grey Walter's tortoisesWeitere interessante Videos zu historischen Themen im Umfeld der Regelungstechnik, oder zur Erläuterung wichtiger Begriffe, die Sie bei Gelegenheit für sich selbst anschauen können:
Norbert Wiener Wikipedia
Norbert Wiener - Men, Machines, and the World About Them (1950), siehe 18'20'' -- youtube
Unterschied - Regelung Steuerung erklärt anhand von zwei Beispielen
Autopilot -- youtube
Antiblockiersystem beim Auto (ABS), ab 4'33'' -- youtube
Zentrales Element in der Regelungstechnik ist die (negative) Rückkopplung
Eine negative Rückkopplung und damit ein Regelkreis lässt sich gut am Beispiel eines Fliehkraftreglers erklären:
Echte Dampfmaschine im Betrieb mit Fliehkraftregler -- youtube
Wo überall in der technischen Welt sind Ihnen Regelkreise aufgefallen?
Wo überall in nicht-technischen Bereichen tauchen Regelkreise auf?
Einführung in die Grundbegriffe der Regelungstechnik
62_Regelungssysteme/02_HeizregelkreisAnwendungsbeispiele
Elektrokutsche, Personenkutschfahrt auf kramann.info15_Einachser -- Einachser auf kramann.info
Hinweise zum Labor am Donnerstag 29.09. in IWZ140 FÜR ALLE GEMEINSAM von 12:30 bis 15:45Uhr
Beschreibung des verwendeten Systems
siehe: kramann.info/05_esp32AVWarum wurde für jede Zweiergruppe ein Bausatz vorbereitet?
Warum ist ein solch komplexes System Gegenstand der Laborübungen?
Welche Bedeutung kommt der Simulationstechnik im Zusammenhang mit regelungstechnischen Aufgaben zu?
Beispiel menschliches Gehen:
Übersicht der zu behandelnden Themen
|
#L1 Do 29.09.2022 LABOR
siehe: Anleitung zum Bau des esp32AV#V2 Mi 05.10.2022 VORLESUNG und ÜBUNGEN
|
1. Wiederholung: Grundbegriffe der Regelungstechnik
Elektrokutsche, Personenkutschfahrt auf kramann.info15_Einachser -- Einachser auf kramann.info
62_Regelungssysteme/02_Heizregelkreis
2. Grundlagen von Scilab
37_Scilab3. Einführung Simulationstechnik
50_Simulationstechnik/01_Systemtheorie50_Simulationstechnik/01_Systemtheorie/02_Modell
4. Seerosenteich
50_Simulationstechnik/01_Systemtheorie/04_Seerosen5. Numerische Integration nach Euler
50_Simulationstechnik/01_Systemtheorie/05_Eulerintegration50_Simulationstechnik/01_Systemtheorie
6. PT1-Übertragungsglied
62_Regelungssysteme/03_Verzoegerungsglieder62_Regelungssysteme/04_Laplace/02_PT1
7. Fragen zum Labor?
Im Unterricht entstanden:
Bild 0-1: Geschlossene Lösung "Seerosenteich".
//Geschlossene Lösung: tt=0:0.1:2; A = exp(log(2)*tt); plot(tt,A); //Numerische Lösung: A=1; dt=0.1; Aerg = [A]; for t=dt:dt:2 Aneu = log(2)*A*dt + A; A = Aneu; Aerg = [Aerg,A]; //Sammeln der Ergebnisse end plot(tt,Aerg,'re-');
Code 0-1: Vergleich: geschlossene und numerische Lösung zum Seerosenteich
Bild 0-2: Plot zum Skript oben.
#L2 Do 06.10.2022 LABOR
... wie gehabt für alle gemeinsam verbindlich.
#V3 Mi 12.10.2022 VORLESUNG und ÜBUNGEN
Übung 1 mit Scilab
|
Übung 2 mit Scilab
Unter folgendem Link finden Sie ein Beispiel, wo Achsenbeschriftungen in einem Plot hinzugefügt werden. Analysieren Sie das Beispiel und fügen Sie danach dem Skript "Vergleich: geschlossene und numerische Lösung zum Seerosenteich" ebenfalls sinnvolle Achsenbeschriftungen hinzu.
Verwendung einer Legende: 62_Regelungssysteme/13_Analyse/02_Nichtlinear
clear; //Geschlossene Lösung: dt=0.001; tt=0:dt:2; A = exp(log(2)*tt); //plot(tt,A); //Numerische Lösung: A=1; Aerg = [A]; for t=dt:dt:2 Aneu = log(2)*A*dt + A; A = Aneu; Aerg = [Aerg,A]; //Sammeln der Ergebnisse end Ageschlossen = exp(log(2)*tt); plot(tt,Aerg,'re',tt,Ageschlossen,'gr--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/Woche'; a.y_label.text = 'A/m^2'; a.title.text = 'Flächenwachstum eines Seerosenteiches'; hl=legend(['numerisch';'geschlossen'],a=1); size(tt) size(Aerg)
Code 0-2: Musterlösung
Übung 3 mit Scilab
Die Methode inv(...) ermöglicht es Matrizen zu invertieren und so lineare Gleichungssysteme zu lösen.
Beispielsweise kann folgendes LGS wie folgt mit Scilab gelöst werden:
$ \left[\begin{array}{cc}19 \\ 43\end{array}\right] = \left[\begin{array}{cc}1 & 2 \\ 3 & 4\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $
Formel 0-1: Lösung wäre: x=5 & y=7.
A=[1,2;3,4]; b=[19;43]; xy = inv(A)*b
Code 0-3: Lösung mit Hilfe von Scilab.
Lösen Sie folgende LGS mit Hilfe von Scilab:
$ \left[\begin{array}{cc}-26 \\ -12\end{array}\right] = \left[\begin{array}{cc}-1 & 2 \\ 3 & 4\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $
Formel 0-2: LGS2
$ \left[\begin{array}{cc}26 \\ 62 \\ 98\end{array}\right] = \left[\begin{array}{cc}1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $
Formel 0-3: LGS2
Übung 4 mit Scilab
In nachfolgendem Kapitel wird statt der Euler-Integration ein vorgefertigter Integrator "ode" verwendet. Schaffen Sie es, den "Seerosenteich" mit dem "ode" numerisch zu integrieren?
|
zu 3. und 4.: 54_Kinetik/01_Newton/02_Daempfung
zu 2. und 3.: 01_Newton/04_ODE
clear; dt=0.001; tmax = 10; tt=0:dt:tmax; // m*x.. = -C*x // // <=> // x. = v // v. = (-C/m)*x //Numerische Lösung: C=1; // [N/m] m=1; // [kg] x=1; v=0; Xerg = [x]; Verg = [v]; for t=dt:dt:tmax // "Neuer Wert = Alter Wert + aktuelle Steigung * dt" xneu = x + v * dt; vneu = v + (-C/m)*x * dt; x = xneu; v = vneu; Xerg = [Xerg,x]; //Sammeln der Ergebnisse Verg = [Verg,v]; //Sammeln der Ergebnisse end plot(tt,Xerg,'re',tt,Verg,'gr--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1); size(tt) size(Xerg)
Code 0-4: Simulation des Feder-Masse-Schwingers
Bild 0-3: Plot zu obigem Skript.
clear; dt=0.001; tmax = 10; tt=0:dt:tmax; // m*x.. = -C*x // // <=> // x. = v // v. = (-C/m)*x + (-D/m)*v //Numerische Lösung: C=1; // [N/m] D=1.0; // [Ns/m] m=1; // [kg] x=1; v=0; Xerg = [x]; Verg = [v]; for t=dt:dt:tmax // "Neuer Wert = Alter Wert + aktuelle Steigung * dt" xneu = x + v * dt; vneu = v + ((-C/m)*x + (-D/m)*v) * dt; x = xneu; v = vneu; Xerg = [Xerg,x]; //Sammeln der Ergebnisse Verg = [Verg,v]; //Sammeln der Ergebnisse end plot(tt,Xerg,'re',tt,Verg,'gr--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Dämpfer-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1); size(tt) size(Xerg)
Code 0-5: Lineares Dämpfungselement ergänzt.
#L3 Do 13.10.2022 LABOR
|
Lösen Sie bitte Ihre Box auf, wenn das Fahrzeug fertig ist: Rück-Einsortieren der Bauteile.
#V4 Mi 19.10.2022 VORLESUNG und ÜBUNGEN
Beginn ab jetzt immer bis Semesterende um 09:00Uhr! (bis 11)
Themen
|
betr. Optimierung, modifiziertes Gradientenverfahren: 50_Simulationstechnik/06_Optimierung/03_ModifizierteG
m = 1.0; C = 1.0; D = 0.1; function f = rechteSeite(t,y) x = y(1); v = y(2); f(1) = v; f(2) = (-C/m)*x + (-D/m)*v; endfunction t = 0:0.01:10; y0 = [1,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-6: Lineare Feder-Masse-Schwinger mit Dämpfung, simuliert mit dem ode-Integrator.
m = 1.0; C = 1.0; D = 1.0; P = 5.0; xsoll = 3; //Sollwert für die Auslenkung vsoll = 0; //Sollwert für die Geschwindigkeit function f = rechteSeite(t,y) x = y(1); v = y(2); f(1) = v; Fregler = P*(xsoll - x) + D*(vsoll - v); f(2) = (-C/m)*x + (1/m)*Fregler; endfunction t = 0:0.01:10; y0 = [1,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-7: Lineare Feder-Masse-Schwinger mit Dämpfung und PD-Regler.
m = 1.0; C = 1.0; D = 1.0; //liefert FEHLER von 7.6701286 P = 5.0; //D = 10.0; // liefert FEHLER von 3.9120228 //P = 50.0; xsoll = 0; //Sollwert für die Auslenkung vsoll = 0; //Sollwert für die Geschwindigkeit function f = rechteSeite(t,y) x = y(1); v = y(2); f(1) = v; Fregler = P*(xsoll - x) + D*(vsoll - v); f(2) = (-C/m)*x + (1/m)*Fregler; endfunction t = 0:0.01:10; y0 = [1,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); FEHLER = sqrt(y(1,:)*(y(1,:)')) //Skalaprodukt des Vektors aller Auslenkungswerte mit sich selbst, davon die Wurzel (Fehlerquadrat) plot(t,y(1,:)',t,y(2,:)');
Code 0-8: Hinarbeiten auf eine automatische Optimierung: Festlegen einer s.g. Fehlerfunktion. Hier: Summe der Quadrate der Auslenkung als Kriterium, wie schlecht der Regler arbeitet.
Optimierungsalgorithmus
(Modifiziertes Gradientenverfahren)
Man hat einen Parametersatz mit den Parametern P0...Pn-1.
|
//Geschlossene Lösung: tt=0:0.1:2; AG = exp(log(2)*tt); plot(tt,AG); A0=1; dt=0.1; function f = rechteSeite(t,y) A = y(1); f(1) = log(2)*A; endfunction t = 0:dt:2; y0 = A0; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)','re--');
Code 0-9: Übung: Seerosenteich mit ode integrieren.
#L4 Do 20.10.2022 LABOR
Dieser Termin findet nicht statt!
...weil bereits alle weitestgehend fertig geworden sind.
#V5 Mi 26.10.2022 VORLESUNG und ÜBUNGEN
Themen
|
1. Theorie zum PID-Regler
Integral- (I) und Differential-Anteil der Regelabweichung stehen nicht einfach zur Verfügung, sondern müssen i.d.R. numerisch bestimmt werden.
Die zeitliche Änderung der Regelabweichung (D-Anteil), ergibt sich dabei aus der Differenz von e zwischen zwei Zeitpunkten, geteilt durch die Zeitschrittweite Delta-t:
$ e_D = \frac {e_\left(i+1\right) - e_\left(i\right)}{ \Delta t } $
Formel 0-4: Numerische Bestimmung des D-Anteils der Regelabweichung.
Der Integrative Anteil ergibt sich als Aufsummation der Regelabweichung über die Zeit:
$ e_I = \sum e_\left(i+1\right) \cdot \Delta t $
Formel 0-5: Numerische Bestimmung des I-Anteils der Regelabweichung.
Beim I-Anteil summieren sich auch verbleibende sehr kleine Regelabweichungen über die Zeit auf, so, dass auch eine noch kleine verbleibende Restabweichung ausgeregelt werden kann. Beim bloßen P-Regler hingegen ist dies nicht möglich. Zudem "beruhigt" der I-Anteil den Regelvorgang.
Der D-Anteil reagiert schon auf Tendenzen. Einem plötzlichen Ausbrechen kann damit schnell entgegengewirkt werden.
Werden D- bzw. I-Anteil zu hoch verstärkt, kann dies aber auch zu Instabilitäten des Reglers führen.
2. Implementierung eines PID-Reglers beim linearen Schwinger mit Scilab im Zeitbereich
Um die numerische Berechnung des I- und D-Anteils für einen PID-Regler durchführen zu können, gehen wir noch einmal zurück auf die Simulation des linearen Schwingers mittels Euler-Verfahren. Ausgangskunkt ist "Code 1-4: Simulation des Feder-Masse-Schwingers ", s.o. Die Umsetzung erfolgt "live" im Unterricht.
clear; dt=0.001; tmax = 10; tt=0:dt:tmax; // m*x.. = -C*x + Freg // // <=> // x. = v // v. = (-C/m)*x + Freg/m //Numerische Lösung: C=1; // [N/m] m=1; // [kg] x=1; v=0; Xerg = [x]; Verg = [v]; e_alt = 0; // alte Regeldifferenz for t=dt:dt:tmax x_soll = 0.2; P = 10.0; e = x_soll - x; eD = (e - e_alt)/dt; D = 1.0; Freg = P*e + D*eD; // "Neuer Wert = Alter Wert + aktuelle Steigung * dt" xneu = x + v * dt; vneu = v + ( (-C/m)*x + Freg/m ) * dt; x = xneu; v = vneu; Xerg = [Xerg,x]; //Sammeln der Ergebnisse Verg = [Verg,v]; //Sammeln der Ergebnisse e_alt = e; end plot(tt,Xerg,'re',tt,Verg,'gr--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1); size(tt) size(Xerg)
Code 0-10: PD-Regler beim Linearen Schwinger.
Vollständiger PID-Regler, numerisch umgesetzt:
clear; dt=0.001; tmax = 30; tt=0:dt:tmax; // m*x.. = -C*x + Freg // // <=> // x. = v // v. = (-C/m)*x + Freg/m //Numerische Lösung: C=1; // [N/m] m=1; // [kg] x=1; v=0; Xerg = [x]; Verg = [v]; e_alt = 0; // alte Regeldifferenz e_summe = 0; //aufsummierte Regelabweichung, um die numerische Integration von e zu bilden for t=dt:dt:tmax x_soll = 0.2; P = 10.0; e = x_soll - x; eD = (e - e_alt)/dt; D = 1.0; eI = e_summe * dt; I = 5.0; Freg = P*e + I*eI + D*eD; //vollständiger PID-Regler // "Neuer Wert = Alter Wert + aktuelle Steigung * dt" xneu = x + v * dt; vneu = v + ( (-C/m)*x + Freg/m ) * dt; x = xneu; v = vneu; Xerg = [Xerg,x]; //Sammeln der Ergebnisse Verg = [Verg,v]; //Sammeln der Ergebnisse e_alt = e; e_summe = e_summe + e; //Aufsummieren der Regelabweichung end plot(tt,Xerg,'re',tt,Verg,'gr--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1); size(tt) size(Xerg)
Code 0-11: PID-Regler beim Linearen Schwinger.
Bild 0-4: PID-Regler beim Linearen Schwinger, plot.
3. Automatische Optimierung des Reglers mittels modifiziertem Gradientenverfahren
Die Faktoren, mit denen P-, I- und D-Anteil verstärkt werden, können kaum noch durch bloßes Probieren günstig eingestellt werden. Ein Optimierungsverfahren kann dies besser bewerkstelligen. Mehr als Ausblick soll auch dies live implementiert werden.
4. Analyse des P-Reglers beim esp32AV
Grundlage soll eine verbesserte Version für die P-Reglung sein: CaptureJavaRT2022_012regler_MODULAR005_OPT
Im Unterricht hier sollen die nötigen Programmiergrundlagen vermittelt werden, um selber D- und I-Anteil am Donnerstag implementieren zu können.
5. Vorbesprechung zur Implementierung und Optimierung eines PID-Reglers beim esp32AV am morgigen Donnerstag
|
#L5 Do 27.10.2022 LABOR
An diesem Termin findet eine regelungstechnische Übung statt:
Weiterentwicklung der Lenkregelung des esp32AV
Verwenden Sie wie gestern besprochen als Ausgangspunkt PC-seitig den folgenden Sketch:
Arbeitsschritte in dieser Übung:
|
Hinweise:
|
|
//Herausgezogene wichtige Parameter des Systems boolean TAUSCHE_ANTRIEB_LINKS_RECHTS = false; float VORTRIEB = 0.7; float PROPORTIONALE_VERSTAERKUNG = 0.58; float ASYMMETRIE = 1.01; // 1.0==voll symmetrisch, >1, LINKS STAERKER, <1 RECHTS STAERKER
Code 0-12: Anzupassende Parameter (Auszug des Processing-Sketches)
|
Musterlösung PID-Regelung: siehe unten bei esp32AV/Lenkregelung.
#V6 Mi 02.11.2022 VORLESUNG und ÜBUNGEN
Themen
|
zu Thema 2: Methoden zum Einstellen von Regelparametern (Preview)
62_Regelungssysteme/08_Polvorgabe62_Regelungssysteme/07_Einstellregeln
zu Thema 3: Eigenwerte
62_Regelungssysteme/04_Laplace/01_EigenwerteSimulationsgleichung in Matrixschreibweise für den linearen Masseschwinger ohne Dämpfung in Scilab:
function f = rechteSeite(t,y) A = [ 0 , 1 ; -1 , 0 ]; f = A*y; endfunction t = 0:0.01:10; y0 = [1;0]; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-13: Simulationsgleichung in Matrixschreibweise
m = 1; // kg C = 1; // N/m D = 1; // Ns/m function f = rechteSeite(t,y) A = [ 0 , 1 ; -C/m , -D/m ]; f = A*y; endfunction t = 0:0.01:10; y0 = [1;0]; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-14: Simulationsgleichung parametrisiert und mit Dämpfung in Matrixschreibweise
Bild 0-5: Plot zu obigem Skript.
#L6 Do 03.11.2022 LABOR
Dieser Termin findet nicht statt!
#V7 Mi 09.11.2022 VORLESUNG und ÜBUNGEN
Themen
|
zu Thema 2: Laplace Transformation
62_Regelungssysteme/03_Verzoegerungsglieder62_Regelungssysteme/04_Laplace
zu Thema 3: Simulation im Laplace-Bereich
62_Regelungssysteme/01_day_by_day//s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[1],[1+2*s+s^2]); t=[0:0.01:10]; u=ones(1,1001); y=csim(u,t,G); //plot2d(t,y); //plzr(G); // G(s) = 1 / (s^2 + 2s + 1) // x/u = 1 / (s^2 + 2s + 1) // x*(s^2 + 2s + 1) = u // x.. + 2x. + x = u // x.. = -x -2x. + u // x. = v // v. = -x -2v + u A = [0,1 ; -1, -2]; function f = rechteSeite(t,y) u = 1; f = A*y + [0;1]*u; endfunction t = 0:0.01:10; y0 = [0;0]; t0 = 0; y2 = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)','gre',t,y2(1,:)','blu--');
Code 0-15: Simuilation des gleichen Systems erst mit csim (Laplace-Transformierte), dann mit ode.
Bild 0-6: Plot zu obigem Skript.
#V8 Mi 16.11.2022 VORLESUNG und ÜBUNGEN
Durch einige Übungen soll Sicherheit im Umgang mit der Laplace-Transformation erlangt werden. Es geht hier weniger um ein tiefgreifendes Verständnis, als um die Gewöhnung an das entsprechende Schema.
Eigenwerte können auch über Nullstellen des Nenner einer Übertragungsfunktion bestimmt werden. Nutzen Sie diese Möglichkeit bei der vorangehenden Übung (Formel 0-1 bis 0-4).
Einige Übertragungsfunktionen im Zeitbereich als Grundlage für Übungen
$ \ddot x + 3 x = 4 u $
Formel 0-6: a\right)
$ \dot x - x = u $
Formel 0-7: b\right)
$ 3 \ddot x + \dot x = u $
Formel 0-8: c\right)
$ \ddot x + x = u $
Formel 0-9: d\right)
$ \dot x + 2 x = u $
Formel 0-10: e\right)
$ \dot x - 3 x = u $
Formel 0-11: f\right)
$ \dot x + 5 x = 5 u $
Formel 0-12: g\right)
|
Notieren Sie sich die Aufgaben, bei denen Schwierigkeiten auftauchen, damit diese anschließend gemeinsam besprochen werden können.
auch besprochen:
62_Regelungssysteme/04_Laplace/03_PRegler -- Regeln für das rückgekoppelte System im Laplace-Bereich (s.u. dort)
//s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[1],[3*s^2+s]); t=[0:0.01:10]; u=ones(1,1001); y=csim(u,t,G); //plot2d(t,y); //plzr(G); A = [0,1 ; 0, -(1/3)]; function f = rechteSeite(t,y) u = 1; f = A*y + [0;(1/3)]*u; endfunction t = 0:0.01:10; y0 = [0;0]; t0 = 0; y2 = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)','gre',t,y2(1,:)','blu--');
Code 0-16: Ergebnis zur Aufgabe 5.
--- 2. Semesterhälfte ---
#V9 Mi 23.11.2022 VORLESUNG und ÜBUNGEN
Die Auslegungsmethoden nach Ziegler und Nichols
62_Regelungssysteme/07_EinstellregelnGemeinsam: Anwendung der Methode 2 auf das Beispiel csim1.sce, siehe Code 0-15 weiter oben.
Ergänzende Inhalte
Das numerische Integrationsverfahren nach Runge und Kutta -- 30_Informatik3/16_Nuetzliches/03_RungeKuttaBeispielumsetzung des zweiten Verfahrens nach Ziegler und Nichols mit Scilab
//s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[1],[1+2*s+s^2]); //PID-Regler nach Ziegler und Nichols Methode 2 bilden: K = 12.8; //(16.8) TN = 1.4; //(0.4) TV = 0.1; R = syslin('c',[K*TN*s + K + K*TN*TV*s^2],[TN*s]); H = R*G; Q = H / (1 + H); t=[0:0.01:10]; w=ones(1,1001); //Sollwert w ist Input für Gesamtübertragungsverhalten y=csim(u,t,Q); //Gesamtübertragungsfunktion des geschlossenen Systems simulieren. //plot2d(t,y); //plzr(G); plot(t,y(1,:)','blk');
Code 0-17: Beispielumsetzung des zweiten Verfahrens nach Ziegler und Nichols mit Scilab
Bild 0-7: Plot nach Einbau des PID-Reglers.
Übung:
//s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[1],[1+1.7*s+s^2]); t=[0:0.01:10]; u=ones(1,1001); y=csim(u,t,G); //plot2d(t,y); //plzr(G); plot(t,y(1,:)','blk');
Code 0-18: Variante, Entwerfen Sie einen passenden PI-Regler.
#V10 Mi 30.11.2022 VORLESUNG und ÜBUNGEN
BBB testen! -- wg. Schließzeiten
Themen
|
1. Auslegung eines Regelkreises mit der Methode 1 nach Ziegler und Nichols
62_Regelungssysteme/07_Einstellregeln/02_Methode162_Regelungssysteme/07_Einstellregeln/01_Totzeit
2. Auslegung eines Regelkreises mittels Polvorgabe
62_Regelungssysteme/08_PolvorgabeBild 0-8: Schema bei Polvorgabe anhand eines Beispiels: m*x.. = -Cx + FA, FA ist eine Antriebskraft, mit der das System beruhigt werden soll und entspricht der Stellgröße u. Somit gilt dann: u=FA=-r1*x-r2*v, oder u=-[r1 r2] * [x v]'.
Bild 0-9: Studentische Lösung der Übung: m*x.. = -D*v, EWwunsch=-1+i und -1-i, D=1Ns/m
3. Weitere Übungen zu Laplace
Übung 1 -- Wandeln Sie jeweils um in den Zeit- bzw. Laplacebereich
1a)
$ \ddot x + 3 \dot x + x = 4 u $
Formel 0-13: Transformieren Sie die lineare Differentialgleichung in den Laplacebereich.
1b)
$ X s^3 + X s - 4 U s^2 = U $
Formel 0-14: Transformieren Sie in den Zeitbereich.
1c)
$ G\left(s\right) = \frac {s^2+1}{s^3+s} $
Formel 0-15: Transformieren Sie in den Zeitbereich. Eingang sei U & Ausgang sei X.
1d)
$ G\left(s\right) = \frac {s^2+1}{s^3+s} $
Formel 0-16: Transformieren Sie in den Zeitbereich. Eingang sei U & Ausgang sei X.
1e) Nachfolgend sind die Laplace-Transformierten einer Regelstrecke G(s) und eines Reglers R(s) dargestellt.
|
$ G\left(s\right) = \frac {1}{s^2+5s} $
Formel 0-17: Regelstrecke
$ R\left(s\right) = \frac {1}{s} + 5 + s $
Formel 0-18: Regler
Übung 2 -- Umsetzung regelungstechnischer Systeme mit Scilab
Nehmen Sie sich erneut das System von 1e) vor.
2a)
|
2b)
|
2c)
Verdeutlichen Sie sich durch Zeichnen eines Blockschaltbildes:
|
#V11 Mi 07.12.2022 Probe-E-Test Regel- und Steuerungstechnik 3-MB/3-EMo, Beginn: 09:00Uhr.
--- Schließung THB ---
#V12 Mi 14.12.2022 ONLINE VORLESUNG und ÜBUNGEN
srt_mb3_uebung1.pdf -- Übung 1, zu lösen bis 21.12.V#13 Mi 21.12.2022 ONLINE VORLESUNG und ÜBUNGEN
Lösungen zum ersten Übungsblatt srt_mb3_uebung1.pdf:
Ü1
a) A=[0,1;-1,0], EW: +/- i.
b)
$ G\left(s\right)= \frac {1}{2s^2+2} $
Formel 0-19: Übertragungsfunktion des Systems
$ R\left(s\right)=K $
Formel 0-20: Regler
$ H\left(s\right)= \frac {2}{2s^2+2} $
Formel 0-21: Übertragungsfunktion des offenen Regelkreises
$ Q\left(s\right)= \frac {1}{s^2+2} $
Formel 0-22: Übertragungsfunktion des geschlossenen Regelkreises
$ lambda=+/- i \sqrt 2 $
Formel 0-23: EW des geschlossenen Regelkreises
c) Lösung mit Scilab: R=ppol([0,1;-1,0],[0;0.5],[-2+%i,-2-%i]), liefert: r1=8 und r2=8.
$ lambda=- \frac {1}{4} r_2 +/- i \sqrt \left(- \frac {1}{16} r_2^2+ \frac {1}{2}r_1+1\right) $
Formel 0-24: Ergebnis von Hand nach Einsetzen in p-q-Formel
Ü2
$ G\left(s\right)= \frac {1}{s^2+s} $
Formel 0-25: Laplacetransformierte zu 1a\right)
$ G\left(s\right)= \frac {s+1}{s^3+s^2+1} $
Formel 0-26: Laplacetransformierte zu 1b\right)
$ G\left(s\right)= \frac {s^2+s+1}{s^3} $
Formel 0-27: Laplacetransformierte zu 1c\right)
REGEL: Ist der Zählergrad einer Übertragungsfunktion größer als der Nenner, so ist das System instabil.
|
-1.4655712 + 0.i 0.2327856 + 0.792552i 0.2327856 - 0.792552i
Code 0-19: Eigenwerte für b), System ist instabil, also auch nicht technisch stabil.
|
3) ...man muss jeweils im Nenner den Zähler dazu addieren:
$ G\left(s\right)= \frac {1}{s^2+s+1} $
Formel 0-28: Laplacetransformierte des geschlossenen Regelkreises zu 1a\right)
$ G\left(s\right)= \frac {s+1}{s^3+s^2+s+2} $
Formel 0-29: Laplacetransformierte zu geschlossenen Regelkreises 1b\right)
$ G\left(s\right)= \frac {s^2+s+1}{s^3+s^2+s+1} $
Formel 0-30: Laplacetransformierte zu geschlossenen Regelkreises 1c\right)
$ G\left(s\right)=e^\left(-0.1s\right) \cdot \frac {1}{s^2+s+0.5} $
Formel 0-31: Formel für zweites Übungsblatt Ü4.
Neue Übungsaufgaben!:
srt_mb3_uebung2.pdf -- Übung 2, zu lösen bis 11.01.2023
V#14 Mi 11.01.2023 ONLINE VORLESUNG und ÜBUNGEN
Musterlösungen zu den Übungen vom 21.12. (srt_mb3_uebung2.pdf)
Übung 3a)
clear; m = 2.0; C = 2.0; D = 0.5; function f = rechteSeite(t,y) x = y(1); v = y(2); F=10; f(1) = v; f(2) = (-C/m)*x + (-D/m)*v + (1/m)*F; endfunction t = 0:0.01:10; y0 = [0,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),'gr',t,y(2,:),'re'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Schwinger'; hl=legend(['x/m'],a=1);
Code 0-20: Lösung zu Übung 3a)
Übung 3b)
clear; m = 2.0; C = 2.0; D = 0.5; //s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[1],[m*s^2+D*s+C]); t=[0:0.01:10]; F=10*ones(1,1001); y=csim(F,t,G); plot(t,y(1,:),'blu--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x und v'; a.title.text = 'Linearer Feder-Masse-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1);
Code 0-21: Lösung zu Übung 3b)
Bild 0-10: Plot zu Übung 3a) und 3b) ineinander liegend, b) gestrichelt.
Übung 3c)
clear; dt=0.01; tmax = 10; tt=0:dt:tmax; m=2; // [kg] C=2; // [N/m] D=0.5; // [Ns/m] x=0; v=0; Xerg = [x]; Verg = [v]; for t=dt:dt:tmax F=10.0; // "Neuer Wert = Alter Wert + aktuelle Steigung * dt" xneu = x + v * dt; vneu = v + ((-C/m)*x + (-D/m)*v + (1/m)*F) * dt; x = xneu; v = vneu; Xerg = [Xerg,x]; //Sammeln der Ergebnisse Verg = [Verg,v]; //Sammeln der Ergebnisse end plot(tt,Xerg,'blu--',tt,Verg,'blk--'); //siehe help axes_properties a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x/m'; a.title.text = 'Linearer Feder-Masse-Dämpfer-Schwinger'; hl=legend(['x/m';'v/m*s^-1'],a=1);
Code 0-22: Lösung zu Übung 3c)
Bild 0-11: Plot zu Übung 3a) und 3c) ineinander liegend, c) gestrichelt.
Übung 3d)
clear; m = 2.0; C = 2.0; D = 0.5; function f = rechteSeite(t,y) f(1) = sin(t); endfunction t = 0:0.01:6; y0 = 0; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),'gr'); a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x'; a.title.text = 'dx/dt=sin(t)'; hl=legend(['x'],a=1);
Code 0-23: Lösung zu Übung 3d)
Bild 0-12: Plot zu Übung 3d)
Variante zu 3d) mit x0=-1:
clear; m = 2.0; C = 2.0; D = 0.5; function f = rechteSeite(t,y) f(1) = sin(t); endfunction t = 0:0.01:6; y0 = -1; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),'gr',t,sin(t),'re'); a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'x'; a.title.text = 'dx/dt=sin(t)'; hl=legend(['x','sin(t)'],a=1);
Code 0-24: Variante zu Lösung zu Übung 3d) mit x0=-1
Bild 0-13: Plot zur Variante zu Übung 3d) mit x0=-1.
Übung 4a)
Die Totzeit beträgt hier 0,1s. Ansonsten handelt es sich um ein PT2 Übertragungsglied.
clear(); xtot=0; function f=modell(y,t,dt) x=y(1,1); v=y(2,1); Kkrit = 9.7; xsoll = 1.0; //e = xsoll - x; e = xsoll - xtot; u=Kkrit*e; f(1,1)=v; f(2,1)=-0.5*x-v+u; //angepasst!!! endfunction function yneu=ruku(y,t,dt) k1=modell(y,t,dt); k2=modell(y+0.5.*dt.*k1,t+0.5*dt); k3=modell(y+0.5.*dt.*k2,t+0.5*dt); k4=modell(y+dt.*k3,t+dt); yneu=y+dt.*(k1+2.*k2+2.*k3+k4)./6; endfunction tmax = 99.0; dt = 0.01; schritte = ceil(tmax/dt); yalt = [0,0]'; ysim = yalt; t=0.0; tt=t; Ttot = 0.1; //angepasst!!! anztot = round(Ttot/dt) xtotarr = zeros(anztot,1); for i=1:1:schritte yneu=ruku(yalt,t,dt); yalt=yneu; ysim=[ysim,yalt]; tt =[tt,t]; t=t+dt; xtot = xtotarr(modulo((i-1),anztot)+1); xtotarr(modulo((i-1),anztot)+1)=yneu(1); end plot(tt,ysim(1,:))
Code 0-25: Angepasstes Scilab-Skript.
Es ergibt sich durch Probieren: Kkrit=9.7 und damit Tkrit=99s/49=2.02s Dementsprechend bekommt man als Parameter für die verschiedenen Regler:
P-Regler: K=0.5*Kkrit=4.85 PI-Regler: K=0.45*Kkrit=4.365 und TN=0.85*Tkrit=1.717 PID-Regler: K=0.6*Kkrit=5.82 und TN=0.5 *Tkrit=1.01 und TV=0.12*Tkrit=0.2424
Code 0-26: Parameter für die verschiedenen Regler
Übung 4b)
Achtung Fehler in Aufgabenstellung. Statt EW -1+0.5i und -2-0.5i geht entweder -1+0.5i und -1-0.5i oder -2+0.5i und -2-0.5i.
|
$ \ddot x=-\dot x - \frac {1}{2}x +u $
Formel 0-32: DGL mit Eingang u zur Übertragungsfunktion in der Aufgabe.
$ A=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] $
Formel 0-33: Zugehörige Systemmatrix.
$ B=\left[\begin{array}{cc}0 \\ 1\end{array}\right] $
Formel 0-34: Zugehörige Eingriffsmatrix.
R=ppol([0,1;-0.5,-1],[0;1],[-2+0.5*%i,-2-0.5*%i])
Code 0-27: Lösung mit Scilab, liefert R=[3.75,3]
R=ppol([0,1;-0.5,-1],[0;1],[-1+0.5*%i,-1-0.5*%i])
Code 0-28: Lösung mit Scilab, Variante, liefert R=[0.75,1]
|
$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right]+\left[\begin{array}{cc}0 \\ 1\end{array}\right] \cdot u $
Formel 0-35: Dynamische Gleichung in Matrixform.
$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right]-\left[\begin{array}{cc}0 \\ 1\end{array}\right] \cdot \left[\begin{array}{cc}r1 & r2\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right] $
Formel 0-36: Dynamische Gleichung in Matrixform mit eingebautem Zus \tan dsregler u=-Ry.
Bitte [r1 & r2] als [r1,r2] lesen (Formatierungsfehler).
$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5-r1 & -1-r2\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right] $
Formel 0-37: Dynamische Gleichung in Matrixform
...mit eingebautem Zustandsregler
-BR mit A zu A* zusammengefasst.
det|A* - lambda*E|=0
Code 0-29: ...gilt es jetzt zu lösen.
Es ergibt sich:
$ lambda12=- \frac {1}{2}- \frac {1}{2}r_2+/-i \cdot \sqrt \left( \frac {1}{2}+r1- \frac {1}{4}\left(1+r_2\right)^2\right) $
Formel 0-38: Anwendung der p-q-Formel.
...liefert:
-0.5-0.5r2=-1 => r2=1 in Wurzel eingesetzt ergibt: 1/4 = 1/2 +r1 -1 => r1=3/4
Code 0-30: Bestimmung der Werte von r1 und r2.
Übung 4c)
|