Regelungssysteme day by day
(EN google-translate)
(PL google-translate)
|



|
Während der Vorlesung entstandene Scilab-Skripte:

Wiederholungen




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




|
Polvorgabe, wenn Zielzustand nicht der Nullvektor ist.
Reglerauslegung durch Optimierung

|
Gleichstrom-Elektromotor -- Herleitung

Gleichstrom-Elektromotor -- Polvorgabe

OPTIMIERUNG


Optimierungsbeispiele




|
Projektthema in Gruppen:
Modellierung, Simulation, Regelung und Regelungsoptimierung eines invertierenden Pendels.



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

|

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!!!


|
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.


|
Zustandsregler mit Beobachter am Beispiel des invertierenden Pendels
