exponenta event banner

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

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

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

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

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

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

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

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

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

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

    Если используется Simulink.Parameter чтобы задать значение параметра блока, можно скомпилировать и смоделировать модель как ссылочную модель со значением для объекта, оставшегося пустым (значение установлено в '[]') до тех пор, пока вы предоставляете явное значение где-то в иерархии ссылок родительской модели. В этом случае моделирование модели непосредственно невозможно. Если значение пустое, необходимо указать тип данных и размеры для объекта. Предоставление значений Мин (Min) и Макс (Max) для объекта является необязательным. Хотя указано пустое значение, Simulink ® по-прежнему синтезирует значение ( см.Simulink.Parameter).

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

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

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

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

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

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

Параметризация ссылочной модели

В этом примере показано, как интерактивно настроить несколько экземпляров ссылочной модели для использования различных значений для одного параметра блока. Пример параметризации ссылочной модели с использованием только командной строки см. в разделе Программная параметризация ссылочной модели. Пример создания кода см. в разделе Указание значений параметров для экземпляра для повторно используемой ссылочной модели (Simulink Coder).

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

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

Создание модели ex_model_arg_ref содержит блок усиления и блок дискретного фильтра.

Чтобы настроить параметр усиления блока усиления и параметр числителя блока дискретного фильтра в качестве аргументов модели:

  1. В модели на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor).

  2. В Редакторе данных модели (Model Data Editor) выберите вкладку Параметры (Parameters).

  3. Используйте столбец Значение (Value), чтобы задать значение параметра Коэффициент усиления (Gain) переменной, например, gainArg.

  4. Рядом с gainArgнажмите кнопку действия и выберите Создать.

  5. В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение Simulink.Parameter и расположение в Model Workspace. Щелкните Создать (Create).

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

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

  8. Нажмите кнопку ОК.

  9. Повторите шаги 4-9 для параметра «Числитель» блока «Дискретный фильтр». В этом случае создайте Simulink.Parameter объект с именем coeffArg.

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

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

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

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

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

  1. В модели на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor).

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

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

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

    Можно также настроить параметры для каждого блока модели. В диалоговом окне блока перейдите на вкладку «Параметры экземпляра».

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

  6. В редакторе данных модели нажмите кнопку Показать/обновить дополнительную информацию. На вкладке Параметры (Parameters) можно увидеть каждый специфичный для экземпляра параметр, который отображается как настраиваемый параметр в ссылочных моделях. Отсюда можно создать набор значений параметров для всех экземпляров coeffArg и gainArg параметры в иерархии модели.

    По умолчанию каждый экземпляр использует последнее значение, указанное ниже, в иерархии модели. В этом случае отображается Редактор данных модели (Model Data Editor). <from_below>. Если установлен флажок Аргумент (Argument) для предоставления параметра родительской модели, значение отображается как <inherited> указывает, что значение времени выполнения теперь происходит от этого родительского элемента.

    После обновления схемы модели редактор также отображает скомпилированное значение для экземпляра. Чтобы перейти к этому значению по умолчанию, нажмите кнопку с тремя вертикальными точками рядом с скомпилированным значением и выберите Navigate to default value from below. Ссылочная модель, в которой значение было указано в последний раз, откроется на новой вкладке холста модели, и редактор данных модели выделит строку, содержащую параметр блока.

Группировать аргументы нескольких моделей в единую структуру

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

Замена значений параметров структурами для 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. Откройте обозреватель моделей. В ссылочной модели ex_model_arg_refна вкладке Моделирование (Modeling) щелкните Обозреватель моделей (Model Explorer).

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

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

  6. На панели «Содержимое» настройте structArg как единственный аргумент модели.

  7. В ex_model_arg_ref на вкладке Параметры редактора данных модели (Model Data Editor Parameters) задайте значение параметра «Усиление» (Gain) равным structArg.gain и значение параметра Numerator для structArg.coeff.

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

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

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

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

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

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

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

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

    myParamStructType = copy(slBus1);
    
  3. В редакторе данных модели для ex_model_argнажмите кнопку Показать/обновить дополнительную информацию. Редактор данных модели теперь содержит строки, которые соответствуют объектам параметров в базовом рабочем пространстве. structForInst1 и structForInst2.

  4. Используйте столбец «Тип данных» для установки типа данных structForInst1 и structForInst2 кому Bus: myParamStructType.

  5. В редакторе данных модели для ex_model_arg_ref, используйте Редактор данных модели (Model Data Editor) для установки типа данных structArg кому Bus: myParamStructType.

Изменить имя или значение аргумента модели

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

  • Найдите все блоки модели, которые ссылаются на модель, и сохраните значения параметров для каждого блока. Используйте get_param для запроса функции InstanceParameters параметр каждого блока, который является массивом структуры. Структура содержит четыре поля: Name, Value, Path, и Argument.

    Необходимо сохранить мгновенные значения параметров, поскольку операция переименования отбрасывает значения в блоках модели.

  • В редакторе данных модели щелкните правой кнопкой мыши переменную или объект в рабочем пространстве модели ссылочной модели и выберите Переименовать все (Rename All). Операция переименования изменяет имя переменной или объекта и ссылки на него во всей модели. Дополнительные сведения см. в разделе Создание, редактирование и управление переменными рабочей области.

  • Повторно примените значения аргументов к блокам 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.

Если для параметра «Спецификация» задано значение Explicit value или Even spacing, значение может быть:

  • Имя допустимой структурной переменной MATLAB, например Model1_LUT2

  • Выражение литеральной структуры, например struct(‘Table’, …, ‘BP1’, …, ‘BP2’, …)

  • Другие выражения, возвращающие допустимую структуру, например Params.Model1.LUT2 или вызов функции MATLAB

Если для параметра «Спецификация» задано значение 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. С помощью Обозревателя моделей добавьте Simulink.LookupTable в рабочем пространстве модели. Можно использовать кнопку «Добавить таблицу поиска Simulink». Назовите объект LUTArg.

  3. Задать для параметра «Количество табличных размеров» значение 2. В табличной области «Таблица» и «Точки останова» укажите значения 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. Нажмите кнопку «Применить».

  6. На панели «Содержимое» для LUTArgустановите флажок в столбце «Аргумент».

  7. В ссылочной модели в блоке n-D Lookup Table задайте для параметра Data specification значение Lookup table object. Задать для имени значение 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. Используйте структуру для создания значения аргумента экземпляра для второго блока модели. Укажите точку останова и данные таблицы для структуры.

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

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

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

См. также

| |

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

Подробнее