Сгенерируйте код от вложенной различной подсистемы с активацией компиляции и запуска кода

Этот пример иллюстрирует как code compile и startup различное время активации может использоваться вместе в двух вложенных различных подсистемах.

Модель

Откройте модель slexNestedVSSWithCCAndST.slx.. Модель содержит Различный блок Engine Controller подсистемы с двумя вариантами Diesel Engine и Petrol Engine с условиями ENGINE_TYPE == 1 и ENGINE_TYPE == 2 соответственно. Variant activation time параметр Engine Controller блок установлен в code compile.The два варианта Diesel Engine и Petrol Engine имейте startup как Variant activation time параметр. Каждый тип механизма имеет два варианта Effficient Mode и Normal Mode. Petrol Engine имеет условия PMODE == 1 и PMODE == 2, и Diesel Engine имеет condtions DMODE == 1 и DMODE == 2. Один из типов механизма может быть выбран при создании сгенерированного кода, и один из режимов контроллера может быть выбран перед запуском подписания кода.

Оба, которых имеют различные подсистемы, Распространяют условия за пределами различной подсистемы и Позволяют нулевые активные различные выключенные средства управления. Когда эти флаги будут включены, эта модель будет ошибка во время компиляции как условия с code compile и startup различное время активации будет смешано для блоков выходного порта и импорта. Для получения дополнительной информации смотрите Факторы и Ограничения в течение Времени Активации Варианта запуска

open_system('slexNestedVSSWithCCAndST.slx');

Сгенерируйте код

Нажмите на Generate Code Using Embedded Coder, чтобы сгенерировать код с целью ERT. В сгенерированном коде вы видите различные условия, связанные с Engine Controller появитесь с препроцессором #if условия и condtions, связанный с режимом, появляются как регулярный if.

Соединение code compile и startup различные времена активации позволяют вам точно настроить различный выбор. В сгенерированном исполняемом файле у вас может быть любой Petrol Engine контроллер или Diesel Engine контроллер. При запуске можно решить, хотите ли вы Efficient Mode или Normal Mode из любого Petrol Engine или Diesel Engine контроллеры. Для этого запишите пользовательский код, который может помочь выбрать различные варианты в startup время активации в System Initialize блок. Чтобы выбрать различные варианты, перейдите к Настройкам Модели> Генерация кода> Пользовательский код. Задайте Header file и Source file как #include "ChangeDieselController.h" и ChangeDieselController.c соответственно.

ChangeDieselController.c ответственно за выбор варианта запуска в инициализировать функции.

  #include "rtwtypes.h"
  extern int32_T DMODE;
  void ChangeDieselEngineController()
  {
   // select the diesel controller at startup.
   // This is just an example, so the value is hard coded.
   // In practical scenario, this can read value from sensor and
   // decide which controller you want at startup.
   DMODE = 1;
  }

С помощью этого кода можно выбрать вариант запуска в модели, инициализируют функцию и генерируют код.

void slexNestedVSSWithCCAndST_initialize(void)
 {
  ChangeDieselEngineController();
  utAssert((DMODE == 1) + (DMODE == 2) == 1);
  utAssert((PMODE == 1) + (PMODE == 2) <= 1);
  slexNestedVSSWithCCAndST_DW.systemEnable = 1;
}
Для просмотра документации необходимо авторизоваться на сайте