Оптимизируйте сгенерированный код Используя булевы данные для логических сигналов

Оптимизируйте сгенерированный код путем хранения логических сигналов как булевых данных. Когда вы выбираете образцовые сигналы логики Реализации параметра конфигурации как булевы данные (по сравнению с двойным), блоки, которые генерируют логические сигналы выходные сигналы булевской переменной.

Оптимизация:

  • Уменьшает потребление RAM и ROM.

  • Улучшает скорость выполнения.

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

Рассмотрите модель rtwdemo_logicalAsBoolean. Выходными параметрами Relational Operator, Logical Operator и блоков HitCrossing является double, даже при том, что они представляют логические данные.

model = 'rtwdemo_logicalAsBoolean';
open_system(model);

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

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

currentDir = pwd;
[~,cgDir] = rtwdemodir();

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

rtwbuild(model)
### Starting build procedure for model: rtwdemo_logicalAsBoolean
### Successful completion of build procedure for model: rtwdemo_logicalAsBoolean

Просмотрите сгенерированный код без оптимизации. Эти строки кода находятся в rtwdemo_logicalAsBoolean.h.

hfile = fullfile(cgDir,'rtwdemo_logicalAsBoolean_ert_rtw',...
    'rtwdemo_logicalAsBoolean.h');
rtwdemodbtype(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
  real_T Out1;                         /* '<Root>/Out1' */
  real_T Out2;                         /* '<Root>/Out2' */
  real_T Out3;                         /* '<Root>/Out3' */
} ExtY_rtwdemo_logicalAsBoolean_T;

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

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

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

Также можно использовать API командной строки, чтобы включить оптимизацию:

set_param(model,'BooleanDataType','on');

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

Сгенерированный код хранит логический вывод сигнала как булевы данные.

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

rtwbuild(model)
### Starting build procedure for model: rtwdemo_logicalAsBoolean
### Successful completion of build procedure for model: rtwdemo_logicalAsBoolean

Просмотрите сгенерированный код с оптимизацией. Эти строки кода находятся в rtwdemo_logicalAsBoolean.h.

rtwdemodbtype(hfile,'/* External outputs','/* Parameters (default storage) */',1,0);
/* External outputs (root outports fed by signals with default storage) */
typedef struct {
  boolean_T Out1;                      /* '<Root>/Out1' */
  boolean_T Out2;                      /* '<Root>/Out2' */
  boolean_T Out3;                      /* '<Root>/Out3' */
} ExtY_rtwdemo_logicalAsBoolean_T;

Закройте отчет генерации кода и модель.

bdclose(model)
rtwdemoclean;
cd(currentDir)

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

Похожие темы