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
@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
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
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
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
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
Hallo Labview, ist aber nicht ganz trivial, wenn man einen schnellen Einstieg benötigt. Gruß
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
Super, das werde ich mir morgen gleich mal anschauen.... :-) MfG, Sebi
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
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
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.
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
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
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
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
Hey. Mal ne Frage zu Region... Was bedeutet diese Eingabe? (Region: 100:10000)? Delay: 1 ??? Gruß Stefan
Das sind Laubholz Türen aus Spanien. Google "(Region: 100:10000)?" erster Hit. Cheers Detlef
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
Identifikation mit Matlab: http://www1.uni-hamburg.de/RRZ/Software/Matlab/Dokumentation/help/pdf_doc/ident/ident.pdf
Hallo zusammen, Ich habe die Messdaten eines Bodediagramms gespeichert und wollte bitte aus diesen Messdaten Pole und Nullstellen in Matlab extrahieren. Aus diesen Messdaten: -Freq ist die Frequenz -cs entspricht der Amplitude in dB -phis entspricht der Phase. -CTF5 ist der Dateiname Ich würde mich auf Ihre Hilfe sehr freuen Viele Grüße Thierry Assop
Hallo zusammen, kann jemand mir bitte helfen? @Detlef ich die Messdaten hochgeladen. Viele Grüße Thierry
Hi, der hier https://de.mathworks.com/matlabcentral/answers/106927-how-to-get-transfer-function-from-a-bode-plot-data vorgeschlagene Weg für die Identifikation einer Übertragungsfkt. aus einem Bodeplot funktioniert erwartungsgemäß für Deine Daten nicht. Deine Daten sind sehr speziell: - Phase levelt bei -90° für große w ? - Phase hat zwei Maxima/Minima, ungewöhnlich - Betrag hat fetten Überschwinger mit so einem Plateau ? Kann sein, dass dies nen physikalisch sinnvolles System ist, sicher bin ich da aber nicht. Vllt. könnte man dem auf die Spur kommen, wenn man die Extrema der Phase und des Betrags mit Polen/Nullen identifizieren würde. Das erfordert aber sehr viel mehr Aufwand als ich hier leisten kann, sry. Cheers Detlef clear load g:\interim\ctf5.txt w=ctf5(:,1); aa=ctf5(:,2); pp=ctf5(:,3); gain=10.^(aa/20); phase=pp*pi/180; response = gain.*exp(i*phase*pi/180); Ts = 0.1; % your sampling time %w=whz*2*pi; %convert Hz to rad/sec gfr = idfrd(response,w,Ts); sys=tfest(gfr,2); [mag,ph]=bode(sys,w); mag=squeeze(mag); ph=squeeze(ph); %magdb=20*log10(mag); semilogx(w,pp,w,20*log10(mag)) return
Hallo @Detlef, vielen Dank für den Code, es hängt sich zwar noch beim Befehl 'tfest', aber es ist schon was. Viele Grüße Thierry
Hallo Thierry ich kann dir noch den Tip "Vector Fitting" geben. Schaue mal unter dem Stichwort. Dort findest du eine mögliche Lösung für dein Problem. In der Beilage ist ein altes Elaborat von mir wo ich das vor einigen Jahren auch durchgespielt habe. Dein Grundproblem ist, dass du einen Ansatz brauchst, wie viele Pole und Nullstellen dein System überhaupt hat. Zwar könnte man in Matlab mit fminsearch optimale Koeffizienten finden, das geht aber nur wenn du einen "initial guess" hast.
> .. linearen MOSFET ...
aha. sehr schoen. Nur ist er nicht(!) linear.
Und bevor's vergessen geht. Das ganze Uebertragungsfunktionsgedoens
bricht zusammen wenn das System nichtlinear ist. Weil die Fourier
Tranformation nur fuer lineare Systeme gilt.
Erzaehl doch einfach mal was du willst. Ja, FET Stromquelle, schon klar.
Aber welchen Frequenzbereich ? Wenn der OpAmp schnell genug ist passt
das schon.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.