Тема
Разработка программы управления лифтом
Техническое задание
лифт программа управление
Разработать алгоритм и программу управления поворотной платформы.
В работе предусмотреть:
) язык программирования - Java Script;
) среда программирования - Adobe Dreamweaver CS5;
) ручное и автоматическое управление лифтом;
Введение
. Разработка программы
// Выполнение прогрпммыgoFloor( a )
{
if( a == parseInt( $('op').value ) )
{
//if ( a == 0 ) $('thisFloor').value = 1;
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 class="butNext"
onclick="goFloor( $(\'op\').value )">Следующая операция</div>'
}
else if ( fType != 'pause' && fType != 'pauseSignal' )
{
$('thisFloor').value = fNext;
fNext = fAll-fNext;
fThis = fAll-fThis;
//$('lift').style.marginTop = a*web_height+1+'px';
$('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
}
}
// Добавляем операциюaddOp( a )
{
var i = $('allOp').value;
$('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;
}
//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';
}
}
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 class="butFloor"
onclick="addOp('+i+')" id="auto'+i+'" style="display:none">'+i+'</div>'+
'<div class="butFloor"
onclick="goFloorManual('+i+')" id="manual'+i+'">'+i+'</div>'+
'</td><td class="line"></td><td width="100"><div
id="but'+i+'"></div></td></tr>'
}
$('content').innerHTML = '<table><tr><td><div
class="title">Симулятор лифта'+
'<div class="rMode" id="modeCheck"
onmouseover="aBox(\'modeBox\',1)" onmouseout="aBox(\'modeBox\')"
onclick="mode()"></div><div class="aBox" id="modeBox">Выбран ручной
режим работы</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>'+
. Вычислительный эксперимент
Для выполнения вычислительного эксперимента в папке запускаем
Opera Web Document (.html) файл. Появляется программа выполненная в виде
приложения для браузера в среде программирования Adobe Dreamweaver
CS5. Управление лифтом осуществляются согласно указаниям, приведенным
в руководстве оператора. Задание количества этажей, этажа следования,
настройка остановок осуществляется при помощи клавиатуры и
манипулятора «мышь». При проведении вычислительного эксперимента
проверено соответствие результатов, полученных на этапе проектирования, с
результатами работы программы. Вычислительные эксперименты
изображены на рисунках 7, 8 и 9.
Рисунок 9 - Продолжение
Заключение
Руководство оператора
В приложении представлены: назначение программы, условия
выполнения программы. Данная программа предназначена для перемещения
модели лифта на заданный этаж в ручном режиме работы, а также для
задания маршрута движения по этажам, настроек остановок на этажах и
последующее исполнение поставленной задачи в автоматическом режиме
работы. Запускаем html-файл. В рабочей области представлены настройки
модели лифта, а именно задаём количество этажей модели и нажимаем
кнопку “Далее”.
Руководство программиста
В приложении представлены: назначение программы, условия
выполнения программы, описание переменных и функций, используемых в
программе.
Данная программа предназначена для построения и управления
моделью лифта.
Программа написана на языке JavaScript, поэтому для выполнения
вычислительного эксперимента необходимо запустить программу в окне
браузера Opera версии 12.0 и выше. В других браузерах корректная работа
программы не гарантируется, поскольку программа не была оптимизирована
и адаптирована для работы в других браузерах. При написании программы
использовалась технология “Объектно-ориентированное программирование”,
в результате чего все действия описаны теми или иными функциями.
Разберём все функции использованные в программе.
Start - Функция отображающая модель лифта и всю рабочую область.-
Функция передвижения лифта вверх.- Функция передвижения лифта вниз.
goFloorManual - Функция передвижения модели лифта на заданный
этаж в ручном режиме. В качестве параметра функция принимает этаж, на
который нужно переместить лифт. В процессе выполнения данная функция
запускает функцию upLift или downLift.- Функция добавления новых
операций в список для автоматического их выполнения.- Функция отмены
добавления операции в всплывающем окне.
mode - Функция переключения ручного и автоматического режимов
работы.
pauseType - Функция выбора типа паузы в всплывающем окне.-
Функция очистки списка операций для автоматического режима работы.-
Функция выполнения операции в автоматическом режиме.- Функция,
запускающая выполнение списка операций путём цикличного запуска
функции goFloor.