Когда вы ссылаетесь на ту же модель с помощью нескольких блоков Model, можно сконфигурировать параметры блоков, чтобы использовать или то же значение или различное значение для каждого экземпляра модели. Например, можно сконфигурировать параметр Gain блока Gain. Чтобы использовать различные значения, создайте и используйте аргумент модели, чтобы установить значение параметров блоков. Для некоторых приложений можно снова использовать модель, на которую ссылаются, только если можно сконфигурировать каждый экземпляр, чтобы использовать различное значение в параметрах блоков (таких как заданное значение контроллера или коэффициента фильтра).
Для параметров блоков в допускающей повторное использование модели, на которую ссылаются, чтобы задать различное значение для каждого экземпляра модели:
Создайте переменную MATLAB® или Simulink.Parameter
объект в рабочем пространстве модели модели, на которую ссылаются.
Используйте переменную MATLAB для простоты обслуживания.
Используйте Simulink.Parameter
объект для большего управления минимальным и максимальным значением, типом данных и другими свойствами аргумента модели.
Установите значение параметров блоков в модели при помощи переменного или объекта параметра. Опционально, используйте ту же переменную или объект установить другие значения параметров блоков.
Сконфигурируйте переменную или объект в качестве аргумента модели.
Когда вы симулируете эту модель непосредственно, параметры блоков используют значение что переменная или объектно-ориентированная память в рабочем пространстве модели. Когда эта модель симулирована как модель, на которую ссылаются, параметр, который сконфигурирован, когда аргумент модели получает свое значение от его родительской модели.
В каждом блоке Model, который обращается к допускающей повторное использование модели, задайте специфичное для экземпляра значение для параметров блоков.
В промежуточных моделях, в дополнение к определению специфичного для экземпляра значения для параметров блоков, можно задать, может ли параметр быть заменен на следующем уровне иерархии.
Когда вы сконфигурируете модель, чтобы использовать аргументы многоуровневой модели, рассмотрите использование структуры вместо отдельных переменных в рабочем пространстве модели. Этот метод уменьшает усилие по обслуживанию, когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Вместо того, чтобы вручную синхронизировать аргументы в рабочем пространстве модели со значениями аргументов в блоках Model, вы изменяете структуры при помощи Редактора переменных или командной строки.
Если у вас есть лицензия Simulink® Coder™, этот метод может также уменьшать ROM, использованный формальными параметрами функций модели, на которые ссылаются, таких как выход (step
функция.
Чтобы создать и использовать структуры, чтобы установить значения параметров блоков, смотрите, Организуют Связанные Определения Параметров блоков в Структурах.
В этом примере показано, как сконфигурировать несколько экземпляров модели, на которую ссылаются, чтобы использовать различные значения в тех же параметрах блоков в интерактивном режиме. Для примера, который параметрирует модель, на которую ссылаются, с помощью только командную строку, смотрите, Параметрируют Модель, на которую Ссылаются, Программно. Для примера, который вовлекает генерацию кода, смотрите, Задают Специфичные для экземпляра Значения параметров для Допускающей повторное использование Модели, на которую Ссылаются (Simulink Coder).
Когда вы симулируете модель, на которую ссылаются, отдельно, объекты параметра в рабочем пространстве модели используют значения, которые вы задаете для Simulink.Parameter
объекты или переменные MATLAB. Параметры блоков также используют эти значения.
Чтобы сконфигурировать параметр Gain блока Gain и параметр Numerator блока Discrete Filter в качестве аргументов модели, выполните эти шаги:
Создайте иерархическую модель с 3 слоями путем открытия новой модели Simulink.
Добавьте блок Model в модель и установите Model name на ex_model_arg
.
Сохраните модель как ex_model_arg_top
.
Открытый ex_model_arg_ref
. Эта модель представляет допускающий повторное использование алгоритм.
В модели, на вкладке Modeling, нажимают Model Data Editor.
В Model Data Editor выберите вкладку Parameters.
Используйте столбец Value, чтобы установить значение параметра Gain к переменной, например, gainArg
.
Рядом с gainArg
, кликните по кнопке действий и выберите Create.
В диалоговом окне Create New Data, набор Value к Simulink.Parameter
и Location к Model Workspace
. Нажмите Create.
В Simulink.Parameter
диалоговое окно свойства, набор Value к номеру, например, 3.17
. Нажмите OK.
Используя Model Data Editor, установленный параметр Numerator блока Discrete Filter.
Используйте Simulink.Parameter
возразите названному coeffArg
.
Сохраните coeffArg
в рабочем пространстве модели.
Присвойте значение 1.05
к coeffArg
.
В Model Data Editor нажмите кнопку Show/refresh additional information.
Для каждого объекта установите флажок в столбце Argument.
Для моделей многими параметрами можно использовать поле Filter contents, чтобы найти определенные параметры более быстрыми.
Сохраните ex_model_arg_ref
.
Когда вы симулируете родительскую модель, каждый экземпляр допускающей повторное использование модели, на которую ссылаются, использует значения параметров, которые вы задаете в родительской модели. В этом примере показано, как можно отсоединить аргумент модели как настраиваемый параметр на блоке Model на каждом уровне иерархии модели.
Открытый ex_model_arg
. Эта модель представляет системную модель, которая использует несколько экземпляров допускающего повторное использование алгоритма.
В модели, на вкладке Modeling, нажимают Model Data Editor.
В Model Data Editor выберите вкладку Parameters. Model Data Editor показывает четыре строки, которые соответствуют специфичным для экземпляра параметрам, которые можно задать для двух блоков Model.
Используйте Model Data Editor, чтобы установить значения для параметров. Например, используйте значения в этом рисунке.
Чтобы заменить значение этих параметров на следующем уровне иерархии модели, установите флажок в столбце Argument. По умолчанию флажок не устанавливается.
Можно также сконфигурировать специфичные для экземпляра параметры в каждом блоке Model. В диалоговом окне блока выберите вкладку Instance parameters.
Открытый ex_model_arg_top
. Эта модель содержит блок Model, это ссылается на ex_model_arg
.
Откройте диалоговое окно параметров блоков для Model
и выберите вкладку Instance parameters. В этой вкладке вы видите каждый специфичный для экземпляра параметр, который был отсоединен как настраиваемый параметр в модели ex_model_arg
. Отсюда можно создать набор значения параметров для всех экземпляров coeffArg
и gainArg
параметры в иерархии модели.
Можно использовать структуры, чтобы уменьшать усилие по обслуживанию, когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Со структурами математическая функциональность моделей является тем же самым.
Заменять значения параметров на структуры для ex_model_arg_ref
и ex_model_arg
, выполните эти шаги:
В командной строке создайте структуру. Добавьте одно поле для каждого из объектов параметра в ex_model_arg_ref
рабочая область.
structForInst1.gain = 3.17; structForInst1.coeff = 1.05;
Сохраните структуру в Simulink.Parameter
объект.
structForInst1 = Simulink.Parameter(structForInst1);
Откройте Model Explorer. В модели, на которую ссылаются, ex_model_arg_ref
, на вкладке Modeling нажмите Model Explorer.
Используйте Model Explorer, чтобы скопировать объект параметра с базового рабочего пространства в ex_model_arg_ref
рабочее пространство модели.
В рабочем пространстве модели переименуйте structForInst1
как structArg
.
В панели Contents сконфигурируйте structArg
в качестве единственного аргумента модели.
В ex_model_arg_ref
модель, во вкладке Model Data Editor Parameters, установила значение параметра Gain к structArg.gain
и значение параметра Numerator к structArg.coeff
.
Сохраните модель.
В командной строке скопируйте существующую структуру в базовом рабочем пространстве как structForInst2
.
structForInst2 = copy(structForInst1);
Установите значения полей в этих двух структурах при помощи тех же чисел, что вы раньше устанавливали значения аргументов модели в блоках Model.
structForInst1.Value.gain = 2.98; structForInst1.Value.coeff = 0.98; structForInst2.Value.gain = 3.34; structForInst2.Value.coeff = 1.11;
В топ-модели, ex_model_arg
, используйте Model Data Editor, чтобы установить значения аргументов как показано в этом рисунке.
Можно использовать Simulink.Bus
возразите как тип данных структур. Объект гарантирует, что характеристики специфичных для экземпляра структур, таких как имена и порядок полей, совпадают с характеристиками структуры в рабочем пространстве модели.
В командной строке используйте функциональный Simulink.Bus.createObject
создать Simulink.Bus
объект. Иерархия элементов в объекте совпадает с иерархией полей структуры. Именем по умолчанию объекта является slBus1
.
Simulink.Bus.createObject(structForInst1.Value);
Переименуйте объект шины как myParamStructType
путем копирования его.
myParamStructType = copy(slBus1);
В Model Data Editor для ex_model_arg
, нажмите кнопку Show/refresh additional information. Model Data Editor теперь содержит строки, которые соответствуют объектам параметра в базовом рабочем пространстве, structForInst1
и structForInst2
.
Используйте столбец Data Type, чтобы установить тип данных structForInst1
и structForInst2
к Bus: myParamStructType
.
В Model Data Editor для ex_model_arg_ref
, используйте Model Data Editor, чтобы установить тип данных structArg
к Bus: myParamStructType
.
Переименовать аргумент модели в контексте модели, на которую ссылаются:
Найдите все блоки Model, которые обращаются к модели и сохраняют специфичные для экземпляра значения параметров, которые задает каждый блок. Используйте get_param
функционируйте, чтобы запросить InstanceParameters
параметр каждого блока, который является массивом структур. Структура содержит четыре поля: Name
Значение
path
, и Argument
.
Необходимо сохранить мгновенно-специфичные значения параметров, потому что операция переименования отбрасывает значения в блоках Model.
В Model Data Editor щелкните правой кнопкой по переменной или объекту в рабочем пространстве модели модели, на которую ссылаются, и выберите Rename All. Операция переименования изменяет название переменной или объекта и изменяет ссылки на него в модели. Для получения дополнительной информации смотрите, Создают, Редактирование, и Управляют Переменными Рабочей области.
Повторно примените значения аргументов к блокам Model при помощи нового имени аргумента. Чтобы программно установить значения аргументов в блоке Model, смотрите параметры Экземпляра.
Когда вы проектируете допускающую повторное использование модель, на которую ссылаются, для использования другими членами команды, можно применить маску к целой модели, на которую ссылаются. Можно затем настроить способ, которым пользователи взаимодействуют с блоками Model, включая устанавливание специфичных для экземпляра значений.
Используя этот метод также облегчает программно задавать специфичные для экземпляра значения. Если вы создаете и используете параметр маски под названием gainMask
программно устанавливать значение к 0.98
для экземпляра модели под названием myModelBlock
, ваши пользователи могут использовать эту команду в командной строке:
set_param('myModelBlock','gainMask','0.98')
Если вы применяете маску к модели, на которую ссылаются, маска модели показывает только специфичные для экземпляра параметры из прямой дочерней модели. Это не показывает специфичные для экземпляра параметры, продвинутые из порожденных моделей.
Если вы не маскируете модель, чтобы установить специфичное для экземпляра значение, используйте InstanceParameters
параметр блока. Для получения дополнительной информации смотрите, Параметрируют Модель, на которую Ссылаются, Программно.
Для получения информации о маскировании моделей смотрите Введение в Маску Модели.
Когда вы используете Simulink.LookupTable
объекты сохранить и сконфигурировать данные об интерполяционной таблице для ASAP2 или генерации кода AUTOSAR (например, STD_AXIS или CURVE), можно сконфигурировать объекты в качестве аргументов модели. Можно затем задать уникальные табличные данные и установить точки останова данные для каждого экземпляра компонента.
Вы не можете использовать Simulink.Breakpoint
объекты в качестве аргументов модели.
Можно задать специфичное для экземпляра значение Simulink.LookupTable
аргумент как новый Simulink.LookupTable
в родительской модели или как простая структура MATLAB или массив.
Когда вы устанавливаете Specification на Explicit value
или Even spacing
, значение может быть:
Имя допустимой переменной структуры MATLAB, такой как Model1_LUT2
Литеральное выражение структуры, такое как struct(‘Table’, …, ‘BP1’, …, ‘BP2’, …)
Другие выражения, которые возвращают допустимую структуру, такую как Params.Model1.LUT2
или вызов функции MATLAB
Когда вы устанавливаете Specification на Reference
, значение может быть:
Литеральное значение числового массива, такое как [1 5 7; 2 8 13]
Имя переменной числового массива, такой как Model1_LUT2
Другие выражения, которые возвращают допустимый числовой массив, такой как Params.Model1.LUT2
или вызов функции MATLAB
Когда вы задаете специфичное для экземпляра значение Simulink.LookupTable
аргумент как структура, следующие правила применяются:
Каждое поле определения аргумента модели должно быть задано в структуре и количестве полей, и имена полей должны соответствовать.
Размерности таблицы и данных о точке останова в структуре должны совпадать с размерностями определения аргумента модели.
Если типом данных поля структуры является double
, значение брошено к типу данных соответствующего поля операнда модели. В противном случае значение должно совпадать с типом данных соответствующего поля операнда модели.
Можно задать значение как простое числовое значение для любого режима симуляции и для генерации кода. Для генерации кода, если вы конфигурируете аргумент модели с классом памяти Auto
, переменная массива структур или числового массива не сохраняется в сгенерированном коде. Если вы устанавливаете класс памяти на значение, массив структур или числовой массив похожи на другие аргументы модели, в которых значение используется, чтобы инициализировать настраиваемый аргумент в сгенерированном коде.
В этом примере показано, как задать специфичное для экземпляра значение Simulink.LookupTable
аргумент как новый Simulink.LookupTable
и как структура MATLAB.
Для примера, который параметрирует модель, на которую ссылаются, при помощи интерполяционных таблиц и командной строки, смотрите, Конфигурируют Специфичные для экземпляра Данные для Интерполяционных таблиц Программно.
Откройте модель ex_arg_LUT_ref
в качестве примера, который представляет допускающий повторное использование алгоритм.
open_system('ex_arg_LUT_ref')
Используя Model Explorer, добавьте Simulink.LookupTable
объект в рабочем пространстве модели. Можно использовать кнопку Add Simulink LookupTable. Назовите объект LUTArg
.
Установите Number of table dimensions на 2
. Под Table и Breakpoints, задайте значения для таблицы и установите точки останова данные. Например, используйте значения в этом рисунке.
Когда вы симулируете или генерируете код непосредственно от ex_arg_LUT_ref
, модель использует эти значения.
Под Struct Type definition, набор Name к LUTArg_Type
.
Нажмите Apply.
В панели Contents, для LUTArg
, установите флажок в столбце Argument.
В модели, на которую ссылаются, в блоке n-D Lookup Table, устанавливает Data specification на Lookup table object
. Установите Name на LUTArg
.
Сохраните модель.
Откройте модель ex_arg_LUT
в качестве примера, который использует допускающий повторное использование алгоритм дважды.
open_system('ex_arg_LUT')
В командной строке создайте Simulink.LookupTable
объект в базовом рабочем пространстве. В качестве альтернативы можно создать Simulink.LookupTable
объект в словаре данных.
LUTForInst1 = Simulink.LookupTable;
Задайте точку останова и табличные данные для объекта.
LUTForInst1.Table.Value = [8 7; 6 5]; LUTForInst1.Breakpoints(1).Value = [5 6]; LUTForInst1.Breakpoints(2).Value = [3 4];
Задайте имя типа структуры. Совпадайте с этим именем к имени, заданному объектом в рабочем пространстве модели, на которое ссылаются.
LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';
Используйте структуру, чтобы создать специфичное для экземпляра значение аргумента для второго блока Model. Задайте точку останова и табличные данные для структуры.
StructForInst2.Table = [9 8; 7 7]; StructForInst2.BP1 = [3 4]; StructForInst2.BP2 = [5 6];
В ex_arg_LUT
модель, для экземпляра модели Model
, на вкладке Instance parameters, установленной значение LUTArg к LUTForInst1
.
Для экземпляра модели Model1
, установите LUTArg на StructForInst2
.
Один экземпляр ex_arg_LUT_ref
использует таблицу и данные о точке останова, хранимые в Simulink.LookupTable
объект в базовом рабочем пространстве и другом экземпляре использует таблицу и данные о точке останова, хранимые в структуре.
Simulink.Breakpoint
| Simulink.LookupTable
| Simulink.Parameter