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

Start time der "Rampe" variieren

 

Seppel____222

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2011, 18:30     Titel: Start time der "Rampe" variieren
  Antworten mit Zitat      
Hallo,

ich hätte ein Problem was mich seit längerem beschäftigt!!
Ich habe als Eingangssignal eine Rampe gewählt. Während meiner Simulation kommen nun Ereignisse zustande, in der ich den Verlauf der Rampe gerne konstant halten will oder absenken möchte.

Meine Lösungsansätze wären:
1) Bei bestimmten Ereignissen den Paramter "Steigung" während der Simulation zu ändern
-----> allerdings geht das wohl nicht so einfach!

2) Mein Vorhaben mit Subtraktion durch andere Rampen umsetzen...
besteht die Möglichkeit das "Start Time" variabel nach Ereignissen (if Abfragen) zu setzen???

Für Hilfestellungen wäre ich sehr dankbar =)

mfg
Seppel


Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 03.08.2011, 21:10     Titel:
  Antworten mit Zitat      
Hi Seppel,

Wenn du lediglich die Steigung ändern willst, kannst du mit einer variablen Verstärkung arbeiten. Du könntest eine Matlab Funktion schreiben, welche den momentanen Wert der Rampe mit einer von den Eingangsparameter abhängigen Konstanten multipliziert.

Diese Funktion bindest du dann mit dem Block Matlab Fcn unmittelbar hinter der Rampe in deinem Modell ein.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel_______

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 21:55     Titel:
  Antworten mit Zitat      
Hallo Georg,

erstmal danke für die Antwort!
Ich denke ich weiß was du meinst, aber mein Problem wird dadurch noch0 nicht gelöst...

Beispiel:
ich habe eine Rampe mit der Steigung "1"... nun könnte der Fall eintreten, dass nach 2s ein Ereignis eintritt, dass der weitere Verlauf dann bei 2 konstant bleiben soll.

Mit "Matlab fcn" könnte ich ja nur die Steigung "0" vorgeben... dann wäre der Wert allerdings auch null!

kann man den Wert 2 irgendwie als Variable festhalten? Muss ich hierzu die Simulation unterbrechen?

Gruß
Seppel
 
Seppel_______

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 22:03     Titel:
  Antworten mit Zitat      
Habe halt das Problem, dass ich nicht weiß wie ich den Wert zum Zeitpunkt des Ereignisses festhalten kann Sad
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 05.08.2011, 00:06     Titel:
  Antworten mit Zitat      
Hi,

Du bist bei einer Matlab-Funktion natürlich frei in der Wahl der Ausgabe. Du kannst als Eingang eine Rampe und die Systemparameter nehmen.

Mit verzweigten Bedingungen kannst du dann den Ausgang steuern wie du willst. Z.b. so:

if Bedingung1
output = rampe*gain1;
elseif Bedingung2
output = rampe*gain2;
elseif Bedingung3
output = 2;
end

Dabei ist rampe der output des Blocks Ramp und somit der momentane Simulationswert der Rampe.

Wenn es eine begrenzte Anzahl Fälle gibt, ist diese Methode sicher eine Möglichkeit.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 16:02     Titel:
  Antworten mit Zitat      
hmmm... allerdings weiß ich nicht wie ich dies umsetzen kann??
der konstante Wert von 2 war ein Beispiel.... könnte ja auch 5,6,etc sein.
Als Gain kann ich da schlecht NULL nehmen.

Ideal wäre wenn es eine Zeitbezogene Variable gäbe mit der könnte ich dann die Rampe (Bsp. m*t0) durch Rampe - m*t1 konstant halten...?!
 
Seppel____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 19:23     Titel:
  Antworten mit Zitat      
Hab mal ein kleines Beispiel erstellt! Jetzt habe ich das Problem, dass die Rampe bei einem Ereigniswechsel stets bei Null anfängt! Vllt hat ja einer einen Lösungsansatz Smile ?!

Beispiel.mdl
 Beschreibung:

Download
 Dateiname:  Beispiel.mdl
 Dateigröße:  31.23 KB
 Heruntergeladen:  571 mal
 
seppel___

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 22:04     Titel:
  Antworten mit Zitat      
Sorry... Stand ein bisslle aufm schlauch! Eigentlich ist damit meine erste frage schon beantwortet! Hab schon wieder zu weit gedacht Smile! Danke. Gruß seppel
 
Seppel____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 22:44     Titel:
  Antworten mit Zitat      
Sorry bin doch zu blöd Crying or Very sad
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 06.08.2011, 11:00     Titel:
  Antworten mit Zitat      
Evtl. hilft dir das ja weiter. Ich habe es jetzt auf die Zeit und nicht auf den Wert der Rampe bezogen (lässt sich ja aber einfach umbauen). Zwischen 4 und 9 sek wird nun das Signal konstant gehalten. Eigentlich könnte man sich den if Teil auch sparen...

Beispiel.mdl
 Beschreibung:

Download
 Dateiname:  Beispiel.mdl
 Dateigröße:  25.85 KB
 Heruntergeladen:  540 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 06.08.2011, 11:04     Titel:
  Antworten mit Zitat      
Hätte ich auch gleich weglassen können Embarassed

Hier die Vereinfachung...

Beispiel.mdl
 Beschreibung:

Download
 Dateiname:  Beispiel.mdl
 Dateigröße:  22.44 KB
 Heruntergeladen:  604 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2011, 17:20     Titel:
  Antworten mit Zitat      
Danke für die Hilfe,
Das Problem wird hierdurch leider noch nicht gelöst Confused
Die Rampe wird nach einem Ereignis zwar Konstant gehalten, hat aber danach einen Sprung. Ideal wäre es wenn die Rampe von dort mit der ursprünglichen Steigung weitersteigt?!

Kann man Zeiten während einer Simulation ermitteln und diese dann direkt verwenden??

Gruß
Seppel
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 06.08.2011, 19:56     Titel:
  Antworten mit Zitat      
Hi Seppel,

das habe ich mir fast gedacht Wink. Mit dem Rampengenerator habe ich dafür aber noch keine Lösung gefunden. Ich habe mal noch was mit dem Integratorblock probiert...leider reagiert der Ausgang dann nicht exakt auf den gewünschten Zeitbereich.

Deine Frage bzgl. der Zeit verstehe ich nicht ganz...die Zeit wird doch mit dem Clock-Block zur Verfügung gestellt und kann somit jederzeit als Bedingung für unterschiedliche Aktionen herhalten.

Edit: Du kannst es auch mal noch ohne den Memoryblock testen, aber dann wird y=4 auch nicht ganz im konstanten Bereich ereicht.

Beispiel.mdl
 Beschreibung:

Download
 Dateiname:  Beispiel.mdl
 Dateigröße:  20.83 KB
 Heruntergeladen:  660 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel____

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2011, 23:34     Titel:
  Antworten mit Zitat      
Danke DSP,
dieser Lösungsansatz hilft mir auch schon weiter Very Happy

Die Zeitfrage war folgendermaßen gestellt:
Ich weiß, dass es die Mainglock gibt! Aber uch weiß nicht, wie ich die Zeitpunkt für den Beginn eines Ereignisses festhalten könnte!
Sofern dies irgendwie geht hätte ich über Matlab fcn oder embedded Matlab verucht die Rampe mit Funktionen zu variieren!!

Ein anderer Ansatz wäre die Unterbrechung der Simulation gewesen?! Dann könnte man ja den Parameter STEIGUNG ändern.
Hab auch mittlerweile rausgefunden, dass ich hierfür set_param verwenden müsste... nur ist mir nicht ganz klar wie ich dies anwenden kann, d.h. wo setze ich den Befehl ("embedded Matlab"?!) und was schreibe ich in der Klammer hinter set_param wo hin???

Auf jedenfall DANKE!!!!
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 07.08.2011, 10:16     Titel:
  Antworten mit Zitat      
Du könntest die Zeit in einem m-file oder in der Embedded Fct. mit

Code:

t_sim = get_param('mdl Name','SimulationTime');
% evtl. Simulation pausieren
set_param('mdl Name', 'SimulationCommand', 'pause')
 


abrufen. Aber das kann die Simulation auch sehr verlangsamen. Wenn du also die Zustände kennst, wo das Rampensignal konstant gehalten werden soll, empfehle ich dir, diese zur Steuerung des Integrators zu benutzen. Du musst ja nur den Triggereingang des I-Blocks so lange auf 1 setzen, wenn der Signalpegel gehalten werden soll. Ansonsten ist er Null. Der unterste Eingang am I-Block gibt den Wert vor, auf dem das Signal bleibt...daher die Rückführung. Das ist sicherlich einfacher, als die Sim.-zeit hier erst abzugfragen und sie dann zur Steuerung der Rampe zu verwenden. In dieser Version kann man eben nur nicht den Pegel der Rampe zur Steuerung verwenden, da das Signal sonst beim ersten Triggern im konstanten Zustand verharrt Wink

Du kannst auch mal noch die Max step size beim Solver auf 0.01 verringern, wodurch y=4 fast erreicht wird.
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.