Как на самом деле работает программа управления всплытием Apollo LM P12?

P12 - это программа наведения AGC для нормального подъема с лунной поверхности на орбиту. Согласно документам планирования миссии , после отделения и зажигания ступень подъема удерживает исходное положение в течение двух секунд (чтобы уйти от ступени спуска) перед кабрированием на лунную вертикаль; он остается вертикальным в течение еще 8 секунд или около того, затем начинается постепенный переход от вертикального положения к горизонтальному по ходу горения.

Без атмосферы оптимальный путь подъема должен быть довольно близок к закону линейного тангенциального управления , но видео из кабины LM показывает, что, по крайней мере, ранняя часть подъема кажется дискретной , как указано в этом вопросе .

Однако, согласно документу, «логика наведения на этапе ввода определяется командой ускорения, которая является линейной функцией времени»; из текста не ясно, является ли фаза введения отдельным состоянием от ранней части подъема.

Может ли кто-нибудь более свободно разбираться в коде AGC, чем я, объяснить работу P12 (источник на github) немного подробнее?

Особенно:

  1. Каково заданное отношение тангажа к временному профилю?
  2. Является ли он дискретным, непрерывным или и тем, и другим в разных фазах восхождения? (скажем, «непрерывный» означает срабатывание быстрее, чем один раз в секунду.)
  3. Основан ли он на линейном законе касательной или на каком-то другом принципе?
Одна сложность заключается в том, что LM не просто хочет попасть на «орбиту», а скорее «на орбиту, которая позволяет встретиться с CSM».

Ответы (1)

Частичный ответ

Чтобы ответить на подвопросы @Russell:

  1. Мой анализ еще не достаточно далеко, чтобы полностью объяснить расчет отношения по отношению к времени.

  2. Хотя перед прожигом выполняется много вычислений, в цикле прожига также выполняются дополнительные вычисления, поэтому я вполне уверен, что это непрерывный процесс. Есть несколько флагов, которые устанавливаются или сбрасываются в процессе всплытия; видимо так делаются фазы восхождения, но я еще анализирую как это делается.

  3. Я еще не нашел ничего похожего на формулы в статье Фрэнка Перкинса о линейно-тангенциальных законах управления. Возможно, формулы, которые на самом деле используются, математически эквивалентны — я еще не совсем в этом.


Миссии «Аполлон» несли два почти идентичных компьютера наведения. Программное обеспечение для компьютера командного модуля называлось «Колосс», а затем «Команч»; программное обеспечение для лунного модуля называлось «Luminary». Программисты пытались как можно больше повторно использовать код между двумя системами, а также между аналогичными операциями в одной и той же системе. Это означает, что существует большое количество глобальных переменных, которые помогают подпрограммам узнать, для чего они вызываются. CM и LEM также иногда связываются друг с другом по радио, сообщая друг другу свои позиции и скорости в пространстве, чтобы облегчить рандеву.

Астронавты обычно взлетали с поверхности Луны, запустив программу P12 «Powered Ascent Guidance». Исходный код находится в Luminary/P12.agc . Строки 35-53 очищают существующие процессы/задачи, запущенные на компьютере, и инициализируют глобальные переменные, необходимые подпрограммам. Пользовательский интерфейс DSKY настраивается в строках 55-72. В строках 73-74 GUIDINITвызывается подпрограмма (строки 222-236), которая преобразует положение ЛЭМ в лунных координатах в универсальные координаты. В строках 75-76 устанавливается глобальный флаг, указывающий состояние перед зажиганием. В строке 77 P12INITвызывается подпрограмма (строки 179-199), которая инициализирует глобальные переменные двигателя в глобальные переменные механизма подъема . Это продолжается в подпрограммеCOMMINIT(строки 200-215), который преобразует координаты "целевого" КМ в универсальные координаты. Управление возвращается к строкам 79-84, которые вызывают LEMPRECинтегрирование намеченной орбиты методом Энке. В строках 85–109 вычисляются значения поперечной дальности и аполуна предполагаемой траектории полета, которые отображаются для космонавтов (строки 110–113).

Затем компьютер ждет, пока космонавт не нажмет кнопку PROCEED (строки 111-116). Выполняются некоторые векторные вычисления (строки 118-143), устанавливается флаг, указывающий на вертикальное восхождение (144-145), а затем управление переходит к ASCENT(см. ниже). Он возвращается обратно, вычисляя некоторые поправки на тангаж и рыскание (строки 147-166), отключая состояние перед зажиганием (168-169) и затем переходя к BURNBABY(171-177).


BURNBABYв файле Luminary/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc — широко используемая процедура для запуска двигателя спуска или подъема. Вызывающий передает указатель на таблицу с различными параметрами, включая адреса подпрограмм для обратного вызова при возникновении определенных событий. BURNBABYразветвляет несколько процессов, которые выполняют сжигание незаполненного объема RCS по мере необходимости (не требуется для P12), запускают двигатель, считывают показания датчиков, пересчитывают положение и скорость LEM, запрашивают у CSM его положение и скорость, обновляют дисплей DSKY и ждут. для окончания горения. Одна из задач периодически вызывает подпрограмму ATMAG, которая, в свою очередь, вызывает ASCENT.


ASCENTв файле Luminary/ASCENT_GUIDANCE.agc выполняются расчеты в полете во время восхождения на Луну. Мне нужен еще день, чтобы изучить его. Я надеюсь закончить этот ответ завтра.

У вас была возможность проанализировать P12 дальше?
@RussellBorogove: я смог перевести код в математические формулы, но не мог понять формул. Я полагаю, я должен отредактировать их в своем ответе.
@DrSheldon звучит как много усилий. Доступен не только код AGC, но и документация по уравнениям наведения. Руководство по восхождению читайте здесь: ibiblio.org/apollo/NARA-SW/R-567-sec5-rev8-5.3.pdf PDF стр. 129 и далее. В том же PDF есть наведение при спуске.
Ага! «Поскольку команды [наведения] будут зафиксированы на 2-секундный период…» — оно обновляет наведение только каждые 2 секунды, отсюда и дискретность управления ориентацией.
КМ и ЛМ не связывались друг с другом по радио и не обменивались позициями.
@ indy91 indy91 эта ссылка — настоящая сокровищница, спасибо, что разместили ее.
@OrganicMarble Это еще не все: ibiblio.org/apollo/…