将输入端口连接到 Matlab/Simulink 中的子系统的正确方法是什么?我收到无效的 Simulink 对象名称

What is the correct way to connect inports to a subsystem in Matlab/Simulink? I'm getting Invalid Simulink object name

我正在使用 Simulink 中的模型,其中包含大量输入端口和输出端口以及一个子系统。我正在尝试以编程方式连接它们,因为它是一个非常大的模型。

我已经尝试使用端口名称获取端口句柄,但我仍然收到 "Invalid Simulink object name" 或 "Invalid Simulink port handle"

之类的错误

下面的代码将创建一个最小的子系统,我想回想一下,在我工作的真实系统中可能有 50 多个端口,它们不一定连接 "one by one",我的意思是,例如,有时第一个输入端口将连接到子系统的第三个输入端口。

% Creating little subsystem and inports
open_system(new_system('my_system'));
add_block('simulink/Commonly Used Blocks/In1', 'my_system/port_name_1');
add_block('simulink/Commonly Used Blocks/In1', 'my_system/port_name_2');
add_block('built-in/Subsystem', 'my_system/test_subsystem');
add_block('simulink/Commonly Used Blocks/In1', 'my_system/test_subsystem/test_name_1');
add_block('simulink/Commonly Used Blocks/In1', 'my_system/test_subsystem/test_name_2');

这是我收到一些错误消息的地方:

add_line('my_system', 'my_system/port_name_1', 'my_system/test_subsystem/test_name_1', 'autorouting', 'smart');

% Error: Invalid Simulink object name: my_system/port_name_1
porthandle = get_param('my_system/port_name_1', 'Handle');
subsystem_port_handle = get_param('my_system/test_subsystem/test_name_1', 'Handle');
add_line('my_system', porthandle, subsystem_port_handle, 'autorouting', 'smart');

% Error: Invalid Simulink port handle

根据 add_block 的文档,每种情况下的正确语法是

add_line('my_system', 'port_name_1/1', 'test_subsystem/1', 'autorouting', 'smart');

porthandle = get_param('my_system/port_name_1', 'PortHandles');
subsystem_port_handle = get_param('my_system/test_subsystem', 'PortHandles');
add_line('my_system', porthandle.Outport(1), subsystem_port_handle.Inport(1), 'autorouting', 'smart');