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

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

Конструкция C

y1 = (double)u1;

Шаблон моделирования для преобразования типов данных - блок Simulink

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

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

Шаблон моделирования для преобразования типов данных - блок MATLAB function

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

См. также

Похожие темы