Моделируйте светофор при помощи семантики Мура

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

Логика светофора Мура

В этом примере модель светофора содержит график Мура под названием Light_Controller, которая работает в пяти состояниях трафика. Каждое состояние представляет цвет светофора в двух противоположных направлениях, Север-Юг и Восток-Запад, и длительность текущего цвета. Имя каждого состояния представляет операцию света, просматриваемого с направления Север-Юг.

Этот график использует временную логику, чтобы регулировать переходы состояний. The after оператор реализует таймер обратного отсчета, который инициализируется при вводе исходного состояния. По умолчанию таймер обеспечивает более длинный зеленый свет в направлении Восток-Запад, чем в направлении Север-Юг, потому что объем трафика больше по дороге Восток-Запад. Зеленый свет в направлении Восток-Запад остается на протяжении по крайней мере 20 часов тактов, но он может оставаться зеленым, пока никакое движение не прибывает в направлении Север-Юг. Датчик определяет, ждут ли автомобили на красный свет в направлении Север-Юг. Если это так, свет становится зеленым в направлении Север-Юг, чтобы сохранить движение.

Light_Controller графика ведет себя как машина Мура, потому что обновляет свои выходы на основе текущего состояния перед переходом в новое состояние:

Когда начальное состояние Stop активно. Светофор красный для Север-Юг, зеленый для Восток-Запад.

  • Устанавливает выходные y1 = RED (Север-Юг) на основе текущего состояния.

  • Устанавливает выходные y2 = GREEN (Восток-Запад) на основе текущего состояния.

  • После 20 тактов активное состояние становится StopForTraffic.

В активном состоянии StopForTraffic. Светофор был красным для Север-Юг, зеленым для Востока-Запад - не менее 20 тактов.

  • Устанавливает выходные y1 = RED (Север-Юг) на основе текущего состояния.

  • Устанавливает выходные y2 = GREEN (Восток-Запад) на основе текущего состояния.

  • Проверяет датчик.

  • Если датчик указывает, что автомобили ждут ([sens] true) в направлении Север-Юг активное состояние становится 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).

Похожие темы