В этом примере показано, как создать преобразование типа данных с помощью блока Data Type Conversion, Диаграмма Stateflow или блока MATLAB Function.
y1 = (double)u1;
Чтобы создать преобразование типов данных, используйте блок Data Type Conversion из библиотеки Simulink > Обычно используемые блоки.
1. Откройте пример модели ex_data_type_SL
.
2. Щелкните на блоке Inport. В Property Inspector в разделе «Атрибуты сигнала» задайте тип данных следующим int32
.
3. Щелкните на блоке Data Type Conversion (Преобразование типа данных). В Property Inspector задайте параметр Output data type следующим double
.
4. В диалоговом окне Параметров конфигурации установите параметр Режимы литья равным Explicit
. По умолчанию Simulink устанавливает параметр Casting modes на 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. В диалоговом окне Параметров конфигурации установите параметр Режимы литья равным 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. В диалоговом окне Параметров конфигурации установите параметр Режимы литья равным 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. Можно задать переменный выход как различные типы данных.