Уменьшите модели, содержащие варианты блоков

Примечание

Вам требуется Simulink® Проектируйте Verifier™ лицензию, чтобы уменьшить вашу модель.

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

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

Рассмотрим модель Variant Reducer. Модель содержит блок Variant Source, блок Variant Sink и блок Variant Subsystem с этими вариантами выбора:

  • Variant Source: V==1 и V==2

  • Variant Sink: W==1, W==2, и W==3

  • Variant Subsystem: V==1 и V==2

Предположим, что модель имеет два предопределённых строений варианта с именем config1 (V==1 && W==2) и config2 (V==2 && W==2). Эти строения сохраняются в варианте строения объекта данных, varConfig.

Чтобы уменьшить модель, выполните следующие шаги:

  1. Щелкните правой кнопкой значок варианта и выберите Open in Variant Manager. Откроется Диспетчер вариантов, в котором будут отображены предопределённые строения.

  2. Нажмите Reduce model. Откроется диалоговое окно Вариант редуктора (Variant Reducer).

  3. В Reduction mode разделе выберите:

    • Current variant control values: Уменьшить модель на основе значений переменных управления вариантом в глобальной рабочей области.

    • Specify variant configurations: Уменьшить модель, которая связана с вариантом объекта данных строения и строений, которые будут сохранены в уменьшенной модели.

      Примечание

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

    • Specify variant control values: Уменьшить модель на основе варианта значений переменных управления. Можно создать несколько групп переменных, соответствующих различным строениям. Щелкните New variable group, чтобы задать значения переменных управления вариантом. Можно либо задать вариант управляющего значения, либо выбрать Full-range или Ignored из раскрывающегося списка. Установка значения управления вариантом в качестве вектора также позволяет вам уменьшить модель для всех комбинаций этой переменной. Для примера, если вы задаете значения V = 1 и W = [1,2], затем модель уменьшается для строений {V==1, W==1} и {V==1, W==2}. Если вы выбираете Full-range в качестве варианта управляющего значения Reference Value столбец активируется, чтобы ввести ссылочное значение, необходимое для успешной компиляции модели. Модель уменьшается для всех допустимых значений указанной переменной управления вариантом. Если вы выбираете Ignored в качестве значения управления вариантом, тогда эта переменная управления вариантом не рассматривается при уменьшении модели.

      Примечание

      Чтобы использовать полную переменную управления вариантом, Variant activation time в диалоговом окне параметров блоков, который использует эту переменную управления вариантом должен быть установлен на code compile.

    Примечание

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

  4. Выберите Preserve signal attributes, чтобы сохранить атрибуты скомпилированного сигнала между исходной и уменьшенной моделью. Когда эта опция выбрана, Variant Reducer пытается сохранить скомпилированные атрибуты сигнала между исходной и уменьшенной моделями, добавляя блоки спецификации сигнала в соответствующие блочные порты в уменьшенной модели. Атрибуты скомпилированного сигнала включают типы данных сигнала, размерности сигнала, скомпилированные шаги расчета и так далее.

  5. Выберите Generate detailed summary, чтобы сгенерировать сводные данные Variant Reducer в папке выхода. Различные сводные данные Преобразователя данных содержат сводные данные Variant Reducer Options, Original and Reduced Model Differences, Dependent Artifacts, Callbacks и Warnings.

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

    Примечание

    Чтобы сгенерировать подробные сводные данные, у вас должна быть Simulink Report Generator лицензия.

  6. Задайте значение в качестве суффикса в поле Model suffix. Значение суффикса модели добавляется к уменьшенным моделям, словарям данных и связанным программным продуктам. По умолчанию _r - суффикс.

  7. Укажите папку выхода для хранения уменьшенной модели.

    Примечание

    Установка флажка Open reduced model меняет текущую рабочую папку на выход папку.

  8. Нажмите Reduce. Теперь создана сокращенная модель для необходимых строений. Если модель содержит разрешенные библиотечные ссылки или модели-ссылки, соответствующий родительский элемент уменьшается для заданного строения и ссылается в модели. Уменьшенная модель, уменьшенная модель-ссылка и уменьшенная библиотека получают свои имена из соответствующей модели, модели-ссылки или библиотеки с _r (Model suffix) прилагается к нему.

Рассмотрим модель Variant, которая содержит блок Simulink Function с условием Variant на блоке Simulink Function как V==1 || V==2 || V==3 || V==4. Если модель уменьшена для любого или комбинации доступных условий Variant, Simulink Function блок в уменьшенной модели является безусловным. Для примера, если модель уменьшена для условия Variant, V=1, V=2, and V=3блок Simulink Function в уменьшенной модели безусловен. В то время как, если модель уменьшена для условия Variant, V=1, V=2, and V=5блок Simulink Function в уменьшенной модели остается условным V==1 || V==2 как условие варианта.

Уменьшите модель программно

Чтобы уменьшить модель программно, используйте синтаксис:

Simulink.VariantManager.reduceModel(model,<Name>,<Value>)

Для примера,

  • Чтобы уменьшить модель на основе значений переменных управления вариантом в глобальной рабочей области.

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems')
  • Чтобы уменьшить модель, основанную на значениях переменных управления вариантом в глобальной рабочей области, до заданной папки.

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems', 'OutputFolder', 'outdir')
  • Чтобы уменьшить модель, которая связана с вариантом объекта данных строения и строений, которые будут сохранены в уменьшенной модели.

    Simulink.VariantManager.reduceModel('sldemo_variant_subsystems','NamedConfigurations', {'LinInterStd','NonLinExterHighFid'})
  • Чтобы уменьшить модель путем определения строений в форме структуры переменных управления вариантом.

    Simulink.VariantManager.reduceModel('iv_model', 'VariableConfigurations', {'V',1,'W',[1 2]})

    Здесь заданы два строений, соответствующие {V=1, W=1} и {V=1, W=2}, соответственно.

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

    Simulink.VariantManager.reduceModel('slexVariantReducer','VariableConfigurations',{'V',1},'FullRangeVariables',{'W',1});

    Здесь вычисляются четыре строений, соответствующие {V==1, W==1}, {V==1, W==2}, {V==1, W==3} и {V==1, W==0} соответственно.

Для получения дополнительной информации о программном сокращении модели см. reduceModel.

Факторы и ограничения

  • Сокращение моделей, которые содержат блок Variant Connector, не поддерживается.

  • Папка выхода для хранения уменьшенной модели не должна находиться под matlabroot.

  • Если папка выхода содержит variant_reducer.log файл от предыдущего снижения сложности модели, редуктор перезаписывает все файлы, доступные в этом выходе, для любого последующего сокращения.

  • Дополнительные блоки добавляются автоматически к уменьшенной модели, чтобы гарантировать согласованность семантики симуляции. Дополнительные блоки могут включать блоки Signal Specification для атрибутов последовательного сигнала (тип данных, размерности, сложность) или блоки Ground и Terminator для несвязанных сигналов.

  • Во время снижения сложности модели комментарии блоков, присутствующие на активном пути, сохраняются, в то время как комментарии блоков, присутствующие на неактивном пути, удаляются.

  • Атрибуты сигнала (тип данных, сложность, размерности), исходящие от неактивных элементов в Stateflow® графики не могут быть сохранены в уменьшенной модели.

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

Эти компоненты модели не уменьшаются автоматически и могут потребовать ручного вмешательства. Чтобы идентифицировать такие программные продукты, сгенерируйте сводные данные Редуктора вариантов, установив флажок Generate detailed summary в диалоговом окне Редуктор вариантов во время снижения сложности модели.

  • Код коллбэка:

    • Коллбэки, такие как InitFcn, PreLoad, PostLoad, код инициализации маски и код коллбэка маскирующего параметра должны быть изменены вручную.

    • Код коллбэка в неактивных компонентах варианта удаляется. Это может вызвать неожиданное поведение в уменьшенной модели.

  • Во время снижения сложности модели элементы в холсте Stateflow, включая варианты переходов, не изменяются.

  • Если модель имеет зависимости от файлов, которые находятся под matlabroot (Библиотеки Simulink, .m файлы, .mat файлы, или .sldd файлы), они не изменяются или не копируются в выходную папку во время снижения сложности модели.

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

Подробнее о