- You can change the model reference block's simulation mode to accelerator mode. Check the doc page for reference.
UAV Toolbox Guidance Model block has mask callback that modifies model at compile time, which prohibits multi-instance model reference
1 view (last 30 days)
UAV Toolbox Guidance Model block, doc link: Reduced-order model for UAV - Simulink (mathworks.com), consists mask callbacks that perform tasks such as bus object creation according to UAV type & data type. This poses problem in situations such as the one in the attachment, where ChildMdl.slx containing this block is being refered twice in the ParentMdl.slx, i.e. multi-instance of the child model under the same parent model. Try to run ParentMdl.slx and see the error message:
The model 'ChildMdl' has changed between the time when two instances of this model were compiled. This is not allowed for models referenced in Normal Mode.
I tried to completely dismantle the mask of this block, however, this error message persists. It is potentially due to the inner mask on top of the ComputeDerivative & StateVector2Struct system object. Does anybody know any workaround?
Jianxin Sun on 6 Apr 2021
Thanks for bringing up this issue. You can try a few workarounds:
set_param('ParentMdl/UAV1', 'SimulationMode', 'Accelerator');
set_param('ParentMdl/UAV2', 'SimulationMode', 'Accelerator');
This should let you simulate from parent model.
2. Alternatively, you can use the fixedwing MATLAB API in a MATLAB function block. This should let you compute the derivatives of the equation of motion. You can then use integrator block to get the UAV state.