|
|
Parameter aus PT2-Sprungantwort |
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2013, 13:36
Titel: Parameter aus PT2-Sprungantwort
|
|
Hallo,
ich habe ein sehr ähnliches Problem, wie in http://www.gomatlab.de/parameter-au.....ort-ermitteln-t26990.html schon besprochen wurde.
Allerdings stellt sich mir die Frage ob ich die Parameter auch mit Matlab berechnen kann. Habe es schon mit der curve fitting toolbox versucht, aber Ergebnis war mehr als unbefriedigend..
Falls es zu ecICP keine vernünftige Alternative gibt, habe ich noch eine Frage zur Einbindung meiner Messdaten. Ich hab die Daten in .mat-Dateien abgespeichert, aber ecICP erkennt das nicht, hat da jemand einen Tipp für mich?
Danke!
Gruß
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2013, 18:47
Titel:
|
|
Hallo,
Zitat: |
Habe es schon mit der curve fitting toolbox versucht, aber Ergebnis war mehr als unbefriedigend. |
Was genau hast du versucht und inwiefern war es unbefriedigend?
Nichtlineare Regression ist häufig auf ausreichend gute Startwerte angewesen, damit eine Konvergenz zum globalen Minimum erfolgt.
Grüße,
Harald
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2013, 18:58
Titel:
|
|
Ich habe meine Messdaten ins cftool importiert und versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren..
ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte?
Folgende Fehlermeldung erhalte ich beim fitting:
Fit could not be computed due to error:
Complex value computed by model function, fitting cannot continue.
Try using or tightening upper and lower bounds on coefficients.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2013, 19:07
Titel:
|
|
Hallo,
Zitat: |
versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren.. |
Bitte genau beschreiben, was du ausgewählt hast.
Zitat: |
ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte? |
Unter "Fit Options"
Zitat: |
Folgende Fehlermeldung erhalte ich beim fitting: |
Testdaten wären hilfreich, um das nachstellen zu können.
Grüße,
Harald
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2013, 19:22
Titel:
|
|
Harald hat Folgendes geschrieben: |
Hallo,
Zitat: |
versucht, die Lösung einer Differentialgleichung 2. Ordnung zu parametrieren.. |
Bitte genau beschreiben, was du ausgewählt hast.
type of fit: custom equations->general equations, und dort dann die von Matlab berechneten Lösung der Differentialgleichung T^2*y''+2*d*T*y'+y=K*u , wobei ich u=1 gesetzt habe, da es der eingang ist, und das ist ein Einheitssprung.
Zitat: |
ich habe allerdings nirgends entdeckt, wo man Startwerte angeben könnte/sollte? |
Unter "Fit Options"
Ah , hab ich gefunden, werde versuchen dort etwas anderes auszuprobieren.
Zitat: |
Folgende Fehlermeldung erhalte ich beim fitting: |
Testdaten wären hilfreich, um das nachstellen zu können.
Meine Testdaten habe ich angehängt.
Grüße,
Harald |
Danke!
Beschreibung: |
|
Download |
Dateiname: |
Testdaten.zip |
Dateigröße: |
99.69 KB |
Heruntergeladen: |
708 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2013, 19:33
Titel:
|
|
Hallo,
Zitat: |
und dort dann die von Matlab berechneten Lösung der Differentialgleichung T^2*y''+2*d*T*y'+y=K*u |
Um das als Fehlerquelle auszuschließen, schreibe bitte genau, was du eingetragen hast.
Grüße,
Harald
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2013, 20:21
Titel:
|
|
ich habe folgende Gleichung eingegeben:
K + (K*(d - (d^2 - 1)^(1/2)))/(2*exp((t*(d + (d^2 - 1)^(1/2)))/T)*(d^2 - 1)^(1/2)) - (K*(d + (d^2 - 1)^(1/2)))/(2*exp((t*(d - (d^2 - 1)^(1/2)))/T)*(d^2 - 1)^(1/2))
Erhalten habe ich diese in matlab durch den Befehl:
dsolve('T^2*D2y+2*d*T*Dy+y=K','y(0)=0','Dy(0)=0','t')
Wie gesagt, das System ist eine Sprungantwort, somit habe ich u=1 gesetzt(Einheitssprung).
Das müsste doch so passen oder?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2013, 21:39
Titel:
|
|
Hallo,
die Form, die von MATLAB ausgespuckt wird, beinhaltet keine Schwingungsterme (implizite Annahme d^2-1 > 0).
Ich würde es mit einem solchen Ansatz versuchen:
y = A*exp(-D*t)*sin(C*t) +B*exp(-D*t)*cos(C*t)+ E
mit A = 0.8, B = 0.5, C = 16, D = -1, E = 0 als Startwert kommt was ganz manierliches heraus. Am Anfang passt es zwar nicht sehr gut, aber eben am Ende sehr gut. Wenn du das ändern möchtest, könntest du Gewichte (Weights) vergeben, die Datenpunkte am Anfang höher gewichten.
Einen anderen Ansatz würde ich in Response Optimization (Simulink Design Optimization) sehen. Damit ist meine Erfahrung aber recht begrenzt.
Grüße,
Harald
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.07.2013, 21:58
Titel:
|
|
Ja das ist schon mal recht gut, danke!
Leider ist v.a. der Anfang wichtig, sodass ich das mit der Gewichtung noch machen muss.
Wie bist du denn auf den Ansatz y = A*exp(-D*t)*sin(C*t) +B*exp(-D*t)*cos(C*t)+ E gekommen? Das schaut mir nämlich nicht nach einer allg. Lösung der Diff'gl. 2. Ordnung aus und ich muss das auf jeden Fall darauf rückführen..
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 23.07.2013, 22:12
Titel:
|
|
Hallo,
sin und cos können auf komplexwertige Exponentialfunktionen zurückgeführt werden. Das ist im Grunde nichts anderes als
Grüße,
Harald
|
|
|
Melissa |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 19.11.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.07.2013, 12:02
Titel:
|
|
|
|
|
Hallo jimbo77.
1) Identifikation per Parameterfit habe ich in der Vergangenheit auf mehrmals versucht. Meine Erfahrung: funktioniert nur bei einfachsten Systemen.
2) ecICP erkennt .mat Files nicht, aber: Speichere in Matlab deine Daten als ASCII ab und schon funktioniert es.
Füge zusätzlich auf jeden Fall die Anregung (auch wenn es nur ein Sprung ist) hinzu, dann kommt sofort etwas Vernünftiges heraus.
Allerdings representieren deine Messdaten kein System 2.Ordnung.
Weshalb schreibst Du, dass gerade der Anfang für dich wichtig ist? Warum nicht das Ende? Warum nicht der mittlere Bereich? Warum nicht alles?
Ich hab's mit ecICP berechnet. Etwas Sinnvolles ergibt sich nur, wenn man mindestens 3.Ordnung zuläßt. Bei einem Modell 4.Ordnung ergibt sich das in der beigefügten Grafik gezeigte Ergebnis. Ich würde das als sehr gut einstufen.
Außerdem aufpassen (der Anfang ist dir ja wichtig): Beginnt die sprungförmige Anregung zum Zeitpunkt 0 oder etwas später, wenn das Anfangsgezappel vorbei ist?
Bezüglich einer echten Alternative zu ecICP kann ich keinen Rat geben.
Grüße,
Melissa
Beschreibung: |
|
Download |
Dateiname: |
gomatlab_model.png |
Dateigröße: |
16.87 KB |
Heruntergeladen: |
1605 mal |
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 24.07.2013, 13:14
Titel:
|
|
Es gibt doch in MatLab die ARX und ARMAX Modelle...damit sollte das auch gehen. Ich würde aber zunächst mal noch die Sprungantwort mit einem Tiefpass filtern um die hochfreq. Störung zu minimieren.
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.07.2013, 19:25
Titel:
|
|
Hallo,
danke an euch für eure Tipps!
@Melissa:
Das mit ecICP hat sich erledigt, da ich keine Lizenz dafür habe.
Habe jedoch in Matlab die System Identification Toolbox entdeckt, mit der man sehr gut die Sprungantwort als Übertragungsfunktion annähern kann.
Generell ist alles wichtig an der Messung..d.h. je genauer man das Verhalten darstellen kann, desto besser wärs!
Die Antwort beginnt wohl erst nach dem Gezappel...
Wie du schon gesagt hast, erziele auch ich mit einem System 4.Ordnung ein sehr gutes Ergebnis.
Was hat dir denn ecICP als Regler für dieses System vorgeschlagen?
Danke!
|
|
|
Melissa |
Forum-Anfänger
|
|
Beiträge: 21
|
|
|
|
Anmeldedatum: 19.11.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.07.2013, 16:43
Titel:
|
|
|
|
|
Hallo Jimbo77
ich dachte Du hast ecICP ? ! --> nach Deiner Erfahrung mit ecICP und MAT files zu urteilen (1. Post).
Aber nun gut, das ist schon "witzig"... Kaum macht man es richtig (Vorgabe 4. Ordnung), schon funktioniert es (auch mit anderen Tools).
Für den Regler kann / möchte ich Dir MEINE Lösung nicht geben, da Du keine Anfoderungen an die Regelkreisdynamik formuliert hast.
Zudem:
Das Problem mit "keinen Zugriff auf die Lizenz" habe ich für mich gelöst, daher bitte ich zu verstehen, wenn die weitergehende Hilfe meinerseits nicht darin besteht,
Dir die Struktur und Parameter des Reglers zu übergeben, sondern Hinweise, wie Du Deine Aufgaben lösen könntest.
Meine Hinweise zur Selbsthilfe:
Deine Strecke (4. Ordnung) ist ein System mit Ausgleich. Um stationäre Genauigkeit zu erhalten - auf sprungförmige Sollwertänderungen - brauchst Du einen Regler mit I-Anteil.
Bei rampenförmigen Sollwertänderungen bräuchtest Du einen Doppel-I-Anteil.
Bei mittleren bis hohen Anfoderungen an das Störverhalten Deines Regelkreises,
ist der Weg aus Deinem anderen Thread "aus Übertragungsfunktion Regler entwerfen" nicht geeignet (sofern ich Deinen Ansatz richtig verstehe).
Weiterhin viel Spaß und Grüße,
Melissa
|
|
|
jimbo77 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 17:28
Titel:
|
|
Das verstehe ich natürlich, trotzdem danke für deine Hilfe!
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|