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

Parameterveränderung in Simulink

 

achbern
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 31.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2007, 23:15     Titel: Parameterveränderung in Simulink
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2007, 13:01     Titel:
  Antworten mit Zitat      
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
Code:
set_param(BlockHandle,'Value','f_Hz')


Gruß Lord nibbler
 
spooky
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 09.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2007, 17:19     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
achbern
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 31.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2007, 07:49     Titel:
  Antworten mit Zitat      
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
Code:
set_param(BlockHandle,'Value','f_Hz')


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

Parameter_Veraenderung.png
 Beschreibung:

Download
 Dateiname:  Parameter_Veraenderung.png
 Dateigröße:  3.43 KB
 Heruntergeladen:  3686 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
achbern
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 31.08.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.10.2007, 07:51     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2007, 14:46     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 14.04.2016, 08:48     Titel: Callback
  Antworten mit Zitat      
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

Forum-Fortgeschrittener


Beiträge: 85
Anmeldedatum: 09.06.08
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 12.10.2016, 08:17     Titel:
  Antworten mit Zitat      
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?
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.