|
|
Parameterveränderung in Simulink |
|
achbern |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 31.08.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.08.2007, 23:15
Titel: Parameterveränderung in Simulink
|
|
Hallo liebe Leser,
ich möchte gerne den Parameter eines Blocks in Simulink verändern.
Beispiel: In einem Modell in Simulink ist eine AC Voltage Source. Sie hat u.a. als Parameter die Frequency. In diesem Feld muss eine Zahl eingetragen sein, die die Frequenz in Hz angibt.
Meine Frage: Wie muss ich in Simulink vorgehen, dass ich in dieses Feld z.B. f_Hz eintragen kann, und dieser Bezeichner dann in Simulink z.B. mittels eines Constant-Blocks verändert werden kann.
Wenn ich in Matlab eine Variable anlege mit dem Namen f_Hz, dann werden die dort eingetragene Zahl, z.B. 50 (in Matlab initialisiert), auch als Parameter übernommen. Mit einem Constant-Block und Simout kann dieser dann von Matlab aus verändert werden. Nachteil: Es muss immer 2x simuliert werden, bis dieser Wert angenommen wird.
Vielleicht gibt es eine bessere Lösung?
Vielen Dank für die Hilfe.
Gruss
Achim
|
|
|
|
|
Lord nibbler |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.10.2007, 13:01
Titel:
|
|
wenn ich dich richtig verstanden habe willst du parameter in simulinkblöcken während der Simulation ändern. Das geht bei tunable Parameters folgendermassen Workspace Variable in Matlab anlegen z.B. f_Hz diese Variable während der Simulation ändern. Diese Änderung wird aber zunächst nicht in Simulink übernommen, das kann man aber erzwingen indem man in den entsprechenden Block den Wert nocheinmal drüberschreibt für einen Constantblock bspw. mit
Gruß Lord nibbler
|
|
|
spooky |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 09.10.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.10.2007, 17:19
Titel:
|
|
Hallo,
ich frage mal hier, weil ich denke, dass es passt.
Ich habe ein Modell, dass ich ungern maskieren würde. Bei diesem Modell möchte ich einige Parameter verschiedener Blöcke zusammen verändern.
Wie kann ich das machen?
Ich habe dabei zuerst an ein GUI gedacht. Damit habe ich allerdings Probleme, weil ich nirgendwo eine gescheite Anleitung finde, wie das gehen soll.
Hat vielleicht jemand von euch einen Vorschlag?
Gruß
spooky
|
|
|
achbern |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 31.08.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.10.2007, 07:49
Titel:
|
|
|
|
|
Lord nibbler hat Folgendes geschrieben: |
wenn ich dich richtig verstanden habe willst du parameter in simulinkblöcken während der Simulation ändern. Das geht bei tunable Parameters folgendermassen Workspace Variable in Matlab anlegen z.B. f_Hz diese Variable während der Simulation ändern. Diese Änderung wird aber zunächst nicht in Simulink übernommen, das kann man aber erzwingen indem man in den entsprechenden Block den Wert nocheinmal drüberschreibt für einen Constantblock bspw. mit
Gruß Lord nibbler |
Hallo Lord nibbler,
ich weiss nicht genau, ob die Veränderung während der Simulation stattfinden muss.
Die folgende Schaltung zeigt meinen Wunsch. Vor der Simulation wird z.B. per Doppeltklick auf den Constant-Block statt dem Wert 50 der Wert 100 eingetragen. Der Ausgang wir mit Simout verbunden, so dass die Matlab-Variable f_Hz mit dem Wert 100 versorgt wird (f_Hz muss zuvor angelegt werden). Im Block AC Voltage Source steht beim Parameter Frequency die Matlab-Variable f_Hz.
Wird nun die Simulation gestartet, dann zeigt der Scope trotzdem noch die 50Hz an, obwohl ja im Constant-Block die 100 eingegeben wurden. Erst bei erneutem Starten der Simulation (also zum 2. Mal) gibt die Spannungsquelle 100Hz aus. Der Scope zeigt dies auch an.
Wird nun im Constant-Block auf 50Hz zurückgewechselt, dann muss wiederum 2x simuliert werden, bis die Spannungsquelle die 50Hz ausgibt.
Meine Frage war nun: Wie muss ich es anstellen, dass eine Veränderung im Konstant-Block (z.B. von 50 auf 100) sich in der Spannungsquelle schon nach dem ersten Simulationsdurchlauf zeigt.
Ich hoffe, dass meine Beschreibung nun etwas verständlicher geworden ist.
Grüsse von
Achim
Beschreibung: |
|
Download |
Dateiname: |
Parameter_Veraenderung.png |
Dateigröße: |
3.43 KB |
Heruntergeladen: |
3686 mal |
|
|
|
achbern |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 31.08.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.10.2007, 07:51
Titel:
|
|
spooky hat Folgendes geschrieben: |
Hallo,
ich frage mal hier, weil ich denke, dass es passt.
Ich habe ein Modell, dass ich ungern maskieren würde. Bei diesem Modell möchte ich einige Parameter verschiedener Blöcke zusammen verändern.
Wie kann ich das machen?
Ich habe dabei zuerst an ein GUI gedacht. Damit habe ich allerdings Probleme, weil ich nirgendwo eine gescheite Anleitung finde, wie das gehen soll.
Hat vielleicht jemand von euch einen Vorschlag?
Gruß
spooky |
Hallo spooky,
ich kann dir leider nicht weiterhelfen, da ich selbst kein "Spezialist" in Simulink und Matlab bin.
Gruss
Achim
|
|
|
Lord nibbler |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.10.2007, 14:46
Titel:
|
|
Hallo achbern,
Also wenn ich dich jetzt richtig verstanden habe setzt du an einer Stelle des Modells in einem Constant-Block die Frequenz. Diese geht dann mit Hilfe eines simout-Blocks in den WS. Diese WS-Variable benutzt du wiederum an einer anderen Stelle (AC-Voltage Source) für die Simulation. Das Problem so wei ich es beurteilen kann liegt darin, dass der simout-Block erst nach der Simulation in den WS schreibt. Daher der zweite Simualtionslauf. Für dieses konkrete Problem kenne ich keine Lösung.
Du kannst das Problem aber umgehen indem du vor dem starten der Simulation immer ein Skript ausführst indem die WS-Variable f_Hz auf den Wert gesetzt wird denn du dort einstellst. Oder du stellst den Wert direkt im Voltage Source-Block ein den kannst du übrigens auch entsprechend wie den Constant-Block vor oder sogar während der Simulation setzen wie ich in meinem ersten Post geschrieben habe.
Gruß Lord nibbler
|
|
|
richi_Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.04.2016, 08:48
Titel: Callback
|
|
Blöcke bieten über Callbacks die Möglichkeit zu bestimmten Ereignissen (Events) Aktionen auszuführen. An die Callbacks kommt man über Rechtsklick/Properties.
Dort musst Du die am besten passende Callback wählen und deinen Code dort eintragen. Z.B. kannst Du (vermutlich) zur Laufzeit der Simulation direkt in die Parameter eines anderen Blocks reinschreiben.
|
|
|
Supertyp |
Forum-Fortgeschrittener
|
|
Beiträge: 85
|
|
|
|
Anmeldedatum: 09.06.08
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a
|
|
|
|
|
|
Verfasst am: 12.10.2016, 08:17
Titel:
|
|
Ich benötige auch so etwas: Ich möchte zur Laufzeit Werte von Constant-Bllöcken ändern, oder aber zumindest nach jeder Änderung eines Constant-Wertes, sofort die Simulation (~1s) starten lassen (interaktive Parameterstudie).
Mit den Standard-Callbacks ist das nicht möglich - es gibt keinen der durch das schliessen des Dialogs getriggert wird. Gibt es hier vielleicht einen Workaround?
|
|
|
|
|
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.
|
|