Параметризация Образцов переиспользуемой ссылочной Модели

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

Задайте разное значение для каждого образца переиспользуемой модели

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

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

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

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

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

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

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

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

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

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

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

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

Если у вас есть лицензия Simulink Coder™, этот метод может также уменьшить ПЗУ, используемое формальными параметрами функций модели, таких как выход (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. В диалоговом окне «Создание новых данных» установите 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 модель, на вкладке Parameters Model Data Editor, установите значение параметра 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.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 объект в базовом рабочем пространстве и другом образце использует данные таблицы и точек по оси Х, хранящиеся в структуре.

См. также

| |

Похожие примеры

Подробнее о