Машины Мура являются конечными конечными автоматами, в которых выходной сигнал модифицируется на фронтах синхронизации. В диаграммах Мура вывод является функцией только текущего состояния. На каждом шаге времени диаграмма Мура просыпается, вычисляет свой выход, а затем оценивает свой вход, чтобы перенастроиться на следующий шаг времени. Например, после оценки своих входных данных диаграмма может перейти в новую конфигурацию активных состояний. Диаграмма вычисляет выходные данные перед оценкой входных данных и обновлением состояния. Семантика Мура поддерживается только в диаграммах Stateflow ® в моделях Simulink ®.
Чтобы гарантировать, что вывод является функцией только текущего состояния, конечные автоматы Мура применяют эту семантику:
Выходы не зависят от входов.
Выходы не зависят от предыдущих выходов.
Выходы не зависят от временной логики.
Чтобы соответствовать определению Мура конечного автомата, убедитесь, что каждый раз, когда диаграмма Мура просыпается, она вычисляет выходные данные из текущего набора активных состояний без учета входных данных.
Чтобы гарантировать, что выходные данные зависят исключительно от текущего состояния, можно вычислить выходные данные в действиях состояния с учетом следующих ограничений:
Объединить действия. В диаграммы Мура можно включить только одно действие для каждого штата. Действие может состоять из нескольких инструкций команды. Stateflow оценивает состояния в чартах Мура с верхнего уровня вниз. Активные состояния в диаграммах Мура выполняют действие состояния перед оценкой переходов. Следовательно, выходные данные вычисляются на каждом временном шаге, является ли внешний переход действительным или нет.
Не маркировать действия состояния. Не помечайте действия состояния в диаграммах Мура какими-либо ключевыми словами, такими как entry,during, или exit. По умолчанию диаграммы Мура выполняют действия в активных состояниях перед оценкой входных данных и обновлением состояния.
Переходы в диаграммах Мура могут содержать действия условий и переходов, если эти действия не вводят зависимость между выходными значениями и входными значениями. Например, на этой диаграмме каждый переход проверяет входные данные u в условии и изменяет выходные данные y в действии условия. Поскольку выходное значение зависит от значения входного значения, эта конструкция нарушает семантику Мура и вызывает ошибку.

В диаграммах Мура выходные данные не могут зависеть от входных данных. Использование входных данных для прямого или косвенного вклада в вычисление выходных данных вызывает ошибку.
В диаграммах Мура применяются следующие ограничения данных:
Ограничить данные, полученные от компьютера. Машинно-зависимые данные - это данные, определенные для машины Stateflow. Машина Stateflow является самым высоким уровнем иерархии Stateflow. При определении данных на этом уровне каждая диаграмма в машине может считывать и изменять данные. Чтобы гарантировать, что диаграммы Мура не имеют доступа к данным, которые могут быть непредсказуемо изменены вне диаграммы, не используйте машинно-зависимые данные.
Не определять память хранилища данных. Невозможно определить память хранилища данных (DSM) в диаграммах Мура, поскольку объекты, внешние по отношению к диаграмме, могут изменять объекты DSM. Диаграмма Stateflow использует память хранилища данных для совместного использования данных с моделью Simulink. Память хранилища данных действует как глобальные данные. В иерархии Simulink, содержащей диаграмму, другие блоки и модели могут изменять DSM. Диаграммы Мура не должны получать доступ к данным, которые могут измениться непредсказуемо.
coder.extrinsic Вызов внешних функцийПри вызове внешних функций с помощью coder.extrinsic, невозможно обеспечить, чтобы выходные сигналы зависели только от текущего состояния. Вызов внешней функции с помощью coder.extrinsic на диаграмме Мура вызывает ошибку.
Нельзя использовать функции Simulink в диаграммах Мура. Это ограничение предотвращает нарушения семантики Мура во время выполнения диаграммы.
Нельзя экспортировать функции в диаграмму Мура.
Семантика диаграммы Мура требует встраивания.
Нельзя использовать супершаговую семантику в диаграмме Мура.
Нельзя использовать сообщения в диаграмме Мура.
Ограничить использование событий в диаграммах Мура:
Допустимые виды использования:
Используйте только одно входное событие для запуска диаграммы.
Используйте временную логику на основе событий для защиты переходов.
Изменение значения временного логического условия ведет себя как событие, которое диаграмма Мура планирует внутренне. На каждом временном шаге количество делений перед выполнением временного события зависит только от состояния диаграммы. Дополнительные сведения см. в разделе Операторы временной логики.
Примечание
В диаграммах Мура базовым событием для операторов временной логики должно быть предопределенное событие, например tick (см. Неявные события, основанные на данных и состояниях).
Недопустимые виды использования:
Нельзя транслировать событие любого типа.
Нельзя использовать локальные события для защиты переходов. Локальные события нарушают семантику Мура, поскольку они не являются детерминированными и могут происходить во время вычисления выходных данных диаграммы.
Нельзя использовать неявные события, такие как chg(data_name), en(state_name), или ex(state_name).
В диаграммах Мура нельзя задать для метода обновления значение Continuous. Для моделирования систем с непрерывным временем в Stateflow используйте диаграммы Classic или Mealy.