В этом примере показано, как симулировать и сгенерировать код для модели экспорта функций.
Откройте модель slexVariantExportedFcn.slx. Модель содержит Различный Исходный блок с условием V == 1, где V Simulink.Parameter объект, который задан в PostLoadFcn в Файле> Свойства Модели> Коллбэки.
Условие на функциональном позывном задает условие для SubA. Это условие распространено с блоками, соединенными с входными портами SubA и с блоками, соединенными с выходными портами SubA.

Установите Variant activation time к update diagram. Прежде чем вы симулируете модель, в базовом рабочем пространстве устанавливает значение V к 1.
V.Value = 1;
SubA будет неактивен потому что V == 1. Вы заметите, что Out1 также неактивен. Однако в In2 остается активным, потому что SubB активен, и In2 также соединяется с SubB. Если вы отключите линию между In2 и SubB, то In2 будет неактивен.
code compile и startupСгенерируйте код с Variant activation time установите на code compile.
rtwbuild('slexVariantExportedFcn')
Просмотрите отчет генерации кода. Отчет включает в себя ссылки на файлы модели, такие как slexVariantExportedFcn.c и сопоставленные служебные и заголовочные файлы.
Фигура содержит фрагмент сгенерированного кода, slexVariantExportedFcn.c. Вы заметите тот In1 охраняется, внутренне и внешне, условными выражениями препроцессора (#if). In3 является пустым, потому что это не получает условия.
Когда вы изменяете Variant activation time от code compile к startup, необходимо изменить спецификацию класса памяти V к 'ExportedGlobal'.
V.CoderInfo.StorageClass = 'ExportedGlobal';
rtwbuild('slexVariantExportedFcn')Просмотрите отчет генерации кода. Фигура содержит фрагмент сгенерированного кода, slexVariantExportedFcn.c. Вы заметите, что сгенерированный код содержит регулярный if операторы.