1

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

我尝试使用端口的名称获取端口的句柄,但我仍然收到诸如“无效的 Simulink 对象名称”或“无效的 Simulink 端口句柄”之类的错误

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

% 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
4

1 回答 1

1

根据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');
于 2019-06-25T03:57:07.647 回答