Как правильно подключить входные порты к подсистеме в Matlab / Simulink? Я получаю неверное имя объекта Simulink - PullRequest
1 голос
/ 25 июня 2019

Я работаю с моделью в 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');

Model with inports and subsystem

Вот где я получаю некоторые сообщения об ошибках:

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

1 Ответ

1 голос
/ 25 июня 2019

Согласно документу для 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');
...