This example shows the features available in Simulink® Control Design™ for linearizing models containing references to other models with a Model block.
scdspeed_ctrlloop is a componentized version of the model
scdspeedctrl. In this model, the engine speed model is a component represented in the model
scdspeed_plantref which is referenced using a Model block. Open the model.
topmdl = 'scdspeed_ctrlloop'; open_system(topmdl)
By default, the Engine Model block is set to accelerator simulation mode, as indicated by the black triangles at the corners of the Model block. Linearizing the model with this block set to accelerator simulation mode numerically perturbs the entire Engine Model block. The accuracy of this linearization is very sensitive to the blocks within the Engine model. In particular, the variable transport delay block is very problematic.
To achieve an accurate linearization, set the Model block to normal simulation mode to allow the block-by-block linearization of the referenced model.
The corners of the Model block are now white triangles, indicating that its simulation mode is set to normal.
Linearize the model between the speed reference signal and the speed output, and plot the resulting step response.
io(1) = linio('scdspeed_ctrlloop/Speed Reference',1,'input'); io(2) = linio('scdspeed_ctrlloop/Speed Output',1,'output'); sys_normal = linearize(topmdl,io); step(sys_normal)
Close the Simulink model.
Another benefit of switching the model reference to normal mode simulation is that you can take advantage of the exact delay representations.
For more information on linearizing models with delays see the example Linearization of Models with Delays.