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

Примечание

Вы требуете Simulink® Лицензия Design 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. От Compile mode выберите sim скомпилировать модель для симуляции или codegen скомпилировать модель в режиме генерации кода как часть сокращения модели. Если модель содержит различные блоки с набором параметров Variant control mode к sim codegen switching, можно выбрать codegen сохранить ветви генерации кода блоков в упрощенной модели. Для значения по умолчанию sim, Различный Редуктор компилирует и сохраняет ветви симуляции в модели верхнего уровня.

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

  6. Выберите Generate detailed summary, чтобы сгенерировать Различные сводные данные Редуктора в выходной папке. Различные сводные данные Редуктора содержат сводные данные Variant Reducer Options, Original and Reduced Model Differences, Dependent Artifacts, Callbacks и Warnings. Для получения дополнительной информации смотрите, Генерируют Различные Сводные данные Редуктора.

    Примечание

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

  7. Задайте значение как суффикс в поле Model suffix. Суффиксное значение модели добавлено к упрощенным моделям, словарям данных и связанным артефактам. По умолчанию, _r суффикс.

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

    Примечание

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

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

Рассмотрите модель Variant, которая содержит блок Simulink Function с Различным условием на блоке Simulink Function как V==1 || V==2 || V==3 || V==4. Если модель уменьшается для кого-либо или комбинации доступных Различных условий, блок Simulink Function в упрощенной модели является безусловным. Например, если модель уменьшается для Различного условия, V=1, V=2, and V=3, блок Simulink Function в упрощенной модели является безусловным. Принимая во внимание, что, если модель уменьшается для Различного условия, 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} and {V==1, W==0} соответственно.

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

Сгенерируйте различные сводные данные редуктора

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

Примечание

Лицензия Simulink Report Generator™ требуется, чтобы генерировать Различные сводные данные Редуктора.

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

  • Проверьте опции ввода и вывода, используемые для сокращения, например, входной настройки варианта и выходного местоположения папки.

  • Анализируйте различия между исходной моделью и упрощенной моделью, например:

    • Блоки, которые были вставлены, удалили, или измененный.

    • Маски, которые были изменены.

    • Зависимые файлы данных или файлы кэша Simulink, которые были изменены.

  • Идентифицируйте любые предупреждения.

  • Идентифицируйте, уменьшается ли модель для ветви генерации кода.

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

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

Чтобы сгенерировать отчет от диалогового окна Variant Reducer, установите флажок Generate detailed summary во время сокращения. Чтобы сгенерировать отчет при сокращении модели программно, установите 'GenerateSummary' аргумент значения имени к true. Например, эта команда генерирует сводные данные и сохраняет их в путь L:\Models\variantReducerRpt.

addpath(fullfile(matlabroot,'examples','simulink_variants','main'));
open_system('slexVariantReducer');
Simulink.VariantManager.reduceModel...
('slexVariantReducer','NamedConfigurations', {'config1'},'GenerateSummary',true,'OutputFolder','L:\Models');

variant reducer summary

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

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

  • Сокращение моделей, которые содержат различные блоки с Различным набором параметров времени активации к startup не поддерживается.

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

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

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

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

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

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

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

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

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

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

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

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

  • Различные объекты параметра (экземпляр Simulink.VariantVariable класс), не уменьшаются.

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

Больше о