P12 - это программа наведения AGC для нормального подъема с лунной поверхности на орбиту. Согласно документам планирования миссии , после отделения и зажигания ступень подъема удерживает исходное положение в течение двух секунд (чтобы уйти от ступени спуска) перед кабрированием на лунную вертикаль; он остается вертикальным в течение еще 8 секунд или около того, затем начинается постепенный переход от вертикального положения к горизонтальному по ходу горения.
Без атмосферы оптимальный путь подъема должен быть довольно близок к закону линейного тангенциального управления , но видео из кабины LM показывает, что, по крайней мере, ранняя часть подъема кажется дискретной , как указано в этом вопросе .
Однако, согласно документу, «логика наведения на этапе ввода определяется командой ускорения, которая является линейной функцией времени»; из текста не ясно, является ли фаза введения отдельным состоянием от ранней части подъема.
Может ли кто-нибудь более свободно разбираться в коде AGC, чем я, объяснить работу P12 (источник на github) немного подробнее?
Особенно:
Чтобы ответить на подвопросы @Russell:
Мой анализ еще не достаточно далеко, чтобы полностью объяснить расчет отношения по отношению к времени.
Хотя перед прожигом выполняется много вычислений, в цикле прожига также выполняются дополнительные вычисления, поэтому я вполне уверен, что это непрерывный процесс. Есть несколько флагов, которые устанавливаются или сбрасываются в процессе всплытия; видимо так делаются фазы восхождения, но я еще анализирую как это делается.
Я еще не нашел ничего похожего на формулы в статье Фрэнка Перкинса о линейно-тангенциальных законах управления. Возможно, формулы, которые на самом деле используются, математически эквивалентны — я еще не совсем в этом.
Миссии «Аполлон» несли два почти идентичных компьютера наведения. Программное обеспечение для компьютера командного модуля называлось «Колосс», а затем «Команч»; программное обеспечение для лунного модуля называлось «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 выполняются расчеты в полете во время восхождения на Луну. Мне нужен еще день, чтобы изучить его. Я надеюсь закончить этот ответ завтра.
Отметка