How to get_param list on subsystem blocks inport and outports

조회 수: 90 (최근 30일)
Michael
Michael 2013년 8월 15일
댓글: Dipesh007 2020년 5월 21일
Hi Guys,
I am trying how to figure out how to generate a list of a subsystems inports and outport names. This should be a list of the names that are listed on the block, not what is connected to it. I have been trying various things, and the closest I can get is to have get_param tell me how many inputs and how many output ports there are, but no signal names.
Thanks for the help.
  댓글 수: 2
Kaustubha Govind
Kaustubha Govind 2013년 8월 15일
Do you mean the port labels on the subsystems? Are these masked subsystems (in which case the port labels are specified on the Mask) or un-masked subsystems, where the ports labels are inferred from the names of the top-level inport and outport blocks.
Michael
Michael 2013년 8월 16일
Example: I want a command that will give me "Position" "Velocity" and "Accel" (the inport names) and a command that gives me "Voltage" (the outport name). Assuming that I am using the default "Subsystem" block in simulink.

댓글을 달려면 로그인하십시오.

답변 (3개)

Purshottam Vishwakarma
Purshottam Vishwakarma 2018년 4월 6일
simBlockH = get_param(gcb, 'Handle');
handles = find_system(simBlockH, 'LookUnderMasks', 'on', 'FollowLinks', 'on', 'SearchDepth', 1, 'BlockType', 'Inport');
portNames = cellstr(get_param(handles, 'Name'))
  댓글 수: 1
Dipesh007
Dipesh007 2020년 5월 21일
Hello Purshottam,
Thanks for the solution it help me.
Now how can i export these Inport from command window to xls using mscript.
Thanks in advance.

댓글을 달려면 로그인하십시오.


Chetan Aswathanarayana
Chetan Aswathanarayana 2013년 8월 18일
You can try the below: Say your Model is Sample.mdl:
open_system('Sample');
blks = find_system('Sample','Type','block');
N = get_param(blks, 'BlockType');
j = 1;
k = 1;
for i = 1:length(N)
if ( strcmp(N{i},'Inport'))
In{j} = blks{i};
In{j} = strrep(In{j},'Sample/Subsystem/',[]);
j = j + 1;
elseif ( strcmp(N{i}, 'Outport'))
Out{k} = blks{i};
Out{k} = strrep(Out{k},'Sample/Subsystem/',[]);
k = k + 1;
end
end
In and Out are the 2 ouput cell arrays, which gives what you are looking for:
>> In
In =
'Position' 'Velocity' 'Accel'
>> Out
Out =
'Voltage'
  댓글 수: 4
vvd03
vvd03 2015년 2월 20일
편집: vvd03 2015년 2월 20일
Hello! How realise it for masked subsystem? I see that it work for unmasked subsystem. How to allow him to look under the mask?
vvd03
vvd03 2015년 2월 21일
Oh! Sorry! I need this command:
... = find_system(...,'LookUnderMasks','all',...)

댓글을 달려면 로그인하십시오.


Chetan Aswathanarayana
Chetan Aswathanarayana 2013년 8월 16일
Hi Michael, If I understand your question correctly , you are looking to get the Input and Output Signal names.Then you can try the below:
>>model = 'Sample';
>>blks = find_system(model,'Type','block')
blks =
'Sample/In1'
'Sample/Unit Delay'
'Sample/Out1'
>>N = get_param(blks, 'BlockType')
istblks =
'Inport'
'UnitDelay'
'Outport'
The above gives the names for the list of all the blocks. And 'N' tells you which of the blocks are inports and outports.
  댓글 수: 1
Michael
Michael 2013년 8월 16일
Example: I want a command that will give me "Position" "Velocity" and "Accel" (the inport names) and a command that gives me "Voltage" (the outport name). Assuming that I am using the default "Subsystem" block in simulink.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Programmatic Model Editing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by