Вариантные системы с условными системами

Можно использовать условно выполненные системы (порты управления), такие как Enable, Trigger, Reset и Function-Call Подсистемы в блоке Variant Subsystem. Когда параметр Variant activation time установлен в code compile В диалоговом окне Параметров блоков не поддерживается сочетание портов управления в блоке Variant Subsystem в качестве варианта выбора. Кроме того, все типы портов управления должны иметь одинаковые имена. Для получения дополнительной информации об условно выполненных системах смотрите Обзор условно выполненных подсистем.

Экспорт функций с подсистемой вариантов

Рассмотрим модель Variant, содержащую блок Variant Subsystem. Если вы используете Function-Call систему как вариант выбора для Linear Subsystem блокируйте, затем другой Subsystem блок (Nonlinear) в блоке Variant Subsystem также должен быть Function-Call системой. Кроме того, порты управления в Linear и Nonlinear блоки и соответствующий блок inport должны иметь то же имя (fcn).

В сгенерированном коде код внутри определения fcn охраняется условиями C предпроцессора внутри экспорта функций.

fcn() {
#if VSSMODE==0
// code for Linear choice
.......
#endif 
#if VSSMODE==1
// code for Nonlinear choice
.......
#endif 

Можно также иметь подобный шаблон моделирования с многоточечной функцией входа с помощью Model блока. Пример следующий:

В приведенном выше примере fcln1, fcln2, и fcln3 направляются через Подсистему Вариантов, используя блоки Model в качестве вариантов выбора.

Эти условия не поддерживаются при использовании условно выполненных систем в блоке Variant Subsystem в качестве варианта выбора:

  • Action порты как варианты

  • Варианты выбора Iterator содержащие порт с установленными условиями генерации препроцессора

  • Модели с Initialize, Reset, Terminate и Simulink функциями

    Примечание

    Порты событий Initialize и Terminate всегда безоговорочны, потому что они управляют как моделью по умолчанию, так и блоками, инициализируют и завершают события ссылочной модели. Если вы задаете блок Initialize функции в модели-ссылке, это соответствует явному событию инициализации.

Исполнительная подсистема с включением подсистемы в качестве выбора

Рассмотрим модель Variant, содержащую блок Variant Subsystem. Если вы используете Enable Subsystem как вариант выбора для Linear Subsystem блокируйте, затем другой Subsystem блок (Nonlinear) в блоке Variant Subsystem также должны быть Enable Subsystem.

Эта модель моделирует и генерирует код на основе VSSMODE значение.

Фрагмент сгенерированного кода показан ниже.

step() {
#if VSSMODE==0
// code for Linear choice
.......
#elif VSSMODE==1
// code for Nonlinear choice
.......
#endif

Похожие темы