<< Вернуться на главную Посадка на лунуТренировочная работа. Проводится сразу после курса первоначального обучения языку (основные операторы, простые типы). Сначала нужно познакомиться с реальным процессом. Итак, как это было: На спускаемом аппарате Апполо 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 кг/сек) Что получилось можно скачать здесь:
Ну а в качестве затравки для вашей работы исходник этой
программы можно скачать
ЗДЕСЬ!(134rБ) Ну если побаловались, то продолжаем тренировку . Попробуйте сделать программу из трех частей. Сначала организуйте свободное падение до определенной высоты (сами подберете) Потом тормозите изо всей мочи, так чтобы сбросить скорость до нуля. Ну а теперь, когда вы остановились на небольшой высоте, можно организовать плавную посадку с постоянным расходом но слегка управляемым в зависимости от текущей скорости. Вот что получается в этом случае: Ну а исходник уж прийдется писать самим, а иначе что это за тренировка? :-)
Но честно говоря, я ни на первый ни на 2- корабль не сел-бы :-). Свою шкуру
жалко! Так что я себе корабль получше написал, с контролем за скоростью, с
анализом как влияет заданный расход на торможение. Ну и специально для пущей
эффектности сделал начало работы третьей ветки повыше, чтобы значит с комфортом, да
на последних каплях горючего, да с скоростью не более 2-х метров в секунду ЭЭХ! а всего-то добавил пару IF-ов да простенькое вычисление. Думайте, у вас тоже должно получиться! все только на логике и 4-х арифметических действиях. Успеха, администрация сервера желает вам приятного полета! :-) |