В Simulink® можно использовать различные блоки, чтобы создать одну модель, которая угождает нескольким различным требованиям. Такие модели имеют фиксированную общую структуру и конечное множество переменных компонентов. Переменные компоненты активируются в зависимости от варианта, который вы выбираете. Таким образом результирующая активная модель является комбинацией фиксированной структуры и переменных компонентов на основе варианта.
Использование различных блоков в модели помогает в возможности многократного использования модели для названных вариантов различных условных выражений. Этот подход помогает вам удовлетворить разнообразные потребительские требования на основе приложения, стоить, или операционные факторы.
Можно использовать эти различные блоки в зависимости от проекта модели:
Variant Subsystem: Для иерархической структуры модели. Блок является шаблоном с двумя блоками Subsystem, чтобы использовать в качестве вариантных систем. Можно добавить блоки Subsystem, а также блоки Model, для вариантов.
Variant Model: Для иерархической структуры модели. Блок является шаблоном с двумя блоками Model, чтобы использовать в качестве вариантных систем. Можно добавить блоки Model, а также блоки Subsystem, для вариантов.
Встроенные Варианты: Для плоской структуры модели.
Примечание
Шаг расчета для одного входа Variant Source / блоки Variant Sink может не согласиться с несколькими вход Variant Source / блоки Variant Sink. Для получения дополнительной информации о шаге расчета смотрите то, Что Шаг расчета?
Использование блока Variant Subsystem обеспечивает эти преимущества:
Позволяет вам смешивать Model и блоки Subsystem как вариантные системы
Поддерживает гибкий ввод-вывод, так, чтобы все варианты не должны были иметь того же количества портов ввода и вывода
Чтобы преобразовать блок Model, который содержит различные модели с блоком Variant Subsystem, который содержит блоки Model, которые ссылаются на различные модели, щелкните правой кнопкой по блоку Model и выберите Subsystems & Model Reference> Convert to> Variant Subsystem. В качестве альтернативы можно использовать Simulink.VariantManager.convertToVariant
функция. Задайте имя блока Model или указатель блока. Конвертированная модель приводит к тем же результатам как исходная модель.
Если вы хотите симулировать модель, которая представляет автомобиль несколькими настройками. Эти настройки, несмотря на то, что подобный в нескольких аспектах, могут отличаться по свойствам, таким как расход топлива, объем двигателя или стандарт эмиссии. Вместо того, чтобы проектировать многоуровневые модели, которые вместе представляют все возможные настройки, можно использовать варианты, чтобы смоделировать только различные настройки. Этот подход сохраняет общие компоненты зафиксированными.
Эта модель содержит два варианта в одном блоке Variant Subsystem. Варианты являются двумя или больше настройками компонента в вашей модели.
Используя варианты в Модельно-ориентированном проектировании обеспечивает несколько преимуществ:
Варианты предоставляют вам способ спроектировать одну модель для многих систем.
Вы можете возможности проекта быстрого прототипирования как варианты, не имея необходимость комментировать разделы вашей модели.
Варианты помогают вам разработать платформы модульного проектирования, которые упрощают повторное использование и индивидуальную настройку. Этот подход улучшает скорость рабочего процесса путем сокращения сложности.
Если компонент модели имеет несколько альтернативных настроек, можно эффективно исследовать эти различные альтернативы, не изменяя фиксированные, неразличные компоненты.
Можно использовать различные различные настройки для симуляции или генерации кода из той же модели.
Можно симулировать каждую возможность проекта комбинаторным способом для данного тестового набора.
Если вы работаете с крупномасштабными проектами, можно распределить процесс тестирования этих проектов на кластере многоядерных компьютеров. В качестве альтернативы можно сопоставить различные тестовые наборы, чтобы спроектировать альтернативы для эффективно управления специфичные для проекта тесты.
Можно сгенерировать упрощенную модель с подмножеством настройки из основной модели со многими вариантами.
Варианты помогают вам задать несколько реализаций модели в одной, объединенной блок-схеме. Вот три сценария, где можно использовать варианты:
Модели, которые представляют несколько симуляция, генерация кода или рабочие процессы тестирования.
Модели, которые содержат несколько проектных решений на уровне компонента.
Блоки Subsystem, представляющие варианты, могут иметь порты ввода и вывода, которые отличаются по номеру от портов ввода и вывода в родительском блоке Variant Subsystem. Смотрите Отображение Inports и Выходные порты Вариантов.
Модели, которые в основном подобны, но имеют небольшие изменения, такой как в случаях, где вы хотите разделить тестовую модель от модели отладки.
Тестовая модель слева имеет фиксированный проект. Справа, та же тестовая модель включает вариант, который введен для отладки целей.
Simulink выбирает активный вариант в течение времени схемы обновления и в течение времени компиляции кода.
Можно представлять один или несколько вариантов как варианты в этих блоках.
Variant Source и блоки Variant Sink | Variant Subsystem и блоки Variant Model | |
---|---|---|
Представление варианта | Количество портов | Блок Subsystem или Model |
Позволяет иерархию выбора | Нет | Да |
Несовпадающее количество портов ввода и вывода среди вариантов | Simulink отключает неактивные порты | Simulink отключает неактивные порты |
Опция, чтобы задать вариант по умолчанию | Да | Да |
Порты управления поддержек | Нет | Да |
Может быть сохранено как автономный файл | Нет | Нет |
Поддержки физические порты подключения моделирования | Нет | Частично |
Прокомментируйте выбор ( | Нет | Нет |
Кроме того, можно представлять варианты с помощью блока Variant Source и Variant Sink. Эти блоки включают распространение различных условий в модели и могут распространить условия через иерархию модели - ссылки.
Можно создать варианты на нескольких уровнях в иерархии модели.
Блок Variant Subsystem является контейнером выбора вариантов, который представлен как блоки Model или Subsystem. Входные параметры, которые блок Variant Subsystem получает от восходящих компонентов моделей, сопоставляют с портами ввода и вывода вариантов.
Subsystem и блоки Model, представляющие варианты, могут иметь порты ввода и вывода, которые отличаются по номеру от портов ввода и вывода в родительском блоке Variant Subsystem. Однако следующим условиям нужно удовлетворить:
Имена импорта варианта являются подмножеством имен импорта, используемых родительской различной подсистемой.
Имена выходных портов варианта являются подмножеством имен выходного порта, используемых родительской различной подсистемой.
Если варианты имеют порт управления, имя порта ввода данных должно соответствовать с именем порта управления.
В процессе моделирования Simulink отключает неактивные порты в блоке Variant Subsystem.
Каждому блоку Variant сопоставили значок с ним. Цвет и значок Различного значка указывают на состояние блока Variant. Это также обеспечивает быстрый доступ к немногим Различным командам. Можно щелкнуть правой кнопкой по Различному значку, чтобы получить доступ к этим командам.
Различный значок | Различный источник | Различный приемник | Различная подсистема |
---|---|---|---|
Различный значок по умолчанию, когда никакая опция не выбрана. |
| ||
Различный блок с |
|
|
|
Различный блок с выбранной опцией Allow zero active variant controls. |
|
|
|
Различный блок с |
|
|
|
Различный блок с |
|
|
|
Различный блок с |
|
|
|
Различный блок с |
|
|
|
Различный блок с |
|
|
|
Различный блок с выбранной опцией Propagate conditions outside of variant subsystem. | Не применяется | Не применяется |
|
Различный блок с update diagram выбранный, когда Variant activation time и опция Allow zero active variant controls выбраны. |
|
|
|
Различный блок с update diagram and analyze all choices выбранный, когда Variant activation time и опция Allow zero active variant controls выбраны. |
|
|
|
Различный блок с code compile выбранный, когда Variant activation time и опция Allow zero active variant controls выбраны. |
|
|
|
Различный блок с update diagram выбранный, когда Variant activation time и опция Propagate conditions outside of variant subsystem выбраны. | Не применяется | Не применяется |
|
Различный блок с update diagram and analyze all choices выбранный, когда Variant activation time и опция Propagate conditions outside of variant subsystem выбраны. | Не применяется | Не применяется |
|
Различный блок с code compile выбранный, когда Variant activation time и опция Propagate conditions outside of variant subsystem выбраны. | Не применяется | Не применяется |
|
Различный блок с Allow zero active variant controls и опцией Propagate conditions outside of variant subsystem выбран. | Не применяется | Не применяется |
|
Различный блок с | Не применяется | Не применяется |
|
Рассмотрите, когда это необходимо, чтобы симулировать модель Simulink исключением некоторых его блоков из симуляции и физически не удаляя блоки из модели. Comment Out и команды Comment Through в Simulink предоставляют вам опцию, чтобы исключить блоки из симуляции. В зависимости от вашего требования моделирования можно использовать эти опции:
Comment Out: Исключает выбранный блок из симуляции. Сигналы отключены и основаны.
Comment Through: Исключает выбранный блок из симуляции. Через сигналы проходят. Чтобы прокомментировать через блок, количество входных портов и выходных портов для блока должно быть тем же самым.
Чтобы получить доступ к Comment Out или опциям Comment Through, щелкните правой кнопкой по блоку и по контекстному меню или выберите Comment Out или Comment Through на основе вашего требования моделирования.
В качестве альтернативы можно также выбрать блок и нажать Ctrl+Shift+X, чтобы прокомментировать или нажать Ctrl+Shift+Y, чтобы прокомментировать через.
Можно использовать get_param
и set_param
команды, чтобы просмотреть или изменить прокомментированное состояние блока программно. Например,
get_param(gcb,'commented'); % To view the commented state of the block
set_param(gcb,'commented','on'); % To comment out a block
set_param(gcb,'commented','through'); % To comment through a block
set_param(gcb,'commented','off'); % To uncomment a block
Когда вы комментируете блок, имена сигнала в выходном порту блока проигнорированы. Чтобы включать такие сигналы в процессе моделирования, имя сигнала должно быть добавлено во входном порту блока.
Comment Out и Comment Through не поддерживаются с этими блоками: Inport, Outport, Дублирующийся Порт, Connection ports, Argument Inport, Argument Outport, Data Store Memory, Signal Generator, Goto Tag Visibility, поскольку, и В то время как блоки.