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

Allgemeines Vorgehen beim Lösen von DGL mittels Zustandsrau

 

Simms91
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.06.18
Wohnort: Frankfurt
Version: 2015a
     Beitrag Verfasst am: 07.06.2018, 13:01     Titel: Allgemeines Vorgehen beim Lösen von DGL mittels Zustandsrau
  Antworten mit Zitat      
Hallo zusammen,

ich bin gerade dabei mich in Zustandsraum, Kalmanfilter etc. einzuarbeiten. Dazu würde ich gerne sagen, wie ich das allgemeine Vorgehen verstanden habe und ihr gebt einfach mal Feedback und Verbesserungsvorschläge. Zudem habe ich versucht ein Beispiel zu erstellen, leider ist dies jedoch aus irgend einem Grund instabil.

1) Vorbereitung, Gleichung Aufstellen etc.
2) Manuell in A, B, C, D-Matrix umstellen
3) Mittels ss-Befehl in ein Matlab system umrechnen
3. 1) An dieser Stelle kann bereits eine Samplingzeit angegeben werden um ein
diskretes System zu erstellen
3. 2) Sinnvoll ist hier mittels step-Funktion die Systemantwort zu überprüfen
4) Mittels lsim-befehl können Inertialwerte, Inputvektoren gegeben werden, für
dass das Gleichungssystem gelöst wird.
5) Auswertung über Plots etc.

Theoretisch gäbe es wohl noch die möglichkeit dies Kontinuierlich zu machen, auch wenn ich nicht genau weiß wie (mathematisch) der Unterschied begründet wird, da ein Computer immer diskretisieren muss.

Als Minimalbeispiel habe ich vollgendes probiert:

Feder-Masse-Schwinger ohne Dämpfung im zustandraummodell:

<br />
\ddot{x}_m = -\frac{k}{m} x_m + \frac{1}{m} F_{ex}\\
<br />

<br />
x = \begin{pmatrix}\ x_{m} \\ \dot{x}_m \end{pmatrix}\\
<br />
u = [F]\\
<br />

<br />
A = \begin{pmatrix}\ 0 & 1\\ -\frac{k}{m}&0 \end{pmatrix}\\
<br />
B = \begin{pmatrix}\ 0 \\ \frac{1}{m} \end{pmatrix}\\
<br />
C =  \begin{pmatrix}\ 1 & \ 0 \end{pmatrix}\\
<br />
D = 0\\
<br />

Code:

% 1 Konstanten
m = 1800; % masse [kg]
d = 2000; % dämpfung [kg]
k = 2.4e+04; % steifigkeit [N/m]

% 2) Zustandsmatrizen aufstellen
A_x = [ 0      1     ;...
           -k/m 0 ];
B_x = [ 0 ;...
        1/m];
C_x = [1 0];
D_x = [ 0 ];

% 3) Gleichungssytem erstellen und testen
LongitudinalModel = ss(A_x,B_x,C_x,D_x,0.02,'inputname','u','outputname','y');
figure;
step(LongitudinalModel)
 
% 4) Gleichungssystem lösen  
t = 0:0.02:1;
x0 = [0.01;0.00];
u = zeros(length(t),1);
y_long = lsim(LongitudinalModel,u,t,x0);

% 5) Plotten
figure;
plot(y_long)
 

Das ergebnis ist ein unkontrolliertes Aufschwingen, wie bei Systemen mit negativer Dämpfung (Anfachung) oder Vorzeichenfehler in der A matrix. Wenn ich
Code:

A_x(2,1)=A_x(2,1)/100;
 

einfüge, habe ich auf einmal ein gedämpftes System, obwohl d=0 gesetzt wurde. Vllt kann mir jmd mit Fehlern in dem Code oder allgemeinen Tipps zum vorgehen weiterhelfen.
_________________

Schöne Grüße,
Simms91
Private Nachricht senden Benutzer-Profile anzeigen


Simms91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.06.18
Wohnort: Frankfurt
Version: 2015a
     Beitrag Verfasst am: 07.06.2018, 13:31     Titel:
  Antworten mit Zitat      
Ok, ich habe den Fehler gefunden, verstehe aber nicht es ein Fehler ist:
Statt diesem Codeteil
Code:

LongitudinalModel = ss(A_x,B_x,C_x,D_x,0.02,'inputname','u','outputname','y');
 

muss ich folgendes eingeben.
Code:

LongitudinalModel = ss(A_x,B_x,C_x,D_x,'inputname','u','outputname','y');
LongitudinalModel = c2d(LongitudinalModel,.02);
 

Kann mir jmd erklären warum das so ist?

LG
_________________

Schöne Grüße,
Simms91
Private Nachricht senden Benutzer-Profile anzeigen
 
AKNOT
Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 12.10.11
Wohnort: Bochum
Version: R2018a
     Beitrag Verfasst am: 07.06.2018, 15:08     Titel:
  Antworten mit Zitat      
Hallo, weil die Mitgabe der SampleTime im ss-Befehl nicht dafür sorgt, dass dein System diskretisiert wird. Wenn du sie mit übergibst, muss das System schon diskret sein.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Simms91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.06.18
Wohnort: Frankfurt
Version: 2015a
     Beitrag Verfasst am: 07.06.2018, 16:24     Titel:
  Antworten mit Zitat      
Hallo AKNOT,

vielen Dank für die Info, kennst du zufällig eine Quelle wo es gut (nicht zu mathematisch wie auf Wiki) beschrieben ist? Könnte man eine einfache Umformung über abtastfrequenz / kreisfrequenz finden?

Für mich sieht es so aus, als würde beim diskretisieren alle werte größer 0 mit 1/dt = f multipliziert werden. Aus nullen werden dann 1 (wahrscheinlich wegen der Integration), aber wie gesagt, durchblicken tue ich da nicht.

Wäre cool wenn jmd eine Quelle hat.

Wenn ich ein System diskretisieren muss, muss ich dann evtl. auch Ein- und Ausgänge in die z-Ebene transformieren? Mein Kalmanfilter erzeugt nämlich momentan ziemlich Müll Razz

Danke in jedem Fall schonmal
Private Nachricht senden Benutzer-Profile anzeigen
 
AKNOT
Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 12.10.11
Wohnort: Bochum
Version: R2018a
     Beitrag Verfasst am: 08.06.2018, 07:21     Titel:
  Antworten mit Zitat      
Hi,

da kann ich persönlich eigentlich das "Taschenbuch der Regelungstechnik" von Lutz und Wendt empfehlen. Ich finde das dort anschaulich mit Beispielen erklärt.


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Simms91
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 06.06.18
Wohnort: Frankfurt
Version: 2015a
     Beitrag Verfasst am: 08.06.2018, 16:19     Titel:
  Antworten mit Zitat      
Tach,

alles klar danke für die Info! ich habe mich jetzt gerade mehr mit Kalman beschäftigt insofern gucke ich mir gerade Kalman Filter von R. Marchthaler 2017 an. Ist mit Beispielen und beschäftigt sich auch etwas mit diskretsierung. Insofern mal schauen.

Schöne Grüße
Simms91
_________________

Schöne Grüße,
Simms91
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.