В этом примере показано, как генератор кода удаляет недостижимый (мертвый код) экземпляры сброса, и отключите функции от сгенерированного кода для основанных на ERT систем, которые включают модель, ссылающуюся на иерархии. Оптимизация сгенерированного кода, чтобы удалить недостижимый код является требованием для критических по отношению к безопасности систем. Эта оптимизация также улучшает скорость выполнения и уменьшает потребление ROM.
Если модель содержит блоки с состояниями, сгенерированный код содержит сброс, и отключите функции. Если модель не является частью условно выполняемой системы, такой как активированная подсистема, генератор кода может удалить запрещать функцию, потому что сгенерированный код не вызывает его. Если модель не является частью условно выполняемой системы, которая может сбросить состояния, когда вход управления включает его, генератор кода может удалить функцию сброса, потому что сгенерированный код не вызывает его.
Модель, на которую ссылаются, rtwdemo_optionalDisableResetFunc_bot
, находится в rtwdemo_optionalDisableResetFunc_top
. Модель, на которую ссылаются, содержит два блока с состояниями, блок Delay и блок Discrete-Time Integrator.
Откройте модели. В Командном окне введите rtwdemo_optionalDisableResetFunc_bot
и rtwdemo_optionalDisableResetFunc_top
.
В вашей системе временная папка создайте временную папку для сборки и инспекционного процесса.
Создайте модель.
Откройте 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
функционируйте, потому что модель не является частью условно выполняемой системы, которая может сбросить состояния, когда вход управления включает его.
Откройте диалоговое окно Model Configuration Parameters для rtwdemo_optionalDisableResetFunc_bot
.
Выберите Remove Disable Function и Remove Reset Function.
Откройте rtwdemo_optionalDisableResetFunc_bot.c
файл. Код не содержит rtwdemo_optionalDisableResetFunc_bot_Reset
функционируйте или rtwdemo_optionalDisableResetFunc_bot_Disable
функция.
Удалите отключают функцию | Удалите функцию сброса