Разработка программы управления лифтом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    265,91 Кб
  • Опубликовано:
    2013-05-18
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы управления лифтом















Курсовая работа

Тема

Разработка программы управления лифтом

Техническое задание

лифт программа управление

Разработать алгоритм и программу управления поворотной платформы. В работе предусмотреть:

)        язык программирования - Java Script;

)        среда программирования - Adobe Dreamweaver CS5;

)        ручное и автоматическое управление лифтом;

Введение

Цель курсовой работы: получить практические навыки программирования видовых и перспективных преобразований в Adobe Dreamweaver CS5, закрепить навыки программирования на Adobe Dreamweaver CS5 для управления поворотной платформой.

В ходе выполнения курсовой работы разработаны алгоритм и программа управления лифтом. Разработанная программа выполнена в виде приложения для браузера в среде программирования Adobe Dreamweaver CS5.

В данной работе представлены схема алгоритма, текст программы управления двухмерной моделью лифта.

1. Разработка алгоритма

Схема алгоритма программы управления двухмерной моделью лифта приведена на рисунке 1.

Рисунок 1 - Схема алгоритма программы управления двухмерной моделью поворотной платформы.

. Разработка программы

Текст программы управления двухмерной моделью лифта представлен на рисунке 2.

var web_height = 120,

         web_width = 100,

         process = 0,         // 1 - выполняется перемещение лифта

         t,

         pause;$(a){return document.getElementById(a)}

//       Выполнение прогрпммыgoFloor( a )

{

         if( a == parseInt( $('op').value ) )

         {

                   //if ( a == 0 ) $('thisFloor').value = 1;

                  

                   var fThis = $('thisFloor').value; // текущий этаж

                  

                   if ( $('op'+(a-1)) )

                   {

                            $('op'+(a-1)+'status').innerHTML = '<font color="green">Выполнено</font>';

                            $('but'+fThis).innerHTML = '';

                   }

                  

                   if ( $('op'+a) )

                   {

                            $('op'+a+'status').innerHTML = '<font color="red">В процессе</font>'

                   }

                  

                   if ( a < parseInt( $('allOp').value ) )

                   {

                            $('op').value++

                            var fAll = $('saveFloor').value,

                                      fNext = $('op'+a+'val').value,

                                      fType = $('op'+a+'type').value;

                           

                            if ( fType == 'pause' )

                            {

                                     t = setTimeout( 'goFloor( '+$('op').value+' )', fNext*1000 )

                            }

                            else if ( fType == 'pauseSignal' )

                            {

                                      //fThis = fAll-fThis;

                                      $('but'+fThis).innerHTML = '<div>

                            }

                            else if ( fType != 'pause' && fType != 'pauseSignal' )

{

                                      $('thisFloor').value = fNext;

                                     

                                      fNext = fAll-fNext;

                                      fThis = fAll-fThis;

                                      //$('lift').style.marginTop = a*web_height+1+'px';

                  

                                      if ( fThis > fNext )

                                               upLift( fNext*web_height+1, fThis*web_height+1, 1 )

                                      else

                            }

                   }

         }

         //       Выводим ошибку о подаче ошибочного сигнала

}

//       Отправляем лифт на этаж в ручном режиме

function goFloorManual( a )

{

         if ( process == 0 )

         {

                   var fThis = $('thisFloor').value, // текущий этаж

                            fAll = $('saveFloor').value;

        

                   $('thisFloor').value = a;

                  

                   a = fAll-a;

                   fThis = fAll-fThis;

                   //$('lift').style.marginTop = a*web_height+1+'px';

        

                   if ( fThis > a )

                            upLift( a*web_height+1, fThis*web_height+1 )

                   else

                            downLift( a*web_height+1, fThis*web_height+1 )

         }

}

//       Поднять лифтupLift( a, b, c )

{

         process = 1;

         if ( b > a )

         {

                   b -= 1;

                   $('lift').style.marginTop = b+'px';

                   t = setTimeout( 'upLift( '+a+', '+b+', '+c+' )', 10 )

         }

         else if ( c == 1 )

         {

                   goFloor( $('op').value );

         }

         else

         {

                   process = 0

         }

}

//       Опустить лифтdownLift( a, b, c )

{

         process = 1;

         if ( b < a )

         {

                   b += 10;

                   $('lift').style.marginTop = b+'px';

                   t = setTimeout( 'downLift( '+a+', '+b+', '+c+' )', 100 )

         }

         else if ( c == 1 )

         {

                   goFloor( $('op').value );

         }

         else

         {

                   process = 0

         }

}

//       Очищаем список операцийclearList()

{

         $('thisFloor').value = 1;

         $('allOp').value = 0;

         $('op').value = 0;

         start()

}

//       Добавляем операциюaddOp( a )

{

         $('win_error').style.display = 'none';

        

         if ( i == 0 )

                   var thisFloor = $('thisFloor').value;

         else

         {

                   var op = i*1 - 1,

                            thisFloor = $('op'+op+'val').value,

                            thisType = $('op'+op+'type').value;

         }

        

         var thisFloor2 = ( $('op'+(op-1)+'val') ) ? $('op'+(op-1)+'val').value : thisFloor;

        

         //alert(a+' != '+thisFloor2);

         if ( a == 0 ) // Если добавляем остановку

         {

                   var time = $('floorTime').value;

                   if ( time)

                   {

                            var text = 'Остановка на '+time+' сек.';

                            $('list').innerHTML += '<div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd">'+text+

                                      ' <div style="float:right" id="op'+i+'status"><font color="#ff7700">Ожидает</font></div>'+

                                      '<input type="hidden" id="op'+i+'val" value="'+time+'" />'+

                                      '<input type="hidden" id="op'+i+'type" value="pause" /></div>';

                            $('allOp').value++;

                            $('win').style.display = 'none';

                            $('floorTime').value = ''

                   }

                   else if ( pause == 2 )

                   {

                            $('list').innerHTML += '<div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd">Cигнал для отправки'+

                                      ' <div style="float:right" id="op'+i+'status"><font color="#ff7700">Ожидает</font></div>'+

                                      '<input type="hidden" id="op'+i+'val" value="'+thisFloor+'" />'+

                                      '<input type="hidden" id="op'+i+'type" value="pauseSignal" /></div>';

                            $('allOp').value++;

                            $('win').style.display = 'none';

                            $('floorTime').value = ''

                   }

                   else

                   {

                            $('win_error').style.display = 'block';

                            $('win_error').className = 'error';

                            $('win_error').innerHTML = 'Вы не указали время остановки';

                   }

         }

         else if ( a != thisFloor2 )         // Добавляем передвижение

         {

                   if ( !thisFloor2 ) thisFloor2 = 1;

                   var text = ( a > thisFloor2 ) ? 'Подняться с '+thisFloor2+' на '+a : 'Опуститься с '+thisFloor2+' на '+a,

                            type = ( a > thisFloor2 ) ? 'up' : 'down';

                   if ( $('op'+i) )

                   {

                            $('op'+i).innerHTML = text+

                                      ' <div style="float:right" id="op'+i+'status"><font color="#ff7700">Ожидает</font></div>'+

                                      '<input type="hidden" id="op'+i+'val" value="'+a+'" />'+

                                      '<input type="hidden" id="op'+i+'type" value="'+type+'" />';

                   }

                   else

                   {

                            $('list').innerHTML += '<div id="op'+i+'" style="width:100%;border-bottom:1px solid #ddd">'+text+

                                      ' <div style="float:right" id="op'+i+'status"><font ="#ff7700">Ожидает</font></div>'+

                                      '<input type="hidden" id="op'+i+'val" value="'+a+'" />'+

                                      '<input type="hidden" id="op'+i+'type" value="'+type+'" /></div>';

                   }

                   $('allOp').value++;

                   $('win').style.display = 'block';

                   $('list_but').style.display = 'block';

                   $('list_error').style.display = 'none';

         }

}

function backOp()

{

         $('allOp').value--;

         $('op'+$('allOp').value).innerHTML = '';

         $('win').style.display = 'none';

         $('floorTime').value = ''

}

//       Выполнить операции в списке

function startLift()

{

         goFloor( 0 );

}

//       Выводим модель лифта

function start()

{

         var a = $('saveFloor').value = ( $('floor') ) ? $('floor').value:$('saveFloor').value,

                   e = '',

                   button = '',

                   res = '';

         if ( !a )

         {

                   e = 'Вы не указали колличество этажей'

         }

        

        

         if ( e )

         {

                   $('error').className = 'error';

                   $('error').innerHTML = e;

         }

         else

         {

                   $('error').display = 'none';

                   //$('error').className = 'success';

                   for ( var i=a; i>0; i-- )

                   {

                            res += '<tr><td><div>

                                      '<div>

                                      '</td><td>

                   }

                  

                   $('content').innerHTML = '<table><tr><td><div>

                  

                   '<div>

                  

                   '</div>'+

                  

                   '<div style="position:absolute;margin-left:'+(web_width*1+36)+'px;height:'+(web_height*a)+'px;width:1px;background:#000"></div><div style="position:absolute;margin-left:'+(web_width*2+36)+'px;height:'+(web_height*a)+'px;width:1px;background:#000"></div>'+

                  

                   '<div id="lift" style="position:absolute;background:#ff7700;width:'+(web_width-1)+'px;height:'+(web_height-1)+'px;margin:'+((web_height*(a-1))+1)+'px 0 0 '+((web_width*1+36)+1)+'px"></div>'+

                  

                   '<table>'+res+'</table></td><td>'+

                  

                   '<table width="290"><tr><td width="290"><div>

                  

                   '</td></tr></table>';

         }

}

//       Выбор типа паузы на этажахpauseType()

{

         pause = $('pauseType').value;

         if ( pause == 1 )

         {

                   $('pauseTime').style.display = 'block'

         }

         else

         {

                   $('pauseTime').style.display = 'none'

         }

}

{

         var a = $('modeCheck'),

                   b = $('modeBox'),

                   c = $('mode'),

                   saveFloor = $('saveFloor').value;

         if ( a.className == 'rMode' )

         {

                    a.className = 'aMode';

                    b.innerHTML = 'Выбран автоматический режим работы';

                    c.value = 1;

                    for ( var i=1; i<=saveFloor; i++ )

                    {

                             $('auto'+i).style.display = 'block';

                             $('manual'+i).style.display = 'none';

                    }

         }

         else

         {

                    a.className = 'rMode';

                    b.innerHTML = 'Выбран ручной режим работы';

                    c.value = 0;

                    for ( var i=1; i<=saveFloor; i++ )

                    {

                             $('auto'+i).style.display = 'none';

                             $('manual'+i).style.display = 'block';

                    }

         }

}

//       Вывод подсказкиaBox( a, b )

{

         $(a).style.display = ( b == 1 ) ? 'inline-block':'none';

}

Рисунок 2 - Текст программы управления двухмерной моделью поворотной платформы.

. Вычислительный эксперимент

Для выполнения вычислительного эксперимента в папке запускаем Opera Web Document (.html) файл. Появляется программа выполненная в виде приложения для браузера в среде программирования Adobe Dreamweaver CS5. Управление лифтом осуществляются согласно указаниям, приведенным в руководстве оператора. Задание количества этажей, этажа следования, настройка остановок осуществляется при помощи клавиатуры и манипулятора «мышь». При проведении вычислительного эксперимента проверено соответствие результатов, полученных на этапе проектирования, с результатами работы программы. Вычислительные эксперименты изображены на рисунках 7, 8 и 9.

Рисунок 7 - Вычислительный эксперимент.

Рисунок 8 - Продолжение.

Рисунок 9 - Продолжение

Заключение

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

Данная программа состоит из 319 строк. Объем памяти занимаемый программой составляет html-файл 20 Кб.

Список литературы

1. Пауэлл, Томас; Шнайдер, Фриц М.: «Вильямс»(издание 2-е) 2007 - 960 с.

2.      JavaScript и AJAX в Web-дизайне: Владимир Дронов - Санкт-Петербург, БХВ-Петербург, 2008 г.- 736 с.

.        JavaScript на примерах: Александр Климов - Санкт-Петербург, БХВ-Петербург, 2009 г.- 336 с.

.        JavaScript. Подробное руководство: Дэвид Макфарланд - Санкт-Петербург, Эксмо, 2009 г.- 608 с.

.        JavaScript. Руководство программиста: Пол Вилтон, Джереми МакПик - Санкт-Петербург, Питер, 2009 г.- 720 с.

.        WEB-программирование на Java и JavaScript: Андрей Гарнаев, Сергей Гарнаев - Санкт-Петербург, БХВ-Петербург, 2005 г.- 1040 с.

.        Основы веб-программирования с использованием HTML, XHTML и CSS: Джон Дакетт - Санкт-Петербург, Эксмо, 2010 г.- 768 с.

.        Полный справочник по HTML, CSS и JavaScript: Лазаро Исси Коэн, Джозеф Исси Коэн - Москва, ЭКОМ Паблишерз, 2007 г.- 1168 с.

Приложение А

Руководство оператора

В приложении представлены: назначение программы, условия выполнения программы. Данная программа предназначена для перемещения модели лифта на заданный этаж в ручном режиме работы, а также для задания маршрута движения по этажам, настроек остановок на этажах и последующее исполнение поставленной задачи в автоматическом режиме работы. Запускаем html-файл. В рабочей области представлены настройки модели лифта, а именно задаём количество этажей модели и нажимаем кнопку “Далее”.

Рисунок 10 - Настройки модели лифта.

После нажатия кнопки “Далее” в рабочей области будут показаны следующие элементы:

.        модель лифта с этажами

.        активный режим, в котором производится работа лифта

.        список операций для автоматического режима работы

Все перечисленные выше элементы пронумерованы в соответствующем порядке на рисунке 11.

Рисунок 11 - Разметка рабочей области модели лифта.

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

Предусмотрены остановки двух типов:

1.      Временная пауза - это остановка на заданное время в секундах, которое задаётся в соответствующем поле.

.        Ожидание сигнала - это остановка, которая никак не лимитирована по времени и осуществляется до тех пор, пока не будет принят сигнал о прерывании остановки. Симуляция сигнала осуществляется кнопкой, появляющейся в процессе выполнения соответствующей остановки в заявленной программе.

 


После настройки остановки и нажатия кнопки “Готово” в список операций будут добавлены 2 операции: движение с текущего этажа на выбранный и остановка. Так можно добавить столько операций, сколько потребуется. После добавления всех операций следует нажать кнопку “Запустить”, которая начнёт выполнение созданных операций в той последовательности, в какой они создавались.

Приложение Б

Руководство программиста

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

Данная программа предназначена для построения и управления моделью лифта.

Программа написана на языке JavaScript, поэтому для выполнения вычислительного эксперимента необходимо запустить программу в окне браузера Opera версии 12.0 и выше. В других браузерах корректная работа программы не гарантируется, поскольку программа не была оптимизирована и адаптирована для работы в других браузерах. При написании программы использовалась технология “Объектно-ориентированное программирование”, в результате чего все действия описаны теми или иными функциями. Разберём все функции использованные в программе.

Start - Функция отображающая модель лифта и всю рабочую область.- Функция передвижения лифта вверх.- Функция передвижения лифта вниз.

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

mode - Функция переключения ручного и автоматического режимов работы.

pauseType - Функция выбора типа паузы в всплывающем окне.- Функция очистки списка операций для автоматического режима работы.- Функция выполнения операции в автоматическом режиме.- Функция, запускающая выполнение списка операций путём цикличного запуска функции goFloor.

Похожие работы на - Разработка программы управления лифтом

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!