How to get port names for built-in blocks?

20 visualizaciones (últimos 30 días)
Danijel Domazet
Danijel Domazet el 7 de Oct. de 2020
Comentada: Danijel Domazet el 8 de Oct. de 2020
This is how I find port names in my Simulink model:
function [portNames] = findOutputPortNames(obj)
% Lists output port names for the target module.
simBlockH = get_param(target_module, 'Handle');
portH = find_system(simBlockH, 'LookUnderMasks', 'on', 'FollowLinks', 'on', 'SearchDepth', 1, 'BlockType', 'Outport');
portNames = cellstr(get_param(portH, 'Name'));
end
This works fine for my subblocks.
However, it does not work for blocks that are builtin, for example "Biquad Filter".
How do I get output (or input) port names for built-in blocks?
The above find_system() call returns empty result.
When I remove the BlockType parameter:
portH = find_system(simBlockH, 'LookUnderMasks', 'on', 'FollowLinks', 'on', 'SearchDepth', 1);
portNames = cellstr(get_param(portH, 'Name'));
I get the following output:
portNames =
5×1 cell array
{'PH20hz'}
{'Signal_in'}
{0×0 char}
{0×0 char}
{'Signal_out'}
How do I find out which are input ports, and which are output ports?
Or, instead of 'BlockType', 'Outport', should I use somethig else for 'BlockType'?
  2 comentarios
Fangjun Jiang
Fangjun Jiang el 7 de Oct. de 2020
That is not port name. That is under masks Inport/Outport block name. Port names, if they exist, are different. What name you really want for built-in blocks?
Danijel Domazet
Danijel Domazet el 8 de Oct. de 2020
Hi Fangjun,
I need output port/wire/link name.
After some experimenting, I found this works:
open_system(test_model, 'loadonly');
...
bt = get_param(target_module, 'BlockType');
if bt == "S-Function"
portNames = get_param(target_module, 'OutputSignalNames');
end
...
close_system(test_model, 0)

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Programmatic Model Editing en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by