Beispiele für periodisch angeregte Regelsysteme
Beispiel 1 - PT1-Glied mit P-Regler
//s als Argument für ein Polynom definieren:
s = poly(0,"s");
//Übertragungsfunktion definieren:
//PT1-Glied: G0(s)=K/(1+Ts)
//P-Regler: R(s)=P
//Geschlossener Reglkreis: G(s)=RG/(1+RG)
P=3.0;
K=3.0;
T=10.0;
G = syslin('c',[P*K],[1+P*K+T*s]);
//Zeitbereich für die Simulation festlegen:
t=[0:0.1:50];
u=sin(t);
y=csim(u,t,G);
plot(t,u,'blu--',t,y,'gre');
xtitle("Untersuchung der dynamischen Stabilität zu G(s) ")
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'u(t),y(t)';
a.title.text = 'Untersuchung der dynamischen Stabilität bei P-Regler für PT1';
hl=legend(['u(t)';'y(t)'],a=1);
Code 0-1: P-geregeltes PT1-Glied mit Sinusanregung
Bild 0-1: Eingang u und Ausgang y für periodisch angeregte PT1-Strecke mit P-Regler.
class Modell
{
public:
int anzahl_gleichungen;
Modell()
{
anzahl_gleichungen=1;
}
int holeAnzahlGleichungen()
{
return anzahl_gleichungen;
}
double rechteSeite(double* y,double t, int zeile)
{
double P=3.0;
double K=3.0;
double T=10.0;
double u = sin(t);
switch(zeile)
{
//Rechte Seiten des DGLS:
case 0:
return -((1.0+P*K)/T)*y[0] + (P*K/T)*u;
break;
}
}
};
Code 0-2: Gleiches Beispiel in C++
cpp_pt1_pregler.zip - Download des Beispiels "periodisch angeregte PT1-Strecke mit P-Regler" in C++
Beispiel 2 - PT1Tt-Glied (PT1-Glied mit Totzeit) mit P-Regler
|
Bild 0-2: PT1Tt-Glied mit P-Regler und eingezeichneten Zwischengrößen
Bild 0-3: Herleitung der Simulationsgleichungen
Bild 0-4: Eingang w und Ausgang x für periodisch angeregte PT1Tt-Strecke mit P-Regler, ta=3s.
class Modell
{
public:
int anzahl_gleichungen;
double dt;
double* y_alt_merker;
double holeYalt(double talt)
{
if(talt<0.0)
return 0.0;
int index = (int)(0.5+talt/dt);
return y_alt_merker[index];
}
void setzeYalt(double wert, double takt)
{
if(takt<0.0)
return;
int index = (int)(0.5+takt/dt);
y_alt_merker[index] = wert;
}
Modell(double dt, double tmax)
{
this->dt = dt;
y_alt_merker = new double[1+(int)(tmax/dt)];
anzahl_gleichungen=1;
}
int holeAnzahlGleichungen()
{
return anzahl_gleichungen;
}
double rechteSeite(double* y,double t, int zeile)
{
double P=3.0;
double K=3.0;
double T=10.0;
double ta = 3.0;
double w = sin(t);
double x = holeYalt(t-ta);
double e = w - x;
double u = P*e;
switch(zeile)
{
//Rechte Seiten des DGLS:
case 0:
return -(1.0/T)*y[0] + (K/T)*u;
break;
case 1: //Spezialfall zum Auslesen von x:
return x;
break;
}
}
};
Code 0-3: Quellcode des Modells zu "periodisch angeregte PT1Tt-Strecke mit P-Regler".
cpp_pt1tt_pregler.zip - Download des Beispiels "periodisch angeregte PT1Tt-Strecke mit P-Regler" in C++