Можно использовать условно выполненные системы (порты управления), такие как 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