Simulink mask: show/hide the port of a custom Simulink block

54 visualizaciones (últimos 30 días)
federico ciresola
federico ciresola el 2 de Ag. de 2024
Editada: Aurélien el 1 de Ag. de 2025
Hi guys,
I am creating a mask for my custom block and I want add a checkbox with the following behaviour:
  • checked: it shows a new port the the block
  • unhecked: it hides the new port for the block
The integrator block has the same behaviour (see the belows images to understand):
I am struggling how to implement this feature in the Checkbox callback because I can't find the parameter to show/hide the port.

Respuestas (2)

SACHIN KHANDELWAL
SACHIN KHANDELWAL el 2 de Ag. de 2024
I understand that you want to create a block mask with the help of a checkbox. Here are some possible steps that might be helpful to you:
  1. Open Simulink and add a Subsystem block.
  2. Select Mask > Create Mask.
  3. Add a Checkbox and other properties that you want.
  4. Add the callback for the Checkbox.
After creating the callbacks, you can simply get the current callbacks using the following command:
>> maskObj = Simulink.Mask.get(gcb);
After you have the mask object, you can modify it based on your needs.
The following documentation could be helpful for you to design the mask:
Hope the above information is helpful!
  1 comentario
federico ciresola
federico ciresola el 2 de Ag. de 2024
Editada: federico ciresola el 2 de Ag. de 2024
thank you for you answer, I alread have did them. My problem is find a way to show or hide some inputs port from a checkbox such as the integrator block.

Iniciar sesión para comentar.


Aurélien
Aurélien el 31 de Jul. de 2025
Editada: Aurélien el 1 de Ag. de 2025
Here is an example of how to re-create the Integrator block behavior on a Mask. The initial condition parameter value is used in a Constant block inside the masked subsystem.
It's important to use the initialization() function instead of a callback and to check the box below:
So you can create a custom library of your block without links issues.
If you want to give a name to that Constant block, replace all three gcb with gcb + "/block_custom_name" in the code below:
% Initialization code section
function initialization()
checkboxValue = get_param(gcbh, 'checkbox');
maskObj = Simulink.Mask.get(gcbh);
initParam = maskObj.getParameter('initial_condition_parameter');
if checkboxValue == "on"
% Replace constant block with inport block
replace_block(gcb, "Constant", "Inport", "noprompt");
initParam.Visible = "off"; % Hide parameter
else
% Replace inport block with constant block
replace_block(gcb, "Inport", "Constant", "noprompt");
set_param(gcb, "Value", "initial_condition_parameter", ...
"SampleTime", "-1"); % Give block properties back
initParam.Visible = "on"; % Show parameter
end
end
% Parameter callback section
Hope it helps :)

Categorías

Más información sobre Subsystems en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by