Сгенерируйте код из модели экспорта функций

В этом примере показано, как симулировать и сгенерировать код для модели экспорта функций.

Модель

Откройте модель 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 операторы.