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

7.2 Auswertung der Meßdaten zur Sprungantwort mit Scilab

Es wurden mit Hilfe von "BLUSCI7SPRUNG" (vergl. vorangehendes Unterkapitel) folgende Rohdaten gewonnen:

arr=[0, -124; 
68, -125; 
142, -117; 
201, -42; 
267, 48; 
333, 140; 
400, 120; 
467, 130; 
539, -27; 
572, 42]; 

Code 7.2-1: arrsprung4.sci - Rohdaten zur Sprungantwort.

  • Um die Daten leicht nach Scilab importieren zu können, schreibt das BlueJ-Projekt ein Scilab-Array heraus.
  • Die erste Spalte ist die Zeit in Millisekunden.
  • Die zweite Spalte ist die Position des grünen Kreises relativ zur Spiegel-/ Kamersabildmitte in Pixeln.
  • Um den Sprung über einen längeren Zeitraum aufnehmen zu können, wurde nicht bei Spiegelposition Null, sondern links davon begonnen.
  • 1. Nach 400 Millisekunden sind die Daten unbrauchbar (Umgebungslicht dringt auf die Kamera):
arr=[0, -124; 
68, -125; 
142, -117; 
201, -42; 
267, 48; 
333, 140]; 

Code 7.2-2: Daten reduziert.

  • 2. Der Sprungverlauf sollte bei Null losgehen, deshalb Offset von +124 auf die zweite Spalte addieren:
  • 3. Der Rückgang um 1 in der zweiten Zeile macht keinen Sinn und wird auf Null gesetzt.
arr=[0, -124; 
68, -125; 
142, -117; 
201, -42; 
267, 48; 
333, 140; 
400, 120; 
467, 130; 
539, -27; 
572, 42]; 

A = arr(:,1);
B = arr(:,2);
B=B+124;
B(2)=0;
C = [A(1:6,1),B(1:6,1)]
plot(C(:,1),C(:,2))

Code 7.2-3: Die bisheringen Schritte als Scilab-Befehle umgesetzt.

Sprungantwort (Winkel) als Plot.

Bild 7.2-1: Sprungantwort (Winkel) als Plot.

  • 4. Nicht die Übertragung von PWM auf Winkel, sondern von PWM auf Winkelgeschwindigkeit wird identifiziert:

Dies erfordert eine numerische Ableitung des Winkels:

Q=diff(C(:,2))    //Differenzbildung phi(i+1)-phi(i), man erhält einen Wert weniger!
R = diff(C(:,1))  //wie Q, jedoch um die Zeitdifferenzen zu bilden.
RR=Q./R           //Bilden von delta phi(i) / delta t(i)
CC=C(2:6,1)       //Zeitachse neu bilden
CC=CC-68          //Offset abziehen: Erster Wert t0 soll Null sein.
plot(CC,RR)       //Testplot.

Code 7.2-4: Numerische zeitliche Ableitung des Winkels

Sprungantwort (Winkelgeschwindigkeit) als Plot.

Bild 7.2-2: Sprungantwort (Winkelgeschwindigkeit) als Plot.

  • Grundlage für die nachfolgende Systemidentifikation soll eine Darstellung in Sekunden sein:
  • Zeit in Sekunden (CA)
  • Winkelgeschwindigkeit in Pixel pro Sekunden (CB)
CA=CC(:,1)
CB=RR(:,1)
CA=CA.*0.001
CB=CB.*1000
ZZ=[CA,CB]

Code 7.2-5: Umrechnung in Sekunden.

ZZ  = [0.    ,   0.;         
       0.074 ,   94.594595;  
       0.133 ,   1271.1864;  
       0.199 ,   1363.6364;  
       0.265 ,   1393.9394];

Code 7.2-6: Grundlage für die nachfolgende Systemidentifikation.