Forum: Digitale Signalverarbeitung / DSP / Machine Learning Matlab Sprungantwort Fitting


von Sebi (Gast)


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

von ka-long (Gast)


Lesenswert?

Hi,

Wie wärs mit einem Speicheroszilloskop ?

Gruß ka-long

von Daniel B. (khani)


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

von Sebi (Gast)


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

von Thomas Winkel (Gast)


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

von Sebi (Gast)


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

von Alex (Gast)


Lesenswert?

Oje, wenn es schon an sowas scheitert ...

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

von Sebi (Gast)


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

von Mirke (Gast)


Lesenswert?

Hallo

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

von Thomas Winkel (Gast)


Angehängte Dateien:

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

von Sebi (Gast)


Lesenswert?

Super, das werde ich mir morgen gleich mal anschauen.... :-)

MfG,
Sebi

von Markus (Gast)


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

von Thomas Winkel (Gast)


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

von Markus (Gast)


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.

von Sebi (Gast)


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

von Thomas Winkel (Gast)


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

von Sven (Gast)


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

von Thomas Winkel (Gast)


Lesenswert?

TF befindet sich in der "Control System Toolbox"

Gruß, Thomas

von tito (Gast)


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

von Stefan (Gast)


Lesenswert?

Hey.

Mal ne Frage zu Region...

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

???


Gruß Stefan

von Detlef _. (detlef_a)


Lesenswert?

Das sind Laubholz Türen aus Spanien.

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


Cheers
Detlef

von phip (Gast)


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

von Domingo (Gast)


Lesenswert?


von Assop (Gast)


Angehängte Dateien:

Lesenswert?

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

von Detlef _. (detlef_a)


Lesenswert?

Dann häng die Messdaten mal an.

Cheers
Detlef

von Assop (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hiers die Messdaten des Bodediagramms.

Danke im Voraus

von Assop (Gast)


Lesenswert?

Hallo zusammen,

kann jemand mir bitte helfen?
@Detlef ich die Messdaten hochgeladen.

Viele Grüße
Thierry

von Detlef _. (detlef_a)


Lesenswert?

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

von Assop (Gast)


Lesenswert?

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

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

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.

von Assop (Gast)


Lesenswert?

Hallo Tobias,

danke sehr. Es wurde schon erledigt

VG
Th.

von Pandur S. (jetztnicht)


Lesenswert?

> .. 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
Noch kein Account? Hier anmelden.