Этот пример показывает, как использовать семантику Мура, чтобы смоделировать светофор.
В этом примере модель светофора содержит график Мура по имени 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
).