Срабатывание перехода по сигналу
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Добавим к нашей модели второй светофор, для пешеходов. Он будет иметь два сигнала, зеленый и красный, и три состояния: идите (зеленый), мигает (мигающий зеленый) и стойте (красный). Добавим в модель два булевских параметра Стойте и Идите, их значениями будет управлять второй стейтчарт – для пешеходов. Создадим этот стейтчарт на той же диаграмме класса Model, назвав его для_пешеходов, (рисунок 3.8).

Поскольку управление светофором пешеходов похоже на управление светофором автомобилей, новый стейтчарт можно построить копированием и изменением уже построенного стейтчарта Для_автомобилей. Выделите 3 состояния стейтчарта Для_автомобилей и вставьте их в другое место диаграммы. Эти элементы скопируются, и им автоматически будут даны уникальные имена, чтобы не было конфликта имен. Переименуйте состояния стейтчарта для_пешеходов, дорисуйте недостающий переход t 12 и перенесите начало диаграммы на состояние стойте, как показано на рисунке 3.8.

 

 

Рисунок 3.8 – алгоритм пешеходного светофора

 

Измените параметры в полях Действие при входе и Действие при выходе в свойствах состояний стейтчарта для_пешеходов. Теперь наш стейтчарт должен управлять параметрами Идите и Стойте, которые, в свою очередь, будут управлять зажиганием света именно пешеходного светофора.

Настроим условия срабатывания переходов стейтчартов между состояниями. Для обеспечения безопасной работы пешеходного перехода необходимо синхронизировать срабатывания стейтчартов так, чтобы всегда, когда светофор пешеходов находится в состояниях идите или мигает, светофор автомобилей обязательно находился бы в состоянии стоп. Для этого можно подобрать подходящие таймауты срабатывания переходов стейтчарта, но при каждом изменении модели, придется эти таймауты подбирать снова и снова. Более разумно синхронизировать стейтчарты, посылая специальные разрешающие сигналы из одного стейтчарта в другой.

В нашей модели стейтчарты будут обмениваться следующими сигналами: АВТОМОБИЛИ и ПЕШЕХОДЫ. В стейтчарте для_пешеходов переход t 12 будет срабатывать когда получен сигнал ПЕШЕХОДЫ, который будет генерироваться в стейтчарте Для_автомобилей при переходе t 5 в состояние стоп. В свою очередь, в стейтчарте Для_автомобилей переход t 6 будет срабатывать когда получен сигнал АВТОМОБИЛИ, который генерируется в стейтчарте для_пешеходов при переходе t 11 в состояние стойте, рисунок 3.9.

В AnyLogic есть несколько способов передачи сообщения в диаграмму состояний. В нашей модели мы будем использовать метод fireEvent(), который должен вызываться в том стейтчарте, которому предназначено сообщение. То есть, если из некоего объекта мы хотим послать сообщение стейтчарту, то нужно в этом объекте написать команду: стейтчарт.fireEvent(сообщение). Поэтому, в поле Действие перехода t 5 стейтчарта Для_автомобилей нужно вставить команду: для_пешеходов.fireEvent("ПЕШЕХОДЫ"), в такое же поле перехода t 11 стейтчарта для_пешеходов вставьте команду:

Для_ автомобилей.firеЕvеnt("АВТОМОБИЛИ").

 

 

Рисунок 3.9 – передача сигнала

 

Таким образом, каждый из светофоров будет информировать другого о своем переходе в состояние запрещения движения, как пешеходов, так и автомобилей.

Для срабатывания перехода стейтчарта при получении нужного сообщения, в стейтчарте для_пешеходов в поле Происходит окна свойств перехода t 12 выберите вариант При получении сообщения, укажите тип сообщения String, а в поле Осуществлять переход выберите Если сообщение равно и введите "ПЕШЕХОДЫ", рисунок 5.9.

Аналогично, для срабатывания перехода автомобильного стейтчарта по сигналу от пешеходного стейтчарта в стейтчарте Для_автомобилей в поле Происходит окна свойств перехода t 6 выберите вариант При получении сообщения, укажите тип сообщения String, а в поле Осуществлять переход выберите Если сообщение равно и введите "АВТОМОБИЛИ".

Остальные переходы этих стейтчартов будут срабатывать по таймаутам, как и прежде. Проверьте по рисунку 5.9 установленные параметры переходов стейтчартов. Запустите модель на выполнение.

На презентации модели, в дополнение к светофору для автомобилей, следует нарисовать светофор для пешеходов с двумя сигналами - красной надписью СТОЙТЕ и зеленой ИДИТЕ. Динамикой цвета этих надписей будут управлять логические параметры Стойте и Идите, которые нужно создать на диаграмме по аналогии с параметрами красный, желтый и зеленый. Продемонстрируйте построенную модель преподавателю.

Дата: 2019-03-05, просмотров: 320.