Когда вы ссылаетесь на ту же модель с помощью нескольких блоков Model, можно сконфигурировать параметры блоков, чтобы использовать то же значение или другое значение для каждого образца модели. Например, можно сконфигурировать параметр Gain блока Gain. Чтобы использовать другие значения, создайте и используйте аргумент модели, чтобы задать значение параметров блоков. Для некоторых приложений можно повторно использовать ссылку на модель, только если можно сконфигурировать каждый образец, чтобы использовать другое значение для параметров блоков (такое как уставка контроллера или коэффициент фильтра).
Для параметров блоков в переиспользуемой модели-ссылке, чтобы задать другое значение для каждого образца модели:
Создайте MATLAB® переменная или Simulink.Parameter
объект в рабочем пространстве модели ссылочной модели.
Для упрощения обслуживания используйте переменный MATLAB.
Использование Simulink.Parameter
объект для большего управления минимальным и максимальным значением, типом данных и другими свойствами аргумента модели.
Установите значение параметров блоков с помощью переменной или объекта параметра. Опционально используйте ту же переменную или объект, чтобы задать другие значения параметров блоков.
Сконфигурируйте переменную или объект как аргумент модели путем выбора свойства Argument.
Когда вы симулируете эту модель непосредственно, параметры блоков используют значение, которое переменная или объект сохраняют в рабочем пространстве модели. Когда эта модель моделируется как ссылочная модель, параметр, сконфигурированный как аргумент модели, получает свое значение от его родительской модели.
Если вы используете Simulink.Parameter
объект, чтобы задать параметры блоков значение, можно скомпилировать и симулировать модель как модель-ссылку со значением для объекта, оставленного пустым (Value set at '[]
'), пока вы задаете явное значение где-то в иерархии родительской модели ссылки. В этом случае вы не можете симулировать модель непосредственно. Когда значение пустое, вы должны предоставить Data Type и Dimensions для объекта. Предоставление значений Min и Max для объекта необязательно. Несмотря на то, что вы указали пустое значение, Simulink® все еще синтезирует Value (см Simulink.Parameter
).
В каждом Model блоке, который ссылается на переиспользуемую модель, задайте специфическое для экземпляра значение для параметров блоков. Если вы не задаете значение, аргумент использует последнее значение, заданное ниже него в иерархии модели. В верхней модели можно сконфигурировать параметр конфигурации диагностики Нет явного окончательного значения для аргументов модели, чтобы сгенерировать ошибку или предупреждение, когда самый верхний Model блок, который может задать значение для аргумента модели, использует это значение по умолчанию вместо предоставления явного значения.
В промежуточных моделях, в дополнение к указанию специфического для экземпляра значения для параметров блоков, можно задать, можно ли переопределить параметр на следующем уровне иерархии.
Когда вы конфигурируете модель, чтобы использовать несколько аргументов модели, рассмотрите использование структуры вместо отдельных переменных в рабочем пространстве модели. Этот метод уменьшает усилия по обслуживанию, когда вы хотите добавить, переименовать или удалить аргументы. Вместо того, чтобы вручную синхронизировать аргументы в рабочем пространстве модели со значениями аргументов в блоках Model, вы редактируете структуры с помощью редактора переменных или командной строки.
Если у вас есть лицензия Simulink Coder™, этот метод может также уменьшить ПЗУ, используемое формальными параметрами функций модели, таких как выход (step
) функцию.
Чтобы создать и использовать структуры для задания значений параметров блоков, смотрите «Организация определений параметров связанных блоков в структурах».
В этом примере показов, как в интерактивном режиме сконфигурировать несколько образцы ссылочной модели, чтобы использовать различные значения для одних и тех же параметров блоков. Пример, который параметрирует ссылку на модель, используя только командную строку, см. в разделе Параметризация ссылки на Модели программно. Для примера, который включает генерацию кода, см., Задайте значения параметров конкретного экземпляра для переиспользуемой модели-ссылки (Simulink Coder).
Чтобы сконфигурировать аргументы модели для модели-ссылки, необходимо создать переменный MATLAB или Simulink.Parameter
объекты в рабочем пространстве модели. Этот пример конфигурирует Simulink.Parameter
объекты как аргументы модели без хранения значения по умолчанию в объекте и вместо этого полагаются на иерархию родительской модели ссылки, чтобы предоставить явные значения. Без значения по умолчанию модель не может быть моделирована непосредственно и должна быть моделирована как ссылочная модель.
Создайте модель ex_model_arg_ref
который содержит блок Gain и блок Discrete Filter.
Чтобы сконфигурировать параметр Gain блока Gain и параметр Numerator блока Discrete Filter как аргументы модели:
В модели на вкладке Modeling нажмите Model Data Editor.
В Model Data Editor выберите вкладку Parameters.
Используйте столбец Value, чтобы задать значение параметра Gain переменной, например gainArg
.
Рядом с gainArg
, нажмите кнопку действия и выберите Create.
В диалоговом окне «Создание новых данных» установите Value равным Simulink.Parameter
и Location к Model Workspace
. Нажмите Create.
В Simulink.Parameter
диалоговое окно свойств, установите Data Type равным double
и Dimension к 1
. Оставьте значение пустым (Value установлено на '[]
'). Предоставление значений Min и Max для объекта необязательно.
Чтобы сконфигурировать объект как аргумент модели, выберите Argument.
Нажмите OK.
Повторите шаги с 4 по 9 для параметра Numerator блока Discrete Filter. В этом случае создайте Simulink.Parameter
объект с именем coeffArg
.
Помните, что модель сама по себе не компилируется успешно без набора значений для объектов параметра.
Когда вы моделируете родительскую модель, каждый образец переиспользуемой модели-ссылки использует значения параметров, которые вы задаете в родительской модели. В этом примере показано, как можно показать аргумент модели как настраиваемый параметр на блоке Model на каждом уровне иерархии модели.
Создайте модель ex_model_arg
который использует несколько образцов переиспользуемой модели ex_model_arg_ref
из предыдущего примера.
Чтобы задать значения для конкретного экземпляра для аргументов модели в иерархии моделей-ссылок:
В модели на вкладке Modeling нажмите Model Data Editor.
В Model Data Editor выберите вкладку Parameters. В Model Data Editor показаны четыре строки, которые соответствуют параметрам конкретного экземпляра, которые можно задать для двух блоков Model.
Используйте Model Data Editor, чтобы задать значения для параметров в Model
и Model1
. По умолчанию аргумент модели использует последнее значение, заданное ниже него в иерархии модели (обозначено значением <from below>
). Замените значение по умолчанию значениями на этом рисунке.
Чтобы переопределить значение этих параметров на следующем уровне иерархии модели, установите флажок в столбце Argument. По умолчанию флажок не установлен.
Можно также сконфигурировать специфичные для экземпляра параметры в каждом блоке Model. В диалоговом окне блока выберите вкладку Instance parameters.
Создайте модель ex_model_arg_top
который содержит блок Model, который ссылается на ex_model_arg
.
В Model Data Editor нажмите кнопку Show/refresh additional information. На вкладке Parameters можно увидеть каждый параметр конкретного экземпляра, который доступен как настраиваемый параметр в ссылочных моделях. Отсюда можно создать набор значений параметров для всех образцов coeffArg
и gainArg
параметры в иерархии модели.
По умолчанию каждый образец использует последнее значение, заданное ниже в иерархии модели. В этом случае в Model Data Editor отображаются <from_below>
. Если установить флажок Argument, чтобы показать параметр родительской модели, Value отображается следующим образом <inherited>
чтобы указать, что значение среды выполнения теперь происходит от этого родительского элемента.
После обновления диаграммы модели редактор также отображает скомпилированное значение для образца. Чтобы перейти к этому значению по умолчанию, нажмите кнопку с тремя вертикальными точками рядом с скомпилированным значением и выберите Navigate to default value from below
. Модель-ссылка, в которой было задано последнее значение, откроется на новой вкладке в холсте модели, а Model Data Editor подсвечивает строку, содержащую параметры блоков.
Вы можете использовать структуры, чтобы уменьшить усилия обслуживания, когда вы хотите добавить, переименовать или удалить аргументы. Со структурами математическая функциональность моделей одинаковая.
Чтобы заменить значения параметров структурами для 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
модель, на вкладке Parameters Model Data Editor, установите значение параметра 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
, Value
, 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
, который представляет переиспользуемый алгоритм.
Используя Model Explorer, добавьте Simulink.LookupTable
объект в рабочем пространстве модели. Вы можете использовать кнопку Add Simulink LookupTable. Назовите объект LUTArg
.
Установите Number of table dimensions значение 2
. В Table и Breakpoints табличной области используйте заданные значения для Table
, BP1
, и BP2
данные. Для примера сконфигурируйте таблицу и данные точек по оси Х путем ввода этих значений в поле выражения MATLAB.
Table
— [3 4;1 2]
BP1
— [1 2]
BP2
— [3 4]
Когда вы моделируете или генерируете код непосредственно из 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
, который использует переиспользуемый алгоритм дважды.
В командной строке создайте 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