exponenta event banner

Модель реактивных систем в потоке состояний

Определение системных атрибутов

Прежде чем создавать диаграмму Stateflow ® в модели Simulink ®, определите атрибуты системы, ответив на следующие вопросы:

  1. Каковы ваши интерфейсы?

    1. Каковы триггеры событий, на которые реагирует система?

    2. Каковы входные данные вашей системы?

    3. Каковы выходные данные системы?

  2. Есть ли в вашей системе какие-либо режимы работы?

    1. Если ответ да, то каковы режимы работы?

    2. Между какими режимами можно переходить? Существуют ли параллельные режимы работы?

    Если в системе нет режимов работы, система не имеет состояния. Если система имеет режимы работы, система является модальной.

Выбор типа конечного автомата

После определения системных атрибутов первым шагом будет создание новой диаграммы. Дополнительные сведения см. в разделе sfnew. Выберите один из следующих типов конечного автомата:

  • Classic - тип машины по умолчанию. Предоставляет полный набор семантики для диаграмм MATLAB и C.

  • Mealy - тип машины, в котором выход является функцией входов и состояния.

  • Moore - тип машины, в котором выход является функцией состояния.

Дополнительные сведения см. в разделах Как объекты Stateflow взаимодействуют во время выполнения, Различия между MATLAB и C как синтаксис языка действий и Обзор машин Mealy и Moore.

Указать действия состояния и условия перехода

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

  1. Для каждого состояния, какие действия вы хотите выполнить?

  2. Каковы правила перехода между вашими состояниями? Если диаграмма не имеет состояний, каковы правила перехода между ветвями логики потока?

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

  1. Нарисуйте состояния для представления режимов работы, если таковые имеются. См. раздел Представление режимов работы с использованием состояний.

  2. Реализуйте действия состояния, добавляя метки состояния, использующие соответствующий синтаксис. См. Штаты.

  3. Рисование переходов для представления направления логики потока, между состояниями или между ветвями блок-схемы. См. раздел Переход между режимами работы.

  4. Реализуйте условия перехода, добавляя метки перехода, использующие соответствующий синтаксис. См. раздел Переходы.

Определение постоянных данных для хранения переменных состояния

После добавления действий состояния и условий перехода к диаграмме определите, требуются ли для нее локальные или постоянные данные для хранения переменных состояния. Если да, выполните следующие действия.

  1. Добавление локальных данных на соответствующий уровень иерархии диаграмм. См. раздел Добавление данных потока состояний.

    Для добавления данных в диаграмму можно также использовать Мастер графических образов. См. раздел Разрешение графических образов с помощью Мастера графических образов.

  2. Укажите тип, размер, сложность и другие свойства данных. См. раздел Задание свойств данных.

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

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

  • Блок-схема - инкапсуляция блок-схем, содержащих шаблоны if-then-else, switch-case, for, while или do-while.

  • MATLAB - матрично-ориентированные алгоритмы записи; вызовите функции MATLAB для анализа и визуализации данных.

  • Simulink - функциональные подсистемы вызова Call Simulink непосредственно для оптимизации проектирования и улучшения читаемости.

  • Таблица истинности - представляет комбинационную логику для приложений для принятия решений, таких как обнаружение неисправностей и переключение режимов.

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

Если четыре типа функций Stateflow не работают, можно написать собственный код C или C++ для интеграции с диаграммой. Дополнительные сведения об интеграции пользовательского кода см. в разделе Повторное использование пользовательского кода в диаграммах Stateflow.

Убедитесь, что представление системы завершено

Полностью ли в диаграмме Stateflow отражены логические или событийные компоненты системы?

  • Если ответ «да», то вы закончили.

  • Если ответ - нет, можно создать отдельную диаграмму или добавить иерархию к текущей диаграмме.

    • Чтобы создать новую диаграмму, повторите все шаги этого основного рабочего процесса.

    • Чтобы добавить иерархию, повторите три предыдущих шага на нижних уровнях текущей диаграммы.