Можно выполнить большинство основ моделирования Simulink® программно в Командном окне MATLAB®, таких как создание моделей, добавление блоков к моделям и установки параметров. Эти примеры показывают некоторые из этих команд и как можно использовать их.
Загрузка модели загружает его в память, но не открывает его в Редакторе Simulink для редактирования. После того, как вы загрузите модель, можно работать с нею программно. Можно использовать Редактор Simulink, чтобы отредактировать модель, только если вы открываете модель.
Чтобы загрузить систему, используйте load_system команда. Например, чтобы загрузить vdp модель, в командной строке MATLAB, введите:
load_system('vdp')Можно записать функцию, которая создает модель и использует настройки, которые вы предпочитаете. Например, эта функция создает модель, которая имеет зеленый фон и использует ode3 решатель:
function new_model(modelname)
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
if nargin == 0
modelname = 'my_untitled';
end
% create and open the model
open_system(new_system(modelname));
% set default screen color
set_param(modelname,'ScreenColor','green');
% set default solver
set_param(modelname,'Solver','ode3');
% save the model
save_system(modelname);
Если вы присваиваете переменную как значение параметров блоков, необходимо задать значение переменной в модели. Смотрите Создают Модель. Можно задать переменную программно с помощью PreloadFcn коллбэк с set_param функция. Используйте функцию в этой форме:
set_param('mymodel','PreloadFcn','expression')expression команда MATLAB или скрипт MATLAB на вашем пути поиска файлов MATLAB. Это наборы команд модель PreloadFcn коллбэк к значению, которое вы задаете. Сохраните модель, чтобы сохранить настройку.
Например, когда вы задаете переменные в loadvar.m скрипта MATLAB для модели modelname.slx, используйте эту команду:
set_param('modelname','PreloadFcn','loadvar')K значение 15, используйте эту команду:set_param('modelname','PreloadFcn','K=15')После того, как вы сохраняете модель, PreloadFcn коллбэк выполняется, когда вы затем открываете модель.
В этом примере показано, как использовать функции, чтобы добавить блоки и соединить блоки программно. Если вы добавили блоки в модель, вы используете три разных подхода, чтобы соединить их: направленные линии, указатели порта и порт IDs. Направленные линии позволяют вам задавать точное (x, y) координаты всех конечных точек сегмента соединительной линии. Указатели порта и порт IDs позволяют соединительным линиям блокировать порты, не имея необходимость знать координаты местоположения порта.
Создайте и откройте пустую модель, названную ‘mymodel’.
Добавьте блоки, включая блок подсистемы. Используйте position массив в set_param функционируйте, чтобы установить размер и положение блоков. Установите верхнее левое и нижнее правое угловое использование блока (x, y) координаты.
add_block('simulink/Sources/Sine Wave','mymodel/Sine1');
set_param('mymodel/Sine1','position',[140,80,180,120]);
add_block('simulink/Sources/Pulse Generator','mymodel/Pulse1');
set_param('mymodel/Pulse1','position',[140,200,180,240]);
add_block('simulink/Ports & Subsystems/Subsystem','mymodel/Subsystem1');
set_param('mymodel/Subsystem1','position',[315,120,395,200]);
add_block('simulink/Sinks/Scope','mymodel/Scope1');
set_param('mymodel/Scope1','position',[535,140,575,180]);
В Subsystem1, удалите связь по умолчанию между In1 и Out1. Кроме того, добавьте второй входной порт путем копирования и переименования In1 от библиотеки блоков.
delete_line('mymodel/Subsystem1','In1/1','Out1/1');
add_block('simulink/Sources/In1','mymodel/Subsystem1/In2');Измените местоположение внутренних блокировок порта ввода и вывода в Subsystem1.
set_param('mymodel/Subsystem1/In1','position',[50,50,90,70]);
set_param('mymodel/Subsystem1/In2','position',[50,130,90,150]);
set_param('mymodel/Subsystem1/Out1','position',[500,80,540,100]);
Вставьте и расположите Add блокируйтесь в Subsystem1.
add_block('simulink/Math Operations/Add','mymodel/Subsystem1/Add1');
set_param('mymodel/Subsystem1/Add1','position',[250,80,290,120]);
Затем добавьте линии, чтобы соединить все блоки в модели. Запустите путем соединения Sine1 и Pulse1 блоки с помощью направленных линий.
Найдите (x, y) координаты Sine1 выходной порт.
Sine1_Port = get_param('mymodel/Sine1','PortConnectivity')
Sine1_Port =
struct with fields:
Type: '1'
Position: [185 100]
SrcBlock: []
SrcPort: []
DstBlock: [1×0 double]
DstPort: [1×0 double]
get_param показывает, что расположение порта [185 100].
Найдите (x, y) координаты Pulse1 выходной порт.
Pulse1_Port = get_param('mymodel/Pulse1','PortConnectivity')
Pulse1_Port =
struct with fields:
Type: '1'
Position: [185 220]
SrcBlock: []
SrcPort: []
DstBlock: [1×0 double]
DstPort: [1×0 double]get_param показывает, что расположение порта [185 220].
Соедините выход Sine1 к первому входу Subsystem1 использование трех сегментов направленной линии.
add_line('mymodel', [185 100; 275 100]);
add_line('mymodel', [275 100; 275 140]);
add_line('mymodel', [275 140; 310 140]);
Соедините выход Pulse1 к второму входу Subsystem1 использование трех сегментов направленной линии.
add_line('mymodel', [185 220; 275 220]);
add_line('mymodel', [275 220; 275 180]);
add_line('mymodel', [275 180; 310 180]);
Используйте get_param получить указатели порта соединяемых блоков. Затем используйте указатели порта блока, чтобы соединить выход Subsystem1 к входу Scope1.
SubsysPortHandles = get_param('mymodel/Subsystem1','PortHandles');
ScopePortHandles = get_param('mymodel/Scope1','PortHandles');
add_line('mymodel',SubsysPortHandles.Outport(1),...
ScopePortHandles.Inport(1));Используйте имена порта и идентификаторы, чтобы соединить Add1 блокируйтесь в Subsystem1 к вводам и выводам подсистемы. Simulink использует самый прямой путь, чтобы соединить порты.
add_line('mymodel/Subsystem1','In1/1','Add1/1');
add_line('mymodel/Subsystem1','In2/1','Add1/2');
add_line('mymodel/Subsystem1','Add1/1','Out1/1');Выберите блок, который является источником для сигнальной линии.
Использование get_param присваивать указатель порта в настоящее время выбранного блока к переменной p. Использование get_param присваивать имя сигнальной линии от того порта до переменной l. Затем определите имя сигнальной линии к 's9'.
p = get_param(gcb,'PortHandles') l = get_param(p.Outport,'Line') set_param(l,'Name','s9')
Можно использовать Simulink.BlockDiagram.arrangeSystem команда, чтобы разметить вашу модель. Эта команда выравнивает входные блоки слева, выходные блоки справа и элементы модели в столбцах между вводами и выводами. Команда влияет только на один слой за один раз.
Можно использовать Simulink.BlockDiagram.routeLine команда, чтобы направить существующие линии вашей модели. Маршрутизация существующих линий улучшает качество маршрута линии и избегает перекрытий линии с другими линиями и препятствиями в модели.
В то время как можно использовать эти команды с любой открытой моделью, они особенно полезны с моделями, которые вы создаете программно. Для примера смотрите Расположение Программно Заполненная Модель.
Когда вы открываете модель, модель появляется в окне Simulink Editor. Например, если у вас есть одна открытая модель, и затем вы открываете вторую модель, вторая модель появляется во втором окне.
Чтобы открыть ту же модель в двух окнах Simulink Editor, в командной строке MATLAB, вводят open_system команда и использование window аргумент. Например, если у вас есть vdp открытая модель, чтобы открыть другой экземпляр vdp модель, введите:
open_system('vdp','window')Чтобы подсветить блок, линию, порт или аннотация в открытой модели, использует hilite_system.
Можно использовать set_param команда в командной строке MATLAB или в программе MATLAB, чтобы установить параметры, которые определяют цвет фона схемы и цвет фона и основной цвет элементов диаграммы. Следующая таблица обобщает параметры та схема блока управления цвета.
| Параметр | Определяет |
|---|---|
| Фон блок-схемы |
| Блок и фон аннотации |
| Блок и передний план аннотации |
Установите цветной параметр или на именованный цвет или на значение RGB.
Именованный цвет: 'automatic', 'black', 'white', 'red', 'green', 'blue'ГолубойПурпурный, 'yellow'серый, 'lightBlue', 'orange', 'darkGreen'
Значение RGB: '[r,g,b]'
где rG, и b красные, зеленые, и синие компоненты цвета, нормированного к области значений 0.0 к 1.0.
Например, следующие наборы команд цвет фона в настоящее время выбранной системы или подсистемы к светло-зеленому цвету:
set_param(gcs,'ScreenColor','[0.3, 0.9, 0.5]')
add_block | add_line | delete_block | delete_line | gcb | get_param | hilite_system | load_system | new_system | open_system | save_system | set_param | Simulink.BlockDiagram.routeLine