|
|
Start time der "Rampe" variieren |
|
Seppel____222 |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.08.2011, 18:30
Titel: Start time der "Rampe" variieren
|
|
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
|
|
Beiträge: 113
|
|
|
|
Anmeldedatum: 22.06.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2008a
|
|
|
|
|
|
Verfasst am: 03.08.2011, 21:10
Titel:
|
|
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
|
|
|
Seppel_______ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.08.2011, 21:55
Titel:
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 04.08.2011, 22:03
Titel:
|
|
Habe halt das Problem, dass ich nicht weiß wie ich den Wert zum Zeitpunkt des Ereignisses festhalten kann
|
|
|
Georg J |
Forum-Century
|
|
Beiträge: 113
|
|
|
|
Anmeldedatum: 22.06.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2008a
|
|
|
|
|
|
Verfasst am: 05.08.2011, 00:06
Titel:
|
|
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
|
|
|
Seppel____ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.08.2011, 16:02
Titel:
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 05.08.2011, 19:23
Titel:
|
|
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 ?!
Beschreibung: |
|
Download |
Dateiname: |
Beispiel.mdl |
Dateigröße: |
31.23 KB |
Heruntergeladen: |
571 mal |
|
|
|
seppel___ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.08.2011, 22:04
Titel:
|
|
Sorry... Stand ein bisslle aufm schlauch! Eigentlich ist damit meine erste frage schon beantwortet! Hab schon wieder zu weit gedacht ! Danke. Gruß seppel
|
|
|
Seppel____ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.08.2011, 22:44
Titel:
|
|
Sorry bin doch zu blöd
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 06.08.2011, 11:00
Titel:
|
|
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...
Beschreibung: |
|
Download |
Dateiname: |
Beispiel.mdl |
Dateigröße: |
25.85 KB |
Heruntergeladen: |
540 mal |
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 06.08.2011, 11:04
Titel:
|
|
Hätte ich auch gleich weglassen können
Hier die Vereinfachung...
Beschreibung: |
|
Download |
Dateiname: |
Beispiel.mdl |
Dateigröße: |
22.44 KB |
Heruntergeladen: |
604 mal |
|
|
|
Seppel____ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2011, 17:20
Titel:
|
|
Danke für die Hilfe,
Das Problem wird hierdurch leider noch nicht gelöst
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
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 06.08.2011, 19:56
Titel:
|
|
Hi Seppel,
das habe ich mir fast gedacht . 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.
Beschreibung: |
|
Download |
Dateiname: |
Beispiel.mdl |
Dateigröße: |
20.83 KB |
Heruntergeladen: |
660 mal |
|
|
|
Seppel____ |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.08.2011, 23:34
Titel:
|
|
Danke DSP,
dieser Lösungsansatz hilft mir auch schon weiter
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
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 07.08.2011, 10:16
Titel:
|
|
Du könntest die Zeit in einem m-file oder in der Embedded Fct. mit
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
Du kannst auch mal noch die Max step size beim Solver auf 0.01 verringern, wodurch y=4 fast erreicht wird.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|