Effacer les filtres
Effacer les filtres

How can I change the active variant subsystem before simulation starts?

2 vues (au cours des 30 derniers jours)
Max Bjurling
Max Bjurling le 18 Avr 2017
Commenté : Max Bjurling le 27 Avr 2017
I have a model with multiple instances of a variant subsystem. The variant subsystem itself is in a library. How can I choose which variant to use for each instance using a script? Currently I use the PostLoadFcn callback of my top model to set active variant of each instance using set_param(). But if I edit the variant library block (and I do this often), all instances go back to the default variant in my top model. So I need a way to change them back before I run a simulation, and I don't want to have to close and re-open the top model just to do this (invoking the PostLoadFcn callback).
If I use the InitFcn to set the active variant, I get an error that I can't change variant during simulation.

Réponses (1)

Ankit Bhardwaj
Ankit Bhardwaj le 26 Avr 2017
Modifié(e) : Ankit Bhardwaj le 26 Avr 2017
There can be multiple ways to solve this issue.
1. Create an empty subsystem at the top level with an openFcn callback with the same code which you have in postLoadFcn callback. This will be able to fix the variants in one click.
2. You can also think of using Variant objects in the base workspace to fix this issue.
  1 commentaire
Max Bjurling
Max Bjurling le 27 Avr 2017
Thanks Ankit! Opening an empty subsystem at top level is certainly easier than closing and reopening the entire model. But I would like to do it all using scripts, and since my model will be simulated by my colleagues too it's a bit unintuitive to have to open and close an empty subsystem. Could you elaborate a bit more on your second suggestion?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Manage Variant Modeling Components 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