Аполлон 11. Старт с Земли (МК61)
Очередная годовщина - повод снова засесть за пульт МК 61. Посадку лунного модуля и старт с Луны - задачи решённые, пора двигаться дальше.
А не замахнуться ли нам на Вильяма, нашего, Шекспира, подумалось мне. После некоторых размышлений, я решил попробовать смоделировать миссию с самого начала: со старта от мыса Канаверал и выхода на околоземную орбиту. Среди "ортодоксальных" космических программ КЭИ (Атмосфера 1, 2 и 3), стартовать с Земли можно только на первой.
На подобные подвиги редакция КЭИ не замахивалась, хотя в эпизоде 8 "Разбуди в апогее", где она использовалась, утверждалось, что Атмосфера 1 предназначена для численного моделирования различных маневров космических аппаратов (ВЗЛЁТ, выход на круговые и эллиптические орбиты, баллистический полет в атмосфере, снижение на парашютах, посадка) в непосредственных окрестностях планет, окруженных газовыми оболочками.
АТМОСФЕРА-1 (КЭИ)
00.Сх 01.ИПА 02.+ 03.ПА 04.ИП7 05.-
06.Fx<0 07.13 08.ИПВ 09./-/ 10.÷
11.БП 12.56 13.С/П 14.П8 15.П2 16.÷
17.ИП6 18.× 19.ИПВ 20.Fx2 21.ИП0
22.Fx2 23.+ 24.П9 25.÷ 26.ИП7
27.ИПА 28.- 29.ИП3 30.÷ 31.9 32.+
33.Fx<0 34.36 35.Сх 36.9 37.-
38.F10x 39.ИП1 40.× 41.- 42.ИПД
43.ИП8 44.- 45.Fx≥0 46.00 47.ПД
48.ИП5 49.+ 50.÷ 51.ИП9 52.F√
53.× 54.П9 55.ИП2 56.ИП9 57.ИПВ
58.ИПА 59.÷ 60.- 61.ИП0 62.× 63.×
64.ИП0 65.+ 66.П0 67.ПП 68.92
69.ИПА 70.÷ 71.Farcsin 72.ИПС 73.+
74.ПС 75.Fo 76.ИП0 77.Fx2 78.ИП4
79.ИПА 80.÷ 81.- 82.ИПА 83.÷
84.ИП9 85.ИПВ 86.× 87.+ 88.×
89.ИПВ 90.+ 91.ПВ 92.FВх 93.+
94.× 95.2 96.÷ 97.В/О
Регистры:
- Р0 - V
- P1 - Po*Sx/2
- P2 - dt
- P3 - H (характерный масштаб атмосферы)
- Р4 - К (гравитационная постоянная планеты)
- Р5 - сухая масса корабля
- Р6 - скорость истечения топлива
- Р7 - радиус планеты
- Р8 - расход топлива
- Р9 - служебный
- РА - расстояние до центра планеты
- РВ - U вертикальная
- РС - угловая координата
- РД - масса топлива
В принципе, взлететь на ней действительно можно. Можно даже попробовать выйти на орбиту. Для этого нужно в точке старта задать необходимое соотношение минимальных вертикальной и горизонтальной скоростей, соответствующих углу отклонения от вертикали примерно в 10 градусов. Далее траектория будет постепенно наклоняться к горизонту. В теории, можно подобрать такой начальный угол запуска, чтобы вертикальная скорость занулилась при достижении круговой скорости, что и будет соответствовать ситуации выхода на орбиту, но такая траектория будет значительно отличаться от траекторий, используемых на практике. Существенным недостатком Атмосферы-1 является невозможность управления вектором тяги. Кроме того, при полёте в атмосфере КЭИ рекомендует установить шаг по времени не более 5 секунд. Если учесть, что время работы только первых двух ступеней (160 + 360 секунд), количество операций составит порядка 100, что достаточно утомительно. Тут настоятельно необходим автопилот. Однако, свободных регистров у нас только один - РЕ! Похоже, что придётся выбирать - или автопилот, или коррекция вектора тяги. Использовать Рег.Т стека не получиться, его придётся задействовать для промежуточного хранения либо реактивного, либо аэродинамического ускорения.
В итоге, мне пришла в голову счастливая идея - совместить значение масштаба атмосферы и аэродинамический параметр корабля в одном регистре, используя целую и дробную части по отдельности. К целочисленному значению масштаба прибавляем величину, обратную аэродинамическому параметру. А для извлечения необходимой константы использовать штатные функции МК61 выделения целой или дробной части. Теперь всё сходится - можно пробовать писать код. В результате получился мой вариант программы:
АТМОСФЕРА-1
00.Сx 01.ПxA 02.+ 03.xПA 04.Пx7 05.- 06.Fx<0 07.09 08.K- 09.FL1
10.18 11.Пx0 12.ПxB 13.÷ 14.Ftgᐨ¹ 15.С/П 16.xП3 17.xП1 18.Пx6 19.ПxD
20.Пx9 21.Пx2 22.× 23.- 24.Fx≥0 25.08 26.xПD 27.Пx5 28.+ 29.÷
30.Пx9 31.× 32.Пx7 33.ПxA 34.- 35.ПxE 36.÷ 37.F10ˣ 38.ПxE 39.K{x}
40.÷ 41.Пx0 42.Fx² 43.ПxB 44.Fx² 45.+ 46.F√ 47.× 48.Пx5 49.ПxD
50.+ 51.÷ 52.xП8 53.Fѻ 54.Пx3 55.Fsin 56.× 57.ПxB 58.ПxA 59.÷
60.Пx8 61.+ 62.Пx0 63.× 64.- 65.Пx2 66.× 67.Пx0 68.+ 69.xП0
70.ПП 71.98 72.ПxC 73.+ 74.xПC 75.Fѻ 76.Пx3 77.Fcos 78.× 79.Пx8
80.ПxB 81.× 82.- 83.Пx0 84.Fx² 85.ПxA 86.÷ 87.+ 88.Пx4 89.ПxA
90.Fx² 91.÷ 92.- 93.Пx2 94.× 95.ПxB 96.+ 97.xПB 98.FВх 99.+
A0.2 A0.÷ A0.Пx2 A0.× A0.В/О
Разбирая код Атмосферы-1, обратил внимание, что КЭИ постепенно ушли от программирования в стиле "спагетти", чем они увлекались поначалу. Мой итоговый код также достаточно прост.
- 00 - 08: Вычисление высоты, при отрицательной высоте - аварийный останов. Посадочный блок отсутствует - да он тут и не нужен, на данном этапе "посадка" в любом случае -аварийная.
- 09 - 10: автопилот
- 11 - 14: вычисление угла наклона траектории - важный параметр, за которым приходится постоянно следить. Поскольку происходит деление на вертикальную скорость, её необходимо задавать отличную от нуля (тысячные доли м/с).
- 15 - 17: штатный останов, при котором в рег.Х - угол отклонения траектории от вертикали, в рег.Y - высота. Манёвр задаётся несколько необычно: вектор тяги ПП кол-во циклов автопилота С/П.
Шаг времени заносится предварительно в П2. Сделал так по подсказке Ajaja, действительно, пользоваться автопилотом в таком режиме гораздо удобнее. Расход топлива в секунду также заносится предварительно в П9. Этот параметр постоянный и определяется делением начальной массы топлива на время работы ступени, что примерно соответствует реальности. Впрочем, ничто не мешает менять его вручную перед каждым новым манёвром, не превышая максимально допустимого. - 18 - 31: расчёт реактивного ускорения. По адресу 24 - проверка уровня топлива. Если его не хватает - аварийный останов, сигнализирующий о необходимости отстрела очередной ступени. Переход на следующую ступень приходится делать "вручную" - меняя содержимое регистров 5, 6 и Д. Реактивное ускорение в дальнейшем цепляется за вершину стека, его величину можно смотреть в рег.Z при очередном останове.
- 32 - 52: расчёт аэродинамического ускорения, делённого на курсовую скорость (хранится в дальнейшем в рег.8). Вертикальная и горизонтальная компонента торможения атмосферой считаются в дальнейшем простым умножением на U и V соответственно.
- 53 - 74: Расчет горизонтальной скорости и смещения.
- 75 - А4: Расчет вертикальной скорости и вертикального смещения.
По сравнению с Атмосферой 1 КЭИ, в рег.1 теперь счётчик автопилота, масштаб атмосферы и аэродинамический параметр корабля хранятся в рег.Е, а освободившийся рег.3 использован для хранения угла вектора тяги.
При работе с программой необходимо учитывать следующие ограничения:
- Максимальная высота орбиты - 1732 км. При большей высоте происходит аварийный останов по адресу 37.
- Вертикальная скорость не должна обращаться в ноль. В полёте, как правило, этого не происходит, главное - не забыть задать минимальную величину на старте.
А вот комплект исходных данных для старта:
- 6371 ВП 3 П7 (радиус Земли)
- Fx2 9.81 X П4 (гравитационная постоянная Земли)
- ИП7 70 + ПА (начальная высота старта над уровнем моря)
- 0 П0 ПС
- 0.001 ПВ
- 1 П1 (инициализация автопилота)
- 1 П2 (шаг по времени. До высот 80 км не рекомендуется задавать больше 5 сек.)
Для первой ступени Сатурна-5, выводившего Аполлон на орбиту Земли, на основе данных приведённых в Вики, а также вот этого источника
- 787400 П5 (сухая стартовая масса Аполлона 11)
- 2580 П6 (удельный импульс) Для кислорода с керосином удельный импульс в вакууме составит примерно 3660 м/с (родные цифры из лунной эпопеи Кон-Тики!). Но в плотной атмосфере земли импульс уменьшается до указанных 2580.
- 2155600 ПД
- 17500 В1 173 F1/x + ПЕ (173 взят исходя из диаметра 13 м., коэфф.сопротивления принят за 2)
- ИПД 162 / П9 (секундный расход топлива первой ступени) Эта величина соответствует максимальной тяге в 34343 кН у поверхности. В реальности, с набором высоты и падением давления тяга будет увеличиваться за счёт роста удельного импульса. Реализовать это средствами МК61 малореально. Выход я вижу только один - несколько увеличить величину импульса, по отношению к "нулевому". Насколько увеличивать - покажут пробные полёты...
Данные введены, нажимаем В/О С/П. На экране ноль - мизерная вертикальная скорость при нулевой горизонтальной, естественно, даёт нулевой угол отклонения от вертикали. В рег.Y - высота над уровнем моря (70 м).
Для старта вводим угол вектора тяги, ПП, количество циклов автопилота, С/П.
Пристегнулись и поехали!
blog comments powered by Disqus