Задайте тип данных Stateflow

Термин data type относится к тому, как компьютеры представляют информацию в памяти. Тип данных определяет объем памяти, выделенной для данных, способ кодирования значения данных как шаблона двоичных цифр и операции, доступные для манипулирования данными.

Задайте тип данных при помощи помощника по типам данных

Можно задать тип объекта данных в Property Inspector или в Model Explorer. В поле Type выберите тип из выпадающего списка или введите выражение, которое вычисляет тип данных. Для получения дополнительной информации смотрите Задать свойства данных.

Кроме того, используйте Data Type Assistant, чтобы задать Mode данных и выбрать тип данных на основе этого режима:

  1. В Model Explorer на панели Data нажмите кнопку Show data type assistant.

  2. Выберите Mode из раскрывающегося списка. Список доступных режимов зависит от возможностей объекта данных.

    ВозможностиСпособы
    LocalInherit (доступно только в графиках, которые используют MATLAB® как язык действий), Built in, Fixed point, Enumerated, Bus object, Expression
    ConstantBuilt in, Fixed point, Expression
    ParameterInherit, Built in, Fixed point, Enumerated, Bus object, Expression
    InputInherit, Built in, Fixed point, Enumerated, Bus object, Expression
    OutputInherit, Built in, Fixed point, Enumerated, Bus object, Expression
    Data Store MemoryInherit

  3. Укажите дополнительную информацию в зависимости от режима. Помощник по типам данных заполняет поле Type на основе спецификации.

    СпособТипы данных
    Inherit

    Вы не можете задать тип данных. Тип данных наследуется на основе возможностей, выбранной для объекта данных:

    Для получения дополнительной информации см. Раздел «Наследование типов данных из объектов Simulink».

    Built in

    Укажите тип данных из выпадающего списка поддерживаемых типов данных:

    • double: 64-битная плавающая точка двойной точности.

    • single: 32-битная одноточность с плавающей точкой.

    • half: Тип данных половинной точности занимает 16 биты памяти, но его представление с плавающей точкой позволяет ему обрабатывать более широкие динамические области значений, чем целочисленные или типы данных с фиксированной точкой того же размера. См. раздел Тип данных половинной точности в Simulink (Fixed-Point Designer).

    • int64: 64-битное целое число со знаком.

    • int32: 32-битное целое число со знаком.

    • int16: 16-битное целое число со знаком.

    • int8: 8-битное целое число со знаком.

    • uint64: 64-битное беззнаковое целое число.

    • uint32: 32-битное беззнаковое целое число.

    • uint16: 16-битное беззнаковое целое число.

    • uint8: 8-битное беззнаковое целое число.

    • boolean: Логический (1 = true; 0 = false).

    • ml: Введен внутри с помощью mxArray массива MATLAB. Поддерживается только в графиках, которые используют C в качестве языка действий. The ml тип данных предоставляет данным Stateflow преимущества окружения MATLAB, включая возможность назначить объект данных Stateflow переменного MATLAB или передать его в качестве аргумента функции MATLAB. ml данные не могут иметь возможности вне иерархии Stateflow. То есть он не может иметь возможности Input или Output. Для получения дополнительной информации см. ml Data Type.

    • string: Строка. Поддерживается только в графиках, которые используют C в качестве языка действий. Дополнительные сведения см. в разделе Управление текстовой информацией при помощи строк.

    Fixed point

    Укажите следующую информацию о данных с фиксированной точкой:

    • Signedness: Подписаны ли данные или не подписаны

    • Word Length: Размер бита слова, содержащего квантованное целое число. Большие размеры слов представляют большие значения с большей точностью, чем маленькие размеры слов. Значение по умолчанию является 16.

    • Scaling: Метод масштабирования данных с фиксированной точкой, чтобы избежать условий переполнения и минимизировать ошибки квантования. Метод по умолчанию Binary point.

    Для получения дополнительной информации см. раздел «Свойства данных с фиксированной точкой».

    Enumerated

    Укажите имя класса для перечисляемого типа данных. Для получения дополнительной информации см. раздел «Определение перечисленных типов данных».

    Bus object

    Задайте имя Simulink.Bus объект для связи с Stateflow® структура объекта шины. Нажмите кнопку Edit, чтобы создать или изменить объект шины в редакторе шин. Можно также наследовать свойства объекта шины от сигналов Simulink.

    Expression

    Задайте выражение, которое вычисляет тип данных. Используйте одно из следующих выражений:

    Для получения дополнительной информации смотрите Задать свойства данных при помощи выражений MATLAB.

  4. Чтобы сохранить настройки типа данных, нажмите Apply.

Помощник по типам данных доступен только через Model Explorer.

Наследование типов данных из объектов Simulink

Когда вы выбираете Inherit: Same as Simulink из выпадающего списка Type объекты данных возможностей Input, Output, Parameter, и Data Store Memory наследовать их типы данных от объектов Simulink.

ВозможностиОписание
InputНаследует тип от входного сигнала Simulink, соединенного с соответствующим входным портом на графике.
Output

Наследует тип от выходного сигнала Simulink, соединенного с соответствующим выходным портом на графике.

Избегайте наследования типов данных от выходных сигналов. Значения, которые распространяются назад из блоков Simulink, могут быть непредсказуемыми.

ParameterНаследует тип от соответствующей переменной базового рабочего пространства MATLAB или параметра Simulink в маскированной подсистеме.
Data Store MemoryНаследует тип из соответствующего хранилища данных Simulink.

Чтобы определить типы данных, которые наследуют объекты:

  1. Создайте модель Simulink.

  2. Откройте Model Explorer.

  3. На панели Contents проверьте столбец CompiledType.

Вывод типов данных из других объектов данных

Можно использовать type оператор для вывода типов данных из других объектов данных Stateflow:

type(data_obj)
Для примера в модели sf_bus_demo, выражение type(inbus) возвращает тип данных структуры входа inbus. Потому что inbus выводит свой тип из Simulink.Bus COUNTERBUS объекта, тип данных локальной структуры counterbus_struct также получает свой тип данных из COUNTERBUS.

После создания модели в CompiledType столбце Model Explorer показан тип, используемый в скомпилированном приложении симуляции.

Задайте типы данных при помощи псевдонима Simulink

Можно задать тип данных Stateflow с помощью псевдонима типа данных Simulink. Для получения дополнительной информации смотрите Simulink.AliasType (Simulink).

Например, предположим, что вы хотите задать псевдоним типа данных MyFloat который соответствует встроенному типу данных single. В командной строке MATLAB введите:

MyFloat = Simulink.AliasType;
MyFloat.BaseType = 'single';

Чтобы использовать этот псевдоним для задания типа объекта данных, выберите объект в Property Inspector или в Model Explorer. В Type поле введите имя псевдонима MyFloat.

После создания модели в CompiledType столбце Model Explorer показан тип, используемый в скомпилированном приложении симуляции.

Сильное типирование данных с входами и выходами Simulink

По умолчанию свойство Use Strong Data Typing with Simulink I/O графика позволяет C графикам непосредственно взаимодействовать с сигналами от моделей Simulink. График принимает только входные сигналы, тип данных которых совпадает с типом соответствующего объекта данных Stateflow. В противном случае возникает ошибка несоответствия типа. Например, путем выбора Use Strong Data Typing with Simulink I/O можно пометить несоответствия между входными или выходными данными с фиксированной точкой в графиках и их аналогами в моделях Simulink. Для получения дополнительной информации смотрите Задать свойства для диаграмм Stateflow.

Если вы очищаете свойство Use Strong Data Typing with Simulink I/O chart, график преобразует входные сигналы типа double к типу соответствующего объекта входных данных на графике. График преобразует объекты выходных данных в объекты типа double перед экспортом их в качестве выходных сигналов в модели Simulink.

Примечание

Свойство Use Strong Data Typing with Simulink I/O график предусмотрено для обратной совместимости. Снятие этого флажка может привести к непредсказуемым результатам и не рекомендуется.

См. также

(Simulink) | (Simulink) | (Simulink)

Похожие темы