Лунный модуль 1 на МК-61

В результате модификации кода Лунолёта-3 получилась следующая программа:

ЛМ-1

00.ИПA 01.ПA 02.ИП7 03.- 04.Fx<0 05.12 06.ИПB 07./-/ 08.÷ 09.П2
10.БП 11.36 12.FL1 13.20 14.ПП 15.88 16.С/П 17.П9 18.П3 19.П2
20.ИП6 21.ИП3 22.ИП2 23.× 24./-/ 25.ИПD 26.+ 27.Fx≥0 28.16 29.ПD
30.ИП5 31.+ 32.÷ 33.ИП3 34.× 35.П8 36.ИП0 37.ИП8 38.ИП9 39.Fsin
40.× 41.ИПB 42./-/ 43.ПП 44.80 45.+ 46.П0 47.ПП 48.84 49.2
50.÷ 51.ИПC 52.+ 53.ПC 54.ИПE 55.ИП2 56.+ 57.ПE 58.ИПB 59.ИП8
60.ИП9 61.Fcos 62.× 63.ИП4 64.ИПA 65.Fx² 66.÷ 67.- 68.ИП0 69.ПП
70.80 71.+ 72.ПB 73.ПП 74.84 75.2 76.÷ 77.ИПA 78.+ 79.В/О
80.ИП0 81.× 82.ИПA 83.÷ 84.+ 85.ИП2 86.× 87.В/О 88.ИПС 89.ИПО
90.÷ 91.<-> 92.В/О

По адресам 00. - 11. расположен традиционный “посадочный” блок. Две команды по адресам 12. - 13. реализуют цикл “автопилота”. Перед штатным остановом управление передаётся подпрограмме (ПП 88), которая выполняет расчёт времени полёта до цели с текущей горизонтальной скоростью и засылает его в регистр Y. Такое расположение ПП позволяет, прописывая нужный алгоритм расчётов с адреса 88, помимо высоты, выводить при останове вспомогательную информацию, необходимую на разных участках полёта. Получается своеобразный МФД (многофункциональный дисплей), в качестве которого используется содержимое регистра Y, его отображение можно включить в эмуляторе Хохлова. После останова идут команды записи параметров манёвра: угол отклонения тяги от вертикали, удельный расход топлива, время. Расход теперь записывается в П3 и используется при необходимости в цикле автопилота, для пересчёта ускорения и остатка топлива. По адресам 20. - 35. считается реактивное ускорение и сохраняется, как обычно, в регистре 8. По адресам 27 - 28 происходит проверка на перерасход топлива. При перерасходе управление передаётся на адрес 16, а не на 00, как это было в Лунолёте. Иначе, при задействовании автопилота передача управления на адрес 00 приведёт к зацикливанию программы. Из-за быстроты работы эмулятора можно было бы спутать штатный останов с аварийным, но этого не происходит - отрицательная величина при останове всегда указывает, что он нештатный. Расчётный блок, расположенный по адресам 36 - 87, оставлен без изменений, за исключением того, что вместо ускорения свободного падения для экономии программной памяти в формулах использована гравитационная постоянная Луны.

Подготовка регистров.

Перед запуском программы, как обычно, необходимо задать комплект исходных данных, отвечающих ситуации перед посадкой лунного модуля Аполлона 11. Радиус Луны и расстояние от корабля до центра планеты хранятся в регистрах 7 и А. Набираем на клавиатуре усреднённое значение для радиуса: 1738 ВП3 П7. Высота орбиты, на которой произошла отстыковка лунного модуля, судя по отчётам, была около 105,9 км. Набираем 105900 + ПА. В регистрах Д и 5 сохраняем массу топлива и сухую массу корабля в килограммах, взятые из отчёта: 8165 ПД, 6839 П5 (сухая масса включает в себя, естественно, также и полную массу взлётной ступени, с учётом остатка топлива, необходимого для возврата на орбиту). В регистр 6 помещаем скорость истечения продуктов сгорания в м/сек, указанные для лунного модуля - 3050 П6. В регистре 4 сохраняем гравитационную постоянную Луны: 1.62 ИП7 FХ2 х П4. В регистр С засылаем со знаком «минус» дистанцию до места посадки, которая находится на противоположной от нас точке поверхности. Будем считать, что это половина круговой орбиты: ИПА Fπ × (5 792 782,5 м.)/—/ ПС. В регистр О засылаем начальную горизонтальную скорость корабля. Для круговой орбиты это делается командами: ИП4 ИПА ÷ F√ (1629 м/сек) ПО. Напоследок обнуляем вертикальную скорость и счётчик полётного времени - Сх ПВ ПЕ. В регистр "автопилота" обязательно засылаем единицу: 1 П1

Данные введены, запускаем программу командами В/О С/П.

Штатный останов

После останова на экране отображаются наиболее важные на этом этапе параметры полёта: в регистре Х - 105900 (текущая высота в метрах), в регистре У - 3555,9 со знаком «минус» (время полёта до цели с текущей горизонтальной скоростью, в секундах). Знак минус означает, что мы приближаемся к заданной точке, положительная величина будет говорить о «перелёте» и удалении от неё.

Вся остальная необходимая информация хранится в своих регистрах:
Вертикальная скорость , м/сек - ИПВ
Горизонтальная скорость, м/сек - ИПО
Расстояние до цели в метрах - ИПС
Остаток топлива в килограммах - ИПД
Величина реактивного ускорения, м/сек2 - ИП8

Ввод манёвра

После анализа данных, очередной манёвр задаётся следующими командами:
(угол отклонения вектора тяги от вертикали, градусы) ПП (секундный расход топлива, кг) ПП (время, с) С/П.
В отличие от программ КЭИ, в программе ЛМ-1 необходимо задавать не суммарный расход топлива, а его удельную величину (килограммов в секунду). Для посадочной ступени лунного модуля NASA указывает максимальную тягу 45 040 Ньютонов. Фактически, это ограничение связано с максимальным секундным расходом сгораемого топлива. Определить его несложно: 45040 В↑ ИП6 ÷ (14.767). Для лунного модуля это максимальная величина секундного расхода. ПМК не проверяет эту величину, поэтому контроль за её превышением остаётся на совести пилота.
Состояние стека после запуска программы не имеет значения, поэтому при вводе манёвра можно смело использовать вспомогательные расчёты, просматривать содержимое регистров и т.п.

Автопилот

Для включения автопилота, перед запуском очередного манёвра нужно заслать в регистр 1 количество циклов повтора. После отработки и штатного останова, в регистре автопилота остаётся единица, т.е. автопилот автоматически “отключается”.

Аварийный останов

Если при останове в регистре Х оказалась отрицательная величина - это указывает на перерасход топлива. При отключённом автопилоте следует нажать В/О С/П и повторить ввод манёвра. Если перерасход произошёл во время полёта на автопилоте, перед В/О С/П его необходимо отключить - заслать 1 П1. Перед этим можно проанализировать содержимое ИП1, чтобы понять, на каком цикле топливо закончилось.

МФД

В программе ЛМ-1 перед штатным остановом запускается подпрограмма, записанная с адреса 88. В исходном варианте программы она делает вычисление времени, оставшегося до цели. При необходимости, с этого адреса можно прописывать алгоритм расчёта любой нужной нам величины. Так как этот участок программы не связан с основным расчётным блоком, делать это можно “на ходу”, т.е. во время любого штатного останова - подстраивая “показания приборов” под решение текущей задачи. Главное, не забыть поставить в конце дописанного кода команду возврата из подпрограммы (В/О).

Вот теперь всё готово для того, чтобы попробовать повторить посадку лунного модуля Аполлона на поверхность Моря Спокойствия!
Задача: обеспечить мягкую посадку вблизи заданной точки. Мягкой является посадка со скоростью до 3 м/сек. В аварийном режиме NASA гарантирует падение с высоты в 12 метров, что соответствует вертикальной скорости в 6 м/сек. Если же скорость окажется выше, за сохранность модуля поручиться, увы, нельзя…

Метки публикаций: