<< Вернуться на главную

Посадка на луну

Тренировочная работа. Проводится сразу после курса первоначального обучения языку (основные операторы, простые типы).

Сначала нужно познакомиться с реальным процессом. Итак, как это было:

На спускаемом аппарате Апполо 11 стоял бортовой компьютер, который на этапе спуска имел 4-ре основных режима работы. Каждый режим включался отдельной кнопкой, сделанной так, чтобы ее легко можно было нажать рукой в перчатке скафандра.

первая - спуск в полностью автоматическом режиме, когда по показаниям высотомера определяется необходимый расход горючего (и соответственно мощность двигателя). Тоесть жмем ее и сложив руки ждем посадки (куда кривая вынесет :-) )

А если в месте посадки трещина или камень? Тогда можно было нажать кнопку 2. При этом компютер продолжал держать оптимальную скорость спуска, но разблокировалось ручное управление по X-Y (при помощи джойстика). В результате можно было слегка подправить место посадки.

Ну а если случай тяжелый и места для посадки рядом нет? Тогда жмем 3-ю кнопку и полностью берем управление на себя (автоматически поддерживается только равновесие аппарата. Можно полетать над поверхностью, выбрать место. Беда только в том, что спускаемый аппарат не вертолет! Горючку жрет так, что особенно не полетаешь. Чуть зазевался, и все! Тю-Тю горючка (кстати за 5 секунд до полного окончания горючего в кабине врубалась аварийная сирена).

Ну и что делать если все совсем плохо? Правильно! жмакать последнюю 4-ю кнопку! В этом случае происходил отстрел секции посадки и врубался двигатель кабины, предназначенный для взлета с луны. Соответственно о посадке уже речь не шла, но можно было спасти экипаж, уйдя обратно на орбиту.

Вот так это выглядело на реальном аппарате. А теперь перейдем к тренировочной работе.

Мы написали модель спускаемого аппарата и поместили ее в отдельную библиотеку "LUN".

           В библиотеке несколько глобальных переменных:

 H - текущая высота (метры) (начинаем с 500м)
 V - текущая скорость(м/сек) (изначально 0)
 T - остаток горючего (кг) (изначально даем 10т !)
 R - текущий расход (кг.сек) Сколько установите, столько и будет!

          Кроме того в библиотеке есть 2-е подпрограммы:

 IN_LUN; - подпрограмма начальной инициализации. Запускается один 
          раз в начале программы управления. Инициализирует работу,
          графический режим и все переменные.

 UPR_LUN(RAS:REAL); - подпрограмма управления (основная подпрограмма,
          при каждом вызове которой подсчитывается исходя из заданного
          расхода новая скорость и положение аппарата).
ВНИМАНИЕ! расход можно задавать от 0 до 999 кг/сек. Соответственно
         если 0 - то двигатель отключен
            999 - Максимальное торможение

Ваша задача написать программу управления, задавая расход горючего, исходя из значений глобальных переменных. Кстати скорость при посадке должна быть не более 5 м/c. Это конечно тоже много, но не будем особенно мелочиться, как ни как первая самостоятельная работа. Да и у аппарата имеются сминаемые опоры, которые серьезно гасят удар.

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

 1 - выключение двигателя
 2 - половина тяги (расход 500 кг/сек)
 3 - полная тяга (расход 999 кг/сек)

Что получилось можно скачать здесь:

Готовая программа(128rБ)

Ну а в качестве затравки для вашей работы исходник этой программы можно скачать ЗДЕСЬ!(134rБ)
Вспомогательные модули не выкладываю, чтобы мозги не забивать! Ваша задача побаловаться с программой управления. И разработать нормальную программу, которая управляет аппаратом используя обратную связь. А можно и ручное управление усовершенствовать. Игрушка получится :-)

Ну если побаловались, то продолжаем тренировку . Попробуйте сделать программу из трех частей. Сначала организуйте свободное падение до определенной высоты (сами подберете) Потом тормозите изо всей мочи, так чтобы сбросить скорость до нуля. Ну а теперь, когда вы остановились на небольшой высоте, можно организовать плавную посадку с постоянным расходом но слегка управляемым в зависимости от текущей скорости.

Вот что получается в этом случае:

Программа из 3-х веток(128кБ)

Ну а исходник уж прийдется писать самим, а иначе что это за тренировка? :-)

Но честно говоря, я ни на первый ни на 2- корабль не сел-бы :-). Свою шкуру жалко! Так что я себе корабль получше написал, с контролем за скоростью, с анализом как влияет заданный расход на торможение. Ну и специально для пущей эффектности сделал начало работы третьей ветки повыше, чтобы значит с комфортом, да на последних каплях горючего, да с скоростью не более 2-х метров в секунду ЭЭХ!

Вот она!(128кБ)

а всего-то добавил пару IF-ов да простенькое вычисление. Думайте, у вас тоже должно получиться! все только на логике и 4-х арифметических действиях.

Успеха, администрация сервера желает вам приятного полета! :-)