Удалите сброс и отключите функции от сгенерированного кода

В этом примере показано, как генератор кода удаляет недостижимый (мертвый код) экземпляры сброса, и отключите функции от сгенерированного кода для основанных на ERT систем, которые включают модель, ссылающуюся на иерархии. Оптимизация сгенерированного кода, чтобы удалить недостижимый код является требованием для критических по отношению к безопасности систем. Эта оптимизация также улучшает скорость выполнения и уменьшает потребление ROM.

Если модель содержит блоки с состояниями, сгенерированный код содержит сброс, и отключите функции. Если модель не является частью условно выполняемой системы, такой как активированная подсистема, генератор кода может удалить запрещать функцию, потому что сгенерированный код не вызывает его. Если модель не является частью условно выполняемой системы, которая может сбросить состояния, когда вход управления включает его, генератор кода может удалить функцию сброса, потому что сгенерированный код не вызывает его.

Модель в качестве примера

Модель, на которую ссылаются, rtwdemo_optionalDisableResetFunc_bot, находится в rtwdemo_optionalDisableResetFunc_top. Модель, на которую ссылаются, содержит два блока с состояниями, блок Delay и блок Discrete-Time Integrator.

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

  1. Откройте модели. В Командном окне введите rtwdemo_optionalDisableResetFunc_bot и rtwdemo_optionalDisableResetFunc_top.

  2. В вашей системе временная папка создайте временную папку для сборки и инспекционного процесса.

  3. Создайте модель.

  4. Откройте rtwdemo_optionalDisableResetFunc_top.c и rtwdemo_optionalDisableResetFunc_bot.c файлы.

rtwdemo_optionalDisableResetFunc_bot.c файл содержит, они сбрасывают и отключают функции.

/* System reset for referenced model: 'rtwdemo_optionalDisableResetFunc_bot' */
void rtwdemo_optionalDisableResetFunc_bot_Reset
  (DW_rtwdemo_optionalDisableResetFunc_bot_f_T *localDW)
{
  /* InitializeConditions for Delay: '<Root>/Delay' */
  localDW->Delay_DSTATE = 0.0;

  /* InitializeConditions for DiscreteIntegrator: '<Root>/Discrete-Time Integrator' */
  localDW->DiscreteTimeIntegrator_DSTATE = 3.0;
}

/* Disable for referenced model: 'rtwdemo_optionalDisableResetFunc_bot' */
void rtwdemo_optionalDisableResetFunc_bot_Disable(real_T *rty_Out1,
  DW_rtwdemo_optionalDisableResetFunc_bot_f_T *localDW)
{
  /* Disable for DiscreteIntegrator: '<Root>/Discrete-Time Integrator' */
  localDW->DiscreteTimeIntegrator_DSTATE = *rty_Out1;
}

rtwdemo_optionalDisableResetFunc_top_step функция не вызывает rtwdemo_optionalDisableResetFunc_bot_Disable функционируйте, потому что модель не является частью условно выполняемой системы. rtwdemo_optionalDisableResetFunc_top_step функция не вызывает rtwdemo_optionalDisableResetFunc_bot_Reset функционируйте, потому что модель не является частью условно выполняемой системы, которая может сбросить состояния, когда вход управления включает его.

Включите оптимизацию

  1. Откройте диалоговое окно Model Configuration Parameters для rtwdemo_optionalDisableResetFunc_bot.

  2. Выберите Remove Disable Function и Remove Reset Function.

Откройте rtwdemo_optionalDisableResetFunc_bot.c файл. Код не содержит rtwdemo_optionalDisableResetFunc_bot_Reset функционируйте или rtwdemo_optionalDisableResetFunc_bot_Disable функция.

Смотрите также

|

Похожие темы