Система управления лифта

Автор работы: Пользователь скрыл имя, 08 Апреля 2013 в 21:12, реферат

Описание работы

Берілген жұмыста Unimod әзiрлеу ортасының қолдануымен жолаушылар лифтының жобалауы үшiн автоматты тәсiлдi қолданудың мысалы келтірілген.
Техникалық объектілерді логикалық басқару есептерін алгоритмдеу және программалау үшiн автоматты тәсiл ыңғайлы, себебi салынған автоматтың өткелдерiнің кескіні объектiнiң жұмысын көрнекi көрсетеді. Бұл жобалауда мүмкiн болатын қателерді жеңiл көруге болатынына әкеледі, мысалы, кейбiр өткелдірдің болмауы, күйдiң ашық еместiгi және басқалар.

Содержание работы

Кіріспе ................................................................................................................... 3
1. Мақсаттың қойылуы ....................................................................................... 4
2. Сценаридің үстiрт мәтiнi.................................................................................. 7
3. Автоматты өткiзу .............................................................................................. 8
3.1. Автомат............................................................................................................ 8
3.2. Оқиғалар генераторы................................................................................... 10
3.3. Басқару объектiлері ..................................................................................... 10
4. Бағдарламаның өткiзілуi ................................................................................ 11
4.1. Интерпретациялық тәсiл ............................................................................. 11
4.2. Компиляциялық тәсiл................................................................................... 13
Қорытынды......................................

Файлы: 1 файл

Оглавление.docx

— 269.98 Кб (Скачать файл)

Мазмұны

Кіріспе ...................................................................................................................  3

1.  Мақсаттың қойылуы .......................................................................................   4

2.  Сценаридің үстiрт мәтiнi.................................................................................. 7

3.  Автоматты өткiзу .............................................................................................. 8

3.1.  Автомат............................................................................................................ 8

3.2.  Оқиғалар генераторы................................................................................... 10

3.3.  Басқару объектiлері ..................................................................................... 10

4.  Бағдарламаның өткiзілуi ................................................................................ 11

4.1.  Интерпретациялық тәсiл ............................................................................. 11

4.2.  Компиляциялық тәсiл................................................................................... 13

Қорытынды.........................................................................................................   14

Пайдаланылған әдебиеттер................................................................................   15

 

 

 

 

 

 

 

 

Кіріспе

Берілген жұмыста Unimod әзiрлеу ортасының қолдануымен жолаушылар лифтының жобалауы үшiн автоматты тәсiлдi қолданудың мысалы келтірілген.

Техникалық объектілерді  логикалық басқару есептерін  алгоритмдеу және программалау үшiн  автоматты тәсiл ыңғайлы, себебi салынған автоматтың өткелдерiнің кескіні  объектiнiң жұмысын көрнекi көрсетеді. Бұл жобалауда мүмкiн болатын қателерді жеңiл көруге болатынына әкеледі, мысалы, кейбiр өткелдірдің болмауы, күйдiң ашық еместiгi және басқалар.

Unimod әзiрлеу ортасын пайдалану  бағдарлама әзiрлеудiң басынан  ақ автоматты тәсiлден алшақ кетуге мүмкіндік бередi.  Жобалаудың қағидасы жүйенiң жұмыс барысының нысандандыру үшiн өзара байланысты автоматтардың жүйесін құру болып табылады. Автоматтарды қолданудың арқасында бағдарлама жеке тәуелсiз блоктерге бөлiнедi, бұның нәтижесiнде оның жазылуы жеңiлденедi, және қателердiң пайда болуының тәуекелi азаяды.

 

 

 

 

 

 

 

 

 

1.  Мақсаттың қойылуы

Бұл жұмыста шешілетін есеп: жолаушылар лифтының жұмысын басқаратын бағдарламаны жобалау.

Лифт аралық қабаттардағы адамдарды кiргiзбей барлық тапсырманы кезекпен орындайтын жағдайды берілген есептің ерекше қызығушылығы жоқ. Одан қызығырағы лифттың тапсырмаларды олардың түсу тәртiбiнде емес орындауға мүмкiншiлiгi болатыны. Лифттың қозғалсынығ оптималдық міселесі бар – лифтты күтуші адамдардың жиынтық уақыты төмен болуы керек.

«Ақылды» лифттың мүмкiн  болатын өткiзулерiнiң бiрi келесi: лифтт қашан төмен жүргенін және қашан үстiне көтерілгенін біледі. Үстiне қозғалыс болғанда сол бағытта жүруді жоспарлайтын адамдарды ғана кіргізу керек, ал төмен кететiндерді төменге бағыт алғанда. Лифтты шақыру үшін әр қабатта екi батырмалары бар басқару панелі орнатылған: жолаушы осы қабаттан үстiне жүргiсi келгенде басатын «үстiне» батырмасы және ұқсас батырма «төмен». Мұндай лифттың шақыруының ұйымына ықпалында алгоритм құруға болады, бұл алгоритмге сәйкес лифт кейбiр шақыруды қабылдайды немесе уақытша оны елемейдi. Бұдан байқайтынымыз, тап осындай «элементарлық» тәсiл көптеген дамыған елдердiе лифттерді басқару үшiн пайдалануда.

Автоматты тәсiл лифттардың жұмысының өткiзуi үшiн пайдаланып қойылды, мысалы, А.С.Наумов, А.А. Шалытоның «Лифтті басқару жүйесi» және «Лифт туралы Д. Кнуттың есебінің автоматты шешiмi» жұмыстарында. Берілген бағдарламалардың мүмкін болатын кемшіліктері, мысалы, есеп қабаттардың белгiленген саны үшiн ұйғарылатын.

1-суретте бағдарламаның қолданбалы интерфейсi бейнеленген.

1-сурет. Бағдарламаның қолданбалы интерфейсi

В левой части приложения располагается внутренняя панель лифта. Каждая круглая кнопка соответствует  кнопке внутри лифта. Каждый раз, когда  пассажир нажимает кнопку внутри лифта, она подсвечивается, и лифт должен будет посетить данный этаж.

В центральной части анимирован сам лифт. Прямоугольная область, отведенная для эмуляции движения лифта, горизонтальными линиями разделена  на  FLOORS_COUNTчастей, каждая из которых является уровнем соответствующего этажа. В левом нижнем углу данной  области отображается текущий номер этажа с точностью до десятой доли.

В правой части приложения размещены панели вызова лифта, располагающиеся  на каждом этаже. Кнопка «Вверх» (треугольник  внутри кнопки направлен вверх) означает, что пассажир желает ехать вверх, кнопка «Вниз» (треугольник внутри кнопки направлен вниз),  что он желает ехать вниз. На каждой кнопке в центре написан номер этажа, на котором она располагается. Заметим, что на первом этаже нет кнопки «Вниз», а на последнем «Вверх», потому как эти направления с крайних  этажей не допустимы.

В нижней части располагается  текстовое окно, в которое выводится  информация о вызовах и текущее  состояние лифта. В правом нижнем углу находится кнопка «Выход», по нажатию  на которую приложение завершает  свою работу.

В разработанной программе  количество этажей можно задать путем  изменения константы  FLOORS_COUNT  в файле  Lift.java. При этом автомат останется неизменным, а соответствующим образом изменится пользовательский интерфейс.

 

2. Формальный текст сценария

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

1.  Ожидание следующего  задания.

Лифт находится в статичном  состоянии на одном из этажей.  Когда лифту поступит сигнал о  новом задании или о том, что  следующее задание выбрано, он перейдет в движение «вверх» или «вниз». Эти состояния являются различными, так как при восходящем и нисходящем движении могут реализовываться  неодинаковые алгоритмы выбора промежуточных  остановок.

2.  Восходящее движение.

Лифт движется вверх. Он останавливается  в случае достижения требуемого этажа, либо при поступлении сигнала  о том, что следует остановиться на промежуточном этаже.

3.  Нисходящее движение.

Состояние аналогично состоянию  «2».  Алгоритм  останова на промежуточных  этажах может отличаться.

4.  Лифт стоит с открытыми  дверьми. Ожидает, пока пассажиры 

займут место в лифте.

5.  Лифт сломан.

Конечно, лифт не идеален. Может  случиться, что он сломается. В этом случае лифт не функционирует, пока не будет починен.

 

3. Автоматная реализация

Описанная выше система реализована  с помощью автоматного подхода  в виде схемы, представленной ниже на рис. 2.

Рис. 2. Схема связей

 

3.1. Автомат

Рассмотрим автомат  liftAutomat, который отражает логику работы лифта. Он представлен на рис. 3.

Рис. 3. Автомат liftAutomat

На схеме изображены следующие  состояния автомата дляуправления

лифтом:

•  «Выбор направления»–  лифт находится в состоянии ожидании

нового задания;

•  «Движение вверх»–  лифт движется вверх, попутно останавливаясь

на нужных этажах;

•  «Движение вниз»– лифт движется вниз;

•  «Посадка пассажиров 1,2»–  лифт находится в состоянии ожидания,

пока пассажиры не зайдут внутрь лифта;

•  «Сломался по пути вверх/вниз»–  лифт сломан и находится в

состоянии ожидания ремонта.

 

3.2. Генератор событий

Далее будет описан генератор  событий  liftEventProvider. Данный объект описывает события, передаваемые лифту.

События:

•  «NewTaskAdded» –уведомление о появлении нового задания;

•  «GoUp» – уведомление о том, что лифт должен ехать вверх;

•  «GoDown» –уведомление о том, что лифт должен ехать вниз;

•  «QueueIsEmpty» – уведомление о том, что очередь заданий пуста;

•  «OpenTheDoors» – уведомление об открытии дверей;

•  «CloseTheDoors» – уведомление о закрытии дверей;

•  «HasBroken» – уведомление о поломке лифта;

•  «HasBeenRepaired» – уведомление о том, что лифт был починен.

 

3.3. Объекты управления

Объект управления oLift описывает действия лифта.

Методы объекта:

•  «goUp» – ехать вверх;

•  «goDown» – ехать вниз;

•  «waitOpened» – ждать посадки пассажиров;

•  «openTheDoors» – открыть двери;

•  «closeTheDoors» – закрыть двери;

•  «changeDirection» – изменить направление движения;

•  «chooseDirection» – выбрать направление движения.

Объект управления  oForm  описывает вспомогательные, помимо движения лифта, действия.

Методы объекта:

•  «updateButtons» – обновить состояния кнопок на всех этажах;

•  «showBreakageMsg» – сообщить о поломке;

•  «closeForm» – завершить работу системы.

 

4. Реализация программы

Программа реализуется с  использованием плагина  Unimod  к среде разработки  Java-приложений  Eclipse. С помощью данного плагина были построены все схемы связей, сконструирован сам автомат, а также интерфейс объектов управления. Реализация самих методов проводилась вручную на языке программирования Java.

Существуют два подхода  для создания приложений:  интерпретационныйи компилятивный.

 

4.1. Интепретационный подход

Данный подход основан  на использовании библиотек  Unimod  для работы приложения.

Построенный автомат сохраняется  в файле  XML-формата (Приложение 1), затем компилируются написанные вручную классы, реализующие поставщики событий и объекты управления. После этого, используя библиотеки  Unimod, XML-файл и скомпилированные классы, запускается приложение. При работе в протокол выводятся комментарии Unimodо происходящих событиях и совершаемых переходах в автомате. Далее приведен пример такого протокола для следующих действий: запустили приложение, нажали кнопку на пятом этаже, нажали кнопку выхода.

20:36:56,421 INFO [Run] Start event [Start] processing. In state [/liftAutomat:Top]

20:36:56,421 INFO [Run] Transition to go found [InitialState#Выбор направления##true]

20:36:56,421 INFO [Run] Start on-enter action [oLift.chooseDirection] execution

20:36:56,437 INFO [Run] Finish on-enter action [oLift.chooseDirection] execution

20:36:56,437 INFO [Run] Finish event [Start] processing. In state [/liftAutomat:Выбор направления]

20:36:57,156 INFO [Run] Start event [NewTaskAdded]processing. In state [/liftAutomat:Выбор направления]

20:36:57,156 DEBUG [Run] Try transition [Выбор направления#Выбор направления#NewTaskAdded#true]

20:36:57,156 INFO [Run] Transition to go found [Выбор направления#Выбор направления#NewTaskAdded#true]

20:36:57,156 INFO [Run] Start on-enter action [oLift.chooseDirection] execution

20:36:57,156 INFO [Run] Finish on-enter action [oLift.chooseDirection] execution

20:36:57,156 INFO [Run] Finish event [NewTaskAdded] processing. In state [/liftAutomat:Выбор направления]

20:36:57,156 INFO [Run] Start event [GoUp] processing. In state [/liftAutomat:Выбор направления]

20:36:57,156 DEBUG [Run] Try transition [Выбор направления#Движение вверх#GoUp#true]

20:36:57,156 INFO [Run] Transition to go found [Выбор направления#Движение вверх#GoUp#true]

20:36:57,156 INFO [Run] Start on-enter action [oLift.goUp] execution

20:36:57,156 INFO [Run] Finish on-enter action [oLift.goUp] execution

20:36:57,156 INFO [Run] Finish event [GoUp] processing. In state [/liftAutomat:Движение вверх]

20:36:57,156 INFO [Run] Start event [QueueIsEmpty]processing. In state [/liftAutomat:Движение вверх]

20:36:57,156 DEBUG [Run] Try transition [Движение вверх#Выбор направления#QueueIsEmpty#true]

20:36:57,156 INFO [Run] Transition to go found [Движение вверх#Выбор направления#QueueIsEmpty#true]

20:36:57,171 INFO [Run] Start output action [oLift.changeDirection] execution

20:36:57,171 INFO [Run] Finish output action [oLift.changeDirection] execution

20:36:57,171 INFO [Run] Start on-enter action [oLift.chooseDirection] execution

20:36:57,171 INFO [Run] Finish on-enter action [oLift.chooseDirection] execution

20:36:57,171 INFO [Run] Finish event [QueueIsEmpty] processing. In state [/liftAutomat:Выбор направления]

20:36:57,171 INFO [Run] Start event [GoDown] processing. In state [/liftAutomat:Выбор направления]

20:36:57,171 DEBUG [Run] Try transition [Выбор направления#Движение вниз#GoDown#true]

20:36:57,171 INFO [Run] Transition to go found [Выбор направления#Движение вниз#GoDown#true]

20:36:57,171 INFO [Run] Start on-enter action [oLift.goDown] execution

20:37:00,265 INFO [Run] Finish on-enter action [oLift.goDown] execution

20:37:00,265 INFO [Run] Finish event [GoDown] processing. In state [/liftAutomat:Движение вниз]

20:37:00,265 INFO [Run] Start event [OpenTheDoors]processing. In state [/liftAutomat:Движение вниз]

20:37:00,265 DEBUG [Run] Try transition [Движение вниз#Посадка пассажиров 2#OpenTheDoors#true]

20:37:00,265 INFO [Run] Transition to go found [Движение вниз#Посадка пассажиров 2#OpenTheDoors#true]

20:37:00,265 INFO [Run] Start output action [oForm.updateButtons] execution

20:37:00,265 INFO [Run] Finish output action [oForm.updateButtons] execution

20:37:00,265 INFO [Run] Start output action [oLift.openTheDoors] execution

20:37:01,000 INFO [Run] Finish output action [oLift.openTheDoors] execution

20:37:01,000 INFO [Run] Start on-enter action [oLift.waitOpened] execution

Информация о работе Система управления лифта