, с которого начинается обработка вложенной последовательности состояний.
«Конечное состояние» - отмечает точку завершения обработки состояний.
Наличие начала диаграммы обязательно.
Создайте новую модель. Разместите в поле агента Main три логические переменные. Эти переменные фиксируют состояния светофора:
red – красный сигнал;
yellow – желтый сигнал;
green – зеленый сигнал.
Постройте стейтчарт, так как это показано на рисунке 2.2.
Рис. 2.2. Стейтчарт светофораДля соединения состояний используйте инструмент «Переход». При правильном соединении состояний концевые точки перехода помечаются зеленым цветом. На рисунке 2.3 показан пример правильного соединения двух состояний.
Рис. 2.3. Правильное соединение состоянийЧтобы показать переход, который соединяет состояния по дуге нужно использовать инструмент рисования

, который размещен возле инструмента перехода. Его нужно выделить двойным щелчком мыши и делая щелчки мышью в требуемых местах изгиба соединить два состояния.
Рис.2.4. Пример соединения состоянийНа рисунке 3.4 показаны два состояния соединенных переходом в виде дуги. Места изгиба отмечаются белым круговым маркером.
После создания перехода его вид и места соединения с состояниями можно изменить, передвигая нужные маркеры с помощью мыши, при нажатой левой кнопке.
Настройка стейтчарта должна соответствовать таблицам 2.1 и 2.2.
Таблица 2.1
Настройка состояний
Имя
| Действие при входе
| Действие при выходе
|
go
| green=true
| green=false
|
atention
|
|
|
A
|
|
|
B
| green=true
| green=false
|
slow
| yellow=true
| yellow=false
|
stop
| red=true
| red=false
|
ready
| red=true;
yellow=true;
| red=false;
yellow=false;
|
Настройка переходов должна соответствовать таблице 2.2.
Перед настройкой переходов присвойте началу стейтчарта имя p
0, а указателю начального состояния композитного состояния имя p
1.
Таблица 2.2
Настройка переходов
Имя
| Тип
| Период
|
t1
| По таймауту
| 25
|
t2
| По таймауту
| 1
|
t3
| По таймауту
| 1
|
t4
| По таймауту
| 5
|
t5
| По таймауту
| 5
|
t6
| По таймауту
| 25
|
t7
| По таймауту
| 5
|
Примечание: Чтобы имя перехода выводилось на диаграмме нужно установить его свойство «Отображать имя» в активное состояние. Добиться нужного положения имени перехода на диаграмме можно после выделения линии перехода мышью и захватив имя перехода отбуксировать его в нужное положение.
Следующий шаг заключается в размещении в модель изображения светофора (рисунок 2.5).
Используя панель инструментов «Презентация» разместите три окружности. И поместите их внутрь прямоугольника.
Рис. 2.5. Элемент модели светофорВерхняя окружность будет отображать сигнал – красный, средняя – желтый сигнал, нижняя – зеленый сигнал.
Для отображения сигналов нужно задать динамическое изменение цвета свойства «Цвет заливки». Код приводится ниже.
Красный сигнал:
red ? Color.red : Color.gray
Желтый сигнал:
yellow ? Color.yellow: Color.gray
Зеленый сигнал:
green ? Color.green: Color.gray
Вид светофора должен соответствовать рисунку 2.5
Настройте эксперимент таким образом, чтобы он длился до прерывания его работы пользователем. Свойство «Остановить» = нет.
Работающая модель показана на рисунке 2.6.
Рис. 2.6 Вид работающей модели управления светофором
Дополните модель, созданную для управления движением, моделью светофора пешеходного перехода. При появлении красного сигнала на светофоре движения автотранспорта, должен включаться зеленый сигнал светофора пешеходного перекрестка. При появлении сигнала красного цвета на светофоре пешеходного перехода дается зеленый сигнал на светофоре движения. Процесс повторяется циклически.
Введите в модель две переменные логического типа redP, greenP.
Постройте стейтчарт, который соответствует рисунку 2.7
Рис. 2.7. Стейтчарт светофора пешеходного переходаНастройка переходов и состояний должна соответствовать таблицам 2.3, 2.4.
Таблица 2.3.
Настройка переходов пешеходного стейтчарта
Имя
| Тип
| Период
|
t1p
| По таймауту
| 15
|
t2p
| По таймауту
| 1
|
t3p
| По таймауту
| 1
|
t4p
| По таймауту
| 15
|
t5p
| По таймауту
| 1
|
Таблица 2.4.
Настройка состояний стейтчарта пешеходного перехода
Имя
| Действие при входе
| Действие при выходе
|
goP
| greenP=true
| greenP=false
|
B_P
| greenP=true
| greenP=false
|
Stop_P
| redP=true
| redP=false
|
Для организации взаимодействия между стейтчартами в стейтчарт светофора управления движением внести следующие изменения:
Отредактируйте переход t5, добавив в свойство «Действие» код Java pstate.fireEvent("ПЕШЕХОДЫ");
Данный оператор передает стейтчарту светофора пешеходного перехода контрольное сообщение для включения зеленого сигнала.
В стейтчарте светофора пешеходного перехода нужно изменить настройку перехода t5P, так как это показано на рисунке 2.8.
Рис. 2.8. Настройка переходаКогда цикл работы светофора пешеходного перехода закончил работу, нужно подать сигнал светофору управляющему движением. В свойстве «Действие» для перехода t4P введите оператор Java p0.fireEvent("ТРАФФИК").
В стейтчарте светофора управляющего движением для перехода t6 измените настройки свойств в соответствии с рисунком 2.9.
Рис.2.9. Настройка перехода стейтчарта светофора управления движениемРядом со стейтчартом управления работой светофора пешеходного перехода разместите его изображение.
Разместите две окружности.
Верхняя окружность служит для показа красного сигнала, а нижняя зеленого. Для окружностей введите код Java для изменения цвета заливки:
redP ? Color.red : Color.gray
greenP ? Color.green : Color.gray
Окружности поместите в прямоугольник, так как это показано на рисунке 2.10.
Рис. 2.10. Светофор пешеходного переходаПротестируйте созданную модель. Вид работающей модели должен соответствовать рисунку 2.11.
Рис. 2.11. Модель пешеходного перехода
Создайте модель пешеходного перехода со следующими особенностями:
Светофор управления движением дает зеленый сигнал транспорту, светофор пешеходного перехода дает запрещающий сигнал пешеходам.
Что бы пешеход мог перейти дорогу он должен нажать кнопку «ЖДУ» на светофоре перехода. Параметры переключения сигналов светофоров аналогичны заданию №2.
Методические указания:
Модель перехода должна иметь вид, показанный на рисунке 2.12.
Рис. 2.12. Переход, управляемый пешеходомВ модель нужно ввести логическую переменную waiting. Когда пешеход нажимает кнопку, то ей присваивается значение true.
В стейтчарт управления светофором движения нужно ввести композитное состояние go, переход T должен срабатывать, когда пешеход нажал кнопку «ЖДУ».
Когда цикл работы светофора пешеходного перехода заканчивается, то переменной waiting нужно присвоить значение false при выполнении перехода t1P.
Создайте модель с конечным автоматом для имитации работы кодового замка. Замок открывается при наборе кодовой шести разрядной последовательности 137819.
Начальное состояние замка мигающий символ # зеленого цвета. Пользователь замка нажимает кнопки для набора кода, при этом вводимый код не отображается. Кнопка «С» позволяет сбросить кодовую последовательность при наборе.
Когда набран шести разрядный код, замок переходит в состояние его проверки. Код выводится на дисплей и происходит задержка на 5 секунд. Если код набран верно, то выводится сообщение «OK !» иначе «ERROR!». Для сброса состояния замка пользователь нажимает клавишу «С» и замок переходит в начальное состояние. На рисунках 2.13-2.15 показаны состояния замка.
Рис. 2.13. Начальное состояние замка