В этом примере показано, как использовать семантику Мура для моделирования светофора.

В этом примере модель светофора содержит диаграмму Мура под названием Light_Controller, которая работает в пяти состояниях трафика. Каждый штат представляет цвет светофора в двух противоположных направлениях, Северо-Южном и Восточно-Западном, и длительность текущего цвета. Имя каждого штата представляет работу источника света, видимого с направления Север-Юг.
Эта диаграмма использует временную логику для регулирования переходов состояний. after оператор реализует таймер обратного отсчета, который инициализируется при вводе исходного состояния. По умолчанию таймер обеспечивает более длинный зеленый свет в направлении Восток-Запад, чем в направлении Север-Юг, поскольку объем трафика больше на дороге Восток-Запад. Зеленый свет в направлении Восток-Запад горит не менее 20 часов, но он может оставаться зеленым до тех пор, пока трафик не поступает в направлении Север-Юг. Датчик определяет, ждут ли автомобили на красный свет в направлении Север-Юг. Если да, то свет становится зеленым в направлении Север-Юг, чтобы сохранить движение транспорта.
Диаграмма Light_Controller ведет себя как машина Мура, потому что она обновляет свои выходы на основе текущего состояния перед переходом в новое состояние:
При начальном состоянии Stop активен. Светофор красный для «Север-Юг», зеленый для «Восток-Запад».
Устанавливает выходные данные y1 = RED (Север-Юг) на основе текущего состояния.
Устанавливает выходные данные y2 = GREEN (Восток-Запад) на основе текущего состояния.
После 20 тактов, активное состояние становится StopForTraffic.
В активном состоянии StopForTraffic. Светофор был красным для «Север-Юг», зеленым для «Восток-Запад» не менее 20 часовых клещей.
Устанавливает выходные данные y1 = RED (Север-Юг) на основе текущего состояния.
Устанавливает выходные данные y2 = GREEN (Восток-Запад) на основе текущего состояния.
Проверка датчика.
Если датчик индицирует ожидание автомобилей ([sens] верно) в направлении Север-Юг активное состояние становится StopToGo.
В активном состоянии StopToGo. Светофор должен реверсировать поток трафика в ответ на срабатывание датчика.
Устанавливает выходные данные y1 = RED (Север-Юг) на основе текущего состояния.
Устанавливает выходные данные y2 = YELLOW (Восток-Запад) на основе текущего состояния.
После 3 тактов, активное состояние становится Go.
В активном состоянии Go. Светофор был красный для Север-Юг, желтый для Восток-Запад для 3 часов клещей.
Устанавливает выходные данные y1 = GREEN (Север-Юг) на основе текущего состояния.
Устанавливает выходные данные y2 = RED (Восток-Запад) на основе текущего состояния.
После 10 тактов, активное состояние становится GoToStop.
В активном состоянии GoToStop. Светофор был зелёным для Севера-Юга, красным для Востока-Запада для 10 часовых клещей.
Устанавливает выходные данные y1 = YELLOW (Север-Юг) на основе текущего состояния.
Устанавливает выходные данные y2 = RED (Восток-Запад) на основе текущего состояния.
После 3 тактов, активное состояние становится Stop.
Этот пример светофора Мура иллюстрирует следующие правила проектирования Мура:
Диаграмма вычисляет выходные данные в действиях состояния.
Диаграмма проверяет входные данные в условиях переходов.
Диаграмма использует временную логику, но асинхронных событий нет.
Диаграмма определяет входные данные диаграммы (sens) и выходы (y1 и y2).