exponenta event banner

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

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

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

  • Уменьшает потребление ПЗУ и ОЗУ.

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

Пример модели

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

model = 'rtwdemo_logicalAsBoolean';
open_system(model);

Создать код

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

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

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

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

Build Summary

Top model targets built:

Model                     Action                       Rebuild Reason                                    
=========================================================================================================
rtwdemo_logicalAsBoolean  Code generated and compiled  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 19.966s

Просмотр созданного кода без оптимизации. Эти строки кода находятся в 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. Откройте диалоговое окно «Параметры конфигурации».

  2. Выберите параметр Implement logic signals as Boolean data (в сравнении с двойным).

Кроме того, для оптимизации можно использовать API командной строки:

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

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

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

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

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

Build Summary

Top model targets built:

Model                     Action                       Rebuild Reason                   
========================================================================================
rtwdemo_logicalAsBoolean  Code generated and compiled  Generated code was out of date.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 8.5208s

Просмотр созданного кода с оптимизацией. Эти строки кода находятся в 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)

См. также

Связанные темы