【问题标题】:Programmatically connect two subsystems以编程方式连接两个子系统
【发布时间】:2018-12-28 10:35:55
【问题描述】:

我正在尝试以编程方式重用我之前开发的一些自定义块/模型来构建一个复杂的模型,但我无法连接两个 PMC_Port

这就是我所拥有的:

% Main system    
sys_name = 'model';
sys = new_system(sys_name)
open_system(sys_name)

load_system('circuit_cell') % Subsystem with 6 PMC_Port elements
                            % stored in circuit_cell.mdl file
% Add cell #1
add_block('built-in/Subsystem', [sys_name '/cell1'])
Simulink.BlockDiagram.copyContentsToSubSystem('circuit_cell', [sys_name '/cell1']);

% Add cell #2
add_block('built-in/Subsystem', [sys_name '/cell2'])
Simulink.BlockDiagram.copyContentsToSubSystem('circuit_cell', [sys_name '/cell2']);

% And now I want to connect one cell with the other
add_line('model', 'cell1/1', 'cell2/1', 'autorouting', 'on')

...但我总是收到“Invalid Simulink object name: cell1/1”错误消息。

EDIT.- 这是 circuit_cell.mdl 文件:http://pastebin.com/mXuVFtM3

【问题讨论】:

  • 我尝试重现您的问题,但没有收到任何错误。你能提供'电路单元'吗?有输入输出端口吗?
  • 我已编辑问题以发布指向“circuit_cell.mdl”的链接。提前感谢您的帮助。
  • 是的,我正在尝试连接端口(也许我误解了他们的想法)
  • 如果你进入cell1并用鼠标选择你想连接到cell2的(可能是输出的)块,然后在命令行输入gcb,你会得到什么?真的是cell1/1吗?同样适用于cell2/1
  • @jgsogo 好的,如果它们是 Simscape 或物理端口,您可能想尝试类似 cell1/RConn1(如果在块的右侧)或 cell1/LConn1(如果在块的左侧)。我有一个模糊的记忆,这些块是特殊的,并且没有记录以编程方式连接它们的确切希望。

标签: matlab simulink simscape


【解决方案1】:

感谢@am304 cmets,我设法解决了这个问题。

通过物理端口的连接必须通过RConn1LConn1键名进行,所以命令add_line应该执行如下:

add_line('model', 'cell1/RConn1', 'cell2/LConn1', 'autorouting', 'on')

测试:

  • Matlab 版本 7.12.0.635 (R2011a)

谢谢!

编辑。- 正如@am304 所说,它没有记录,因此可以更改。如果检查了更多版本,请发表评论,我会更新答案。

【讨论】:

  • 请注意,与所有未记录的功能一样,此语法在未来版本中可能会发生变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2018-07-26
  • 2013-08-21
相关资源
最近更新 更多