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