Regelungs- und Steuerungs- und Simulationstechnik 4EIT 4MT WING im Sommersemester 2023
(EN google-translate)
(PL google-translate)
|
kramann.info -- Angaben zu Veranstaltungszeiten und Räumen dieser Lehrveranstaltung
62_Regelungssysteme
54_Kinetik
50_Simulationstechnik
37_Scilab
95_ETEST -- Hinweise zu der elektronischen Prüfungsform "E-Test"
#1 Do 23.03.2023
Motivation
Wir sind umgeben von komplexen dynamischen Systemen
12_Technologie/03_Lottka_Volterra -- Lottka-Volterra-Modell (Räuber/Beute)12_Technologie/10_Start2019/04_Anthropozaen
Steuerungen
|
Geregelte technische Geräte und Komponenten
|
Was bedeutet Regelung im Vergleich zu Steuerung? -- Beispiele aus der Technik
esp32AV -- Linienverfolgung mit PID-ReglerPersonenkutschfahrt
15_Einachser
Autonomes Fahren Level 1 bis 5
Autonomes Fahren: Die fünf LevelRegelkreise in lebenden Systemen
|
Warum wird ein CAE-Tool (Computer added engineering) eingesetzt (Scilab)?
...und brandneu: Was bringt die Kombination mit ChatGPT?
Aufgabe für ChatGPT: Die Differentialgleichung dx/dt=x soll numerisch mit Hilfe des Euler-Integrationsverfahrens integriert werden. Es gelte: x(t=0s)=1. Es sollen 10 Integrationsschritte in einer Schrittweite von 0,1s durchgeführt werden. Damit wäre die Integrationszeit nach dem 10. Schritt bei 1,0 Sekunden. Schreiben Sie ein Scilab-Programm, das diese Aufgabe erledigt.
//Hier ist das Scilab-Programm, das die Differentialgleichung numerisch mit dem Euler-Integrationsverfahren löst: // Set the initial condition x0 = 1; // Set the number of integration steps and the step size n = 10; dt = 0.1; // Create arrays to store the time and solution values t = 0:dt:dt*n; x = zeros(1, n+1); x(1) = x0; // Perform the Euler integration for i = 1:n x(i+1) = x(i) + dt * x(i); end // Plot the results plot(t, x) xtitle('Numerical Solution of dx/dt = x', 'Time (s)', 'x') //Das Programm gibt das Ergebnis als Grafik aus, die die numerische Lösung von x(t) gegen die Zeit t darstellt.
Code 0-1: Antwort von ChatGPT
Teil 1: Behandlung einführender Fragestellungen
|
Dampfmaschine nach James Watt -- https://www.youtube.com/watch?v=n6B4ogz3sic
Norbert Wiener - Anti-Aircraft Gun 1950
Motivation / Diskussion ... Grey Walter's tortoises 1949
SYSTEM -- 50_Simulationstechnik/01_Systemtheorie/01_System
MODELL -- 50_Simulationstechnik/01_Systemtheorie/02_Modell
Hinweis auf die besondere Bedeutung und Notwendigkeit der Visualisierung, wenn es um das Verstehen von Simulationsergebnissen geht.
Teil 2: Einführung in Scilab
Scilab, erste Schritte -- 37_Scilab/01_Erste_SchritteScilab, Skripte -- 37_Scilab/02_Skripte
Scilab, Funktionen -- 37_Scilab/03_Funktionen
Teil 3: Scilab und ein erstes Simulationsmodell
Seerosenteich -- 50_Simulationstechnik/01_Systemtheorie/04_SeerosenEuler-Integration -- 50_Simulationstechnik/01_Systemtheorie/05_Eulerintegration
Saalübung -- 50_Simulationstechnik/01_Systemtheorie/06_Saaluebung
Umsetzung mit Scilab -- 50_Simulationstechnik/01_Systemtheorie/07_scilab
esp32AV -- Linienverfolgung mit PID-Regler
Personenkutschfahrt
Einachser
62_Regelungssysteme/02_Heizregelkreis -- Der Regelkreis
Übung 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-2: 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
#2 Do 30.03.2023
Themen
|
1. Wiederholung: Grundelemente eines Regelkreises
62_Regelungssysteme/02_Heizregelkreis -- Der Regelkreis2. Wiederholung: Matrizenoperationen mit Scilab
Scilab, erste Schritte -- 37_Scilab/01_Erste_SchritteScilab, Skripte -- 37_Scilab/02_Skripte
Scilab, Funktionen -- 37_Scilab/03_Funktionen
3. Systemtheorie -- Die Begriffe System, Modell und Modell-Verifikation
SYSTEM -- 50_Simulationstechnik/01_Systemtheorie/01_SystemMODELL -- 50_Simulationstechnik/01_Systemtheorie/02_Modell
VERIFIKATION -- 50_Simulationstechnik/01_Systemtheorie/03_Verifikation
4. Scilab und ein erstes Simulationsmodell
Seerosenteich -- 50_Simulationstechnik/01_Systemtheorie/04_SeerosenEuler-Integration -- 50_Simulationstechnik/01_Systemtheorie/05_Eulerintegration
Saalübung -- 50_Simulationstechnik/01_Systemtheorie/06_Saaluebung
Im Unterricht entstandene Lösungen zur numerischen Integration der DGL des Seerosenteiches
clc; clear; mode(0); n=604800; m=n+1; t=0:1:n; y=zeros(1,m); for i=1:m y(i)=exp((1/872542)*(i-1)); end //----------------------- y1=zeros(1,m); y1(1)=1; for i=(2:m) y1(i)=y1(i-1)+(1/872542)*y1(i-1); end plot(t,y1) plot(t,y,'re--')
Code 0-3: Studentische Lösung
clear; dt = 60; woche = 7*24*60*60 tmax = woche*9 //Simulationsdauer in Sekunden schritte = floor(tmax/dt); t = 0:dt:tmax; k = 1/872542; y = exp(t*k); plot(t,y) A = 1; Aerg = zeros(1,1); Aerg(1,1) = A; //A0 ii=2; for i=dt:dt:tmax Aneu = A + k*A*dt; Aerg(1,ii) = Aneu; A = Aneu; ii=ii+1; end plot(t,Aerg,'re--')
Code 0-4: Variante
5. Übungen
Die Übungen werden in die Entwicklung des Seerosenteichmodells mit eingeflochten:
|
#3 Do 13.04.2023
Themen:
|
1. Wiederholung Euler-Integrationsverfahren
Siehe Übung 1
2. Einführung des Newtonschen Gesetzes als theoretische Grundlage für die Modellierung dynmaischer mechanischer Systeme
54_Kinetik/01_NewtonIn Worten: "Die Impulsänderung eines starren Körpers ergibt sich aus der Summe der an ihn angreifenden äußeren Kräfte."
3. Einführung des Feder-Masse-Dämpfer-Schwingers
und 4. Einführung des in Scilab verfügbaren Integrators ODE
54_Kinetik/01_Newton/01_LinearSchwinger54_Kinetik/01_Newton/02_Daempfung
54_Kinetik/01_Newton/04_ODE
// mx.. = -cx -Dx. // // dx/dt = v // dv/dt = (-C/m)*x + (-D/m)*v //1. gespeicherte Variablen löschen clear; //2. Parameter definieren m = 1; //kg C = 1; // N/m D = 0.2; // Ns/m //3. Anfangsbedingungen setzen: x0 = 1; // m v0 = 0; // m/s //4. Zeitschrittweite und Anfangszeit festlegen dt = 0.01; // s t0 = 0; // s tend = 3; // s //5. Arrays vorbereiten, um die Daten Zeitschritt für Zeitschritt zu sammeln: t_sammel(1) = t0; x_sammel(1) = x0; v_sammel(1) = v0; //6. Iteratives Euler-Integrations-Verfahren x_alt = x0; v_alt = v0; i=1; for t=dt:dt:tend x_neu = x_alt + v_alt*dt; v_neu = v_alt + ((-C/m)*x_alt + (-D/m)*v_alt)*dt; i=i+1; t_sammel(i) = t; //Daten speichern x_sammel(i) = x_neu; v_sammel(i) = v_neu; x_alt = x_neu; v_alt = v_neu; end plot(t_sammel,x_sammel,t_sammel,v_sammel);
Code 0-5: Simulationsprogramm für den Feder-Masse-Dämpfer-Schwinger.
// mx.. = -cx -Dx. // // dx/dt = v // dv/dt = (-C/m)*x + (-D/m)*v //1. gespeicherte Variablen löschen clear; //2. Parameter definieren m = 1; //kg C = 1; // N/m D = 0.2; // Ns/m //3. Anfangsbedingungen setzen: x0 = 1; // m v0 = 0; // m/s //4. Zeitschrittweite und Anfangszeit festlegen dt = 0.01; // s t0 = 0; // s tend = 3; // s //5. RECHTE SEITE FUNKTION DERFINIEREN: //t_sammel(1) = t0; //x_sammel(1) = x0; //v_sammel(1) = v0; function f = rechteSeite(t,y) x = y(1,1); v = y(2,1); f(1,1) = v; f(2,1) = -(C/m)*x-(D/m)*v; endfunction //6. Aufruf des ode-Integrators t = 0:dt:tend; y0 = [x0;v0]; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),t,y(2,:));
Code 0-6: Gleiche Simulation, jedoch unter Verwendung des ODE-Integrators von Scilab.
Übung 1: Numerische Integration mit dem Euler-Verfahren am Beispiel des Räuber-Beute-Modells
Unter nachfolgendem Link finden Sie eine Beispielimplementierung des Räuber-Beute-Modells nach Lottka und Voltera in Java/C-Syntax. Übertragen Sie dieses System mit den dort vorfindlichen Parametern und erzeugen Sie auch einen Plot des Simulationsverlaufes.
clear; //vorgegeben a = 0.1; b = 0.01; c = 0.01; d = 0.1; //anzahl beute und jäger B = 8; R = 2; dt = 0.01; tend = 300; i=1; //arrays beute(1) = B; raeuber(1) = R; time(1) = 0; for t=dt:dt:tend Rneu = R + (- R*d + B*R*c)*dt; Bneu = B + (B*a - B*R*b)*dt; i = i+1; beute(i) = Bneu; raeuber(i) = Rneu; time(i) = t; B = Bneu; R = Rneu; end plot(time,beute,time,raeuber);
Code 0-7: studentische Lösung (Parameter optimiert: dt, tend)
Bild 0-1: Plot dazu.
Hinweise:
|
Übung 2
a) Analysieren Sie die Varianten zum linearen Feder-Masse-Dämpfer-Schwinger mit Euler-Integrationsverfahren und ODE.
b) Schreiben Sie ein Simulationsprogramm mit Scilab für ein Masse-Dämpfer-System (OHNE Feder). Es soll das Euler-Integrationsverfahren verwendet werden. Anfangsauslenkung soll x=1m sein, dt=0.01s. Die Parameter sind: m=2kg, D=0.1Ns/m.
// Gleichungen mx..=-cx-Dx. //dx/dt=v //dv/dt=(-C/m)*x+(-D/m)*V //Löschen aller evtl. belegten Variablen clear; //Parameter definieren m = 2; //kg C = 0; //N/m D = 1; //Ns/m //Anfangsbedingung setzten für x. und v x0 = 0; //m wir starten bei einem Meter- Die Feder ist bereits gestreckt v0 = 1; //m/s //Zeitschrittweite festlegen dt = 0.001; //s t0 = 0; //s tend = 20; //s //Arrays vorbereiten um, die Daten zu sammeln t, x und v t_sammel(1) = t0; x_sammel(1) = x0; v_sammel(1) = v0; i=1; //Anwendung des Euler-Integrations-Verfahren x_alt=x0; v_alt=v0; for t=dt:dt:tend //von dt, in dt schritten bis tend x_neu = x_alt + v_alt *dt; v_neu = v_alt + ((-C/m)*x_alt +(-D/m )*v_alt)*dt; i=i+1; t_sammel(i) = t; //Daten speichern x_sammel(i) = x_neu; v_sammel(i) = v_neu; x_alt = x_neu; //im nächsten Durchlauf wird der aktuelle Wert eingesetz v_alt = v_neu; end plot(t_sammel, x_sammel,t_sammel,v_sammel)
Code 0-8: studentische Lösung
c) Schreiben Sie das Simulationsprogramm von b) so um, dass nun der ODE-Integrator in Scilab benutzt wird.
// mx.. = -cx -Dx. // // dx/dt = v // dv/dt = (-C/m)*x + (-D/m)*v //1. gespeicherte Variablen löschen clear; //2. Parameter definieren m = 2; //kg C = 0; // N/m D = 1; // Ns/m //3. Anfangsbedingungen setzen: x0 = 0; // m v0 = 1; // m/s //4. Zeitschrittweite und Anfangszeit festlegen dt = 0.01; // s t0 = 0; // s tend = 20; // s //5. RECHTE SEITE FUNKTION DERFINIEREN: //t_sammel(1) = t0; //x_sammel(1) = x0; //v_sammel(1) = v0; function f = rechteSeite(t,y) x = y(1,1); v = y(2,1); f(1,1) = v; f(2,1) = -(C/m)*x-(D/m)*v; endfunction //6. Aufruf des ode-Integrators t = 0:dt:tend; y0 = [x0;v0]; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),'red--',t,y(2,:),'gre--');
Code 0-9: studentische Lösung
#4 Do 20.04.2023
Themen
|
1. Wiederholung: Euler-Integrationsverfahren / Newtonsches Gesetz
2. Eigenwerte
Die Lage der Eigenwerte linearer Differentialgleichungssysteme geben Auskunft über die Systemeigenschaften Stabilität und Schwingungsfähigkeit.
Ihre Bestimmung stellt eines der wichtigsten Hilfsmittel bei der Analyse und Auslegung technischer und regelungstechnischer Systeme dar.
Übung zu Eigenwerten
Bestimmen Sie die Eigenwerte folgender linearer Differentialgleichungen zweiten zweiten Grades und überprüfen Sie im Anschluß Ihr Ergebnis auf Richtigkeit mittels spec(...) mit Hilfe von Scilab:
$ \ddot x = -x $
Formel 0-4: DGL. Nr.1
$ \ddot x = -x - \dot x $
Formel 0-5: DGL. Nr.2
$ \ddot x=x - \dot x $
Formel 0-6: DGL. Nr.3
$ 4 \ddot x =-2 \cdot x - \dot x $
Formel 0-7: DGL. Nr.4
3. Saalübung: P-Regler, PD-Regler
|
Zusatzübung: beide Systeme (mit und ohne Regler) simulieren:
m = 1.0; C = 1.0; P=1; D=1; xsoll = 0; vsoll = 0; tend = 10; x0=1; v0=0; y0=[x0;v0]; t0=0; function f = rechteSeite(t,y) x = y(1,1); v = y(2,1); FR = P*(xsoll-x)+D*(vsoll-v); f(1,1) = v; f(2,1) = -(C/m)*x+FR/m; endfunction dt=0.01; t = 0:dt:tend; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),t,y(2,:));
Code 0-10: beide Systeme (mit und ohne Regler) simulieren
Bild 0-2: System mit PD-Regler.
4. Zustandsregler
|
Übung zum Zustandsregler
Versehen Sie nachfolgendes dynamisches System mit einem Zustandsregler, der die Eigenwerte des Gesamtsystems nach -1+i und -1-i verschiebt.
Als Stellgröße gilt hier die externe Kraft F.
$ m \cdot \ddot x = -Cx + F $
Formel 0-8: mit m=1kg & C=1m/s & F ist die Stellkraft.
#5 Do 27.04.2023
Themen
|
Quiz: Eigenwerte, Reglkreisauslegung
|
Zustandsregler
64_Regelungssysteme/08_PolvorgabeÜbung 1 zum Zustandsregler
Versehen Sie nachfolgendes dynamisches System mit einem Zustandsregler, der die Eigenwerte des Gesamtsystems nach -1+i und -1-i verschiebt.
Als Stellgröße gilt hier die externe Kraft F.
$ m \cdot \ddot x = -Cx + F $
Formel 0-9: mit m=1kg & C=1m/s & F ist die Stellkraft.
Übung 2 zum Zustandsregler
$ \ddot x = -x -v $
Formel 0-10: Zu regelndes System \left(Regelstrecke\right)
Für oben stehendes System ist ein Zustandsregler so zu finden, dass die EW liegen bei: Lambda 1/2 = -1 +/- i*sqrt(3)/2
Übung 3 zum Zustandsregler
Gegeben sei ein lineares Feder-Masse-Dämpfer-System mit folgenden Parametern: m=2kg, C=1N/m, D=0Ns/m.
|
Über eine zusätzlich auf den starren Körper einwirkende Stellkraft F, soll nun ein Zustandsregler umgesetzt werden. Die beiden Eigenwerte des geregelten Systems sollen beide bei -2 liegen. Das heißt, die haben keinen Imaginärteil. Hinweis: Man nennt so etwas eine doppelte Polstelle.
|
Zusatzaufgaben
Bestimmen Sie für nachfolgende Systemmatrizen die Eigenwerte von Hand und überprüfen Ihre Ergebnisse mit Hilfe von Scilab. Geben Sie außerdem jeweils an, ob das entsprechende System stabil, instabil, oder grenzstabil ist und ob es schwingungsfähig ist, oder nicht:
$ A=\left[\begin{array}{cc}0 & 1 \\ -2 & 0\end{array}\right] $
Formel 0-11: Systemmatrix 1.
$ A=\left[\begin{array}{cc}0 & 1 \\ 2 & 0\end{array}\right] $
Formel 0-12: Systemmatrix 2.
$ A=\left[\begin{array}{cc}0 & 1 \\ 2 & -2\end{array}\right] $
Formel 0-13: Systemmatrix 3.
$ A=\left[\begin{array}{cc}0 & 1 \\ -2 & -2\end{array}\right] $
Formel 0-14: Systemmatrix 4.
#6 Do 04.05.2023
Invertierendes Pendel (Herleitung an der Tafel)
clear m=1; // in kg r=0.1; // in m h=1; // in m J=0.25*m*r*r + 1/12*m*h*h; F_A=0; g=9.81; //in m*s^-2 phi0 = 0.2; w0 = 0; t0 = 0; dt = 0.1; tend = 3; function f = rechteSeite(t,y) phi = y(1,1); w = y(2,1); s=sin(phi); c=cos(phi); F_A = -29.43*phi -2.595419*w; f(1,1) = w; f(2,1) = (0.5*c*F_A+0.5*m*g*s-0.25*m*h*h*w*w*s*c)/(J+0.25*m*h*h*s*s); endfunction t = 0:dt:tend; y0 = [phi0;w0]; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),t,y(2,:),'red'); a = (m*g*h)/(2*J) b = h/(2*J); A = [0,1;a,0] B = [0;b] EW = spec(A) // 7.5594729 + 0.i // -7.5594729 + 0.i RR = real(EW(1)); EWsoll = [-RR+RR*%i,-RR-RR*%i]; RRRR = ppol(A,B,EWsoll) //RRRR = 29.43 2.595419
Code 0-11: Studentische Lösung für die Simulation.
#7 Do 11.05.2023
Beginn: 12Uhr!
Themen
|
Dynamische Gleichungen zum invertierenden Pendel:
$ \ddot \phi = \frac {0.5 \cos \left( \phi \right)F_A+0.5mgh \cdot \sin \left( \phi \right)-0.25mh^2 \cdot \dot \phi ^2 \cdot \sin \left( \phi \right) \cdot \cos \left( \phi \right)}{J+0.25mh^2 \cdot \sin ^2\left( \phi \right)} $
Formel 0-15: Euler-Gleichung.
$ m \cdot \ddot x=F_A $
Formel 0-16: Newton-Gleichung für die x-Richtung.
$ \ddot \phi = \frac {h}{2J} \cdot F_A+ \frac {mgh}{2J} \cdot \phi $
Formel 0-17: Linearisierte Euler-Gleichung.
Übung
Aufgabe 0:
Animation des geregelten Einachsers mit Scilab.
Aufgabe 1:
Versehen Sie nachfolgendes dynamisches System mit einem Zustandsregler, der die Eigenwerte des Gesamtsystems nach -1+i und -1-i verschiebt.
Als Stellgröße gilt hier die externe Kraft F.
$ m \cdot \ddot x = -Cx + F $
Formel 0-18: mit m=1kg & C=1m/s & F ist die Stellkraft.
Aufgabe 2:
Bestimmen Sie für nachfolgende Systemmatrizen die Eigenwerte von Hand und überprüfen Ihre Ergebnisse mit Hilfe von Scilab. Geben Sie außerdem jeweils an, ob das entsprechende System stabil, instabil, oder grenzstabil ist und ob es schwingungsfähig ist, oder nicht:
$ A=\left[\begin{array}{cc}0 & 1 \\ -2 & 0\end{array}\right] $
Formel 0-19: Systemmatrix 1.
$ A=\left[\begin{array}{cc}0 & 1 \\ 2 & 0\end{array}\right] $
Formel 0-20: Systemmatrix 2.
$ A=\left[\begin{array}{cc}0 & 1 \\ 2 & -2\end{array}\right] $
Formel 0-21: Systemmatrix 3.
$ A=\left[\begin{array}{cc}0 & 1 \\ -2 & -2\end{array}\right] $
Formel 0-22: Systemmatrix 4.
Aufgabe 3:
Gegeben sei ein lineares Feder-Masse-Dämpfer-System mit folgenden Parametern: m=2kg, C=1N/m, D=0Ns/m.
|
Über eine zusätzlich auf den starren Körper einwirkende Stellkraft F, soll nun ein Zustandsregler umgesetzt werden. Die beiden Eigenwerte des geregelten Systems sollen beide bei -2 liegen. Das heißt, die haben keinen Imaginärteil. Hinweis: Man nennt so etwas eine doppelte Polstelle.
|
Aufgabe 4: Modellierung und Regelung eines hängenden Pendels
Ein homogener zylindrischer Stab, Länge 1m, Radius 0.1m, Masse 1kg, sei an einem Ende gelenkig mit einem rotatorischen Freiheitsgrad aufgehangen und der Schwerkraft ausgesetzt.
Die Ruhelage phi=0rad soll im hängenden Zustand sein, eine Drehung gegen den Uhrzeigersinn sei positiv (phi>0).
|
clear m=1; // in kg r=0.1; // in m h=1; // in m J=0.25*m*r*r + 1/12*m*h*h; F_A=0; g=9.81; //in m*s^-2 phi0 = 0.4; w0 = 0; x0 = 0; v0 = 0; t0 = 0; dt = 0.1; tend = 3; a = (m*g*h)/(2*J) b = h/(2*J); function f = rechteSeite(t,y) phi = y(1,1); w = y(2,1); x = y(3,1); v = y(4,1); s=sin(phi); c=cos(phi); //F_A = -29.43*phi -2.595419*w; //nur PHI regeln. R = [63.764999, 7.7862571, -57.14563, -22.678418]; F_A = -R*y; f(1,1) = w; f(2,1) = (0.5*c*F_A+0.5*m*g*s-0.25*m*h*h*w*w*s*c)/(J+0.25*m*h*h*s*s); f(3,1) = v; f(4,1) = (1/m)*F_A; endfunction t = 0:dt:tend; y0 = [phi0;w0;x0;v0]; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:),'blk',t,y(2,:),'red',t,y(3,:),'blu',t,y(4,:),'gre'); //a = (m*g*h)/(2*J) //b = h/(2*J); // siehe oben ! A = [0,1;a,0] B = [0;b] EW = spec(A) // 7.5594729 + 0.i // -7.5594729 + 0.i RR = real(EW(1)); EWsoll = [-RR+RR*%i,-RR-RR*%i]; RRRR = ppol(A,B,EWsoll) //-------------------------------- //Gesamtsystem regeln: A = [0,1,0,0 a,0,0,0 0,0,0,1 0,0,0,0]; B = [0 b 0 1/m]; spec(A) q=7.5594729; //Wunscheigenwerte: EW = [-q+%i*q,-q-%i*q, (-q+%i*q)/2,(-q-%i*q)/2]; R = ppol(A,B,EW)
Code 0-12: Regelung des Gesamtszustandes phi, omega, x, vx.
...mit Animation:
clear m=1; // in kg r=0.1; // in m h=1; // in m J=0.25*m*r*r + 1/12*m*h*h; F_A=0; g=9.81; //in m*s^-2 phi0 = 0.43; w0 = 0; x0 = 0; v0 = 0; t0 = 0; dt = 0.001; tend = 3; a = (m*g*h)/(2*J) b = h/(2*J); //-------------------------------- //Gesamtsystem regeln: A = [0,1,0,0 a,0,0,0 0,0,0,1 0,0,0,0]; B = [0 b 0 1/m]; spec(A) q=7.5594729; //Wunscheigenwerte: EW = [-q+%i*q,-q-%i*q, (-q+%i*q)/2,(-q-%i*q)/2]; R = ppol(A,B,EW) function f = rechteSeite(t,y) phi = y(1,1); w = y(2,1); x = y(3,1); v = y(4,1); s=sin(phi); c=cos(phi); //F_A = -29.43*phi -2.595419*w; //nur PHI regeln. F_A = -R*y; f(1,1) = w; f(2,1) = (0.5*c*F_A+0.5*m*g*s-0.25*m*h*h*w*w*s*c)/(J+0.25*m*h*h*s*s); f(3,1) = v; f(4,1) = (1/m)*F_A; endfunction t = 0:dt:tend; y0 = [phi0;w0;x0;v0]; y = ode(y0,t0,t,rechteSeite); //plot(t,y(1,:),'blk',t,y(2,:),'red',t,y(3,:),'blu',t,y(4,:),'gre'); // phi omega x v //1. ys ? (Schwerpunktskoordinate von y) // ys = 0.5*h*cos(phi) yS = 0.5*h*cos(y(1,:)); //2. pA unterer Endpunkt des Stabes // // pA = pS + rSA // [sin phi ] // rSA = [ ] * 0.5*h // [-cos phi ] //pAx = xS + 0.5*h*sin(phi) //pAy = yS - 0.5*h*cos(phi) pAx = y(3,:) + 0.5*h*sin(y(1,:)); pAy = yS - 0.5*h*cos(y(1,:)) //3. pB oberer Endpunkt des Stabes // // pB = pS - rSA // [-sin phi ] // rSA = [ ] * 0.5*h // [cos phi ] //pAx = xS - 0.5*h*sin(phi) //pAy = yS + 0.5*h*cos(phi) pBx = y(3,:) - 0.5*h*sin(y(1,:)); pBy = yS + 0.5*h*cos(y(1,:)) zs = size(yS); spalten = zs(2); p=1.5; for i=1:spalten xWerte = [p,p,-p,-p, pAx(1,i),pBx(1,i)]; yWerte = [0,p, p, 0, pAy(1,i),pBy(1,i)]; plot(xWerte,yWerte); clf; end
Code 0-13: Voll ausgeregeltes invertierendes Pendel mit Animation.
#8 Do 25.05.2023
Wir beginnen bereits um 12:30Uhr!
Themen
|
1. Einführung in die klassische Regelungstechnik auf Grundlage der Laplacetransformation
Zustandsregler sind Stand der Technik und günstig bei der Simulation am Computer. In der klassischen Regelungstechnik wird aber die s.g. Laplace-Darstellung regelungstechnischer Systeme verwendet. Diese erlaubt es, Systeme einfacher zu klassifizieren und zudem m.E. Regler aufgrund von Messdaten mit Stift und Papier auszulegen.
2. Die Laplacetransformation
62_Regelungssysteme/04_LaplaceEigenwerte können auch über Nullstellen des Nenner einer Übertragungsfunktion bestimmt werden.
Einige Übertragungsfunktionen im Zeitbereich als Grundlage für Übungen
Übung 1
$ \ddot x + 3 x = 4 u $
Formel 0-23: a\right)
$ \dot x - x = u $
Formel 0-24: b\right)
$ 3 \ddot x + \dot x = u $
Formel 0-25: c\right)
$ \ddot x + x = u $
Formel 0-26: d\right)
$ \dot x + 2 x = u $
Formel 0-27: e\right)
$ \dot x - 3 x = u $
Formel 0-28: f\right)
$ \dot x + 5 x = 5 u $
Formel 0-29: g\right)
|
3. Übertragungsglieder
62_Regelungssysteme/04_Laplace/02_PT1Mit Hilfe der Sprungantwort lassen sich Eigenschaften erkennen, wie:
|
Übung 2
Plotten Sie mit Scilab für folgende Systeme den Einheitssprung. Führen Sie dazu die notwendige Laplace-Transformation aus und finden Sie selber eine sinnvolle Simulationsdauer:
$ \ddot x + \dot x + 3 x = 4 u $
Formel 0-30: a\right)
$ 3 \ddot x + \dot x = u $
Formel 0-31: b\right)
$ \ddot x + x = u $
Formel 0-32: c\right)
$ \dot x + 2 x = u $
Formel 0-33: d\right)
$ \dot x - x = u $
Formel 0-34: e\right)
Beispiellösungen nebst den Plots:
//Formel 0-17: // x.. + x. + 3x = 4u // 4 // x/u = ------------------ // s^2 + s + 3 //s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[4],[s*s+s+3]); t=[0:0.01:10]; u=ones(1,1001); y=csim(u,t,G); subplot(121); plot2d(t,y); subplot(122); plzr(G);
Code 0-14: zu Formel 0-17
4. Regler in Laplace-Darstellung
62_Regelungssysteme/04_Laplace/03_PReglerPID-Regler -- 62_Regelungssysteme/04_Laplace/04_Scilab
#9 Do 01.06.2023 Pflichttermin 1 für alle mit Labor im Anschluss
Beginn: 12:30Uhr! Bitte diese Info weiter geben.
Allgemeine Hinweise zum Laborpraktikum
|
Inhalte des Praktikums
|
|
Theoretischer Teil zum ersten Termin, Einführung zum esp32av
|
Praktischer Teil
Die Testataufgaben bauen aufeinander auf und müssen deshalb in der angegebenen Reihenfolge nacheinander bearbeitet werden.
Testat 1: Blinkende LED
|
Testat 2: Videostream über Webbrowser
|
Beachten Sie: Um die IP-Adresse des Fahrzeugs am seriellen Monitor zu sehen, wird die Stromversorgung zur esp32-Platine kurz unterbrochen!
05_esp32AV/01_Bauanleitung/01_Elektronik_und_Software/03_Videostream
Testat 3: Motorsteuerung per Tastenbefehle
|
Beachten Sie: Beim Einschalten des esp32av wird zunächst die Motortreiberplatine herausgezogen!
|
ACHTUNG: Nicht die Software in der nachfolgenden Anleitung verwenden,...
05_esp32AV/01_Bauanleitung/02_Elektromechanik -- UND UNTERKAPITEL!
...sondern die folgende:
CaptureJavaRT2023_015REDUZIERT.zip -- Processing-Sketch für den PC. ACHTUNG: IP-Adresse Ihres esp32av eintragen!!!
esp32_CameraWebServer10temperatur.zip -- esp32-Sketch für Arduino IDE. ACHTUNG: Anmeldedaten bei Hotspot anpassen!!!
wenn die obige Software läuft, kann mit der Leertaste das Videostreaming an und ausgeschaltet werden. Mit den Tasten 7 und 8 kann die Lampe auf dem esp an und ausgeschaltet werden.
|
Testat 4: Selbst entwickelte Temperaturregelung
Während Testat3 haben Sie etwas Einblick in die Möglichkeit erhalten, Daten vom Fahrzeug abzurufen und Befehle an das Fahrzeug zu schicken.
Aufgabe: Programmieren Sie einen P-Regler, der die Temperatur auf dem esp32 möglichst konstant auf 57 Grad hält. Ergänzen Sie dazu den Processing-Sketch CaptureJavaRT2023_015REDUZIERT.
Hinweise:
|
#10 Do 08.06.2023 Pflichttermin 2 für alle mit Labor im Anschluss UND Neue theoretische Inhalte
Beginn DOCH ERST UM 15:00Uhr -- Bitte KORRIGIERTE INFO weiter geben.
Ein Tausch der LVs o.ä. wäre zu kurzfristig, tut mir Leid.
|
1. Wiederholungen zu Laplace-Transformation
Übung 1
Plotten Sie mit Scilab für folgende Systeme den Einheitssprung. Führen Sie dazu die notwendige Laplace-Transformation aus und finden Sie selber eine sinnvolle Simulationsdauer:
$ \ddot x + \dot x + 3 x = 4 u $
Formel 0-35: a\right)
$ 3 \ddot x + \dot x = u $
Formel 0-36: b\right)
Beispiellösungen nebst den Plots:
//Formel 0-17: // x.. + x. + 3x = 4u // 4 // x/u = ------------------ // s^2 + s + 3 //s als Argument für ein Polynom definieren: s = poly(0,"s"); //Übertragungsfunktion definieren: G = syslin('c',[4],[s*s+s+3]); t=[0:0.01:10]; u=ones(1,1001); y=csim(u,t,G); subplot(121); plot2d(t,y); subplot(122); plzr(G);
Code 0-15: zu Formel 0-17
Bild 0-3: Plot zu obigem Skript.
2. Erste Methode nach Ziegler und Nichols zur Auslegung eines Regelkreises
62_Regelungssysteme/07_Einstellregeln/01_Totzeit62_Regelungssysteme/07_Einstellregeln/02_Methode1
PID im Zeitbereich und in Embedded Systems -- 62_Regelungssysteme/05_Regleroptimierung/03_Scilab
Windup-Effekt beim I-Anteil -- 62_Regelungssysteme/11_Stabilitaet/03_Windup
Bild 0-4: K-Krit suchen, Blockschaltbild.
clear(); xtot=0; function f=modell(y,t,dt) x=y(1,1); Kkrit = 16.35; xsoll = 1.0; //e = xsoll - x; e = xsoll - xtot; u=Kkrit*e; f(1,1)=-x+u; 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 = 10.0; dt = 0.0001; schritte = ceil(tmax/dt); yalt = [0]'; ysim = yalt; t=0.0; tt=t; Ttot = 0.1; 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-16: Beispielsystem
3. Vorbesprechung der Testate 5 und 6.
Testat 5
PC-Seitig soll nun folgender Sketch verwendet werden:
|
Vergessen Sie nicht beim Einschalten des Fahrzeugs vorher den Motortreiber heraus zu ziehen.
Es ist auch möglich einen Hotspot mit dem Smartphone einzurichten. Bitte anderen Namen wählen, als die bereits Verwendeten.
|
2. Mit Hilfe der ersten Methode nach Ziegler und Nichols soll für die Lenkreglung ein PI-Regler ausgelegt werden Führen Sie diese Auslegung durch und dokumentieren Sie diese.
Testat 5: Die Dokumentation auf Papier und die Präsentation des schwingend lenkenden Fahrzeugs werden testiert.
Testat 6: Setzen Sie den PI-Regler für die Lenkreglung des Fahrzeugs mit den Werten nach Ziegler und Nichols um und präsentieren Sie Ihren Quelltext und das fahrende Fahrzeug.
Beginn DOCH ERST UM 15:00Uhr -- Bitte KORRIGIERTE INFO weiter geben.
Ein Tausch der LVs o.ä. wäre zu kurzfristig, tut mir Leid.
#11 Do 15.06.2023 Probe E-Test UND Neue theoretische Inhalte
Beginn 15:15Uhr, Treffpunkt wie immer im Mechatroniklabor
#12 Do 22.06.2023 Pflichttermin 3 für alle mit Labor im Anschluss
Beginn 15:15Uhr im Mechatroniklabor
#13 Do 29.06.2023 E-Test (Semester begleitende Prüfung)
ZEIT: 15:15Uhr | ORT: PC-Pool D.1.02 (wie Probe-E-Test)
Im Anschluss: Laborpraktikum je nach Bedarf.