Этот пример показывает, как создать преобразование типа данных при помощи блока 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. Можно задать выходную переменную как различный тип данных.