我正在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
答案 0 :(得分: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');