kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29
kramann.info
© Guido Kramann

Login: Passwort:




Umsetzung als SIL (Software-in-the-Loop)

(EN google-translate)

(PL google-translate)

Zur Umsetzung des Reglers mit Beobachter mit einem Software-Regler auf der Grundlage von Scilab, muß das, was zuvor simuliert wurde in Einzelschritten ausgeführt werden.

Grundidee: Es wird zyklisch ein Zeitschritt der Simulation getriggert durch die Hardware ausgeführt und der aktuelle wert der Regelabweichung von außen übergeben.

Umsetzung unter Verwendung der vorhandenen Simulation: Für einen Zeitschritt wird eine kurze Simulation durchgeführt, der folgendes von außen, d.h. von der Hardware, vorgegeben wird:

  1. Dauer eines Zeitschritts, gleichbedeutend mit der Dauer der Simulation
  2. Systemzustand aus der letzten Simulation als Anfangsbedingungen
  3. Reales phi
//######## INITIALISIERUNG ########
clear();

R=[0.1028838, 0.0075232, 0.0001731, 0.4205213];

function f = rechteSeite(t,y)
    sim_phi    = y(1,1);  //Pixelposition
    sim_omega  = y(2,1);  //Pixelgeschwindigkeit "w"
    sim_alfa   = y(3,1);  //Pixelbeschleunigung
    sim_intphi = y(4,1);  //Integral von Phi
    
    a=36.0;
    b=326.0;
    c=115509.0;    
    
    u = -R*y; //simuliertes y als Grundlage für u.

    usim = u + 0.01*(real_phi-sim_phi); //Abweichung zw. realem und simul. phi zurückführen.

    f(1,1) = sim_omega;
    f(2,1) = sim_alfa;
    f(3,1) = -a*sim_alfa-b*sim_omega+c*usim;
    f(4,1) = sim_phi;
endfunction

//######## INPUT ########
//Vorgaben von aussen, um es leichter von Java aus handhaben zu können, nur ein Zeilen-Vektor:
EINGABE = [100,0.1,100,0,0,0];

real_phi = EINGABE(1,1);    //von aussen vorgeben, eigentlich ist das hier die Regelabweichung von der aktuellen Ballposition.
dauer    = EINGABE(1,2);    //Zeitschrittweite des zyklischen Aufrufs
y0       = EINGABE(1,3:6)'; //Endzustand aus letzter Simulation

//######## Simulation ########
//Testweise wie in der Messung simulieren:
t=linspace(0,dauer,10);
t0=0.0;
y=ode(y0,t0,t,rechteSeite);
anz=size(y);
yout=y(:,anz(1,2))';

u=-R*y;
anz=size(u);
//uout = u(anz(1,1),anz(1,2));
uout=mean(u); //Mittelwert aus der kurzen Simulation.

//######## OUTPUT ########
//Nach der Simulation nach Aussen zurueckgeben:
AUSGABE=[uout,yout];

//wird das reale system ausgeregelt?:
plot(t,y(1,:));  //sim_phi

Code 0-1: Illustration des Vorhabens mittels eines Quelltextes.

blusci105.zip - Neue Version des Projekts blusci105.
Aufgaben
  1. Bringen Sie BLUSCI8SCILAB in blusci105 zum laufen (starten8 verwenden).
  2. Gehen Sie zurück zum Schritt "Systemidentifikation" und verwenden Sie die Regelstrecken-Identifikation bei Annahme eines schwingungsfähigen Systems.
  3. Führen Sie alle nachfolgenden Schritte bis einschließlich zur Implementierung in BLUSCI8SCILAB aufgrund dieser veränderten Identifikation durch und vergleichen Sie die Güte des Regelergebnisses zwischen den beiden Modellvarianten.
  4. Legen Sie den Regler mit Hilfe der Polvorgabe so neu aus, dass er noch schneller und gleichzeitig stärker gedämpft ist. Nutzen Sie den möglichen Bereich des PWM-Signals dabei voll aus, bzw. gehen testweise sogar darüber hinaus.
  5. Führt es zu einem systematischen Fehler, dass das reale System tatsächlich nicht auf Null geregelt wird, sondern der Sollwert ständig wandert? - Wenn ja, kann dieser Fehler durch eine Transformation des Systemzustandes behoben werden?
  6. Welchen Einfluß hat es, dass das PWM-Signal im Modell als kontinuierlich behandelt wird, in Wahrheit aber nur eine sehr begrenzte Anzahl an diskreten Werten annehmen kann? - Finden Sie eine Möglichkeit mit einem Arduino-Micro-Board ein feiner aufgelöstes PWM-Signal zu erzeugen und implementieren Sie diese Variante.
  7. Schauen Sie sich die Scilab-Hilfe zur Auslegung eines optimalen Reglers nach Riccati an und setzen Sie diese Art Regler um.
Testlauf mit Zustandsregler.

Bild 0-1: Testlauf mit Zustandsregler.


Testlauf mit Zustandsregler.