Идентификаторы типов данных

Присвоение идентификаторов типов данных

Каждому типу данных, используемому в S-функции, присваивается идентификатор типа данных. Вы всегда должны использовать идентификаторы типов данных, чтобы получить и задать информацию о типах данных в вашей S-функции.

В целом, Simulink® программа присваивает идентификаторы типов данных во время инициализации модели на основе «first come, first served». Для примера рассмотрим обобщенную схему блока схемы ниже.

Программа Simulink присваивает идентификатор типа данных для каждого типа выходных данных в схеме в том порядке, в котором он запрашивается. Для простоты примите, что порядок запроса происходит слева направо. Поэтому выходу блока A может быть присвоен тип данных ID 13, и выходу блока B может быть присвоен тип данных ID 14. Тип выходных данных блока C аналогичен типу выходных данных блока A, поэтому идентификатор типа данных, присвоенный выходу блока C, также равен 13. Выход блока D присваивается тип данных ID 15.

Теперь, если блоки в модели переставлены,

Программа Simulink по-прежнему присваивает идентификаторы типов данных в том порядке, в котором они используются. Поэтому каждый тип данных может оказаться с идентификатором различных типов данных. Выходу блока A все еще присвоен тип данных ID 13. Теперь вывод блока D находится в следующей линии и присвоен тип данных ID 14. Выход блока B присвоен тип данных ID 15. Тип выходных данных блока C все еще совпадает с типом выходных данных блока A, поэтому ему также назначается тип данных ID 13.

В этой таблице обобщены два случая, описанных выше.

Блок

Идентификатор типа данных в Model_1

Идентификатор типа данных в Model_2

A

13

13

B

14

15

C

13

13

D

15

14

Этот пример иллюстрирует, что нет никакой строгой зависимости между атрибутами типа данных и значением его идентификатора типа данных. Другими словами, идентификатор типа данных назначается не на основе характеристик типа данных, который он представляет, а на основании того, когда этот тип данных впервые необходим.

Примечание

Из-за особенностей назначения идентификаторов типов данных вы всегда должны использовать функции API для извлечения информации из идентификатора типа данных о типе данных в вашей S-функции.

Регистрация типов данных

Функции в следующей таблице доступны в API для написанных пользователем S-функций с фиксированной точкой для регистрации типов данных в симуляции. Каждая из этих функций возвращает идентификатор типа данных. Чтобы увидеть пример используемой функции, перейдите в файл и линии, указанные в таблице.

Функции регистрации типов данных

Функция

Описание

Пример использования

ssRegisterDataTypeFxpBinaryPoint

Зарегистрируйте тип данных с фиксированной точкой с двоичным масштабированием только с точкой и верните его идентификатор типа данных

sfun_user_fxp_asr.c
Линия 252

ssRegisterDataTypeFxpFSlopeFixExpBias

Зарегистрируйте тип данных с фиксированной точкой с масштабированием [Slope Bias], заданным с точки зрения дробного наклона, фиксированной экспоненты и смещения, и верните его идентификатор типа данных

Недоступно

ssRegisterDataTypeFxpScaledDouble

Зарегистрируйте масштабированный тип данных double с масштабированием [Slope Bias], заданным с точки зрения дробного наклона, фиксированной экспоненты и смещения, и верните его идентификатор типа данных

Недоступно

ssRegisterDataTypeFxpSlopeBias

Зарегистрируйте тип данных с помощью масштабирования [Slope Bias] и верните его идентификатор типа данных

sfun_user_fxp_dtprop.c
Линия 319

Предварительно присвоенные идентификаторы типов данных

Программа Simulink регистрирует свои встроенные типы данных, и эти типы данных всегда имеют предварительно назначенные идентификаторы типов данных. Встроенные идентификаторы типов данных задаются следующими лексемами:

  • SS_DOUBLE

  • SS_SINGLE

  • SS_INT8

  • SS_UINT8

  • SS_INT16

  • SS_UINT16

  • SS_INT32

  • SS_UINT32

  • SS_BOOLEAN

Вам не нужно регистрировать эти типы данных. Если вы пытаетесь зарегистрировать встроенный тип данных, функция регистрации просто возвращает предварительно присвоенный идентификатор типа данных.

Настройка и получение типов данных

Идентификаторы типов данных используются для определения типов данных входных и выходных портов, параметров времени выполнения и состояний DWork. Для установки типов данных с фиксированной точкой для величин в S-функции процедура выполняется следующим образом:

  1. Зарегистрируйте тип данных с помощью одной из функций, перечисленных в таблице Data Type Registration Functions. Вам возвращается идентификатор типа данных.

    Кроме того, можно использовать один из предварительно назначенных идентификаторов типов данных встроенных типов данных Simulink.

  2. Используйте идентификатор типа данных, чтобы задать тип данных для входного или выходного порта, параметра времени выполнения или состояния DWork с помощью одной из следующих функций:

Чтобы получить идентификатор типа данных входов или выходного порта, параметра времени выполнения или состояния DWork, используйте одну из следующих функций:

Получение информации о типах данных

Можно использовать идентификаторы типов данных с функциями для получения информации о встроенных и зарегистрированных типах данных в S-функции. Функции в следующих таблицах доступны в API для извлечения информации о зарегистрированных типах данных. Чтобы увидеть пример используемой функции, перейдите в файл и линии, указанные в таблице. Обратите внимание, что идентификаторы типов данных также могут использоваться со всеми стандартными методами доступа к типам данных в simstruc.h, таких как ssGetDataTypeSize.

Информационные функции контейнера хранения

Функция

Описание

Пример использования

ssGetDataTypeFxpContainWordLen

Возвращает размер слова контейнера хранения зарегистрированного типа данных

sfun_user_fxp_
ContainWordLenProbe.c
Линия 181

ssGetDataTypeStorageContainCat

Возвращает категорию контейнера хранилища зарегистрированного типа данных

sfun_user_fxp_asr.c
Линия 294

ssGetDataTypeStorageContainerSize

Возвращает размер контейнера хранения зарегистрированного типа данных

sfun_user_fxp_
StorageContainSizeProbe.c
Линия 171

Информационные функции типа данных сигнала

Функция

Описание

Пример использования

ssGetDataTypeFxpIsSigned

Определите, подписан ли тип зарегистрированных данных с фиксированной точкой или не подписан

sfun_user_fxp_asr.c
Линия 254

ssGetDataTypeFxpWordLength

Возвращает размер слова типа зарегистрированных данных с фиксированной точкой

sfun_user_fxp_asr.c
Линия 255

ssGetDataTypeIsFixedPoint

Определите, является ли зарегистрированный тип данных типом данных с фиксированной точкой

sfun_user_fxp_const.c
Линия 127

ssGetDataTypeIsFloatingPoint

Определите, является ли зарегистрированный тип данных типом данных с плавающей точкой

sfun_user_fxp_
IsFloatingPointProbe.c
Линия 176

ssGetDataTypeIsFxpFltApiCompat

Определите, поддерживается ли зарегистрированный тип данных API для написанных пользователем S-функций с фиксированной точкой

sfun_user_fxp_asr.c
Линия 184

ssGetDataTypeIsScalingPow2

Определите, имеет ли зарегистрированный тип данных масштабирование степени двойки

sfun_user_fxp_asr.c
Линия 203

ssGetDataTypeIsScalingTrivial

Определите, является ли масштабирование зарегистрированного типа данных наклоном = 1, смещением = 0

sfun_user_fxp_
IsScalingTrivialProbe.c
Линия 171

Функции информации о масштабировании сигнала

Функция

Описание

Пример использования

ssGetDataTypeBias

Возвращает смещение зарегистрированного типа данных

sfun_user_fxp_dtprop.c
Линия 243

ssGetDataTypeFixedExponent

Верните экспоненту наклона зарегистрированного типа данных

sfun_user_fxp_dtprop.c
Линия 237

ssGetDataTypeFracSlope

Верните дробный наклон зарегистрированного типа данных

sfun_user_fxp_dtprop.c
Линия 234

ssGetDataTypeFractionLength

Верните длину дроби зарегистрированного типа данных с масштабированием степени двойки чисел

sfun_user_fxp_asr.c
Линия 256

ssGetDataTypeTotalSlope

Возвращает общий наклон масштабирования зарегистрированного типа данных

sfun_user_fxp_dtprop.c
Линия 240

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

Функции в следующей таблице позволяют вам преобразовывать значения между зарегистрированными типами данных в вашей S-функции с фиксированной точкой.

Функции преобразования типов данных

Функция

Описание

Пример использования

ssFxpConvert

Преобразуйте значение из одного типа данных в другой тип данных.

Недоступно

ssFxpConvertFromRealWorldValue

Преобразуйте значение типа данных double к другому типу данных.

Недоступно

ssFxpConvertToRealWorldValue

Преобразуйте значение любого типа данных в double.

Недоступно