MATLAB Answers

How can I find the top level of the entire system from within an active model reference?

14 views (last 30 days)
Mark
Mark on 13 May 2011
Answered: Todd on 29 Sep 2020
My MEX functions look upwards in the subsystem heirarchy to get some information from top-level configuration blocks, which specify system wide parameters for my system. Normally I would find these with find_system(bdroot(gcb), ...).
But supposing I want to use model referencing. Is there any way a block in a referenced model can, during initialization of a system referencing it, find the top level of the referencing system? bdroot(gcb) will only get me to the top of the referenced model - not the active referencing model.

Accepted Answer

Titus Edelhofer
Titus Edelhofer on 13 May 2011
Hi Mark,
the only way I could think of:
myModelName = get_param(bdroot(gcb), 'Name');
% find all model reference blocks that contain "me"
blocks = find_system('BlockType', 'ModelReference', ...
'ModelName', myModelName);
models = bdroot(blocks);
Does this help?
Titus

More Answers (4)

Titus Edelhofer
Titus Edelhofer on 13 May 2011
Hi,
I guess, not directly. And it should not be done anyway: the idea of model referencing is, that the referenced model is self-sufficient, i.e., it can stand alone without the system referencing it. The other way round of course is fine: the model containing the referenced model might very well do something with this model ...
Titus

Mark
Mark on 13 May 2011
Ok. Put it another way: is there any way I can see from inside a model being initialized whether it is being initialized as a referenced model from inside a higher-level model, and find out what that model is? For the moment I don't care whether this is the correct thing to do ... I may rearchitect my methodology at a later date, for now I'd just like to get something working.


Todd
Todd on 29 Sep 2020
If your reference model is open in a tab of your top model (R2020a+) then you can try this:
h = gcbp;
sys = bdroot(h.getBlock(1));

Community Treasure Hunt

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

Start Hunting!

Translated by