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

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

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

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

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

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

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

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

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

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

    Если вы используете Simulink.Parameter возразите, чтобы установить значение параметров блоков, можно скомпилировать и симулировать модель как модель, на которую ссылаются, со значением для объекта, оставленного пустым (набор Value к '[]') как долго, когда вы вводите явное значение где-нибудь в иерархии ссылки родительской модели. В этом случае вы не можете симулировать модель непосредственно. Когда значение пусто, необходимо обеспечить Data Type и Dimensions для объекта. Обеспечение Min и значений Max для объекта является дополнительным. Несмотря на то, что вы задали пустое значение, Simulink® все еще синтезирует Value (см. Simulink.Parameter).

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

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

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

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

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

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

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

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

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

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

Создайте модель ex_model_arg_ref это содержит блок Gain и блок Discrete Filter.

Сконфигурировать параметр Gain блока Gain и параметр Numerator блока Discrete Filter в качестве аргументов модели:

  1. В модели, на вкладке Modeling, нажимают Model Data Editor.

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

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

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

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

  6. В Simulink.Parameter диалоговое окно свойства, набор Data Type к double и Dimension к 1. Оставьте значение пустым (набор Value к '[]'). Обеспечение Min и значений Max для объекта является дополнительным.

  7. Чтобы сконфигурировать объект в качестве аргумента модели, выберите Argument.

  8. Нажмите OK.

  9. Повторите шаги 4 - 9 для параметра Numerator блока Discrete Filter. В этом случае создайте Simulink.Parameter возразите названному coeffArg.

Помните, что модель отдельно не компилирует успешно без набора значений для объектов параметра.

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

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

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

Устанавливать специфичные для экземпляра значения для ваших аргументов модели в иерархии модели - ссылки:

  1. В модели, на вкладке Modeling, нажимают Model Data Editor.

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

  3. Используйте Model Data Editor, чтобы установить значения для параметров в Model и Model1. По умолчанию аргумент модели использует последнее значение, заданное ниже его в иерархии модели (обозначенный значением <from below>). Замените значение по умолчанию на значения в этом рисунке.

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

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

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

  6. В 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, выполните эти шаги:

  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, на вкладке Modeling нажмите 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Значение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.

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

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

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

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

  3. Установите 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, модель использует эти значения.

  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, который использует допускающий повторное использование алгоритм дважды.

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

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

    LUTForInst1.Table.Value = [8 7; 6 5];
    LUTForInst1.Breakpoints(1).Value = [5 6];
    LUTForInst1.Breakpoints(2).Value = [3 4];
    
  4. Задайте имя типа структуры. Совпадайте с этим именем к имени, заданному объектом в рабочем пространстве модели, на которое ссылаются.

    LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';
    
  5. Используйте структуру, чтобы создать специфичное для экземпляра значение аргумента для второго блока Model. Задайте точку останова и табличные данные для структуры.

    StructForInst2.Table = [9 8; 7 7];
    StructForInst2.BP1 = [3 4];
    StructForInst2.BP2 = [5 6];
    
  6. В ex_arg_LUT модель, для экземпляра модели Model, на вкладке Instance parameters, установленной значение LUTArg к LUTForInst1.

  7. Для экземпляра модели Model1, установите LUTArg на StructForInst2.

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

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

| |

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

Больше о