exponenta event banner

Укажите тип данных с одной точностью для встраиваемого приложения

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

Сведения о проектировании и проверке модели с одинарной точностью см. в разделе Проверка внедренной модели с плавающей запятой. Если у вас есть Designer™ Fixed-Point, вы можете использовать приложение Single Precision Converter (см. Single Precision Converter (Конструктор фиксированных точек)).

Использовать single Тип данных по умолчанию для недостаточно указанных типов

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

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

Изучение примера модели

Откройте rtwdemo_underspecified_datatype модели примера и настройте его для отображения сгенерированных имен блоков.

model = 'rtwdemo_underspecified_datatype';
load_system(model)
set_param(model,'HideAutomaticNames','off')
open_system(model);

Корневые входные данные In2, In3, и In4 определить Inherit: Auto для параметра блока Тип данных. Дочерние блоки также используют наследуемые типы данных.

Создать код с помощью double как тип данных по умолчанию

Модель начинается с параметра конфигурации System target file со значением ert.tlc, для чего требуется встроенный кодер. Задать для целевого файла системы значение grt.tlc вместо этого.

set_param(model,'SystemTargetFile','grt.tlc')

Создайте код из модели.

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

Build Summary

Top model targets built:

Model                            Action                       Rebuild Reason                                    
================================================================================================================
rtwdemo_underspecified_datatype  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 6.9724s

В отчете о создании кода просмотрите файл rtwdemo_underspecified_datatype.h. Код использует double тип данных для определения переменных In2, In3, и In4 поскольку типы данных Inport не указаны в модели.

cfile = fullfile('rtwdemo_underspecified_datatype_grt_rtw',...
    'rtwdemo_underspecified_datatype.h');
rtwdemodbtype(cfile,...
    '/* External inputs (root inport signals with default storage) */',...
    '/* External outputs (root outports fed by signals with default storage) */',...
    1, 0);
/* External inputs (root inport signals with default storage) */
typedef struct {
  int8_T In1;                          /* '<Root>/In1' */
  real_T In2;                          /* '<Root>/In2' */
  real_T In3;                          /* '<Root>/In3' */
  real_T In4;                          /* '<Root>/In4' */
} ExtU_rtwdemo_underspecified_d_T;

Создать код с помощью single как тип данных по умолчанию

Откройте диалоговое окно «Параметры конфигурации». На панели Математика и типы данных (Math and Data Types) выберите single в выпадающем списке Default for underspecified data type.

Либо включите оптимизацию в командной строке.

set_param(model, 'DefaultUnderspecifiedDataType', 'single');

Создайте код из модели.

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

Build Summary

Top model targets built:

Model                            Action                       Rebuild Reason                   
===============================================================================================
rtwdemo_underspecified_datatype  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 5.7877s

В отчете о создании кода просмотрите файл rtwdemo_underspecified_datatype.h. Код использует single тип данных для определения переменных In2, In3, и In4.

rtwdemodbtype(cfile,...
    '/* External inputs (root inport signals with default storage) */',...
    '/* External outputs (root outports fed by signals with default storage) */',...
    1, 0);
/* External inputs (root inport signals with default storage) */
typedef struct {
  int8_T In1;                          /* '<Root>/In1' */
  real32_T In2;                        /* '<Root>/In2' */
  real32_T In3;                        /* '<Root>/In3' */
  real32_T In4;                        /* '<Root>/In4' */
} ExtU_rtwdemo_underspecified_d_T;

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