Analyse nichtlinearer Regelungssysteme
(EN google-translate)
(PL google-translate)
|
|
Bild 0-1: Beispiele für Regler mit nichtlinearen Kennlinien.
|
Simulationsexperiment:
|
Bild 0-2: Entstehung eines Grenzzyklus.
//P-Regler: function f = rechteSeite(t,y) u=0.7-y(1,1); f(1,1)=y(2,1); f(2,1)=y(3,1); f(3,1)=-y(2,1)-2*y(3,1)+u; endfunction //Zweipunkt-Regler: function f = rechteSeite2(t,y) u=0.2; if(y(1,1)>0.7) u=-0.2; end f(1,1)=y(2,1); f(2,1)=y(3,1); f(3,1)=-y(2,1)-2*y(3,1)+u; endfunction t = 0:0.005:90; y0 = [0,0,0]'; t0 = 0; y = ode("fix",y0,t0,t,rechteSeite); y2 = ode("fix",y0,t0,t,rechteSeite2); plot(t,y(1,:),'blu',t,y2(1,:),'red'); a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'y'; a.title.text = 'Grenzzyklus'; hl=legend(['P-Regler';'Zweipunktregler'],a=1);
Code 0-1: Scilab-Skript zum Simulationsexperiment.
Stabilitätsüberprüfung bei einem Grenzzyklus
Ein Grenzzyklus ist stabil, wenn das System aus einer Umgebung um den Grenzzyklus immer in diesen zurückkehrt.
Übung
Die Übung soll vorbereiten auf die Stabilitätsuntersuchung.
|
|
Bild 0-3: nichtlinear2.sce - Zusätzliche Simulationen der lokal linearisierten Übertragungsglieder mit den Startpunkte [1,0,0] und [0.4,0,0].
|
Bild 0-4: nichtlinear2b.sce - Zweipunktregler mit verschiedenen AB simuliert.
|
Bild 0-5: Partieller Zustandsraum (Nur y1 und y2, Dimension y3 fehlt) des Zweipunktreglers.
|
function f = rechteSeite4(t,y) u=0.2; if(y(1,1)>0.7) u=-0.2; end f(1,1)=y(2,1); f(2,1)=0; fffff=-y(2,1)-2*0+u; endfunction //Zweipunkt-Regler: function f = rechteSeite(t,y) u=0.2; if(y(1,1)>0.7) u=-0.2; end f(1,1)=y(2,1); f(2,1)=y(3,1); f(3,1)=-y(2,1)-2*y(3,1)+u; endfunction t = 0:0.005:20; y0 = [0.0,0,0]'; t0 = 0; y = ode("fix",y0,t0,t,rechteSeite); y0 = [1.0,1,0]'; y2 = ode("fix",y0,t0,t,rechteSeite); y0 = [0.4,-1,0]'; y3 = ode("fix",y0,t0,t,rechteSeite); plot(y(1,:),y(2,:),'blu',y2(1,:),y2(2,:),'red',y3(1,:),y3(2,:),'gre'); a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'y'; a.title.text = 'Grenzzyklus'; hl=legend(['Zweip. AB 0,0,0';'Zweip. AB 1,1,0';'Zweip. AB 0.4,-1.0'],a=1); fchamp(rechteSeite4,0,linspace(-1.5,3,10),linspace(-1,1,10));
Code 0-2: Scilab-Script zu nichtlinear2c.
Übung
|
|
$ G\left(s\right) = \frac {1}{s^2+1} $
Formel 0-1: Lineares Übertragungsglied. \ &
|
|
$ R\left(s\right)=s+1 $
Formel 0-2: PD-Regler.
|
|
Bild 0-6: Dreipunktregler.
|
|
|
Musterlösung
//Zweipunkt-Regler: function f = rechteSeite2(t,y) u=0.0; if(y(1,1)>0.8) u=-1; elseif(y(1,1)<0.6) u=1; end f(1,1)=y(2,1); f(2,1)=-y(1,1)+u; endfunction delta=0.2; uu=-1.5; oo=1.5; c=uu:delta:oo q=size(c); yy = zeros(q(2),q(2)); vv = zeros(q(2),q(2)); i=1; k=1; for a=uu:delta:oo k=1; for b=uu:delta:oo ff=rechteSeite2(0.0,[a;b]) yy(i,k)=ff(1,1); vv(i,k)=ff(2,1); k=k+1; end i=i+1; end t = 0:0.005:20; y0 = [0,0]'; t0 = 0; y2 = ode("fix",y0,t0,t,rechteSeite2); y0 = [1.2,1.2]'; y3 = ode("fix",y0,t0,t,rechteSeite2); y0 = [-0.5,-1.5]'; y4 = ode("fix",y0,t0,t,rechteSeite2); plot(y2(1,:),y2(2,:),'red',y3(1,:),y3(2,:),'blu',y4(1,:),y4(2,:),'gre'); a = gca(); a.x_label.text = 't/s'; a.y_label.text = 'y'; a.title.text = 'Grenzzyklus'; hl=legend(['Start 0,0','Start 1.2,1.2','Start -0.5,-1.5'],a=1); fchamp(rechteSeite2,0,linspace(-2.0,2,15),linspace(-1.5,2.5,15)); // using rect as plot boundaries //champ(uu:delta:oo,uu:delta:oo,yy,vv,rect=[uu,uu,oo,oo],arfact=2) // using (x,y) to get boundaries //clf() //champ(-5:5,-5:5,rand(11,11),rand(11,11),2,[-10,-10,10,10],"021")
Code 0-3: Vektorplot und drei unterschiedliche AB für nicht linearen Regler.
Bild 0-7: Vektorplot und drei unterschiedliche AB für nicht linearen Regler.
Phasenraum Beispiele
|
Bild 0-8: Grenzstabiler linearer Schwinger.
Bild 0-9: Stabiler (gedämpfter) linearer Schwinger, D=0.5.
Bild 0-10: Instabiler (neativ gedämpfter) linearer Schwinger, D=-0.5.
|
Bild 0-11: Stabiler Grenzzyklus mit globalem Einzugsbereich bei linearem System mit Zweipunkt-Kennlinie als Regler.
function f = rechteSeite(t,y) u=0.2; if(y(1,1)>0.7) u=-0.2; end f(1,1)=y(2,1); f(2,1)=y(3,1); f(3,1)=-y(2,1)-2*y(3,1)+u; endfunction
Code 0-4: Stabiler Grenzzyklus mit globalem Einzugsbereich bei linearem System mit Zweipunkt-Kennlinie als Regler.
Bild 0-12: Nichtlineares grenzstabiles System.
function f = rechteSeite(t,y) u=0.2; if y(1,1)>0.7 u=-5 end f(1,1)=y(2,1); f(2,1)=-y(1,1) + u; endfunction
Code 0-5: Nichtlineares grenzstabiles System.
Bild 0-13: Zweipunktregler in gedämpftem System.
function f = rechteSeite(t,y) u=1; if y(1,1)>0.0 u=-1 end f(1,1)=y(2,1); f(2,1)=-y(1,1)-y(2,1) + u; endfunction
Code 0-6: Zweipunktregler in gedämpftem System.
|
Bild 0-14: Hochfrequente Schaltvorgänge bei Zweipunktregler in gedämpftem System.
|
Bild 0-15: Einführung einer Unempfindlichkeitszone, damit Dreipunktregler.
function f = rechteSeite(t,y) u=0; if y(1,1)>0.1 u=-1 elseif y(1,1)<-0.1 u=1 end f(1,1)=y(2,1); f(2,1)=-y(1,1)-y(2,1) + u; endfunction
Code 0-7: Einführung einer Unempfindlichkeitszone, damit Dreipunktregler.
Weitere Möglichkeiten nichtlinearer Regelungssysteme
|
Übung
|