www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Übertragungsfunktion aus sweep bestimmen


Autor: Christoph Gro (butterblume)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Zuerst einmal ein großes Lob an dieses Forum. ich habe mich gerade erst 
angemeldet aber bereits häufig gute Tips gefunden.

Nun habe ich ein Problem, für das ich leider keine Lösung finde.

Ich habe eine Messreihe aufgenommen. Dabei habe ich ein mechanisches 
System mit einem Sinus-Sweep-Signal angeregt. Gemessen habe ich den 
Ausgang des Systems. Mein Ziel ist es jetzt aus den Messwerten die 
Übertragungsfunktion zu bestimmen die nach möglichkeit stabil und 
invertierbar sein sollte.

Zuerst habe ich die "System identification Toolbox" von Matlab 
verwendet. Diese Toolbox liefert mir auch viele schöne arx oder n4sid 
Modelle. leider jedoch alle nicht stabil und invertierbar.

Mein Gedanke war jetzt die Methode der kleinsten Fehlerquadrate 
anzuwenden. Hier hört es leider mit meinem Verständnis ein wenig auf. 
Was muss ich denn genau annähern?

Ich habe versucht G=fft(Ausgang)./fft(Eingang) dann erhalte ich einen 
Vektor mit zahlreichen komplexen Einträgen. Kann ich aus diesen 
Einträgen die Übertragungsfunktion annähern?

Viel habe ich schon darüber gelesen, dass man das System zur 
Systemidentification lieber mit einem Rechtecksignal anregen sollte. Das 
ist mir leider nicht möglich, da so das System zerstört werden würde.

Vielleicht könnt Ihr mir weiterhelfen

Autor: Christoph Gro (butterblume)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soo... ich habe nochmal ein bisschen weiter versucht und jetz mit der 
Methode der kleinsten Fehlerquadrate folgende Übertragungsfunktion 
angenähert:

Transfer function:

0.01995 z^5 + 0.0231 z^4 + 0.1962 z^3 + 0.06428 z^2 + 0.02985 z + 
0.001591
------------------------------------------------------------------------ 
--
      z^5 - 0.815 z^4 + 0.6934 z^3 - 0.4193 z^2 - 0.2116 z + 0.1136

Sampling time: 5e-005

Daraus ergeben sich folgende Polstellen und Nullstellen

poleG =

   0.0610 + 0.9150i
   0.0610 - 0.9150i
  -0.4579
   0.7656
   0.3852


zeroG =

  -0.4150 + 3.0384i
  -0.4150 - 3.0384i
  -0.1341 + 0.3527i
  -0.1341 - 0.3527i
  -0.0595

Mein Problem ist jetzt nur, dass ich die Funktion weder kausal 
invertieren kann noch ist sie stabil. Gibt es irgendwie noch einen 
anderen Trick wie ich diese Funktion stabil gestalten kann bzw. 
invertieren kann?

hoffentlich kann mir jemand helfen.

mit freundlichen Grüßen
Christoph

Autor: Christoph Gro (butterblume)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzw. wie müsste ich meinen Regler gestalten um diese Regelstrecke zu 
betreiben?

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.