mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Matlab Sprungantwort Fitting


Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich suche nach einer Möglichkeit die Sprungantwort eines Systems
aufzuzeichnen, in meinen PC zu schieben und mittels Matlab die
Übertragungsfunktion bestimmen zu lassen.

Mit der ermittelten Übertragungsfunktion kann man dann ideal Regler
etc. auslegen.

Vielleicht kennt Ihr ja einen guten Ansatz...

Sebastian

Autor: ka-long (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Wie wärs mit einem Speicheroszilloskop ?

Gruß ka-long

Autor: Daniel Braun (khani)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sebi : Wieso so kompliziert. Lass Dir die Kurve anzeigen und wende
irgendein graphisches Verfahren zur Regler-Einstellung an.

Das gilt aber nur, wenn Du eben "bloß" einen Regler entwerfen
willst.

Wenn Du wirklich einen Übertragungsfunktion brauchst, musst Du erst mal
erzählen, welche Toolboxen Du zur Verfügung hast. Das macht einen
Unterschied ! ;-)
Wenn Du mehr Hilfe möchtest, dann kannst Du ja auch mal erzählen, von
welchem Typ Dein System ist bzw. was dein System ist (wenn Du den Typ
nicht näher spezifizieren kannst).

MfG, Daniel

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen Strom in einem linearen MOSFET digital regeln. Dafür
wäre die genaue Übertragungsfunktion sehr gut. Nur so kann man exakt
die Pole und Nullstellen....

Toolboxen für Matlab habe ich noch keine. Aber die kann man sich ja
kaufen. Bzw. eine 30 Tage Testversion ziehen.

MfG,
Sebi

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich werd dir morgen ein paar m-files hier rein stellen die ich dazu mal
geschrieben habe, komm leider heute nicht mehr an meinen Rechner. Die
System Identification Toolbox kann man sich meiner Meinung nach
schenken, mit den m-files bekomm ich genauso gute Ergebnisse, außerdem
sollten die auch unter Octave laufen. Eigentlich ist das sogar eine
Frechheit, was Mathworks sich für diese Toolbox fragt. Die eigentlichen
Algorithmen sind zwar ziemlich kompliziert aber lange bekannt und leicht
zu implementieren. Mathworks hat da nur ein paar Abfragen eingebaut um
das ganze DAU tauglich zu machen und ein scheußliches GUI
drumrumgebastelt, welches man besser erst gar nicht benutzt.
Falls ichs vergessen sollte: mail@thomas-winkel.de
Gruß,
Thomas

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

wäre super, wenn Du die m-Files mal posten würdest. Wie heißen den die
System Identifikation Tools beim Matlab???

Sebi

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oje, wenn es schon an sowas scheitert ...

http://www-ccs.ucsd.edu/matlab/pdf_doc/ident/ident.pdf

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alex,

danke für das PDF.

Hast Du noch einen guten Tip, wie ich die Sensor-Daten am einfachsten
in meinen PC stopfen kann. Es gibt doch bestimmt eine Hardware-
Schnittstelle zum PC die dann auch gleich mit Matlab verbunden ist....

Vielen Dank,
Sebi

Autor: Mirke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Labview, ist aber nicht ganz trivial, wenn man einen schnellen Einstieg
benötigt.
Gruß

Autor: Thomas Winkel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
hier die versprochenen Dateien:
lls.m der eigentliche identification Algorithmus (linear least
squares)
iae.m Fehlerkriterium (integral of absolute error) je kleiner desto
besser
rt2.m noch ein Fehlerkriterium je 1ser desto besser
identsys.m hab ich mal für ne spezielle Anwendung geschrieben, gucks
dir einfach mal an
umv1_.mat ein Datensatz aus einem reellen System zum testen

Alles ins Matlab work Verzeichniss entpacken, dann:
>> load umv1_
>> sys=identsys(umv1_)
Region: 100:10000
Delay: 1
>> step(sys)

Ach ja, d2c() macht dir ne Laplace Übertragungsfunktion draus (>> help
d2c).

Gruß,
Thomas

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, das werde ich mir morgen gleich mal anschauen.... :-)

MfG,
Sebi

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hab dein Programm ausprobiert, funktioniert soweit prima, danke dafür!
Nur einige Datensätze, speziell von schwach gedämpften Systemen kann er
bei mir nicht annähern, egal was für eine Ordnung ich einstelle. Der
macht dann meißtens eine e-Kurve draus die im Steaty State
übereinstimmt, oder aber ein instabiles System. Gibts dafür eine
Lösung?

Markus

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, das ist ein Problem von reellen Meßdaten. Diese sind oft verrauscht,
nicht immer gleichzeitig aufgenommen oder einfach zu schnell abgetastet.
Oft hilft filtern oder downsamplen. Schau mal in "identsys.m", da sind
einige Sachen ausdokumentiert, damit solltest du mal rumspielen. Aber
immer Input und Output in gleicher Weise behandeln! Wenn du
physikalischen Zugang zu einzelnen States hast kann es auch helfen dein
System in mehrere Blöcke aufzuteilen und diese einzeln zu
identifizieren. Das geht aber auch nur dann vernünftig, wenn diese
Rückkopplungsfrei sind.
Gruß, Thomas

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, nach einigen Versuchen hab ich jetzt ganz brauchbare Ergebnisse.
Ehrlich gesagt wusste ich bis jetzt noch gar nicht, dass man auf diese
Weise Modelle erstellen kann, feine Sache das.

Autor: Sebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

ich bin nicht gerade der Matlab-Held. Dein Programm funktioniert bei
mir. Allerdings ist mir noch nicht klar, wie ich meine eigene Kurve
fitten lassen kann.
Du läßt vermutlich Dein Figure 1 fitten.
Wo finde ich die Daten zu Deiner Figure 1? --> Da müßte ich dann nur
selbst meine Werte reinschreiben....

Vielen Dank,
Sebi

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber das geht doch wol selbst dann aus den oben gelisteten
Befehlen hervor wenn man überhaupt keine Ahnung von Matlab hat:
>> load umv1_
"lade (Datensatz) umv1_"

>> sys=identsys(umv1_)
"erstelle System aus Datensatz umv1_"

umv1_ ist eine 3*x Matrix, wobei die erste Zeile die Zeit, die zweite
Zeile das Eingangssignal und die dritte das Ausgangssignal ist.
Wie man die anderen Befehle anwendet kannst du dir in "identsys"
anschauen:
>> edit identsys
Aber ohne grundlegende Matlabkentnnisse gehts natürlich nicht.

Gruß,
Thomas

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

hab auch mal deine m-files runtergeladen. Brauch ich dafür auch eine
spezielle Toolbox? Bei mir kennt er die funktion tf(...) nicht.

cu Sven

Autor: Thomas Winkel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TF befindet sich in der "Control System Toolbox"

Gruß, Thomas

Autor: tito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

wie kann man in identsys mit nur zwei parameter m und n alle 6 theta 
ersetzen

oder besser gesagt ich gebe ihm was für ein sys ich brauche z.B PT1 oder 
PT2

Danke

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey.

Mal ne Frage zu Region...

Was bedeutet diese Eingabe? (Region: 100:10000)?
                             Delay: 1

???


Gruß Stefan

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sind Laubholz Türen aus Spanien.

Google "(Region: 100:10000)?" erster Hit.


Cheers
Detlef

Autor: phip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin durch Zufall auf diesen Eintrag gestoßen und habe ein ähnliches 
Problem wie der Themensteller. Ich arbeite zur Zeit an einem Versuch, 
bei dem ich die Parameter einer Temperaturregelstrecke herrausfinden 
soll,die über eine K8055 USB Schnittstelle eingelesen werden. Diese 
Parameter werden dann für die Kalibrierung eines PID-Reglers genutzt.

Ich arbeite erst seit 2 Wochen mit MATLAB, kann mir aber die 
Lösungsansätze noch nicht richtig vorstellen. Leider funktionieren die 
Links in diesen Thread nicht mehr.

Wenn mir jemand ein Bsp.Programm oder Hinweise geben könnte wäre ich 
sehr sehr dankbar ;)


Vorab vielen Dank fürs lesen!

Phip

Autor: Domingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.