How to determine source block of an input port in Simulink?

47 ビュー (過去 30 日間)
Soham Sinha
Soham Sinha 2021 年 8 月 31 日
コメント済み: Soham Sinha 2021 年 9 月 2 日
I am writing a Matlab Function Simulink block which has an input. I want to determine the source of the Input port in the Matlab Function and code accordingly. Is there any Simulink API available in Matlab to do that?
If there is, can I get the source block's masks in the Matlab Function block?

回答 (1 件)

stozaki
stozaki 2021 年 9 月 1 日
Hi,
1. Get the port handle of the target block. (in this example, MATLAB Funciton)
2. Get the line handle of the connected signal line from the obtained port handle.
3. Get the source block handle of the connection source from the obtained line handle.
4. Get the block properties from the obtained source block handle.
mlBlockPath = 'sample/MATLAB Function';
% get port Handle of MATLAB Function.
mlfPh = get_param(mlBlockPath,'PortHandles');
% get line handle of input signal.
inLine = get_param(mlfPh.Inport,'Line');
% get source block handle(In this case the inport block).
srcBlkH = get_param(inLine,'SrcBlockHandle');
% get source block name
blockName = get_param(srcBlkH,'Name');
  1 件のコメント
Soham Sinha
Soham Sinha 2021 年 9 月 2 日
Thank you! I tried it but this just gets me the immediate previous block, not the source. For example, the connection goes inside a Subsystem (A) and connected to a block (Block B) inside Subsystem A. I want to get the Block A. However, the above procedure will only give me the Subsystem A.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProgrammatic Model Editing についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by