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

조회 수: 11 (최근 30일)
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.

채택된 답변

Titus Edelhofer
Titus Edelhofer 2011년 5월 13일
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

추가 답변 (4개)

Titus Edelhofer
Titus Edelhofer 2011년 5월 13일
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 2011년 5월 13일
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.

Mark
Mark 2011년 5월 13일
That will work for the moment ... thanks for your prompt replies!

Todd
Todd 2020년 9월 29일
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));

카테고리

Help CenterFile Exchange에서 Model References에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by