Преобразование типа данных

В этом примере показано, как создать преобразование типа данных при помощи блока Data Type Conversion, диаграммы Stateflow или блока MATLAB function.

C построение

y1 = (double)u1;

Моделирование шаблона для преобразования типа данных — блок Simulink

Чтобы создать преобразование типа данных, используйте блок 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

Можно использовать график 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;
}

Моделирование шаблона для преобразования типа данных — блок MATLAB function

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. Можно задать выходную переменную как другой тип данных.

Смотрите также