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

Zustandsraum - Zustand und Ausgang berechnen

 

Zack

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2013, 15:01     Titel: Zustandsraum - Zustand und Ausgang berechnen
  Antworten mit Zitat      
Guten Tag,
ich will den aus der Simulink Bibliothek vorgefertigten Baustein "State Space" selbst als Funkion schreiben um ihn in m-files zu verwenden. Soweit so gut die Funktion wird mit den für den Zustandsraum typischen Matritzen(A,B,C,D) gefüttert. Mit den Zustandsgleichungen :
x' = A * x + B * u;
y = C * x + D * u;
müssten ja der Ausgang und die Zustände berechnet werden können. Jedoch bekomme ich nie vernüpftige Ergebnisse. Anbei einmal mein bisheriger Code! Meine Frage ist, wo habe ich den Denkfehler?
Bin Dankbar für jede Hilfe oder Anregung.
Code:

function  [y,x]  = statepl(u,A,B,C,D)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           State Space Plant
%   u = Stellgröße bzw. Anregung
%   A = Systemmatrix
%   B = Eingangsmatrix
%   C = Ausgangsmatrix
%   y = Istwert
%   x = Zustandsgröße
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global x1
 
if isempty(x1)      % Anfangs Zustände als Ausgang auf Null setzen
    n=rank(A);
    x1 = zeros(n,1);
end;
   
    x = A * x1 + B * u;    % Zustandsgleichung
    y = C * x1  + D * u;   % Ausgangsgleichung

    x1 = x;                      % Speicherung des letzen Zustandes in x1


end
 


Bibonaut
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 06.06.13
Wohnort: Berlin
Version: 2013a
     Beitrag Verfasst am: 18.06.2013, 22:12     Titel:
  Antworten mit Zitat      
Hallo Zack!

Ich kenne diesen Block "State Space" leider nicht (Hab ihn in Simulink nicht gefunden). Ist das überhaupt ein Block? Very Happy

Meine Frage: Wo löst du denn deine Differentialgleichung?

"x" ist ja bei dir ja dx/dt und x1 ist dein x.

Dann setzt du unten x = dx/dt.

Ich behaupte jetzt mal, das ist falsch, denn Ziel ist es ja beim numerischen Lösen einer linearen DGL, die rechte Seite also dx/dt = rechteSeite durch Integration zu lösen.

Konnte ich dir helfen?

Viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen
 
Zack

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2013, 10:43     Titel:
  Antworten mit Zitat      
Danke für den Tipp ja stimmt! Jetzt ist die Frage wie ich quasi zwischen den zwei Punkten Integrieren kann...
quadl & Integral funktionieren anscheinend nicht für Übertragungsfunktionen..
Müsste also quasi den "Integrator" Baustein aus Simulink verwenden, jedoch will ich alles in m-files...! Hat jemand noch eine Idee wie man das gebacken bekommt?

Ps:
Der Function Block "State Space" ist dann wohl nur in der System Identification Toolbox vorhanden sry...
 
Zack

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2013, 06:46     Titel:
  Antworten mit Zitat      
Guten Morgen,
meine erste Annahme war richtig. Habe ein anderes Beispiel von der University of Vermont zum Thema MPC gefunden, in dem das genau so wie oben gemacht wird(Ohne Integrator nur eine Übergabe des alten Wertes). Bei genauerer Betrachtung meines Zustandsraumes ist mir aufgefallen, dass einer meiner Zustände stark rauscht(Rauschen kam wohl durch die Identifikation Zustande..). Aus diesem Grund kam nur Müll für y,x raus. Denke, dass der Hauseigene Integrator in Simulink das irgendwie kompensieren kann. Aufjedenfall habe ich die Gewichtung dieses Zustandes verändert! Und jetzt läufts.
Grüß Zack
 
Zack

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2013, 10:42     Titel:
  Antworten mit Zitat      
Update : Annahme nur im diskreten Zustandsraum korrekt
Im Kontinuierlichen muss der Integrator nach Gaus gebildet werden
 
cyrez
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 81
Anmeldedatum: 15.09.10
Wohnort: Bayern
Version: 2020b
     Beitrag Verfasst am: 06.02.2014, 16:22     Titel:
  Antworten mit Zitat      
Hallo Zack,

eine einfache Angabe deiner Matrizen wird denke ich nicht zum gewünschten Erfolg führen. Du musst deine Anfagsbedigungen und auch deinen Zeithorizont angeben, für den dein Zustands- und Ausgangsverlauf
berechnet werden soll.

MfG
Cyrez
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.