Subsystem masking helps you hide complex details inside a block. It makes models simpler and easier to use.
When you want to reuse a group of blocks without showing all details.
When you want to create a custom block with user-friendly controls.
When you want to protect your model's internal design from others.
When you want to simplify a large model by hiding complexity.
When you want to add documentation or instructions inside a block.
Syntax
Simulink
1. Right-click the subsystem block.
2. Select 'Mask' > 'Create Mask...'.
3. In the Mask Editor, add parameters and controls.
4. Use the 'Initialization' tab to write setup code.
5. Click 'OK' to apply the mask.
The mask lets you add input fields, dropdowns, and buttons.
Initialization code runs when the model starts or parameters change.
Examples
This example shows how to add a gain parameter to control inside the mask.
Simulink
Right-click subsystem > Mask > Create Mask...
Add a parameter named 'Gain'
Use this parameter inside the subsystem blocks
This example shows how to add a dropdown to select modes inside the mask.
Simulink
Add a popup menu with options 'Low', 'Medium', 'High'
Use the selected option to change block behavior
Sample Program
This example shows how to mask a subsystem to control the Gain block inside using a mask parameter.
Simulink
1. Create a subsystem with a Gain block named 'Gain' inside.
2. Right-click the subsystem and select 'Mask' > 'Create Mask...'.
3. Add a parameter named 'GainValue'with default 5.4. In the Initialization tab, write: set_param([gcbh '/Gain'], 'Gain', num2str(GainValue));
5. Click OK.
6. Now, changing 'GainValue' on the mask changes the Gain block inside.
OutputSuccess
Important Notes
Always test your mask parameters to ensure they update the subsystem correctly.
You can add help text inside the mask to guide users.
Masking does not change the subsystem functionality, only its interface.
Summary
Subsystem masking hides complexity and creates user-friendly blocks.
You can add parameters and controls to customize the subsystem.
Initialization code helps connect mask parameters to internal blocks.
Practice
(1/5)
1. What is the main purpose of masking a subsystem in Simulink?
easy
A. To automatically generate code
B. To hide the internal details and provide a simple interface
C. To increase the simulation speed
D. To change the solver settings
Solution
Step 1: Understand what masking does
Masking a subsystem hides its internal blocks and connections from the user.
Step 2: Identify the main benefit
This makes the subsystem easier to use by showing only relevant parameters and controls.
Final Answer:
To hide the internal details and provide a simple interface -> Option B
Quick Check:
Masking = Hide complexity [OK]
Hint: Masking simplifies subsystems by hiding details [OK]
Common Mistakes:
Thinking masking speeds up simulation
Confusing masking with code generation
Assuming masking changes solver settings
2. Which of the following is the correct way to add a mask parameter in Simulink?
easy
A. Drag parameter block inside subsystem
B. Double-click subsystem > Add block > Parameter
C. Right-click subsystem > Properties > Add parameter
But the internal Compare block's threshold does not update. What is the likely error?
medium
A. The Compare block does not have a 'Threshold' parameter
B. The internal block parameter name is incorrect; it should be 'RelationalOperator'
C. The initialization code is missing a conversion from string to number
D. The mask parameter name 'Threshold' is misspelled in the code
Solution
Step 1: Check internal block parameter names
The Compare block in Simulink does not have a parameter named 'Threshold'; it uses 'RelationalOperator' and inputs for comparison.
Step 2: Identify why setting 'Threshold' fails
Since 'Threshold' is not a valid parameter, set_param silently fails or has no effect.
Final Answer:
The Compare block does not have a 'Threshold' parameter -> Option A
Quick Check:
Block parameters must match internal block's actual names [OK]
Hint: Verify internal block parameter names before setting [OK]
Common Mistakes:
Assuming all mask parameters map directly to internal block parameters
Not checking block documentation for parameter names
Ignoring type conversions when needed
5. You want to create a masked subsystem that lets users select a filter type ('Lowpass', 'Highpass') and set a cutoff frequency. Which approach correctly connects mask parameters to internal blocks?
hard
A. Create separate subsystems for each filter type without masking
B. Add only numeric mask parameters and manually change internal blocks after simulation
C. Add popup mask parameter for filter type, numeric parameter for cutoff, then in init code set internal blocks' parameters accordingly
D. Use mask initialization code to change the mask parameters dynamically during simulation
Solution
Step 1: Design mask parameters for user input
Use a popup parameter for filter type and a numeric parameter for cutoff frequency to simplify user choices.
Step 2: Use initialization code to update internal blocks
In the mask initialization code, read these parameters and set the internal filter blocks' types and cutoff frequencies accordingly.
Final Answer:
Add popup mask parameter for filter type, numeric parameter for cutoff, then in init code set internal blocks' parameters accordingly -> Option C