Машины Мура являются конечными автоматами, в которых вывод изменяется во фронтах синхроимпульса. В графиках Мура вывод является функцией текущего состояния только. На каждом временном шаге график Мура просыпается, вычисляет свой вывод, и затем оценивает свой вход, чтобы реконфигурировать себя для следующего временного шага. Например, после оценки его входа, график может перейти к новой настройке активных состояний. График вычисляет свой вывод прежде, чем оценить его вход и обновить его состояние. Семантика Мура поддерживается только в графиках 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
или wakeup
(см. Ключевые слова для Неявных Событий).
Недопустимое использование:
Вы не можете широковещательно передать событие никакого типа.
Вы не можете использовать локальные события, чтобы охранять переходы. Локальные события нарушают семантику Мура, потому что они не детерминированы и могут произойти, в то время как график вычисляет свои выходные параметры.
Вы не можете использовать неявные события, такие как chg(data_name)
, en(state_name)
или ex(state_name)
.
В графиках Мура вы не можете установить метод обновления на Continuous
. Для моделирования систем с непрерывным временем в Stateflow используйте Классические или Мучнистые графики.