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

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

Для разработки и проверки модели с одной точностью смотрите Валидация встраиваемой модели с плавающей точкой. Если у вас есть Fixed-Point Designer™, можно использовать приложение Single Precision Converter (см. Single Precision Converter (Fixed-Point Designer)).

Использование 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 как тип данных по умолчанию

Модель начинается с параметра конфигурации Системный целевой файл, установленный на ert.tlc, для чего требуется Embedded Coder. Установите Системный целевой файл в 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 как тип данных по умолчанию

Откройте диалоговое окно Параметры конфигурации. На панели «Математика и типы данных» выберите single в раскрывающемся списке По умолчанию для недоопределенного типа данных.

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

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;

Похожие темы