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