Проект Факторов для Moore Графиков

Машины Мура являются конечными машинами состояний, в которых выход изменяется в тактовых ребрах. В графиках Мура выход является функцией только текущего состояния. На каждом временном шаге график Мура просыпается, вычисляет его выход, а затем оценивает его вход, чтобы перенастроить себя для следующего временного шага. Для примера после оценки его входа график может перейти к новому строению активных состояний. График вычисляет свой выход перед оценкой своего входа и обновлением своего состояния. Семантика Мура поддерживается только в Stateflow® графики в Simulink® модели.

Семантика Мура

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

  • Выходы не зависят от входов.

  • Выходы не зависят от предыдущих выходов.

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

Правила проекта для графиков Мура

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

Ограничения на состояния активности

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

  • Объедините действия. В графиках Мура можно включать только одно действие в каждом состоянии. Действие может состоять из нескольких командных операторов. Stateflow оценивает состояния в графиках Мура с верхнего уровня вниз. Активные состояния в графиках Мура выполняют состояние активности перед оценкой переходов. Поэтому выходы вычисляются на каждом временном шаге, является ли внешний переход допустимым или нет.

  • Не помечайте состояний активности. Не помечайте состояний активности в графиках Мура никакими ключевыми словами, такими как entry, during, или exit. По умолчанию графики Мура выполняют действия в активных состояниях перед оценкой входов и обновлением состояния.

Ограничения на переходные действия

Переходы в графиках Мура могут содержать условие и переходные действия, если эти действия не вводят зависимость между выходными значениями и входными значениями. Для примера в этом графике каждый переход проверяет вход u в условии и изменяет выходной y в действии условия. Поскольку выходное значение зависит от значения входа, эта конструкция нарушает семантику Мура и вызывает ошибку.

Не используйте входы для вычисления выходов

В графиках Мура выходы не могут зависеть от входов. Использование входа для прямого или косвенного вклада в расчет выходного сигнала вызывает ошибку.

Ограничение возможностей данных

В графиках Мура применяются эти ограничения данных:

  • Ограничение данных с пометкой машин. Машинно-родительские данные - это данные, которые вы задаете для машины Stateflow. Машина Stateflow является самым высоким уровнем иерархии Stateflow. Когда вы задаете данные на этом уровне, каждый график в машине может считать и изменять данные. Чтобы гарантировать, что диаграммы Мура не обращаются к данным, которые могут быть непредсказуемо изменены вне графика, не используйте родительские данные машины.

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

Не используйте coder.extrinsic Вызов внешних функций

При вызове внешних функций с coder.extrinsicневозможно применить, чтобы выходы зависели только от текущего состояния. Вызов внешней функции с coder.extrinsic в графике Мура инициирует ошибку.

Не используйте функции Simulink

Вы не можете использовать функции Simulink в графиках Мура. Это ограничение предотвращает нарушения семантики Мура во время выполнения графика.

Не экспортировать функции

Вы не можете экспортировать функции в графике Мура.

Не отключать Inlining

Семантика графика Мура требует инкрустации.

Не включать семантику супер-шага

Вы не можете использовать семантику супер-шага в графике Мура.

Не использовать сообщения

Вы не можете использовать сообщения в графике Мура.

Ограничение использования событий

Ограничьте использование событий в графиках Мура:

  • Допустимое использование:

    • Используйте только одно входное событие для запуска графика.

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

      Изменение значения временного логического условия ведет себя как событие, которое график Мура планирует внутренне. На каждом временном шаге количество тактов перед выполнением временного события зависит только от состояния графика. Для получения дополнительной информации см. Раздел «Временные логические операторы»

      Примечание

      В графиках Мура базовым событием для временных логических операторов должно быть предопределенное событие, такое как tick (см. Неявные события на основе данных и состояний).

  • Недопустимое использование:

    • Вы не можете транслировать событие любого типа.

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

    • Вы не можете использовать неявные события, такие как chg(data_name), en(state_name), или ex(state_name).

Не используйте графиков Мура для моделирования систем непрерывного времени

В графиках Мура вы не можете задать метод обновления Continuous. Для моделирования систем с непрерывным временем в Stateflow используйте Classic или Диаграммы Мили.

Похожие темы