Когда вы ссылаетесь на ту же модель с помощью блоков многоуровневой модели, можно сконфигурировать блочный параметр, чтобы использовать или то же значение или различное значение для каждого экземпляра модели. Например, можно сконфигурировать параметр Усиления блока Gain. Чтобы использовать различные значения, создайте и используйте образцовый аргумент, чтобы установить значение блочного параметра. Для некоторых приложений можно снова использовать модель, на которую ссылаются, только если можно сконфигурировать каждый экземпляр, чтобы использовать различное значение для блочного параметра (такого как заданное значение контроллера или коэффициента фильтра).
Для блочного параметра в допускающей повторное использование модели, на которую ссылаются, чтобы задать различное значение для каждого экземпляра модели:
Создайте переменную MATLAB® или объект Simulink.Parameter
в рабочем пространстве модели модели, на которую ссылаются.
Используйте переменную MATLAB для простоты обслуживания.
Используйте объект Simulink.Parameter
для большего управления минимальным и максимальным значением, типом данных и другими свойствами образцового аргумента.
Установите блочное значение параметров в модели при помощи переменного или объекта параметра. Опционально, используйте ту же переменную или возразите, чтобы установить другие блочные значения параметров.
Сконфигурируйте переменную или объект в качестве образцового аргумента.
Когда вы моделируете эту модель непосредственно, блочные параметры используют значение что переменная или объектно-ориентированная память в рабочем пространстве модели. В противном случае, включая то, когда вы моделируете родительскую модель, значение в рабочем пространстве модели не имеет никакого значения.
В каждом Блоке модели, который относится к допускающей повторное использование модели, задайте специфичное для экземпляра значение для образцового аргумента.
Когда вы сконфигурируете модель, чтобы использовать аргументы многоуровневой модели, рассмотрите использование структуры вместо отдельных переменных в рабочем пространстве модели. Этот метод уменьшает усилие по обслуживанию когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Вместо того, чтобы вручную синхронизировать аргументы в рабочем пространстве модели со значениями аргументов в Блоках модели, вы изменяете структуры при помощи Редактора переменных или командной строки.
Если у вас есть лицензия Simulink® Coder™, этот метод может также уменьшить ROM, использованный формальными параметрами образцовых функций, на которые ссылаются, таких как вывод (step
) функция.
Чтобы создать и использовать структуры, чтобы установить блочные значения параметров, смотрите, Организуют Связанные Блочные Определения Параметра в Структурах.
Этот пример показывает, как сконфигурировать несколько экземпляров модели, на которую ссылаются, чтобы использовать различные значения для того же блочного параметра в интерактивном режиме. Для примера, который параметризовал модель, на которую ссылаются, с помощью только командную строку, смотрите, Параметризовали Модель, на которую Ссылаются, Программно. Для примера, который вовлекает генерацию кода, смотрите, Задают Специфичные для экземпляра Значения параметров для Допускающей повторное использование Модели, на которую Ссылаются (Simulink Coder).
Когда вы моделируете модель, на которую ссылаются, отдельно, объекты параметра в рабочем пространстве модели используют значения, которые вы задаете для объектов Simulink.Parameter
. Блочные параметры также используют эти значения.
Чтобы сконфигурировать параметр Усиления блока Gain и параметр Числителя блока Discrete Filter в качестве образцовых аргументов, выполните эти шаги:
Открытый ex_model_arg_ref
. Эта модель представляет допускающий повторное использование алгоритм.
В модели выберите View> Model Data Editor.
В Редакторе Данных модели выберите вкладку Parameters.
Используйте Столбец значений, чтобы установить значение параметра Усиления к переменной, например, gainArg
.
Следующий за gainArg
, кликните по кнопке действий и выберите Create.
В диалоговом окне Create New Data, установленном Значении к Simulink.Parameter
и Местоположении к Model Workspace
. Нажмите Create.
В диалоговом окне свойства Simulink.Parameter
, установленном Значении к номеру, например, 3.17
. Нажать ОК.
Используя Редактор Данных модели, установленный параметр Числителя блока Discrete Filter.
Используйте объект Simulink.Parameter
под названием coeffArg
.
Сохраните coeffArg
в рабочем пространстве модели.
Присвойте значение 1.05
к coeffArg
.
В Редакторе Данных модели нажмите кнопку дополнительной информации Show/refresh.
Для каждого объекта установите флажок в столбце Аргумента.
Для моделей со многими параметрами можно использовать поле содержимого Фильтра, чтобы найти определенные параметры более быстрыми.
Сохраните ex_model_arg_ref
.
Когда вы моделируете родительскую модель, каждый экземпляр допускающей повторное использование модели, на которую ссылаются, использует значения аргументов, которые вы задаете в родительской модели. В этом примере, в верхнем экземпляре ex_model_arg_ref
, объект параметра gainArg
использует значение 2.98
.
Образцовый ex_model_arg
содержит два Блока модели тот ссылочный ex_model_arg_ref
. Чтобы установить различные значения параметров для двух экземпляров модели, выполните эти шаги:
Открытый ex_model_arg
. Эта модель представляет системную модель, которая использует несколько экземпляров допускающего повторное использование алгоритма.
В модели выберите View> Model Data Editor.
В Редакторе Данных модели выберите вкладку Parameters. Редактор Данных модели показывает четыре строки, которые соответствуют образцовым аргументам, которые можно задать для этих двух Блоков модели.
Используйте Редактор Данных модели, чтобы установить значения для образцовых аргументов. Например, используйте значения в этой фигуре.
Можно использовать структуры, чтобы уменьшить усилие по обслуживанию когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Со структурами математическая функциональность моделей является тем же самым.
Чтобы заменить значения параметров на структуры для 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);
Откройте Образцовый Проводник. В модели, на которую ссылаются, ex_model_arg_ref
, выбирают View> Model Explorer> Model Explorer.
Используйте Образцовый Проводник, чтобы скопировать объект параметра с базового рабочего пространства в рабочее пространство модели ex_model_arg_ref
.
В рабочем пространстве модели переименуйте structForInst1
как structArg
.
В панели Содержимого сконфигурируйте structArg
в качестве единственного образцового аргумента.
В модели ex_model_arg_ref
, во вкладке Model Data Editor Parameters, устанавливает значение параметра Усиления к structArg.gain
и значению параметра Числителя к structArg.coeff
.
Сохраните модель.
В командной строке скопируйте существующую структуру в базовом рабочем пространстве как structForInst2
.
structForInst2 = copy(structForInst1);
Установите значения полей в этих двух структурах при помощи тех же чисел, что вы раньше устанавливали образцовые значения аргументов в Блоках модели.
structForInst1.Value.gain = 2.98; structForInst1.Value.coeff = 0.98; structForInst2.Value.gain = 3.34; structForInst2.Value.coeff = 1.11;
В топ-модели, ex_model_arg
, используют Редактор Данных модели, чтобы установить значения аргументов как показано в этой фигуре.
Можно использовать объект Simulink.Bus
в качестве типа данных структур. Объект гарантирует, чтобы характеристики специфичных для экземпляра структур, таких как имена и порядок полей, совпадали с характеристиками структуры в рабочем пространстве модели.
В командной строке используйте функциональный Simulink.Bus.createObject
, чтобы создать объект Simulink.Bus
. Иерархия элементов в объекте совпадает с иерархией полей структуры. Именем по умолчанию объекта является slBus1
.
Simulink.Bus.createObject(structForInst1.Value);
Переименуйте объект шины как myParamStructType
путем копирования его.
myParamStructType = copy(slBus1);
В Редакторе Данных модели для ex_model_arg
нажмите кнопку дополнительной информации Show/refresh. Редактор Данных модели теперь содержит строки, которые соответствуют объектам параметра в базовом рабочем пространстве, structForInst1
и structForInst2
.
Используйте столбец Типа данных, чтобы установить тип данных structForInst1
и structForInst2
к Bus: myParamStructType
.
В Редакторе Данных модели для ex_model_arg_ref
используйте Редактор Данных модели, чтобы установить тип данных structArg
к Bus: myParamStructType
.
Переименовать образцовый аргумент в контексте модели, на которую ссылаются:
Найдите все Блоки модели, которые относятся к модели и сохраняют значения аргументов, которые задает каждый блок. Используйте функцию get_param
, чтобы запросить параметр ParameterArgumentValues
каждого блока, который является структурой с полем, которое соответствует аргументу, который вы хотите переименовать.
Необходимо сохранить значения аргументов, потому что операция переименования отбрасывает значения в Блоках модели.
В Редакторе Данных модели щелкните правой кнопкой по переменной или объекту в рабочем пространстве модели модели, на которую ссылаются, и выберите Rename All. Операция переименования изменяет название переменной или объекта и изменяет ссылки на него всюду по модели. Для получения дополнительной информации смотрите, Создают, Редактирование, и Управляют Переменными Рабочей области.
Повторно примените значения аргументов к Блокам модели при помощи нового имени аргумента. Чтобы программно установить значения аргументов в Блоке модели, смотрите аргументы Model.
Когда вы разрабатываете допускающую повторное использование модель, на которую ссылаются, для использования другими членами команды, можно применить маску к целой модели, на которую ссылаются. Можно затем настроить способ, которым пользователи взаимодействуют с Блоками модели, включая установку образцовых значений аргументов.
Используя этот метод также облегчает программно задавать значения аргументов. Если вы создаете и используете параметр маски под названием gainMask
, чтобы программно установить значение аргумента на 0.98
для экземпляра модели под названием myModelBlock
, ваши пользователи могут использовать эту команду в командной строке:
set_param('myModelBlock','gainMask','0.98')
Если вы не маскируете модель, чтобы установить значение аргумента, ваши пользователи должны определить местоположение значения в Редакторе Данных модели или в таблице значений аргументов в диалоговом окне Блока модели.
Для получения информации о маскировании моделей смотрите Введение в Образцовую Маску.
Когда вы используете объекты Simulink.LookupTable
сохранить и сконфигурировать данные интерполяционной таблицы для ASAP2 или генерации кода AUTOSAR (например, STD_AXIS или CURVE), можно сконфигурировать объекты в качестве образцовых аргументов. Можно затем задать уникальные табличные данные и установить точки останова данные для каждого экземпляра компонента.
Вы не можете использовать объекты Simulink.Breakpoint
или объекты Simulink.LookupTable
, которые называют объекты Simulink.Breakpoint
образцовыми аргументами.
Для примера, который параметризовал модель, на которую ссылаются, при помощи интерполяционных таблиц и командной строки, смотрите, Конфигурируют Специфичные для экземпляра Данные для Интерполяционных таблиц Программно.
Откройте модель в качестве примера ex_arg_LUT_ref
, который представляет допускающий повторное использование алгоритм.
open_system('ex_arg_LUT_ref')
Используя Образцовый Проводник, добавьте объект Simulink.LookupTable
в рабочем пространстве модели. Можно использовать кнопку Add Simulink LookupTable. Назовите объект LUTArg
.
Определите Номер табличных размерностей к 2
. В соответствии с Таблицей и Точками останова, задайте значения для таблицы и установите точки останова данные. Например, используйте значения в этой фигуре.
Когда вы моделируете или генерируете код непосредственно от ex_arg_LUT_ref
, модель использует эти значения.
В соответствии с определением Типа Struct, определенным Именем к LUTArg_Type
.
Нажмите Apply.
В панели Содержимого, для LUTArg
, устанавливают флажок в столбце Аргумента.
В модели, на которую ссылаются, в n-D блоке Lookup Table, спецификации Данных набора к Lookup table object
. Определите Имя к LUTArg
.
Сохраните модель.
Откройте модель в качестве примера ex_arg_LUT
, который использует допускающий повторное использование алгоритм дважды.
open_system('ex_arg_LUT')
В командной строке создайте два объекта Simulink.LookupTable
в базовом рабочем пространстве. Также можно создать объекты Simulink.LookupTable
в словаре данных.
LUTForInst1 = Simulink.LookupTable; LUTForInst2 = Simulink.LookupTable;
Задайте точку останова и табличные данные для каждого объекта.
LUTForInst1.Table.Value = [8 7; 6 5]; LUTForInst1.Breakpoints(1).Value = [5 6]; LUTForInst1.Breakpoints(2).Value = [3 4]; LUTForInst2.Table.Value = [9 8; 7 7]; LUTForInst2.Breakpoints(1).Value = [3 4]; LUTForInst2.Breakpoints(2).Value = [5 6];
Задайте имя типа структуры. Совпадайте с этим именем к имени, заданному объектом в рабочем пространстве модели, на которое ссылаются.
LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type'; LUTForInst2.StructTypeInfo.Name = 'LUTArg_Type';
В модели ex_arg_LUT
, в блоке топ-модели, на вкладке Arguments, устанавливает значение LUTArg к LUTForInst1
.
В нижнем Блоке модели, набор LUTArg к LUTForInst2
.
Каждый экземпляр ex_arg_LUT_ref
использует таблицу и данные точки останова, хранившие в одном из объектов Simulink.LookupTable
в базовом рабочем пространстве.
Simulink.Breakpoint
| Simulink.LookupTable
| Simulink.Parameter