Замените boolean на определенный целочисленный тип данных

В зависимости от архитектуры процессора, который использует ваше производственное оборудование, можно улучшить скорость выполнения сгенерированного кода. Выберите определенный целочисленный тип данных для встроенного типа boolean. Используя замену типа данных, в сгенерированном коде можно заменить boolean встроенный тип данных на один из этих целочисленных типов:

  • int8

  • uint8

  • intn

Чтобы совпадать с целочисленным размером слова для производственного оборудования, замените n на 8, 16 или 32.

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

Модель ex_bool содержит два блока, что значения вывода boolean и два блока, которые принимают значения boolean как входные параметры. Этот пример показывает, как заменить тип данных boolean на целочисленный тип данных int32 в коде, сгенерированном для 32-битной аппаратной цели.

Сгенерируйте код, который содержит значение по умолчанию тип данных boolean

Просмотрите сгенерированный файл rtwtypes.h. Операторы typdef содержат типичное определение типа boolean_T, который является именем генерации кода для boolean.

/*===========================================================================*
 * Generic type definitions: boolean_T, char_T, byte_T, int_T, uint_T,       *
 *                           real_T, time_T, ulong_T.                        *
 *===========================================================================*/
typedef double real_T;
typedef double time_T;
typedef unsigned char boolean_T;
typedef int int_T;
typedef unsigned int uint_T;
typedef unsigned long ulong_T;
typedef char char_T;
typedef unsigned char uchar_T;
typedef char_T byte_T;

Просмотрите сгенерированный файл ex_bool.c. Код объявляет переменные boolean при помощи типа boolean_T.

/* External inputs (root inport signals with auto storage) */
typedef struct {
  real_T In1;                          /* '<Root>/In1' */
  real_T In2;                          /* '<Root>/In2' */
  boolean_T In3;                       /* '<Root>/In3' */
  boolean_T In4;                       /* '<Root>/In4' */
  real_T In5;                          /* '<Root>/In5' */
} ExtU_ex_bool_T;

/* External outputs (root outports fed by signals with auto storage) */
typedef struct {
  boolean_T Out1;                      /* '<Root>/Out1' */
  boolean_T Out2;                      /* '<Root>/Out2' */
  real_T Out3;                         /* '<Root>/Out3' */
} ExtY_ex_bool_T;

Сгенерируйте код, который содержит цель тип данных boolean

  1. Задайте объект Simulink.AliasType с базовым типом int32. Назовите объект с помощью заменяющего имени, что вы хотите появиться в сгенерированном коде.

    mybool = Simulink.AliasType;
    mybool.BaseType = 'int32';

  2. В диалоговом окне Configuration Parameters задайте поле Replacement Name для типа данных boolean как mybool.

Просмотрите сгенерированный файл rtwtypes.h. Кодированные карты идентификатор mybool к нативному целочисленному типу целевого компьютера путем создания операторов typedef.

/* Generic type definitions ... */
...
typedef int boolean_T;
 ...
/* Define Simulink Coder replacement data types. */
typedef boolean_T mybool;    /* User defined replacement datatype for boolean_T */

Просмотрите сгенерированный файл ex_bool.c. Код объявляет переменные boolean, которые используют тип mybool.

  /* External inputs (root inport signals with auto storage) */
typedef struct {
  real_T In1;                          /* '<Root>/In1' */
  real_T In2;                          /* '<Root>/In2' */
  mybool In3;                          /* '<Root>/In3' */
  mybool In4;                          /* '<Root>/In4' */
  real_T In5;                          /* '<Root>/In5' */
} ExtU_ex_bool_T;

/* External outputs (root outports fed by signals with auto storage) */
typedef struct {
  mybool Out1;                         /* '<Root>/Out1' */
  mybool Out2;                         /* '<Root>/Out2' */
  real_T Out3;                         /* '<Root>/Out3' */
} ExtY_ex_bool_T;

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

Похожие темы