Regelungssysteme day by day
(EN google-translate)
(PL google-translate)
|
62_Regelungssysteme/03_Verzoegerungsglieder/
62_Regelungssysteme/04_Laplace/
|
Während der Vorlesung entstandene Scilab-Skripte:
Wiederholungen
62_Regelungssysteme/04_Laplace/
62_Regelungssysteme/04_Laplace/01_Eigenwerte/
62_Regelungssysteme/04_Laplace/02_PT1/
Neu
Bestimmung der Gesamtübertragungsfunktion eines geschlossenen Regelkreises:
P-Regler mit Scilab
Übertragungsfunktion mit Scilab / Umsetzung des P-geregelten PT2-Übertragungsgliedes (Vorl.)
PID-Regler
I-Anteil im Zeitbereich mit Scilab / D-Anteil steht noch im Zeitbereich aus
"Übung3"
|
Was ist "Totzeit"? / Umsetzung in Scilab
Reglerauslegung nach Ziegler und Nichols
Methode 1
Methode 2
Übung: Auslegung eines Reglers zur Strecke 1/((s+1)*(s+1)) nach Methode 1 von Ziegler Nichols, wenn Tt==0,2s
|
Der Zustandsregler
62_Regelungssysteme/08_Polvorgabe62_Regelungssysteme/07_Einstellregeln/05_Daempfungsgrad
Beispiele zu ode und csim -- 62_Regelungssysteme/01_day_by_day/pt1.zip
polvorgabe.zip -- Scilab-Beispiele aus der Vorlesung.
|
Polvorgabe, wenn Zielzustand nicht der Nullvektor ist.
Reglerauslegung durch Optimierung
|
Gleichstrom-Elektromotor -- Herleitung
Gleichstrom-Elektromotor -- Polvorgabe
OPTIMIERUNG
62_Regelungssysteme/05_Regleroptimierung/07_Stoerverhalten
Optimierungsbeispiele
62_Regelungssysteme/01_day_by_day/identifikation.zip
62_Regelungssysteme/12_Adaptiv/05_Regleroptimierung
SKRIPTE VON DIESEM TAG: 62_Regelungssysteme/01_day_by_day/optimierung.zip
|
Projektthema in Gruppen:
Modellierung, Simulation, Regelung und Regelungsoptimierung eines invertierenden Pendels.
einachser3.ogg
Auf Ball balacieren
Musterlösung heute:
|
|
m = 1.0; r = 0.1; l = 1.0; h = l/2; J = (1/4)*m*r*r + (1/12)*m*l*l; g = 9.81; function f = rechteSeite(t,y) phi = y(1,1); om = y(2,1); x = y(3,1); vx = y(4,1); f(1,1) = om; sp = sin(phi); cp = cos(phi); F = 0; Z = -m*h*h*om*om*cp*sp + m*g*h*sp + F*h*cp; N = J + m*h*h*sp*sp; f(2,1) = Z/N; f(3,1) = vx; f(4,1) = F/m; endfunction t = linspace(0,30,3000); y0 = [1,0,0,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-1: Scilab-Programm: invertierendes Pendel ohne Antriebskraft.
|
m = 1.0; r = 0.1; l = 1.0; h = l/2; J = (1/4)*m*r*r + (1/12)*m*l*l; g = 9.81; //Linearisierung: // phi.. = (mgh*phi + F*h) / J // [phi.;om.] = A * [phi;om] + B * F A = [ 0 1 m*g*h/J 0]; B = [ 0 h/J]; spec(A) R = ppol(A,B,[-10+%i*10,-10-%i*10]) // - B*R*y => F = -R*y function f = rechteSeite(t,y) phi = y(1,1); om = y(2,1); x = y(3,1); vx = y(4,1); f(1,1) = om; sp = sin(phi); cp = cos(phi); //F = 0; r1 = R(1); r2 = R(2); F = -r1*phi - r2*om; Z = -m*h*h*om*om*cp*sp + m*g*h*sp + F*h*cp; N = J + m*h*h*sp*sp; f(2,1) = Z/N; f(3,1) = vx; f(4,1) = F/m; endfunction t = linspace(0,30,3000); y0 = [1,0,0,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)');
Code 0-2: Scilab-Programm: Zustands geregeltes invertierendes Pendel.
Bild 0-1: Pendel ohne Kraft.
Bild 0-2: Pendel mit Zustandsregler.
Ergebnisse der Analyse des linearisierten Systems: Eigenwerte bei -7.5594729 und +7.5594729, d.h. instabiles System.
Vorgabe von Zieleigenwerten bei Polvorgabe mit ppol: -10 + 10i und -10 -10i.
|
Ziele heute:
|
Schritte:
Zustandsregler
|
Optimierung
|
Offene Fragen
|
Aufgabenliste
|
Studentische Teillösungen
62_Regelungssysteme/01_day_by_day/Teil_a_b_Zwingmann.zip
|
Aufgabe: Steuerung der Schrittweite alpha ergänzen.
Musterlösung, auch mit Kraftbegrenzung:
clear; //Simulationsmodell m = 1.0; r = 0.1; l = 1.0; h = l/2; J = (1/4)*m*r*r + (1/12)*m*l*l; g = 9.81; //Linearisierung: // phi.. = (mgh*phi + F*h) / J // [phi.;om.] = A * [phi;om] + B * F A = [ 0 1 m*g*h/J 0]; B = [ 0 h/J]; spec(A) R = ppol(A,B,[-10+%i*10,-10-%i*10]) // - B*R*y => F = -R*y function f = rechteSeite(t,y) phi = y(1,1); om = y(2,1); x = y(3,1); vx = y(4,1); f(1,1) = om; sp = sin(phi); cp = cos(phi); //F = 0; r1 = R(1); r2 = R(2); F = -r1*phi - r2*om; if F>100 then F = 100; end if F<-100 then F = -100; end Z = -m*h*h*om*om*cp*sp + m*g*h*sp + F*h*cp; N = J + m*h*h*sp*sp; f(2,1) = Z/N; f(3,1) = vx; f(4,1) = F/m; endfunction t = linspace(0,1.5,300); y0 = [1,0,0,0]'; t0 = 0; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)'); //---------------------------------------------------------- //Fehlerfunktion RR = [44.143333, 3.4333333 ]; function err = fehlerfunktion(RRR) R = RRR; y = ode(y0,t0,t,rechteSeite); err = sum( abs(y(1,:)) ); endfunction //Ausgangspunkt und dessen Fehler: err_aktuell = fehlerfunktion(RR); disp("Start-Fehler bei Verwendung der ppol-Ergebnisse:"); disp(err_aktuell); startfehler = err_aktuell; RRstart = RR; //---------------------------------------------------------- //Optimierer: // Optimierer formulieren: SCHRITTE = 2000; alfamat = [0.1,0.1;0.1,0.1]; //Zeile==Paramternummer, Spalte==Richtung for i=1:1:SCHRITTE RRneu = RR; //Zufällig wählen, welcher Parameter variiert wird. index = grand(1, 1, "uin", 1, 2); //Zufällig Richtung wählen, in die ich den Parameter ändere index_richtung = grand(1, 1, "uin", 1, 2); // [1 oder 2] richtung = 2*(index_richtung-1) - 1; // [-1 oder +1] alfa = alfamat(index,index_richtung); RRneu(index) = RRneu(index) + richtung*alfa; err_neu = fehlerfunktion(RRneu); if err_neu < err_aktuell then disp(err_neu); end if err_neu <= err_aktuell then RR = RRneu; err_aktuell = err_neu; alfamat(index,index_richtung) = alfa *1.01; else alfamat(index,index_richtung) = alfa *0.99; end end disp(RR) err_best = fehlerfunktion(RR) R = RR; y = ode(y0,t0,t,rechteSeite); plot(t,y(1,:)',t,y(2,:)'); disp("Fehler nach Optimierung:"); disp(err_best); disp("Fehler VOR Optimierung:"); disp(startfehler);
Code 0-3: Optimierung mit Schrittweitensteuerung.
|
E-Test 8:30
Einfache Modellierung eines Fahrzeugs / Regelung mit N.N. -- nur Kinematik!!!
Cognimem: Neurocar.
Cognimem: Tutorials / Demonstrations
|
siehe auch: Neuronales Netz auf FPGA-Basis ganz unten in day_by_day 69_FPGA/30_day_by_day/ :-)
Ergänzungen
Im bisherigen Verlauf der LV wurde konzentriert auf den Zustandsregler "hin gearbeitet". Einige Inhalte wurden dabei übersprungen. Ohne bei diesen zu sehr in die Tiefe zu gehen, sollen diese im Nachhinein angesprochen werden.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kleinste Quadrate Methode
Gemeinsamer Entwurf einer Aufgabe und dessen Lösung.
//postulierter funktionaler Zusammenhang: // a= c0 + c1 * u^2 + c2 * 2^u //Messwerte: // u | a // 0 | 4 // 1 | 3 // 2 | 2 // 3 | 1 B = [1 0 1;1 1 2;1 4 4;1 9 8] d = [-4;-3;-2;-1] A = B'*B b = B'*d c = -inv(A)*b c0=4 c1=0 c2=-0.4 u = [0 1 2 3] a = c0 + c1*u + c2*2^u plot(u,a) a2 = [4 3 2 1]; plot(u,a2,'*') cc = lsq(B,-d)
Code 0-4: Beispiel aus dem Unterricht (Handrechnung fehlt hier).
Anderes Beispiel, siehe:
Beispiel mit Realitätsbezug: Parameter eines Elektromotors bestimmen:
Fuzzy-Regler
Im zweiten Teil der LV soll auf der Code-Basis der einfachen Fahrzeug-Simulation aus FPGA ein Fuzzy-Regler implementiert werden.
AV702_FUZZY.zip -- Musterlösung
|