Параметризуйте экземпляры допускающей повторное использование модели, на которую ссылаются,

Когда вы ссылаетесь на ту же модель с помощью блоков многоуровневой модели, можно сконфигурировать параметры блоков, чтобы использовать или то же значение или различное значение для каждого экземпляра модели. Например, можно сконфигурировать параметр Gain блока Gain. Чтобы использовать различные значения, создайте и используйте образцовый аргумент, чтобы установить значение параметров блоков. Для некоторых приложений можно снова использовать модель, на которую ссылаются, только если можно сконфигурировать каждый экземпляр, чтобы использовать различное значение для параметров блоков (таких как заданное значение контроллера или коэффициента фильтра).

Задайте различное значение для каждого экземпляра допускающей повторное использование модели

Для параметров блоков в допускающей повторное использование модели, на которую ссылаются, чтобы задать различное значение для каждого экземпляра модели:

  1. Создайте переменную MATLAB® или объект Simulink.Parameter в рабочем пространстве модели модели, на которую ссылаются.

    • Используйте переменную MATLAB для простоты обслуживания.

    • Используйте объект Simulink.Parameter для большего управления минимальным и максимальным значением, типом данных и другими свойствами образцового аргумента.

  2. Установите значение параметров блоков в модели при помощи переменного или объекта параметра. Опционально, используйте ту же переменную или объект установить другие значения параметров блоков.

  3. Сконфигурируйте переменную или объект в качестве образцового аргумента.

    Когда вы моделируете эту модель непосредственно, параметры блоков используют значение что переменная или объектно-ориентированная память в рабочем пространстве модели. Когда эта модель моделируется как модель, на которую ссылаются, параметр, который сконфигурирован, когда образцовый аргумент получает свое значение от его родительской модели.

  4. В каждом блоке Model, который обращается к допускающей повторное использование модели, задайте специфичное для экземпляра значение для параметров блоков.

  5. В промежуточных моделях, в дополнение к определению специфичного для экземпляра значения для параметров блоков, можно задать, может ли параметр быть заменен на следующем уровне иерархии.

Объедините несколько аргументов в структуру

Когда вы сконфигурируете модель, чтобы использовать аргументы многоуровневой модели, рассмотрите использование структуры вместо отдельных переменных в рабочем пространстве модели. Этот метод уменьшает усилие по обслуживанию когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Вместо того, чтобы вручную синхронизировать аргументы в рабочем пространстве модели со значениями аргументов в блоках Model, вы изменяете структуры при помощи Редактора переменных или командной строки.

Если у вас есть лицензия Simulink® Coder™, этот метод может также уменьшать ROM, использованный формальными параметрами образцовых функций, на которые ссылаются, таких как вывод (step) функция.

Чтобы создать и использовать структуры, чтобы установить значения параметров блоков, смотрите, Организуют Связанные Определения Параметров блоков в Структурах.

Параметризуйте модель, на которую ссылаются,

Этот пример показывает, как сконфигурировать несколько экземпляров модели, на которую ссылаются, чтобы использовать различные значения для тех же параметров блоков в интерактивном режиме. Для примера, который параметризовал модель, на которую ссылаются, с помощью только командную строку, смотрите, Параметризовали Модель, на которую Ссылаются, Программно. Для примера, который вовлекает генерацию кода, смотрите, Задают Специфичные для экземпляра Значения параметров для Допускающей повторное использование Модели, на которую Ссылаются (Simulink Coder).

Сконфигурируйте модель, на которую ссылаются, чтобы использовать образцовые аргументы

Когда вы моделируете модель, на которую ссылаются, отдельно, объекты параметра в рабочем пространстве модели используют значения, которые вы задаете для объектов Simulink.Parameter или переменных MATLAB. Параметры блоков также используют эти значения.

Чтобы сконфигурировать параметр Gain блока Gain и параметр Numerator блока Discrete Filter в качестве образцовых аргументов, выполните эти шаги:

  1. Создайте иерархическую модель с 3 слоями путем открытия новой модели Simulink.

  2. Добавьте блок Model в модель и установите Model name на ex_model_arg.

  3. Сохраните модель как ex_model_arg_top.

  4. Открытый ex_model_arg_ref. Эта модель представляет допускающий повторное использование алгоритм.

  5. В модели выберите View> Model Data Editor.

  6. В Model Data Editor выберите вкладку Parameters.

  7. Используйте столбец Value, чтобы установить значение параметра Gain к переменной, например, gainArg.

  8. Рядом с gainArg кликните по кнопке действий и выберите Create.

  9. В диалоговом окне Create New Data, набор Value к Simulink.Parameter и Location к Model Workspace. Нажмите Create.

  10. В диалоговом окне свойства Simulink.Parameter, набор Value к номеру, например, 3.17. Нажмите OK.

  11. Используя Model Data Editor, установленный параметр Numerator блока Discrete Filter.

    • Используйте объект Simulink.Parameter под названием coeffArg.

    • Сохраните coeffArg в рабочем пространстве модели.

    • Присвойте значение 1.05 к coeffArg.

  12. В Model Data Editor нажмите кнопку Show/refresh additional information.

  13. Для каждого объекта установите флажок в столбце Argument.

    Для моделей со многими параметрами можно использовать поле Filter contents, чтобы найти определенные параметры более быстрыми.

  14. Сохраните ex_model_arg_ref.

Установите образцовые значения аргументов в родительской модели

Когда вы моделируете родительскую модель, каждый экземпляр допускающей повторное использование модели, на которую ссылаются, использует значения параметров, которые вы задаете в родительской модели. Этот пример показывает, как можно представить образцовый аргумент как настраиваемый параметр на блоке Model на каждом уровне иерархии модели.

  1. Открытый ex_model_arg. Эта модель представляет системную модель, которая использует несколько экземпляров допускающего повторное использование алгоритма.

  2. В модели выберите View> Model Data Editor.

  3. В Model Data Editor выберите вкладку Parameters. Model Data Editor показывает четыре строки, которые соответствуют специфичным для экземпляра параметрам, которые можно задать для этих двух блоков Model.

  4. Используйте Model Data Editor, чтобы установить значения для параметров. Например, используйте значения в этой фигуре.

  5. Чтобы заменить значение этих параметров на следующем уровне иерархии модели, установите флажок в столбце Argument. По умолчанию флажок не устанавливается.

    Можно также сконфигурировать специфичные для экземпляра параметры в каждом блоке Model. В диалоговом окне блока выберите вкладку Instance parameters.

  6. Открытый ex_model_arg_top. Эта модель содержит блок Model, это ссылается на ex_model_arg.

  7. Откройте диалоговое окно параметров блоков для Model и выберите вкладку Instance parameters. В этой вкладке вы видите каждый специфичный для экземпляра параметр, который был представлен как настраиваемый параметр в модели ex_model_arg. Отсюда можно создать набор значения параметров для всех экземпляров coeffArg и параметров gainArg в иерархии модели.

Аргументы многоуровневой модели группы в одну структуру

Можно использовать структуры, чтобы уменьшать усилие по обслуживанию когда это необходимо, чтобы добавить, переименовать или удалить аргументы. Со структурами математическая функциональность моделей является тем же самым.

Чтобы заменить значения параметров на структуры для ex_model_arg_ref и ex_model_arg, выполните эти шаги:

  1. В командной строке создайте структуру. Добавьте одно поле для каждого из объектов параметра в рабочей области ex_model_arg_ref.

    structForInst1.gain = 3.17;
    structForInst1.coeff = 1.05;
    
  2. Сохраните структуру в объекте Simulink.Parameter.

    structForInst1 = Simulink.Parameter(structForInst1);
    
  3. Откройте Model Explorer. В модели, на которую ссылаются, ex_model_arg_ref, выбирают View> Model Explorer> Model Explorer.

  4. Используйте Model Explorer, чтобы скопировать объект параметра с базового рабочего пространства в рабочее пространство модели ex_model_arg_ref.

  5. В рабочем пространстве модели переименуйте structForInst1 как structArg.

  6. В панели Contents сконфигурируйте structArg в качестве единственного образцового аргумента.

  7. В модели ex_model_arg_ref, во вкладке Model Data Editor Parameters, устанавливает значение параметра Gain к structArg.gain и значение параметра Numerator к structArg.coeff.

  8. Сохраните модель.

  9. В командной строке скопируйте существующую структуру в базовом рабочем пространстве как structForInst2.

    structForInst2 = copy(structForInst1);
    
  10. Установите значения полей в этих двух структурах при помощи тех же чисел, что вы раньше устанавливали образцовые значения аргументов в блоках Model.

    structForInst1.Value.gain = 2.98;
    structForInst1.Value.coeff = 0.98;
    
    structForInst2.Value.gain = 3.34;
    structForInst2.Value.coeff = 1.11;
    
  11. В топ-модели, ex_model_arg, используют Model Data Editor, чтобы установить значения аргументов как показано в этой фигуре.

Используйте объект шины в качестве типа данных структур

Можно использовать объект Simulink.Bus в качестве типа данных структур. Объект гарантирует, что характеристики специфичных для экземпляра структур, таких как имена и порядок полей, совпадают с характеристиками структуры в рабочем пространстве модели.

  1. В командной строке используйте функциональный Simulink.Bus.createObject, чтобы создать объект Simulink.Bus. Иерархия элементов в объекте совпадает с иерархией полей структуры. Именем по умолчанию объекта является slBus1.

    Simulink.Bus.createObject(structForInst1.Value);
    
  2. Переименуйте объект шины как myParamStructType путем копирования его.

    myParamStructType = copy(slBus1);
    
  3. В Model Data Editor для ex_model_arg нажмите кнопку Show/refresh additional information. Model Data Editor теперь содержит строки, которые соответствуют объектам параметра в базовом рабочем пространстве, structForInst1 и structForInst2.

  4. Используйте столбец Data Type, чтобы установить тип данных structForInst1 и structForInst2 к Bus: myParamStructType.

  5. В 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.Breakpoint образцовыми аргументами.

Для примера, который параметризовал модель, на которую ссылаются, при помощи интерполяционных таблиц и командной строки, смотрите, Конфигурируют Специфичные для экземпляра Данные для Интерполяционных таблиц Программно.

Сконфигурируйте образцовые аргументы в модели, на которую ссылаются,

  1. Откройте модель ex_arg_LUT_ref в качестве примера, которая представляет допускающий повторное использование алгоритм.

    open_system('ex_arg_LUT_ref')
    

  2. Используя Model Explorer, добавьте объект Simulink.LookupTable в рабочем пространстве модели. Можно использовать кнопку Add Simulink LookupTable. Назовите объект LUTArg.

  3. Установите Number of table dimensions на 2. Под Table и Breakpoints, задайте значения для таблицы и установите точки останова данные. Например, используйте значения в этой фигуре.

    Когда вы моделируете или генерируете код непосредственно от ex_arg_LUT_ref, модель использует эти значения.

  4. Под Struct Type definition, набор Name к LUTArg_Type.

  5. Нажмите Apply.

  6. В панели Contents, для LUTArg, устанавливают флажок в столбце Argument.

  7. В модели, на которую ссылаются, в n-D блоке Lookup Table, устанавливает Data specification на Lookup table object. Установите Name на LUTArg.

  8. Сохраните модель.

Создайте специфичные для экземпляра значения аргументов

  1. Откройте модель ex_arg_LUT в качестве примера, которая использует допускающий повторное использование алгоритм дважды.

    open_system('ex_arg_LUT')
    

  2. В командной строке создайте два объекта Simulink.LookupTable в базовом рабочем пространстве. Также можно создать объекты Simulink.LookupTable в словаре данных.

    LUTForInst1 = Simulink.LookupTable;
    LUTForInst2 = Simulink.LookupTable;
    
  3. Задайте точку останова и табличные данные для каждого объекта.

    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];
    
  4. Задайте имя типа структуры. Совпадайте с этим именем к имени, заданному объектом в рабочем пространстве модели, на которое ссылаются.

    LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';
    LUTForInst2.StructTypeInfo.Name = 'LUTArg_Type';
    
  5. В модели ex_arg_LUT, в блоке топ-модели, на вкладке Instance parameters, устанавливает значение LUTArg к LUTForInst1.

  6. В нижнем блоке Model, набор LUTArg к LUTForInst2.

Каждый экземпляр ex_arg_LUT_ref использует таблицу и данные о точке останова, хранимые в одном из объектов Simulink.LookupTable в базовом рабочем пространстве.

Смотрите также

| |

Связанные примеры

Больше о