Перечисления Simulink

Перечисляемые данные - это данные, которые ограничены конечным множеством значений. Перечисленный тип данных является MATLAB® класс, который задает набор перечисленных значений. Каждое перечисленное значение состоит из перечисляемого имени и базового целого числа, которое программное обеспечение использует внутренне и в сгенерированном коде.

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

Чтобы задать перечисление для использования в Simulink® модели, выберите один из следующих методов:

  • Используйте функцию Simulink.defineIntEnumType. Перечисление существует для длительности вашего Сеанса работы с MATLAB.

  • Создайте постоянный класс перечисления путем подкласса одного из следующих встроенных классов:

    • Многие встроенные целочисленные типы данных, такие как int8 и uint16

    • Simulink.IntEnumType

  • Используйте функцию Simulink.importExternalCTypes чтобы создать представление Simulink перечисленного типа данных (enum), который определяет ваш внешний код С

    Используйте этот метод, чтобы помочь вам:

    • Замените существующий код С на модель Simulink.

    • Интеграция существующих Кодов С для симуляции в Simulink (для примера, с помощью Legacy Code Tool).

    • Сгенерируйте Коды С ( Simulink Coder™), которые можно скомпилировать с существующими Кодами С в одно приложение.

Для получения дополнительной информации смотрите Задать перечисления Simulink.

Следующие примеры показывают, как использовать перечисления в Simulink и Stateflow®.

ПримерПоказывает, как использовать...
Набор данных в SimulinkТипы данных в Simulink, включая перечисленные типы данных
Моделируйте медиаплеер при помощи перечисленных данных (Stateflow)Перечисленные типы данных в модели Simulink, которая содержит диаграмму Stateflow

Для получения информации об использовании перечислений в Stateflow, смотрите Перечисленные данные (Stateflow).

Конструкции Simulink, которые Поддержка перечисления

Обзор

В целом все инструменты и конструкции Simulink поддерживают перечисленные типы, для которых поддержка имеет смысл с учетом цели перечисленных типов: представлять состояния программы и управлять логикой программы. Редактор Simulink, Simulink Debugger, Port Значения Отображений, ссылочные модели, подсистемы, маски, шины, логгирование данных и большинство других возможностей Simulink поддержки перечисляемыми типами, не предъявляя особых требований.

Перечисляемые типы не предназначены для математических расчетов, поэтому ни один блок, который вычисляет числовой выход (в отличие от передачи числового входа в выход), не поддерживает перечисляемые типы. Таким образом, перечисляемый тип не рассматривается как числовой тип, даже если перечисляемое значение имеет базовое целое число. Смотрите Перечисленные значения в Расчетах для получения дополнительной информации.

Большинство возможностей, которые не поддерживают перечисленные типы, очевидно, не могли их поддержать. Поэтому документация Simulink обычно упоминает перечисленный тип без поддержки только там, где это необходимо, чтобы предотвратить заблуждение или описать исключение. Смотрите Ограничения перечисления Simulink для получения информации о некоторых конструкциях, которые могут поддерживать перечисляемые типы, но нет.

Поддержка блоков

Следующие блоки Simulink поддерживают перечисленные типы:

Все представители следующих категорий блоков Simulink поддерживают перечисленные типы:

Многие блоки Simulink в дополнение к названным выше поддерживают перечисленные типы, но они либо относятся к одной из перечисленных выше категорий, либо редко используются с перечисленными типами. Раздел Поддержки типа данных каждого блока страницы с описанием описывает все типы данных, поддерживаемые блоком.

Поддержка классов

Перечисленные типы поддерживаются следующими классами Simulink:

  • Simulink.Signal

  • Simulink.Parameter

  • Simulink.AliasType

  • Simulink.BusElement

Логгирование перечисленных данных

Выходные порты модели верхнего уровня, блоки To Workspace и блоки Scope могут все экспортировать перечисленные значения. Логгирования сигнала и состояния работают с перечисленными данными так же, как и с любыми другими данными. Поддерживаются все форматы логгирования. Блок From File не поддерживает перечисленные данные. Используйте вместо этого блок From Workspace в сочетании с некоторым методом передачи данных между файлом и рабочей областью. Дополнительные сведения см. в разделе Сохранение данных во время выполнения из симуляции.

Импорт перечисленных данных

Входные порты модели верхнего уровня и блоки From Workspace могут выводить перечисленные сигналы во время симуляции. Данные должны быть предоставлены в Structure, Structure with Time, или TimeSeries объект. Интерполяция не происходит для перечисленных значений между заданными временами симуляции. From File блоки выдают только данные типа doubleпоэтому они не поддерживают перечисленные типы. Смотрите Загрузку Данных Сигнала для Симуляции для получения дополнительной информации.

Ограничения перечисления Simulink

Перечисления и возможности

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

Когда блок Floating Scope отображает несколько сигналов, имена перечисленных значений появляются на оси Y, только если все сигналы имеют одинаковый тип перечисления. Если блок Floating Scope отображает более одного типа перечисленного сигнала или любого числового сигнала, имена не появляются, и любые перечисленные значения представляются базовыми целыми числами.

Перечисленные типы для блоков Switch

Управляющий вход блока Switch может быть любого типа данных, поддерживаемых Simulink. Однако u2 ~=0 режим не поддерживается для перечислений. Если вход управления имеет перечисление, выберите один из следующих методов, чтобы задать критерии для передачи первого входа:

  • Выберите u2 >= Threshold или u2 > Threshold и задайте пороговое значение того же перечисленного типа, что и вход управления.

  • Используйте блок Relational Operator для сравнения и затем передайте логический результат этого сравнения в порт управления блока Switch.

Неподдержка перечислений

При использовании перечисленных типов данных в Simulink существуют следующие ограничения:

  • Пакеты не могут содержать определения классов перечисления.

  • Блок If Action не поддерживает перечисления.

  • Сгенерированный код не поддерживает логгирование перечисленных данных.

  • Пользовательские цели Stateflow не поддерживают перечисленные типы.

См. также

| |

Похожие темы