WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

systemidentifikation anhand Bodediagramm aus Messdaten

 

itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 11:34     Titel: systemidentifikation anhand Bodediagramm aus Messdaten
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:
Es geht um einen Prüfstand bei dem bestimmt Größen geregelt werden sollen. Zur Systemidentifikation wurde eine Regelgröße mit einem Test-Chirp-Signal beaufschlagt.
Aus den gemessenen Daten und dem Chirp-Signal erstelle ich mir ein Bodediagramm.

Zur Systemidentifikation will ich jetzt das erhaltene Bodediagramm mit einfachen Übertragungsgliedern nachbilden.
Hier gelingt es mir aber nur entweder den Amplitudengang oder den Phasengang exakt nachzubilden.

Hat hier vielleicht eine Idee woran das liegen könnte. Sollte doch eigentlich einigermaßen zusammenpassen.
Oder kann es an Messungenauigkeiten liegen?

Vielen Dank schonmal für die Hilfe und viele Grüße,
itsme87


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 11:38     Titel:
  Antworten mit Zitat      
Hallo,

ein Bild des Bodediagramms und ein Bsp. für die Nachbildung wären für das Verständnis hilfreich. Ohne das kann man auch schwer genaue Hilfestellung geben.

Es gibt auch sonst noch Parameter Schätzverfahren zur Modellbildung, wenn du das Testsignal und die Systemantwort als Daten vorliegen hast...z.B. mit einem ARMAX Modell.
Private Nachricht senden Benutzer-Profile anzeigen
 
itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 12:20     Titel:
  Antworten mit Zitat      
Hi,

sorry habe ich gar nicht drangedacht. Die Frequenzen oberhalb von 10Hz wurden nicht angeregt, daher interessiert der Bereich nicht.

Was ist denn ein ARMAX Modell?

phase_stimmt.fig
 Beschreibung:

Download
 Dateiname:  phase_stimmt.fig
 Dateigröße:  469.14 KB
 Heruntergeladen:  887 mal
amplitude_stimmt.fig
 Beschreibung:

Download
 Dateiname:  amplitude_stimmt.fig
 Dateigröße:  464.81 KB
 Heruntergeladen:  807 mal
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 12:46     Titel:
  Antworten mit Zitat      
Verräts du uns jetzt auch noch wie du die Spektren nachgebildet hast...was für ein Modell und welche Ordnung. Meine Vermutung wäre jetzt ein PT2 mit D < 1 bei der Phase und ein PTn mit n>2 beim Betragsspektrum.


Wenn man etwas nicht kennt, gibts z.B. google:

http://de.wikipedia.org/wiki/ARMA-Modell

Kannst ja folgendes Skript ausprobieren...musst halt mal mit den Ordnungen na, nb und nc rumspielen.

Code:

TS= ....; % Abtastzeit
% Y = gemessener Ausgang
% U = gemessener Eingang = Testsignal
dataset=iddata(Y,U,TS);
% Ordnung von Zähler na und Nenner nb der Übertragungsfunktion des Modells
% nc am besten = nb wählen und nk = 1 lassen
na=4; nb=4; nc=4; nk=1;
sysid = armax(dataset,[na nb nc nk]);

sys=tf(d2d(sysid,TS))
fpe1=fpe(sysid)
[yh,fit]=compare(dataset,sysid);
disp('fit ARMAX Modell'); disp(fit);
figure(1);
compare(dataset,sysid);
hold on;
T = 0:TS:((length(Y)-1)*TS) ;
plot(T,Y,'r');
hold on;
plot(T,U,'r');
ylabel('y(t)');
xlabel('Zeit in s');
title('Vergleich Modell und reales System');
grid on;

 
Private Nachricht senden Benutzer-Profile anzeigen
 
itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 13:20     Titel:
  Antworten mit Zitat      
Man merkt dass ich noch nicht sonderlich forenerfahren bin.

Also hier die verwendeten Modelle:

für die Variante mit richtigem Phasengang:
g1*g2*gt
Code:

K=1;
d=0.3;
T=0.42;
g1=tf([0 0 K], [T^2 2*d*T 1]);

K2=1;
T2=0.01;
g2=tf([0 K2],[T2 1]);

s=tf('s');
Tt=0.1;
gt=exp(-s*Tt);
 


Also ein PT2-Glied, PT1 und Totzeitglied

Bei der Variante mit richtigem Amplitudengang:
Code:

g=P*g1*g3;

K=1;
d=0.13;
T=0.45;
g1=tf([0 0 K], [T^2 2*d*T 1]);

K2=1;
d2=01;
T2=0.35;
g3=tf([0 0.1 K2], [T2^2 2*d2*T2 1]);
 


Also 2 PT2-Glieder.


Und gibt es in Matlab einen armax Befehl? Bei mir spuckt es an der Stelle eine Fehlermeldung aus. Ich arbeite mit Matlab 7.11.0 (R2010b)

Danke dir für deine Antworten
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 13:26     Titel:
  Antworten mit Zitat      
Du benötigst für Armax folgende Toolbox:

- System Identification Toolbox

Da ich eine deutlich ältere Matlab Version als du habe, hast du wohl die Toolbox nicht...weshalb er dann auch nicht die Funktion armax() kennt.

Edit: Was ist denn die genaue Fehlermeldung?

Ich habe gerade festgestellt, dass man für das schon vorher verwendete iddata ebenfalls diese Toolbox benötigt. Also musst du sie ja haben, wenn der Befehl funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 13:34     Titel:
  Antworten mit Zitat      
Die Toolbox habe ich, geht aber trotzdem nicht Sad
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 13:40     Titel:
  Antworten mit Zitat      
Habe es gerade bei mir getestet...mit deinem System g1:

Probier das mal und poste bitte die genaue Fehlermeldung!

Code:

TS= 1/200; % Abtastzeit
% Y = gemessener Ausgang
% U = gemessener Eingang = Testsignal
N = 2^12;
T = 0:TS:(N-1)*TS
Y=step(g1,T);
U=ones(length(Y),1);
dataset=iddata(Y,U,TS);
% Ordnung von Zähler na und Nenner nb der Übertragungsfunktion des Modells
% nc am besten = nb wählen und nk = 1 lassen
 na=4; nb=4; nc=4; nk=1;
 sysid = armax(dataset,[na nb nc nk]);

sys=tf(d2d(sysid,TS))
fpe1=fpe(sysid)
[yh,fit]=compare(dataset,sysid);
disp('fit ARMAX Modell'); disp(fit);
figure(1);
compare(dataset,sysid);
hold on;
% T = 0:TS:((length(Y)-1)*TS) ;
plot(T,Y,'r--');
hold on;
plot(T,U,'g--');
ylabel('y(t)');
xlabel('Zeit in s');
title('Vergleich Modell und reales System');
grid on;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 13:45     Titel:
  Antworten mit Zitat      
Hier die Fehlermeldung:
Code:

??? Attempt to execute SCRIPT armax as a function.

Error in ==> test at 12
 sysid = armax(dataset,[na nb nc nk]);
 
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 13:54     Titel:
  Antworten mit Zitat      
Du hast nicht zufällig den m-file mit diesem Skript armax genannt? Falls ja...bitte ändern.
Private Nachricht senden Benutzer-Profile anzeigen
 
itsme87

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 13:59     Titel:
  Antworten mit Zitat      
Oh Mann habe ich tatsächlich,
danke
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.08.2011, 14:13     Titel:
  Antworten mit Zitat      
Na dann kannst du ja jetzt testen...

Allerdings funktioniert diese Schätzverfahren nur bei System mit kleineren Ordnungen gut und man muss halt vorher bereits die Ordnung des Modells festlegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Evergreenhorn
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 25.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2014, 11:35     Titel:
  Antworten mit Zitat      
Servus,

leider bin ich im Bereich der Regelungstechnik extrem unerfahren.
Ist es möglich die ARMA-Funktion zu verwenden um die Transferfunktion zu bestimmen falls nur die Bodemessung (also kein Testsignal) vorliegt ?

Im Anhang könnt ihr meine Bodemessung sehen. Hierfür habe ich einen Netzwerkanalysator verwendet welcher Sinussignale mit bestimmten Frequenzen nach und nach ausgibt und daraus den Amplituden und Phasengang bestimmt.

Viele Grüße,

Sebastian

Bode_OFC_Normalisiert.fig
 Beschreibung:

Download
 Dateiname:  Bode_OFC_Normalisiert.fig
 Dateigröße:  24.94 KB
 Heruntergeladen:  631 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.