exponenta event banner

add_line

Добавление линии в модель Simulink

Описание

пример

h = add_line(sys,out,in) добавляет строку в модель или подсистему sys который соединяет выходной порт одного блока out к входному порту другого блока in. Этот синтаксис рисует наиболее прямой маршрут от порта к порту, например, диагональные линии или линии, проходящие через другие блоки.

Порты можно подключать в следующих случаях:

  • Входной порт еще не имеет подключения.

  • Блоки совместимы для подключения.

пример

h = add_line(sys,out,in,'autorouting',autoOption) соединяет блоки, указывая, следует ли прокладывать линии вокруг других блоков.

пример

h = add_line(sys,points) добавляет линию, нарисованную координатой (x, y) points относительно верхнего левого угла холста Simulink ® Editor перед изменением размера холста. Если любой конец строки находится в пределах пяти пикселей от соответствующего порта, функция соединяет линию с ним. Линия может иметь несколько сегментов.

Примеры

свернуть все

Используйте номера портов блоков для добавления линии для соединения блоков.

Создайте модель и откройте ее.

open_system(new_system('connect_model'));

Добавьте и установите блок константы и блок усиления.

add_block('simulink/Commonly Used Blocks/Constant','connect_model/Constant');
set_param('connect_model/Constant','position',[140,80,180,120]);
add_block('simulink/Commonly Used Blocks/Gain','connect_model/Gain');
set_param('connect_model/Gain','position',[220,80,260,120]);

Подключите блоки. Каждый блок имеет один порт, поэтому укажите порт 1.

add_line('connect_model','Constant/1','Gain/1');

Получение дескрипторов портов и подключение портов с помощью add_line.

Открытие модели vdp.

open_system('vdp');

Удалите линию, соединяющую блок усиления Mu с блоком суммы.

delete_line('vdp','Mu/1','Sum/2');

Получите дескрипторы портов из блока Mu и блока Sum.

h = get_param('vdp/Mu','PortHandles');
h1 = get_param('vdp/Sum','PortHandles');

Посмотрите на структуру h1. Обратите внимание на два маркера для свойства Inport.

h1
h1 = 

  struct with fields:

      Inport: [47.0002 54.0002]
     Outport: 39.0002
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []
       Reset: []

Выполните индексирование в свойства Outport и Inport дескрипторов портов, чтобы получить нужные дескрипторы и соединить их. Подключитесь ко второму входному порту.

add_line('vdp',h.Outport(1),h1.Inport(2));

Линию можно ответвить, добавив соединение программным путем. Вы можете использовать points синтаксис для построения сегмента или можно нарисовать линию, указав порты для подключения. При использовании порта используйте автоматическую маршрутизацию линий для улучшения внешнего вида разветвленной линии.

Добавление области в vdp модель над портом.

vdp
add_block('simulink/Commonly Used Blocks/Scope','vdp/Scope1');
set_param('vdp/Scope1','position',[470,70,500,110]);

Подключите блок интегратора x1 к Scope1. Этот код ответвляет существующую строку от вывода x1 и соединяет ее с областью. При включенной автотрассировке результирующая линия сегментируется.

add_line('vdp','x1/1','Scope1/1','autorouting','on')

Точки на холсте можно использовать в качестве начала и конца каждого сегмента. Получение местоположений портов с помощью get_param с 'PortConnectivity' вариант.

Открытие модели vdp и удалите линию, соединяющую блоки Mu и Sum.

vdp
delete_line('vdp','Mu/1','Sum/2')

Получите местоположения портов для Mu. Му имеет два порта. Первый порт является входным, а второй - выходным.

mu = get_param('vdp/Mu','PortConnectivity');
mu.Position
ans =

   190   150


ans =

   225   150

Получите местоположения портов для Sum, который имеет три порта. Второе положение - нижний входной порт.

s = get_param('vdp/Sum','PortConnectivity');
s.Position
ans =

   250   135


ans =

   250   150


ans =

   285   145

Подключите порты с помощью точек вывода и ввода.

add_line('vdp',[225 150; 250 150])

В этом примере показан эффект добавления линий с опциями автотрассировки и без них.

Создание модели route. Отображение имен блоков по умолчанию.

open_system(new_system('route'));
set_param('route','HideAutomaticNames','off')

Добавьте блоки, как показано на рисунке. Добавьте порт ввода и порт вывода в каждую подсистему.

Добавьте линии для подключения выходов подсистемы к входам Subsystem1.

add_line('route',{'Subsystem/1','Subsystem/2'},...
      {'Subsystem1/1','Subsystem1/2'})

Поскольку опции автотрассировки не использовались, функция рисует прямые линии, которые проходят через блок усиления.

Удалите строки. Снова добавьте строки, на этот раз с помощью опции автотрассировки, для которой установлено значение 'on'.

add_line('route',{'Subsystem/1','Subsystem/2'},...
      {'Subsystem1/1','Subsystem1/2'},'autorouting','on')

Линии проходят вокруг блока усиления.

Удалите строки. Снова добавьте строки, используя smart параметр автотрассировки. При использовании массива для соединения двух наборов входов и выходов 'smart' автотрассировка маршрутизирует их вместе, если это позволяет лучше использовать пространство.

add_line('route',{'Subsystem/1','Subsystem/2'},...
      {'Subsystem1/1','Subsystem1/2'},'autorouting','smart')

Входные аргументы

свернуть все

Модель или подсистема для добавления строки, указанной как символьный вектор.

Пример: 'vdp' , 'f14/Controller'

Блокировать выходной порт для подключения линии, указанный как:

  • Имя блока, косая черта и имя или номер порта. Большинство портов блока пронумерованы сверху вниз или слева направо. Для порта состояния вместо номера порта используйте имя порта State.

  • Дескриптор порта, от которого требуется подключиться.

  • Массив обозначений портов.

Использовать 'PortHandles' с get_param чтобы получить ручки.

Пример: 'Mu/1', 'Subsystem/2', h.Outport(1){'Subsystem/1','Subsystem/2'}

Блокировать входной порт для подключения линии, указанный как:

  • Имя блока, косая черта и имя или номер порта. Имя порта на:

    • Включенной подсистемой является Enable.

    • Триггерная подсистема - Trigger.

    • Если подсистемами «Действие» и «Переключение вариантов» является «Действие».

  • Дескриптор порта, к которому требуется добавить линию.

  • Массив обозначений портов.

Используйте 'PortHandles' вариант с get_param чтобы получить ручки.

Пример: 'Mu/1', 'Subsystem/2', h.Inport(1), {'Subsystem/1','Subsystem/2'}

Тип автоматической маршрутизации линий вокруг других блоков, указанный как:

  • 'off' при отсутствии автоматической маршрутизации линий

  • 'on' для автоматической маршрутизации линий

  • 'smart' для автоматической трассировки линий, которая наилучшим образом использует пробелы на холсте и позволяет избежать наложения других линий и меток

Точки линии для построения, заданные как минимум в виде матрицы 2 на 2. Добавьте строку для каждого сегмента, который требуется нарисовать. Перед изменением размера холста укажите точки в виде координат (x, y) в левом верхнем углу редактора.

Пример: [100 300; 200 300; 200 300; 200 500]

Выходные аргументы

свернуть все

Строка, созданная add_line, возвращено в качестве дескриптора.

Представлен до R2006a