kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




DAY BY DAY zu RST 3MB -- Regelungs- und Steuerungstechnik für 3-MB und 3-EMo

(EN google-translate)

(PL google-translate)

Online-Unterricht ab 14.12.:

Die Online-Zeiten werden kurz gehalten und dort vorwiegend Aufgaben, bzw. Projektthemen ausgegeben und besprochen, die selbsttätig bearbeitet werden sollen. Der hierzu verwendete BBB-Link und ein Reservelink wurden Ihnen als E-Mail über Moodle zugesendet.

  • MB3 Regelungs- und Steuerungstechnik: Mittwoch 14.12., 21.12.,11.1., jeweils 10:00-11:00Uhr und länger nach Bedarf.
  • MT5 Simulations- und Regelungstechnik 2: Mittwoch 14.12., 21.12.,11.1., jeweils 11:30-12:30Uhr und länger nach Bedarf.
  • MMB Fehlertoleranter Softwareentwurf: Freitag 16.12.,23.12.,13.1., jeweils 10:00-11:00Uhr und länger nach Bedarf.
  • Masterkurs Künstlerische Forschung: Freitag 16.12.,23.12.,13.1., jeweils 11:30-12:30Uhr und länger nach Bedarf.

Mittwoch, 18.01.23 und Freitag 20.01.23 finden in Präsenz statt und dienen als E-Test-Prüfung, bzw. der Projektpräsentation.


Übersicht

  • Die vorliegende Seite stellt den Einstiegspunkt für diese Lehrveranstaltung dar und verzeichnet chronologisch die behandelten Inhalte.
  • Aber ein großer Teil der Inhalte findet sich nicht direkt hier, sondern die Seite hier verlinkt auf andere Bereiche von kramann.info.
  • Die Prüfung findet Semester begleitend in elektronischer Form statt (E-Test).

Überblick der zu behandelnden Themen

  1. Einführung in die Grundbegriffe der Regelungstechnik
  2. Labor: Aufbau eines autonomen Vehikels (esp32AV)
  3. Einführung in die Programmierung mit Java / Processing
  4. Labor: Regelungstechnische Versuche mit dem esp32AV
  5. Einführung in die Simulationstechnik mit Scilab
  6. Laplace-Transformation
  7. Lineare Übertragungsglieder
  8. Klassische Auslegungsmethoden für Regelkreise
  9. Polvorgabe zur Auslegung von Regelkreisen

Chronologisches Verzeichnis der im Verlauf des Semesters behandelten Themen


#V1 Mi 28.09.2022 VORLESUNG und ÜBUNGEN

Wie ist die Regelungstechnik entstanden?

Norbert Wiener - Anti-Aircraft Gun ... mit Filmmaterial -- youtube

Worum ging es in dem vorangehenden Film?

Grey Walter's tortoises

Weitere interessante Videos zu historischen Themen im Umfeld der Regelungstechnik, oder zur Erläuterung wichtiger Begriffe, die Sie bei Gelegenheit für sich selbst anschauen können:

Was ist Kybernetik? -- youtube
Norbert Wiener Wikipedia
Norbert Wiener - Men, Machines, and the World About Them (1950), siehe 18'20'' -- youtube
Unterschied - Regelung Steuerung erklärt anhand von zwei Beispielen
Autopilot -- youtube
Antiblockiersystem beim Auto (ABS), ab 4'33'' -- youtube

Zentrales Element in der Regelungstechnik ist die (negative) Rückkopplung

Eine negative Rückkopplung und damit ein Regelkreis lässt sich gut am Beispiel eines Fliehkraftreglers erklären:

Dampfmaschine mit Drehzahlregler Modell (Fliehkraftventil) -- youtube
Echte Dampfmaschine im Betrieb mit Fliehkraftregler -- youtube

Wo überall in der technischen Welt sind Ihnen Regelkreise aufgefallen?

Wo überall in nicht-technischen Bereichen tauchen Regelkreise auf?

Einführung in die Grundbegriffe der Regelungstechnik

62_Regelungssysteme/02_Heizregelkreis

Anwendungsbeispiele

Elektrokutsche, Personenkutschfahrt auf kramann.info
15_Einachser -- Einachser auf kramann.info

Hinweise zum Labor am Donnerstag 29.09. in IWZ140 FÜR ALLE GEMEINSAM von 12:30 bis 15:45Uhr

Beschreibung des verwendeten Systems

siehe: kramann.info/05_esp32AV

Warum wurde für jede Zweiergruppe ein Bausatz vorbereitet?

Warum ist ein solch komplexes System Gegenstand der Laborübungen?

Welche Bedeutung kommt der Simulationstechnik im Zusammenhang mit regelungstechnischen Aufgaben zu?

Beispiel menschliches Gehen:

50_Simulationstechnik/01_Systemtheorie/02_Modell

Übersicht der zu behandelnden Themen

  1. Einführung in die Grundbegriffe der Regelungstechnik
  2. Labor: Aufbau eines autonomen Vehikels (esp32AV)
  3. Einführung in die Programmierung mit Java / Processing
  4. Labor: Regelungstechnische Versuche mit dem esp32AV
  5. Einführung in die Simulationstechnik mit Scilab
  6. Laplace-Transformation
  7. Lineare Übertragungsglieder
  8. Klassische Auslegungsmethoden für Regelkreise
  9. Polvorgabe zur Auslegung von Regelkreisen

#L1 Do 29.09.2022 LABOR

siehe: Anleitung zum Bau des esp32AV

#V2 Mi 05.10.2022 VORLESUNG und ÜBUNGEN

  1. Wiederholung: Grundbegriffe der Regelungstechnik
  2. Grundlagen von Scilab
  3. Einführung Simulationstechnik
  4. Seerosenteich
  5. Numerische Integration nach Euler
  6. PT1-Übertragungsglied
  7. Fragen zum Labor?

1. Wiederholung: Grundbegriffe der Regelungstechnik

Elektrokutsche, Personenkutschfahrt auf kramann.info
15_Einachser -- Einachser auf kramann.info
62_Regelungssysteme/02_Heizregelkreis

2. Grundlagen von Scilab

37_Scilab

3. Einführung Simulationstechnik

50_Simulationstechnik/01_Systemtheorie
50_Simulationstechnik/01_Systemtheorie/02_Modell

4. Seerosenteich

50_Simulationstechnik/01_Systemtheorie/04_Seerosen

5. Numerische Integration nach Euler

50_Simulationstechnik/01_Systemtheorie/05_Eulerintegration
50_Simulationstechnik/01_Systemtheorie

6. PT1-Übertragungsglied

62_Regelungssysteme/03_Verzoegerungsglieder
62_Regelungssysteme/04_Laplace/02_PT1

7. Fragen zum Labor?

Im Unterricht entstanden:
Geschlossene Lösung

Bild 0-1: Geschlossene Lösung "Seerosenteich".

//Geschlossene Lösung:
tt=0:0.1:2;
A = exp(log(2)*tt);
plot(tt,A);

//Numerische Lösung:
A=1;
dt=0.1;

Aerg = [A];

for t=dt:dt:2
   Aneu = log(2)*A*dt + A;
   A    = Aneu; 

   Aerg = [Aerg,A]; //Sammeln der Ergebnisse
end

plot(tt,Aerg,'re-');

Code 0-1: Vergleich: geschlossene und numerische Lösung zum Seerosenteich

Plot zum Skript oben.

Bild 0-2: Plot zum Skript oben.

#L2 Do 06.10.2022 LABOR

... wie gehabt für alle gemeinsam verbindlich.

siehe: Anleitung zum Bau des esp32AV

#V3 Mi 12.10.2022 VORLESUNG und ÜBUNGEN

Übung 1 mit Scilab
  • Analysieren Sie den Quelltext zur numerischen Integration des "Seerosenteiches". Siehe weiter oben "Vergleich: geschlossene und numerische Lösung zum Seerosenteich"
  • Verändern Sie die Integrationsschrittweite, um deren Einfluss auf die Genauigkeit (Unterschied zur geschlossenen Lösung) zu untersuchen, wählen Sie nacheinander: dt=1, dt=0.1, dt=0.01, dt=0.001.
Übung 2 mit Scilab

Unter folgendem Link finden Sie ein Beispiel, wo Achsenbeschriftungen in einem Plot hinzugefügt werden. Analysieren Sie das Beispiel und fügen Sie danach dem Skript "Vergleich: geschlossene und numerische Lösung zum Seerosenteich" ebenfalls sinnvolle Achsenbeschriftungen hinzu.

50_Simulationstechnik/01_Systemtheorie/07_scilab, siehe "Code 1.7-1: Scilab-Makro euler.m zur Euler-Integration des Seerosenteich-Modells"
Verwendung einer Legende: 62_Regelungssysteme/13_Analyse/02_Nichtlinear
clear;
//Geschlossene Lösung:
dt=0.001;
tt=0:dt:2;
A = exp(log(2)*tt);
//plot(tt,A);

//Numerische Lösung:
A=1;

Aerg = [A];

for t=dt:dt:2
   Aneu = log(2)*A*dt + A;
   A    = Aneu; 

   Aerg = [Aerg,A]; //Sammeln der Ergebnisse
end

Ageschlossen = exp(log(2)*tt);

plot(tt,Aerg,'re',tt,Ageschlossen,'gr--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/Woche';
a.y_label.text = 'A/m^2';
a.title.text = 'Flächenwachstum eines Seerosenteiches';
hl=legend(['numerisch';'geschlossen'],a=1);

size(tt)
size(Aerg)

Code 0-2: Musterlösung

Übung 3 mit Scilab

Die Methode inv(...) ermöglicht es Matrizen zu invertieren und so lineare Gleichungssysteme zu lösen.

Beispielsweise kann folgendes LGS wie folgt mit Scilab gelöst werden:

$ \left[\begin{array}{cc}19 \\ 43\end{array}\right] = \left[\begin{array}{cc}1 & 2 \\ 3 & 4\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $

Formel 0-1: Lösung wäre: x=5 & y=7.



A=[1,2;3,4];
b=[19;43];

xy = inv(A)*b


Code 0-3: Lösung mit Hilfe von Scilab.

Lösen Sie folgende LGS mit Hilfe von Scilab:

$ \left[\begin{array}{cc}-26 \\ -12\end{array}\right] = \left[\begin{array}{cc}-1 & 2 \\ 3 & 4\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $

Formel 0-2: LGS2


$ \left[\begin{array}{cc}26 \\ 62 \\ 98\end{array}\right] = \left[\begin{array}{cc}1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9\end{array}\right] \cdot \left[\begin{array}{cc}x \\ y\end{array}\right] $

Formel 0-3: LGS2


Übung 4 mit Scilab

In nachfolgendem Kapitel wird statt der Euler-Integration ein vorgefertigter Integrator "ode" verwendet. Schaffen Sie es, den "Seerosenteich" mit dem "ode" numerisch zu integrieren?

  1. Vergleich geschlossene und numerische Lösung der DGL. zum "Seerosenteich"
  2. Modell eines Einmasseschwingers
  3. Beruhigen des Systems, erster Regler
  4. Disspative Systeme
zu 2.: 54_Kinetik/01_Newton/01_LinearSchwinger
zu 3. und 4.: 54_Kinetik/01_Newton/02_Daempfung
zu 2. und 3.: 01_Newton/04_ODE
clear;

dt=0.001;
tmax = 10;
tt=0:dt:tmax;

// m*x.. = -C*x
//
// <=>
// x. = v
// v. = (-C/m)*x
//Numerische Lösung:
C=1; // [N/m]
m=1; // [kg]
x=1;
v=0;

Xerg = [x];
Verg = [v];

for t=dt:dt:tmax
   // "Neuer Wert = Alter Wert + aktuelle Steigung * dt"
         xneu     = x          + v                 * dt;
         vneu     = v          + (-C/m)*x          * dt; 

   x = xneu;
   v = vneu;

   Xerg = [Xerg,x]; //Sammeln der Ergebnisse
   Verg = [Verg,v]; //Sammeln der Ergebnisse
end

plot(tt,Xerg,'re',tt,Verg,'gr--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

size(tt)
size(Xerg)

Code 0-4: Simulation des Feder-Masse-Schwingers

Plot zu obigem Skript.

Bild 0-3: Plot zu obigem Skript.

clear;

dt=0.001;
tmax = 10;
tt=0:dt:tmax;

// m*x.. = -C*x
//
// <=>
// x. = v
// v. = (-C/m)*x + (-D/m)*v
//Numerische Lösung:
C=1; // [N/m]
D=1.0; // [Ns/m]
m=1; // [kg]
x=1;
v=0;

Xerg = [x];
Verg = [v];

for t=dt:dt:tmax
   // "Neuer Wert = Alter Wert + aktuelle Steigung * dt"
         xneu     = x          + v                 * dt;
         vneu     = v          + ((-C/m)*x + (-D/m)*v) * dt; 

   x = xneu;
   v = vneu;

   Xerg = [Xerg,x]; //Sammeln der Ergebnisse
   Verg = [Verg,v]; //Sammeln der Ergebnisse
end

plot(tt,Xerg,'re',tt,Verg,'gr--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Dämpfer-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

size(tt)
size(Xerg)

Code 0-5: Lineares Dämpfungselement ergänzt.

#L3 Do 13.10.2022 LABOR

  • für alle.
  • Neu_Fortsetzung mit geregeltem System
05_esp32AV/02_Lenkregelung

Lösen Sie bitte Ihre Box auf, wenn das Fahrzeug fertig ist: Rück-Einsortieren der Bauteile.


#V4 Mi 19.10.2022 VORLESUNG und ÜBUNGEN


Beginn ab jetzt immer bis Semesterende um 09:00Uhr! (bis 11)


Themen

  1. Wiederholung und Vertiefung: Linearer Ein-Masse-Schwinger mit und ohne Dämpfung
  2. P (wie "Proportional") -Regler im Zeitbereich beim linearen Schwinger
  3. P-Regler im Zeitbereich beim esp32AV
  4. Grundlagen der Optimierung
  5. Entwurf eines adaptiven Systems, das den Regler beim esp32AV automatisch verbessert (Optimierung) als erste Vorbereitung auf die regelungstechnische Übung am Labortermin am 27.10.
betr. Optimierung, Heuristiken: 50_Simulationstechnik/06_Optimierung/02_Heuristiken
betr. Optimierung, modifiziertes Gradientenverfahren: 50_Simulationstechnik/06_Optimierung/03_ModifizierteG
m = 1.0;
C = 1.0;
D = 0.1;

function f = rechteSeite(t,y)
   x = y(1);
   v = y(2);
   f(1) = v;
   f(2) = (-C/m)*x + (-D/m)*v;
endfunction

t = 0:0.01:10;
y0 = [1,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 0-6: Lineare Feder-Masse-Schwinger mit Dämpfung, simuliert mit dem ode-Integrator.

m = 1.0;
C = 1.0;
D = 1.0;
P = 5.0;
xsoll = 3; //Sollwert für die Auslenkung 
vsoll = 0; //Sollwert für die Geschwindigkeit
function f = rechteSeite(t,y)
   x = y(1);
   v = y(2);
   f(1) = v;
   Fregler = P*(xsoll - x) + D*(vsoll - v);
   f(2) = (-C/m)*x + (1/m)*Fregler;
endfunction

t = 0:0.01:10;
y0 = [1,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 0-7: Lineare Feder-Masse-Schwinger mit Dämpfung und PD-Regler.

m = 1.0;
C = 1.0;
D = 1.0; //liefert FEHLER von 7.6701286
P = 5.0;
//D = 10.0; // liefert FEHLER von 3.9120228
//P = 50.0;
xsoll = 0; //Sollwert für die Auslenkung 
vsoll = 0; //Sollwert für die Geschwindigkeit
function f = rechteSeite(t,y)
   x = y(1);
   v = y(2);
   f(1) = v;
   Fregler = P*(xsoll - x) + D*(vsoll - v);
   f(2) = (-C/m)*x + (1/m)*Fregler;
endfunction

t = 0:0.01:10;
y0 = [1,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

FEHLER = sqrt(y(1,:)*(y(1,:)')) //Skalaprodukt des Vektors aller Auslenkungswerte mit sich selbst, davon die Wurzel (Fehlerquadrat)

plot(t,y(1,:)',t,y(2,:)');

Code 0-8: Hinarbeiten auf eine automatische Optimierung: Festlegen einer s.g. Fehlerfunktion. Hier: Summe der Quadrate der Auslenkung als Kriterium, wie schlecht der Regler arbeitet.

Optimierungsalgorithmus

(Modifiziertes Gradientenverfahren)

Man hat einen Parametersatz mit den Parametern P0...Pn-1.

  1. Berechne den Fehler Fakt für den aktuellen Startparametersatz.
  2. Variiere einen der Parameter ein wenig und berechne dafür den neuen Fehler Fneu
  3. Wenn Fneu <= Falt ist, behalte den aktuellen leicht veränderten Parametersatz und nimm Fneu als zukünftigers Falt, andernfalls mache die Änderung rückgängig.
  4. Wiederhole dann 2) und 3) immer wieder.
//Geschlossene Lösung:
tt=0:0.1:2;
AG = exp(log(2)*tt);
plot(tt,AG);

A0=1;
dt=0.1;

function f = rechteSeite(t,y)
   A = y(1);
   f(1) = log(2)*A;
endfunction

t = 0:dt:2;
y0 = A0;
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)','re--');

Code 0-9: Übung: Seerosenteich mit ode integrieren.

#L4 Do 20.10.2022 LABOR


Dieser Termin findet nicht statt!


...weil bereits alle weitestgehend fertig geworden sind.

#V5 Mi 26.10.2022 VORLESUNG und ÜBUNGEN

Themen

  1. Theorie zum PID-Regler
  2. Implementierung eines PID-Reglers beim linearen Schwinger mit Scilab im Zeitbereich
  3. Automatische Optimierung des Reglers mittels modifiziertem Gradientenverfahren
  4. Analyse des P-Reglers beim esp32AV
  5. Vorbesprechung zur Implementierung und Optimierung eines PID-Reglers beim esp32AV am morgigen Donnerstag

1. Theorie zum PID-Regler

Integral- (I) und Differential-Anteil der Regelabweichung stehen nicht einfach zur Verfügung, sondern müssen i.d.R. numerisch bestimmt werden.

Die zeitliche Änderung der Regelabweichung (D-Anteil), ergibt sich dabei aus der Differenz von e zwischen zwei Zeitpunkten, geteilt durch die Zeitschrittweite Delta-t:

$ e_D = \frac {e_\left(i+1\right) - e_\left(i\right)}{ \Delta t } $

Formel 0-4: Numerische Bestimmung des D-Anteils der Regelabweichung.


Der Integrative Anteil ergibt sich als Aufsummation der Regelabweichung über die Zeit:

$ e_I = \sum e_\left(i+1\right) \cdot \Delta t $

Formel 0-5: Numerische Bestimmung des I-Anteils der Regelabweichung.


Beim I-Anteil summieren sich auch verbleibende sehr kleine Regelabweichungen über die Zeit auf, so, dass auch eine noch kleine verbleibende Restabweichung ausgeregelt werden kann. Beim bloßen P-Regler hingegen ist dies nicht möglich. Zudem "beruhigt" der I-Anteil den Regelvorgang.

Der D-Anteil reagiert schon auf Tendenzen. Einem plötzlichen Ausbrechen kann damit schnell entgegengewirkt werden.

Werden D- bzw. I-Anteil zu hoch verstärkt, kann dies aber auch zu Instabilitäten des Reglers führen.

Preview: PID-Regler im Laplace-Bereich dargestellt, siehe: 62_Regelungssysteme/04_Laplace

2. Implementierung eines PID-Reglers beim linearen Schwinger mit Scilab im Zeitbereich

Um die numerische Berechnung des I- und D-Anteils für einen PID-Regler durchführen zu können, gehen wir noch einmal zurück auf die Simulation des linearen Schwingers mittels Euler-Verfahren. Ausgangskunkt ist "Code 1-4: Simulation des Feder-Masse-Schwingers ", s.o. Die Umsetzung erfolgt "live" im Unterricht.

clear;

dt=0.001;
tmax = 10;
tt=0:dt:tmax;

// m*x.. = -C*x + Freg
//
// <=>
// x. = v
// v. = (-C/m)*x + Freg/m
//Numerische Lösung:
C=1; // [N/m]
m=1; // [kg]
x=1;
v=0;

Xerg = [x];
Verg = [v];
e_alt = 0; // alte Regeldifferenz
for t=dt:dt:tmax
   x_soll = 0.2;
   P = 10.0;
   e = x_soll - x;

   eD = (e - e_alt)/dt;
   D  = 1.0;

   Freg = P*e + D*eD;

   // "Neuer Wert = Alter Wert + aktuelle Steigung * dt"
         xneu     = x          + v                 * dt;
         vneu     = v          + (  (-C/m)*x  + Freg/m  ) * dt; 

   x = xneu;
   v = vneu;

   Xerg = [Xerg,x]; //Sammeln der Ergebnisse
   Verg = [Verg,v]; //Sammeln der Ergebnisse

   e_alt = e;
end

plot(tt,Xerg,'re',tt,Verg,'gr--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

size(tt)
size(Xerg)

Code 0-10: PD-Regler beim Linearen Schwinger.

Vollständiger PID-Regler, numerisch umgesetzt:
clear;

dt=0.001;
tmax = 30;
tt=0:dt:tmax;

// m*x.. = -C*x + Freg
//
// <=>
// x. = v
// v. = (-C/m)*x + Freg/m
//Numerische Lösung:
C=1; // [N/m]
m=1; // [kg]
x=1;
v=0;

Xerg = [x];
Verg = [v];
e_alt = 0; // alte Regeldifferenz
e_summe = 0; //aufsummierte Regelabweichung, um die numerische Integration von e zu bilden
for t=dt:dt:tmax
   x_soll = 0.2;
   P = 10.0;
   e = x_soll - x;

   eD = (e - e_alt)/dt;
   D  = 1.0;

   eI = e_summe * dt;
   I  = 5.0;

   Freg = P*e + I*eI + D*eD; //vollständiger PID-Regler

   // "Neuer Wert = Alter Wert + aktuelle Steigung * dt"
         xneu     = x          + v                 * dt;
         vneu     = v          + (  (-C/m)*x  + Freg/m  ) * dt; 

   x = xneu;
   v = vneu;

   Xerg = [Xerg,x]; //Sammeln der Ergebnisse
   Verg = [Verg,v]; //Sammeln der Ergebnisse

   e_alt = e;
   e_summe = e_summe + e; //Aufsummieren der Regelabweichung
end

plot(tt,Xerg,'re',tt,Verg,'gr--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

size(tt)
size(Xerg)

Code 0-11: PID-Regler beim Linearen Schwinger.

PID-Regler beim Linearen Schwinger, plot.

Bild 0-4: PID-Regler beim Linearen Schwinger, plot.

3. Automatische Optimierung des Reglers mittels modifiziertem Gradientenverfahren

Die Faktoren, mit denen P-, I- und D-Anteil verstärkt werden, können kaum noch durch bloßes Probieren günstig eingestellt werden. Ein Optimierungsverfahren kann dies besser bewerkstelligen. Mehr als Ausblick soll auch dies live implementiert werden.

4. Analyse des P-Reglers beim esp32AV

Grundlage soll eine verbesserte Version für die P-Reglung sein: CaptureJavaRT2022_012regler_MODULAR005_OPT

CaptureJavaRT2022_012regler_MODULAR005_OPT.zip

Im Unterricht hier sollen die nötigen Programmiergrundlagen vermittelt werden, um selber D- und I-Anteil am Donnerstag implementieren zu können.

5. Vorbesprechung zur Implementierung und Optimierung eines PID-Reglers beim esp32AV am morgigen Donnerstag

  • Umsetzung und Test einer Echtzeitoptimierung für die Lenkregelung des esp32AV

#L5 Do 27.10.2022 LABOR


An diesem Termin findet eine regelungstechnische Übung statt:


Weiterentwicklung der Lenkregelung des esp32AV

Verwenden Sie wie gestern besprochen als Ausgangspunkt PC-seitig den folgenden Sketch:

CaptureJavaRT2022_012regler_MODULAR100_PID.zip ...Ausgangspunkt für die Entwicklung des PID-Reglers

Arbeitsschritte in dieser Übung:

  1. Prüfen Sie zunächst, ob Ihr Fahrzeug die erwartete IP-Adresse bekommt und ob die WiFi-Verbindung zwischen PC und Fahrzeug funktioniert.
  2. Vergessen Sie nicht beim PC das LAN-Kabel mit dem Access-Point zu verbinden. (Danach haben Sie kein Internet mit diesem PC!)
  3. Passen Sie zunächst die Regel-Parameter des P-Reglers so an, dass Ihr Fahrzeug in beide Richtungen die Kreisfahrt gut schafft.
  4. Implementieren Sie den I- und den D- Anteil und erhöhen vorsichtig deren Verstärkung. Fangen Sie dabei mit dem I-Anteil an.
  5. Zusatzaufgabe: Versuchen Sie eine automatische Optimierung der Parameter des PID-Reglers zu implementieren.

Hinweise:

  • Wenn Sie etwas neues entwickeln, erzeugen Sie am besten vorher eine Kopie des aktuellen Sketches mit anderer Nummer und führen die Entwicklungsarbeit in dieser Kopie fort.
  • Die anzupassenden Parameter für 2. finden Sie am Beginn des Sketches:
//Herausgezogene wichtige Parameter des Systems
boolean TAUSCHE_ANTRIEB_LINKS_RECHTS = false;
float VORTRIEB = 0.7;
float PROPORTIONALE_VERSTAERKUNG = 0.58;
float ASYMMETRIE = 1.01; // 1.0==voll symmetrisch, >1, LINKS STAERKER, <1 RECHTS STAERKER

Code 0-12: Anzupassende Parameter (Auszug des Processing-Sketches)

  • Die zu modifizierenden Programmzeilen für 3. finden Sie im Sketch beim Tab "Regler" in den Zeilen 47 bis 52.

Musterlösung PID-Regelung: siehe unten bei esp32AV/Lenkregelung.


#V6 Mi 02.11.2022 VORLESUNG und ÜBUNGEN

Themen

  1. Nachbesprechung der Übung am esp32AV mit PID-Regler
  2. Methoden zum Einstellen von Regelparametern (Preview)
  3. Eigenwerte

zu Thema 2: Methoden zum Einstellen von Regelparametern (Preview)

62_Regelungssysteme/08_Polvorgabe
62_Regelungssysteme/07_Einstellregeln

zu Thema 3: Eigenwerte

62_Regelungssysteme/04_Laplace/01_Eigenwerte

Simulationsgleichung in Matrixschreibweise für den linearen Masseschwinger ohne Dämpfung in Scilab:

function f = rechteSeite(t,y)
    A = [ 0 , 1 ; -1 , 0 ];
    f = A*y; 
endfunction

t = 0:0.01:10;
y0 = [1;0];
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 0-13: Simulationsgleichung in Matrixschreibweise

m = 1; // kg
C = 1; // N/m
D = 1; // Ns/m
function f = rechteSeite(t,y)
    A = [ 0 , 1 ; -C/m , -D/m ];
    f = A*y; 
endfunction

t = 0:0.01:10;
y0 = [1;0];
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)',t,y(2,:)');

Code 0-14: Simulationsgleichung parametrisiert und mit Dämpfung in Matrixschreibweise

Plot zu obigem Skript.

Bild 0-5: Plot zu obigem Skript.

#L6 Do 03.11.2022 LABOR


Dieser Termin findet nicht statt!


#V7 Mi 09.11.2022 VORLESUNG und ÜBUNGEN

Themen

  1. Wiederholung Eigenwerte
  2. Laplace Transformation
  3. Simulation im Laplace-Bereich

zu Thema 2: Laplace Transformation

62_Regelungssysteme/03_Verzoegerungsglieder
62_Regelungssysteme/04_Laplace

zu Thema 3: Simulation im Laplace-Bereich

62_Regelungssysteme/01_day_by_day
//s als Argument für ein Polynom definieren:
s = poly(0,"s"); 
//Übertragungsfunktion definieren:
G = syslin('c',[1],[1+2*s+s^2]);
t=[0:0.01:10]; 
u=ones(1,1001);
y=csim(u,t,G);
//plot2d(t,y);
//plzr(G);

// G(s) = 1 / (s^2 + 2s + 1)
// x/u = 1 / (s^2 + 2s + 1)
// x*(s^2 + 2s + 1) = u
// x.. + 2x. + x = u
// x.. = -x -2x. + u

// x.  = v
// v.  = -x -2v + u

A = [0,1 ; -1, -2];

function f = rechteSeite(t,y)
    u = 1;
    f = A*y + [0;1]*u; 
endfunction

t = 0:0.01:10;
y0 = [0;0];
t0 = 0;
y2  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)','gre',t,y2(1,:)','blu--');

Code 0-15: Simuilation des gleichen Systems erst mit csim (Laplace-Transformierte), dann mit ode.

Plot zu obigem Skript.

Bild 0-6: Plot zu obigem Skript.

#V8 Mi 16.11.2022 VORLESUNG und ÜBUNGEN

Durch einige Übungen soll Sicherheit im Umgang mit der Laplace-Transformation erlangt werden. Es geht hier weniger um ein tiefgreifendes Verständnis, als um die Gewöhnung an das entsprechende Schema.


Eigenwerte können auch über Nullstellen des Nenner einer Übertragungsfunktion bestimmt werden. Nutzen Sie diese Möglichkeit bei der vorangehenden Übung (Formel 0-1 bis 0-4).


Einige Übertragungsfunktionen im Zeitbereich als Grundlage für Übungen

$ \ddot x + 3 x = 4 u $

Formel 0-6: a\right)


$ \dot x - x = u $

Formel 0-7: b\right)


$ 3 \ddot x + \dot x = u $

Formel 0-8: c\right)


$ \ddot x + x = u $

Formel 0-9: d\right)


$ \dot x + 2 x = u $

Formel 0-10: e\right)


$ \dot x - 3 x = u $

Formel 0-11: f\right)


$ \dot x + 5 x = 5 u $

Formel 0-12: g\right)


  1. Schalten Sie a) und b) in Reihe und geben die Gesamtübertragungsfunktion im Laplace-Bereich an.
  2. Schalten Sie c) und d) in Reihe und geben die Gesamtübertragungsfunktion im Laplace-Bereich an.
  3. Schalten Sie e), f) und g) in Reihe und geben die Gesamtübertragungsfunktion im Lapalce-Bereich an.
  4. Bestimmen Sie mit Hilfe der jeweiligen Laplace-Transformierten die Eigenwerte zu jeder einzelnen Differentialgleichung von Hand und überprüfen Sie das jeweilige Ergebnis anschließend mit Hilfe von Scilab. Vermerken Sie auch die dynamischen Eigenschaften des jeweiligen Systems: stabil|grenzstabil|instabil, bzw. schwingungsfähig|nicht schwingungsfähig.
  5. Bestimmen Sie für a) und c) die Eigenwerte auch außerdem noch über die zugehörige Systemmatrix im Zeitbereich.
  6. Simulieren Sie die Sprungantwort mit Hilfe von Scilab von c) sowohl im Zeit (ode) - als auch im Laplace-Bereich (csim). Achten Sie auf Übereinstimmung der Simulationsergebnisse untereinander.

Notieren Sie sich die Aufgaben, bei denen Schwierigkeiten auftauchen, damit diese anschließend gemeinsam besprochen werden können.



auch besprochen:


62_Regelungssysteme/04_Laplace/03_PRegler -- Regeln für das rückgekoppelte System im Laplace-Bereich (s.u. dort)
//s als Argument für ein Polynom definieren:
s = poly(0,"s"); 
//Übertragungsfunktion definieren:
G = syslin('c',[1],[3*s^2+s]);
t=[0:0.01:10]; 
u=ones(1,1001);
y=csim(u,t,G);
//plot2d(t,y);
//plzr(G);


A = [0,1 ; 0, -(1/3)];

function f = rechteSeite(t,y)
    u = 1;
    f = A*y + [0;(1/3)]*u; 
endfunction

t = 0:0.01:10;
y0 = [0;0];
t0 = 0;
y2  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:)','gre',t,y2(1,:)','blu--');

Code 0-16: Ergebnis zur Aufgabe 5.

--- 2. Semesterhälfte ---

#V9 Mi 23.11.2022 VORLESUNG und ÜBUNGEN

Die Auslegungsmethoden nach Ziegler und Nichols

62_Regelungssysteme/07_Einstellregeln

Gemeinsam: Anwendung der Methode 2 auf das Beispiel csim1.sce, siehe Code 0-15 weiter oben.

Ergänzende Inhalte

Das numerische Integrationsverfahren nach Runge und Kutta -- 30_Informatik3/16_Nuetzliches/03_RungeKutta
Beispielumsetzung des zweiten Verfahrens nach Ziegler und Nichols mit Scilab
//s als Argument für ein Polynom definieren:
s = poly(0,"s"); 
//Übertragungsfunktion definieren:
G = syslin('c',[1],[1+2*s+s^2]);

//PID-Regler nach Ziegler und Nichols Methode 2 bilden:
K  = 12.8; //(16.8)
TN = 1.4;  //(0.4)
TV = 0.1; 

R = syslin('c',[K*TN*s + K + K*TN*TV*s^2],[TN*s]);

H = R*G;

Q = H / (1 + H);

t=[0:0.01:10]; 
w=ones(1,1001); //Sollwert w ist Input für Gesamtübertragungsverhalten
y=csim(u,t,Q);  //Gesamtübertragungsfunktion des geschlossenen Systems simulieren.
//plot2d(t,y);
//plzr(G);

plot(t,y(1,:)','blk');

Code 0-17: Beispielumsetzung des zweiten Verfahrens nach Ziegler und Nichols mit Scilab

Plot nach Einbau des PID-Reglers.

Bild 0-7: Plot nach Einbau des PID-Reglers.

Übung:
//s als Argument für ein Polynom definieren:
s = poly(0,"s"); 
//Übertragungsfunktion definieren:
G = syslin('c',[1],[1+1.7*s+s^2]);
t=[0:0.01:10]; 
u=ones(1,1001);
y=csim(u,t,G);
//plot2d(t,y);
//plzr(G);

plot(t,y(1,:)','blk');

Code 0-18: Variante, Entwerfen Sie einen passenden PI-Regler.

#V10 Mi 30.11.2022 VORLESUNG und ÜBUNGEN


BBB testen! -- wg. Schließzeiten


Themen

  1. Auslegung eines Regelkreises mit der Methode 1 nach Ziegler und Nichols
  2. Auslegung eines Regelkreises mittels Polvorgabe
  3. Weitere Übungen zu Laplace

1. Auslegung eines Regelkreises mit der Methode 1 nach Ziegler und Nichols
62_Regelungssysteme/07_Einstellregeln/02_Methode1
62_Regelungssysteme/07_Einstellregeln/01_Totzeit
2. Auslegung eines Regelkreises mittels Polvorgabe
62_Regelungssysteme/08_Polvorgabe
Schema bei Polvorgabe anhand eines Beispiels: m*x.. = -Cx + FA, FA ist eine Antriebskraft, mit der das System beruhigt werden soll und entspricht der Stellgröße u. Somit gilt dann: u=FA=-r1*x-r2*v, oder u=-[r1 r2] * [x v]'.

Bild 0-8: Schema bei Polvorgabe anhand eines Beispiels: m*x.. = -Cx + FA, FA ist eine Antriebskraft, mit der das System beruhigt werden soll und entspricht der Stellgröße u. Somit gilt dann: u=FA=-r1*x-r2*v, oder u=-[r1 r2] * [x v]'.

Studentische Lösung der Übung: m*x.. = -D*v, EWwunsch=-1+i und -1-i, D=1Ns/m

Bild 0-9: Studentische Lösung der Übung: m*x.. = -D*v, EWwunsch=-1+i und -1-i, D=1Ns/m

3. Weitere Übungen zu Laplace
Übung 1 -- Wandeln Sie jeweils um in den Zeit- bzw. Laplacebereich

1a)

$ \ddot x + 3 \dot x + x = 4 u $

Formel 0-13: Transformieren Sie die lineare Differentialgleichung in den Laplacebereich.


1b)

$ X s^3 + X s - 4 U s^2 = U $

Formel 0-14: Transformieren Sie in den Zeitbereich.


1c)

$ G\left(s\right) = \frac {s^2+1}{s^3+s} $

Formel 0-15: Transformieren Sie in den Zeitbereich. Eingang sei U & Ausgang sei X.


1d)

$ G\left(s\right) = \frac {s^2+1}{s^3+s} $

Formel 0-16: Transformieren Sie in den Zeitbereich. Eingang sei U & Ausgang sei X.


1e) Nachfolgend sind die Laplace-Transformierten einer Regelstrecke G(s) und eines Reglers R(s) dargestellt.

  • Bilden Sie das Gesamtübertragungsverhalten des offenen und des geschlossenen Regelkreises.
  • Transformieren Sie beide danach in den Zeitbereich.
  • Welcher Typ von Regler liegt hier vor?

$ G\left(s\right) = \frac {1}{s^2+5s} $

Formel 0-17: Regelstrecke


$ R\left(s\right) = \frac {1}{s} + 5 + s $

Formel 0-18: Regler



Übung 2 -- Umsetzung regelungstechnischer Systeme mit Scilab

Nehmen Sie sich erneut das System von 1e) vor.

2a)

  • Übertragen Sie R(s) und G(s) mit Hilfe von syslin() nach Scilab.
  • Ergänzten Sie Ihr Scilab-Skript so, dass aus R(s) und G(s) das Übertragungsverhalten H(s) des offenen und des geschlossenen Regelkreises Q(s) gebildet werden.

2b)

  • Vervollständigen Sie zwei Varianten des Scilab-Skripts aus 2a) so, dass ein
  • Einheitssprung auf den offenen und den geschlossenen Regelkreis simuliert wird.

2c)

Verdeutlichen Sie sich durch Zeichnen eines Blockschaltbildes:

  • Was ist jeweils Ein- bzw. Ausgang beim offenen und geschlossenen Regelkreis?


#V11 Mi 07.12.2022 Probe-E-Test Regel- und Steuerungstechnik 3-MB/3-EMo, Beginn: 09:00Uhr.

--- Schließung THB ---

#V12 Mi 14.12.2022 ONLINE VORLESUNG und ÜBUNGEN

srt_mb3_uebung1.pdf -- Übung 1, zu lösen bis 21.12.

V#13 Mi 21.12.2022 ONLINE VORLESUNG und ÜBUNGEN

Lösungen zum ersten Übungsblatt srt_mb3_uebung1.pdf:

Ü1

a) A=[0,1;-1,0], EW: +/- i.

b)

$ G\left(s\right)= \frac {1}{2s^2+2} $

Formel 0-19: Übertragungsfunktion des Systems


$ R\left(s\right)=K $

Formel 0-20: Regler


$ H\left(s\right)= \frac {2}{2s^2+2} $

Formel 0-21: Übertragungsfunktion des offenen Regelkreises


$ Q\left(s\right)= \frac {1}{s^2+2} $

Formel 0-22: Übertragungsfunktion des geschlossenen Regelkreises


$ lambda=+/- i \sqrt 2 $

Formel 0-23: EW des geschlossenen Regelkreises


c) Lösung mit Scilab: R=ppol([0,1;-1,0],[0;0.5],[-2+%i,-2-%i]), liefert: r1=8 und r2=8.

$ lambda=- \frac {1}{4} r_2 +/- i \sqrt \left(- \frac {1}{16} r_2^2+ \frac {1}{2}r_1+1\right) $

Formel 0-24: Ergebnis von Hand nach Einsetzen in p-q-Formel


Ü2

$ G\left(s\right)= \frac {1}{s^2+s} $

Formel 0-25: Laplacetransformierte zu 1a\right)


$ G\left(s\right)= \frac {s+1}{s^3+s^2+1} $

Formel 0-26: Laplacetransformierte zu 1b\right)


$ G\left(s\right)= \frac {s^2+s+1}{s^3} $

Formel 0-27: Laplacetransformierte zu 1c\right)



REGEL: Ist der Zählergrad einer Übertragungsfunktion größer als der Nenner, so ist das System instabil.


  • 2: EW zu a) in Scilabschreibweise: EW=[0,-1], ist nicht technisch stabil (grenzstabil)
  • 2: EW zu b) in Scilabschreibweise mit Scilab: spec([0,1,0;0,0,1;-1,0,-1]):
-1.4655712 + 0.i      
   0.2327856 + 0.792552i
   0.2327856 - 0.792552i

Code 0-19: Eigenwerte für b), System ist instabil, also auch nicht technisch stabil.

  • 2: EW zu c): dreifache Polstelle bei Null, also auch nucht technisch stabil, sondern grenzstabil.

3) ...man muss jeweils im Nenner den Zähler dazu addieren:

$ G\left(s\right)= \frac {1}{s^2+s+1} $

Formel 0-28: Laplacetransformierte des geschlossenen Regelkreises zu 1a\right)


$ G\left(s\right)= \frac {s+1}{s^3+s^2+s+2} $

Formel 0-29: Laplacetransformierte zu geschlossenen Regelkreises 1b\right)


$ G\left(s\right)= \frac {s^2+s+1}{s^3+s^2+s+1} $

Formel 0-30: Laplacetransformierte zu geschlossenen Regelkreises 1c\right)


$ G\left(s\right)=e^\left(-0.1s\right) \cdot \frac {1}{s^2+s+0.5} $

Formel 0-31: Formel für zweites Übungsblatt Ü4.



Neue Übungsaufgaben!:


srt_mb3_uebung2.pdf -- Übung 2, zu lösen bis 11.01.2023

V#14 Mi 11.01.2023 ONLINE VORLESUNG und ÜBUNGEN

Musterlösungen zu den Übungen vom 21.12. (srt_mb3_uebung2.pdf)

Übung 3a)
clear;

m = 2.0;
C = 2.0;
D = 0.5;

function f = rechteSeite(t,y)
   x = y(1);
   v = y(2);
   F=10;
   f(1) = v;
   f(2) = (-C/m)*x + (-D/m)*v + (1/m)*F;
endfunction

t = 0:0.01:10;
y0 = [0,0]';
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:),'gr',t,y(2,:),'re');


//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Schwinger';
hl=legend(['x/m'],a=1);

Code 0-20: Lösung zu Übung 3a)

Übung 3b)
clear;

m = 2.0;
C = 2.0;
D = 0.5;

//s als Argument für ein Polynom definieren:
s = poly(0,"s"); 
//Übertragungsfunktion definieren:
G = syslin('c',[1],[m*s^2+D*s+C]);
t=[0:0.01:10]; 
F=10*ones(1,1001);
y=csim(F,t,G);

plot(t,y(1,:),'blu--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x und v';
a.title.text = 'Linearer Feder-Masse-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

Code 0-21: Lösung zu Übung 3b)

Plot zu Übung 3a) und 3b) ineinander liegend, b) gestrichelt.

Bild 0-10: Plot zu Übung 3a) und 3b) ineinander liegend, b) gestrichelt.

Übung 3c)
clear;

dt=0.01;
tmax = 10;
tt=0:dt:tmax;

m=2; // [kg]
C=2; // [N/m]
D=0.5; // [Ns/m]
x=0;
v=0;

Xerg = [x];
Verg = [v];

for t=dt:dt:tmax
   F=10.0;
   // "Neuer Wert = Alter Wert + aktuelle Steigung * dt"
   xneu     = x          + v                 * dt;
   vneu     = v          + ((-C/m)*x + (-D/m)*v + (1/m)*F) * dt; 

   x = xneu;
   v = vneu;

   Xerg = [Xerg,x]; //Sammeln der Ergebnisse
   Verg = [Verg,v]; //Sammeln der Ergebnisse
end

plot(tt,Xerg,'blu--',tt,Verg,'blk--');

//siehe help axes_properties
a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x/m';
a.title.text = 'Linearer Feder-Masse-Dämpfer-Schwinger';
hl=legend(['x/m';'v/m*s^-1'],a=1);

Code 0-22: Lösung zu Übung 3c)

Plot zu Übung 3a) und 3c) ineinander liegend, c) gestrichelt.

Bild 0-11: Plot zu Übung 3a) und 3c) ineinander liegend, c) gestrichelt.

Übung 3d)
clear;

m = 2.0;
C = 2.0;
D = 0.5;

function f = rechteSeite(t,y)
   f(1) = sin(t);
endfunction

t = 0:0.01:6;
y0 = 0;
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:),'gr');

a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x';
a.title.text = 'dx/dt=sin(t)';
hl=legend(['x'],a=1);

Code 0-23: Lösung zu Übung 3d)

Plot zu Übung 3d)

Bild 0-12: Plot zu Übung 3d)

Variante zu 3d) mit x0=-1:
clear;

m = 2.0;
C = 2.0;
D = 0.5;

function f = rechteSeite(t,y)
   f(1) = sin(t);
endfunction

t = 0:0.01:6;
y0 = -1;
t0 = 0;
y  = ode(y0,t0,t,rechteSeite);

plot(t,y(1,:),'gr',t,sin(t),'re');

a = gca();
a.x_label.text = 't/s';
a.y_label.text = 'x';
a.title.text = 'dx/dt=sin(t)';
hl=legend(['x','sin(t)'],a=1);

Code 0-24: Variante zu Lösung zu Übung 3d) mit x0=-1

Plot zur Variante zu Übung 3d) mit x0=-1.

Bild 0-13: Plot zur Variante zu Übung 3d) mit x0=-1.

Übung 4a)

Die Totzeit beträgt hier 0,1s. Ansonsten handelt es sich um ein PT2 Übertragungsglied.

clear();

xtot=0;

function f=modell(y,t,dt)
       x=y(1,1);
       v=y(2,1);

       Kkrit = 9.7;       
       xsoll = 1.0;
       //e     = xsoll - x;
       e     = xsoll - xtot;
       u=Kkrit*e;
       
       f(1,1)=v;
       f(2,1)=-0.5*x-v+u; //angepasst!!!
endfunction

function yneu=ruku(y,t,dt)
       k1=modell(y,t,dt);
       k2=modell(y+0.5.*dt.*k1,t+0.5*dt);
       k3=modell(y+0.5.*dt.*k2,t+0.5*dt);
       k4=modell(y+dt.*k3,t+dt);
       yneu=y+dt.*(k1+2.*k2+2.*k3+k4)./6;
endfunction

tmax = 99.0;
dt   = 0.01;
schritte = ceil(tmax/dt);

yalt = [0,0]';
ysim = yalt;
t=0.0;
tt=t;

Ttot = 0.1; //angepasst!!!
anztot = round(Ttot/dt)
xtotarr = zeros(anztot,1);

for i=1:1:schritte
    yneu=ruku(yalt,t,dt);   
    yalt=yneu;
    ysim=[ysim,yalt];
    tt  =[tt,t];
    t=t+dt;

    xtot = xtotarr(modulo((i-1),anztot)+1);
           xtotarr(modulo((i-1),anztot)+1)=yneu(1);
end

plot(tt,ysim(1,:))

Code 0-25: Angepasstes Scilab-Skript.

Es ergibt sich durch Probieren: Kkrit=9.7 und damit Tkrit=99s/49=2.02s Dementsprechend bekommt man als Parameter für die verschiedenen Regler:

P-Regler:    K=0.5*Kkrit=4.85
PI-Regler:   K=0.45*Kkrit=4.365 und TN=0.85*Tkrit=1.717
PID-Regler:  K=0.6*Kkrit=5.82   und TN=0.5 *Tkrit=1.01  und TV=0.12*Tkrit=0.2424

Code 0-26: Parameter für die verschiedenen Regler

Übung 4b)

Achtung Fehler in Aufgabenstellung. Statt EW -1+0.5i und -2-0.5i geht entweder -1+0.5i und -1-0.5i oder -2+0.5i und -2-0.5i.


  • Lösung mit Scilab:

$ \ddot x=-\dot x - \frac {1}{2}x +u $

Formel 0-32: DGL mit Eingang u zur Übertragungsfunktion in der Aufgabe.


$ A=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] $

Formel 0-33: Zugehörige Systemmatrix.


$ B=\left[\begin{array}{cc}0 \\ 1\end{array}\right] $

Formel 0-34: Zugehörige Eingriffsmatrix.


R=ppol([0,1;-0.5,-1],[0;1],[-2+0.5*%i,-2-0.5*%i])

Code 0-27: Lösung mit Scilab, liefert R=[3.75,3]

R=ppol([0,1;-0.5,-1],[0;1],[-1+0.5*%i,-1-0.5*%i])

Code 0-28: Lösung mit Scilab, Variante, liefert R=[0.75,1]

  • Lösung von Hand zu Variante 2 mit EW: -1+0.5*%i und -1-0.5*%i

$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right]+\left[\begin{array}{cc}0 \\ 1\end{array}\right] \cdot u $

Formel 0-35: Dynamische Gleichung in Matrixform.


$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5 & -1\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right]-\left[\begin{array}{cc}0 \\ 1\end{array}\right] \cdot \left[\begin{array}{cc}r1 & r2\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right] $

Formel 0-36: Dynamische Gleichung in Matrixform mit eingebautem Zus \tan dsregler u=-Ry.


Bitte [r1 & r2] als [r1,r2] lesen (Formatierungsfehler).

$ \left[\begin{array}{cc}\dot x \\ \dot v\end{array}\right]=\left[\begin{array}{cc}0 & 1 \\ -0.5-r1 & -1-r2\end{array}\right] \cdot \left[\begin{array}{cc}x \\ v\end{array}\right] $

Formel 0-37: Dynamische Gleichung in Matrixform


...mit eingebautem Zustandsregler

-BR mit A zu A* zusammengefasst.

det|A* - lambda*E|=0

Code 0-29: ...gilt es jetzt zu lösen.

Es ergibt sich:

$ lambda12=- \frac {1}{2}- \frac {1}{2}r_2+/-i \cdot \sqrt \left( \frac {1}{2}+r1- \frac {1}{4}\left(1+r_2\right)^2\right) $

Formel 0-38: Anwendung der p-q-Formel.


...liefert:

-0.5-0.5r2=-1 => r2=1
in Wurzel eingesetzt ergibt:
1/4 = 1/2 +r1 -1 => r1=3/4

Code 0-30: Bestimmung der Werte von r1 und r2.

Übung 4c)
  • spec(A) liefert: -0.5 +/- 0.5*i => gerade so technische stabil.
  • Die Eigenwerte zu A* sind deutlich technisch stabil.
--- Öffnung THB ---

V#15 Mi 18.01.2023 E-Tests Regel- und Steuerungstechnik 3-MB/3-EMo