В этом примере показано, как создать преобразование типа данных при помощи блока Data Type Conversion, диаграммы Stateflow или блока MATLAB function.
y1 = (double)u1;
Чтобы создать преобразование типа данных, используйте блок Data Type Conversion из библиотеки Simulink> Commonly Used Blocks.
1. Открытая модель ex_data_type_SL
в качестве примера.
2. Кликните по блоку Inport. В Property Inspector, под Атрибутами Сигнала, задают Тип данных как int32
.
3. Кликните по блоку Data Type Conversion. В Property Inspector задайте параметр типа Выходных данных как double
.
4. В диалоговом окне Configuration Parameters, установленном параметр режимов Кастинга на Explicit
. По умолчанию Simulink устанавливает параметр режимов Кастинга на Nominal
это генерирует минимальный кастинг. Для получения дополнительной информации смотрите Выражения приведения типа Управления в Сгенерированном коде.
5. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.
Сгенерированный код появляется в ex_data_type_SL.c
:
int32_T u1; /* '<Root>/u1' */ real_T y1; /* '<Root>/y1' */ /* Model step function */ void ex_data_type_SL_step(void) { /* Outport: '<Root>/y1' incorporates: * DataTypeConversion: '<Root>/Data Type Conversion' * Inport: '<Root>/u1' */ y1 = (real_T)u1; }
Определение типа генератора кода для double
real_T
.
Можно использовать график Stateflow® вместо блока Data Type Conversion, чтобы создать преобразование типа данных.
1. Открытая модель ex_data_type_SF
в качестве примера.
2. Кликните по блоку Inport. В Property Inspector, под Атрибутами Сигнала, задают Тип данных как int32
.
3. В диалоговом окне Configuration Parameters, установленном параметр режимов Кастинга на Explicit
.
4. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.
Сгенерированный код появляется в ex_data_type_SF.c
:
int32_T u1; /* '<Root>/u1' */ real_T y1; /* '<Root>/Type_Conversion' */ /* Model step function */ void ex_data_type_SF_step(void) { /* Chart: '<Root>/Type_Conversion' incorporates: * Inport: '<Root>/u1' */ y1 = (real_T)u1; }
1. Открытая модель ex_data_type_ML
в качестве примера.
2. Блок MATLAB function содержит эту функцию:
function y1 = typeconv(u1) y1 = double(u1); end
3. Кликните по блоку Inport. В Property Inspector, под Атрибутами Сигнала, задают Тип данных как int32
.
4. В диалоговом окне Configuration Parameters, установленном параметр режимов Кастинга на Explicit
.
5. Чтобы создать модель и сгенерировать код, нажмите Ctrl+B.
Сгенерированный код появляется в ex_data_type_ML.c
:
int32_T u1; /* '<Root>/u1' */ real_T y1; /* '<Root>/MATLAB Function' */ /* Model step function */ void ex_data_type_ML_step(void) { /* MATLAB Function: '<Root>/MATLAB Function' incorporates: * Inport: '<Root>/u1' */ y1 = (real_T)u1; }
Преобразования типов могут также произойти на выходе блоков, где выходная переменная задана как другой тип данных. Например, в блоке Gain, можно установить Тип данных параметров как Inherit via internal rule
управлять типом данных выходного сигнала. Другой пример преобразования типов может произойти за пределами диаграммы Stateflow. Можно задать выходную переменную как другой тип данных.