How to programatically send Update Diagram command to Simulink

125 vues (au cours des 30 derniers jours)
Paulo Silva
Paulo Silva le 15 Juil 2011
Commenté : Jyoti Sachdeva le 29 Oct 2023
I stumble upon a problem in my project, there's one GUI that controls the simulation and that GUI changes variables on MATLAB workspace, the same variables are used in the simulation but simulink doesn't read the new values unless the simulation stops and starts or the Update Diagram command is issued, so the question is how to force simulink to Update Diagram in my code?
Already tried:
eval([SimFileName '([],[],[],''update'')' ]);
but it doesn't do what I want.
Meanwhile I found one solution but it's using QuaRC MATLAB Functions, would be better to have something withing simulink functions.
qc_update_model
Any help is welcome, thanks
  3 commentaires
Paulo Silva
Paulo Silva le 15 Juil 2011
No, the GUI just changes values of the variables on the workspace and the simulation files and other tools (to calculate performance parameters) use those variables.
Vinol Joy D'souza
Vinol Joy D'souza le 19 Juil 2011
I want to change the parameters of a block when the model is running and simultaneously see the changes in the output.
For eg.I have a sine block connected to a Scope.and when i start the simulation.I want to change the frequency of the sine wave and see the corresponding frequency changed wave on the scope output.I want to do this as i want to see how my model behaves for different frequencies...HOw do i do this???

Connectez-vous pour commenter.

Réponse acceptée

Fangjun Jiang
Fangjun Jiang le 15 Juil 2011
Use set_param('sys', 'SimulationCommand', 'cmd')?
where 'sys' is the name of the system and 'cmd' is 'start', 'stop', 'pause', 'continue', 'update', or 'WriteDataLogs'
  3 commentaires
Vinol Joy D'souza
Vinol Joy D'souza le 19 Juil 2011
I want to change the parameters of a block when the model is running and simultaneously see the changes in the output.
For eg.I have a sine block connected to a Scope.and when i start the simulation.I want to change the frequency of the sine wave and see the corresponding frequency changed wave on the scope output.I want to do this as i want to see how my model behaves for different frequencies...HOw do i do this???
dc
dc le 6 Juin 2023
Déplacé(e) : Fangjun Jiang le 13 Juin 2023
that's what i need,thanks

Connectez-vous pour commenter.

Plus de réponses (2)

Noam Greenboim
Noam Greenboim le 11 Juil 2017
set_param(bdroot,'SimulationCommand','Update')
  2 commentaires
João
João le 22 Mar 2023
This worked for me. Thanks!
Jyoti Sachdeva
Jyoti Sachdeva le 29 Oct 2023
Instead of using bdroot,
mdlName = MotorCtrl.slx
set_param(mdlName,'SimulationCommand','Update')
This command is equivalent to programatically running Ctrl+D on MotorCtrl.slx model.

Connectez-vous pour commenter.


Rick Rosson
Rick Rosson le 15 Juil 2011
Hi Paulo,
Although not ideal, the following line of code should work:
Simulink.BlockDiagram.getSampleTimes(SimFileName);
Make sure that the value of SimFileName excludes the .mdl extension, and that the file is already open at the time of the call.
HTH.
Rick
  1 commentaire
Paulo Silva
Paulo Silva le 15 Juil 2011
Thanks Rick, I tested that code but it didn't work, thank you anyway for trying :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programmatic Model Editing dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by