Компьютер наведения Apollo
Управляющий компьютер Apollo ( AGC ) — это цифровой компьютер, созданный для программы Apollo, который был установлен на борту каждого командного модуля Apollo (CM) и лунного модуля Apollo (LM). AGC предоставил вычислительные и электронные интерфейсы для наведения, навигации и управления космическим кораблем. [3]
AGC имеет длину слова 16 бит , 15 бит данных и один бит четности . Большая часть программного обеспечения на AGC хранится в специальной постоянной памяти, известной как память сердечника каната , созданная путем переплетения проводов через магнитные сердечники и вокруг них , хотя доступен небольшой объем основной памяти для чтения / записи .
Астронавты общались с AGC с помощью цифрового дисплея и клавиатуры, которые назывались DSKY (от «дисплей и клавиатура», произносится как «DIS-kee»). AGC и его пользовательский интерфейс DSKY были разработаны в начале 1960-х годов для программы Apollo приборной лабораторией Массачусетского технологического института и впервые полетели в 1966 году. [4] AGC был первым компьютером, основанным на кремниевых интегральных схемах . Производительность компьютера была сопоставима с домашними компьютерами первого поколения конца 1970-х годов, такими как Apple II , TRS-80 и Commodore PET . [5]
Резюме
Каждый полет на Луну (за исключением Аполлона 8, который не принимал лунный модуль в своей миссии на лунную орбиту) имел два AGC, один в командном модуле и один в лунном модуле. AGC в командном модуле был центром системы наведения, навигации и управления (CNG).
В каждой лунной миссии также было два других компьютера:
- Бортовой компьютер на кольцевой контрольно-измерительной аппаратуре ракеты-носителя Saturn V , называемый Цифровым компьютером ракеты-носителя (LVDC) — стандартный компьютер, созданный IBM Federal Systems Division;
- Вторичный компьютер в лунном модуле, обозначенный как Abort Guidance System (AGS), построен TRW и предназначен для использования в случае отказа основной системы наведения, навигации и управления (PGNCS). AGS можно использовать для взлета с Луны и обеспечения встречи с командным модулем, но не для посадки. При активации он автоматически запускает отделение модуля подъема (AM, Ascent Module ) LEM от модуля спуска (PDM, Powered Descent Module).
Конструкция
Память компьютера состояла из 2048 слов перезаписываемого ОЗУ и 36 К слов ПЗУ с линейной выборкой на многократно прошитых сердечниках. Цикл чтения-записи ОЗУ и ПЗУ занимал 11,72 мкс. Длина слова составляла 16 бит: 15 бит данных и 1 бит чётности. Формат 16-битного слова процессора включал в себя 14 бит данных, бит переполнения и бит знака.
Интерфейс дисплея и клавиатуры
Пользовательский интерфейс AGC представлял собой индицируемые на панели 7-сегментные цифры и транспаранты и клавиатуру, похожую на клавиатуру калькулятора. Команды вводились в цифровом режиме как двузначные числа: действие и объект. Действие описывало тип выполняемой операции, а объект определял данные для работы.
Цифры зелёного цвета отображались на высоковольтных электролюминесцентных семисегментных индикаторах. Сегменты индикаторов управлялись электромеханическими реле, что увеличивало время обновления дисплея (обновлённая версия компьютера использовала более быстрые элементы — тиристоры). На дисплее могли отображаться одновременно три числа по пять цифр в каждом, формат отображения мог быть как восьмеричным, так и десятичным, и использовался в основном для отображения векторов положения КА или необходимого изменения скорости (ΔV). Хотя данные хранились в метрической системе, они отображались в системе мер, принятой в США. Подобный интерфейс был первым в своём роде, послужив прототипом для всех подобных интерфейсов панелей управления.
Командный модуль располагал двумя интерфейсами, подключёнными к их AGC. Один располагался на главной панели управления, а второй — нижнем приборном отсеке возле секстанта и использовался для корректировки навигационной платформы. На борту лунного модуля имелся один AGC. Над интерфейсом на панели командира, а также в лунном модуле, был расположен индикатор положения модуля (Flight Director Attitude Indicator, FDAI), также управляемый AGC.
В 2009 г. один из интерфейсов был продан на открытом аукционе, проводимом Heritage Auctions, за 50 788 долларов.
Синхронизация по времени
Временные эталоны работы AGC задавались кварцевым резонатором с частотой в 2,048 МГц. Частота делилась на два, чтобы обеспечить AGC четырёхфазным источником рабочей частоты. Частота 1,024 МГц также делилась пополам, чтобы получить сигнал с частотой 512 кГц, называвшейся основной частотой, использовавшийся для синхронизации внутренних систем КА.
Основная частота впоследствии делилась блоком масштабирования сначала на пять (посредством счётного устройства с кольцевой схемой) для получения сигнала с частотой 102,4 кГц. Затем она делилась на два посредством следующих друг за другом логических вентилей: от F1 (51,2 кГц) до F17 (0,78125 Гц). Частота с вентиля F10 (100 Гц) передавалась по каналу обратной связи в AGC для работы часов бортового времени и прочих постоянных счётчиков, работающих на приращение. Частота с вентиля F17 использовалась для периодического запуска AGC, когда тот находился в режиме ожидания.
Центральные регистры
Для проведения основных вычислений AGC располагал четырьмя 16-битными регистрами, называвшимися центральными регистрами:
A : | Аккумулятор, для основных вычислений |
Z : | Счётчик команд, хранивший адрес следующей команды для выполнения |
Q : | Остаток при выполнении команды DV (деление), и адрес точки возврата после выполнения команды TC (безусловный переход) |
LP : | Младшая часть произведения при выполнении команды MP (умножение) |
В адресном пространстве ОЗУ четыре адреса (с 20 по 23) назывались «редактирующими» (англ. editing locations ). Данные, записанные по трём адресам, считывались со сдвигом на один бит, а по четвёртому со сдвигом вправо на 7 бит — эта операция использовалась для выделения 7-битных интерпретируемых команд, которые были записаны по две в одно слово. Подобным образом работали как первая, так и вторая модель AGC.
объем памяти
У каждого компьютера было два типа памяти: стираемая и постоянная. Стираемую память можно было писать и читать. Память служила только для чтения на английском языке. Постоянная память (ROM) . Он содержал прикладные программы, постоянные значения , селенографические и астрономические координаты и использовал 36 864 термина или слова , каждое длиной 16 бит [c] . В целом, память была включена в 74 K B . Стираемая память была феррита память , запоминающее устройство анги. Память с произвольным доступом (ОЗУ) , и деструктивное чтение. П были полезны в сборе значений переменных при вычислении, или регистров логических операций и имели только 2 048 16 — битные слова, т.е. 4 K B . Данные, хранящиеся в стираемой памяти, могут быть изменены или обновлены. Что определенно отличает стираемую память от оперативной памяти, которую мы используем сегодня, так это тот факт, что данные в оперативной памяти теряются при выключении компьютера и теряются, потому что информация, которую она содержит, является состоянием логики, которая существует до тех пор, пока напряжение питания будет применяться .
Постоянная память была сделана из тороидальных ферритовых сердечников . Элементы прикладных программ были закодированы в ферритовых сердечниках, сотканных вручную по схеме плетения. Постоянная память была неразрушимой, в зависимости от наличия или отсутствия напряжения питания. Чтение данных из этой памяти не повлияло на ее содержимое [5] .
Стираемая память была построена из аналогичных материалов, но по-разному. Для стираемой памяти плотность записи, в зависимости от количества используемых для этого ферритовых сердечников, составляла одно слово для 16 ферритовых сердечников; для постоянной памяти этот показатель составлял 8 ферритовых сердечников на одно машинное слово. Информация, содержащаяся в стираемой памяти, не пропадала после отключения питания.
Обе памяти были магнитными сердечниками, используемыми для хранения информации, однако магнитные сердечники использовались по-разному в двух типах памяти. Следующее описание требует от читателя знания основных свойств ферритовых магнитных сердечников, описываемых кривой петли гистерезиса . Ядро — это устройство хранения статической памяти, имеющее два стабильных состояния. Он может быть намагничен в том или ином направлении током соответствующей силы, протекающим через проводник, проходящий через сердечник. Направление тока определяло направление намагничивания сердечника. Сердечники оставались намагниченными до тех пор, пока ток в противоположном направлении не изменил направление намагничивания. Токи, протекающие в разных проводниках через один и тот же сердечник, производили эффекты, соответствующие току, являющемуся их алгебраической суммой. Считывающие провода через коммутируемый сердечник [d] индуцировали импульс [6] .
Каждое машинописное слово размещалось по своему адресу. Адреса постоянной памяти были назначены машинным словам как ключ к порядку их выполнения; блоки адресов были зарезервированы для таких данных, как константы и таблицы. Информация в постоянной памяти была навсегда помещена в нее путем вплетения ее в определенный узор в магнитных сердечниках. В стираемой памяти информация сохранялась через клавиатуру устройства DSKY, через секцию ввода или из прикладных программ [7] [8] .
В памяти машинное слово состояло из одного бита четности , 14 значащих битов, 1 символьного бита. Двоичная 1 в знаковом бите указывает отрицательное число, а двоичный 0 в знаковом бите означает положительное число. Машинные слова, несущие инструкции, состояли из 12-битного адресного кода и 3-битного командного кода. Обычно адресный код представляет собой расположение слова в памяти или в центральном процессоре. Код команды определяет поток данных внутри компьютера, а код адреса выбирает данные, которые использовались для расчета.
Код команды представляет собой операцию, которая была выполнена с данными, расположение которых было представлено адресным кодом. Командный код каждой инструкции вводился в генератор последовательности, который управлял потоком данных и создавал разные последовательности управляющих импульсов для каждой инструкции. Каждому заявлению предшествовало другое заявление. Чтобы определить порядок, в котором инструкции должны были выполняться в обычном режиме, они хранились в последовательных ячейках памяти. Адрес инструкции, которая должна была быть выполнена следующей, был получен из адреса инструкции, которая в настоящее время выполняется, путем добавления значения один к адресу. Выполнение инструкции было прекращено, когда следующий код выполнения инструкции был отправлен в генератор последовательности, а соответствующий адрес был отправлен на центральный процессор.
Компьютеры работали в средах, где многие параметры и условия постоянно менялись с течением времени. Компьютеры работали, одновременно работая только с одним элементом. Поэтому для обработки параметров время, отведенное конкретному компьютерному оборудованию, было разделено . Распределение времени осуществлялось путем назначения приоритетов для определенных функций процедур каждого компьютера [9] .
Для взаимодействия с компьютером космонавты использовали устройство, представляющее собой комбинацию дисплея и клавиатуры , и из букв этих двух терминов было создано общее название DSKY. Клавиатура DSKY была не QWERTY-клавиатуры , а была цифровой клавиатурой с несколькими функциональными клавишами . Чтобы ввести команду, пользователь должен был нажать клавишу «Verb», перед которой должен был стоять номер, соответствующий конкретной задаче, которую компьютер или периферийное устройство компьютера должны были выполнить . Для ввода данных пользователь нажимал клавишу «Существительное» с соответствующим номером.
Команда TIM разработала многозадачную операционную систему реального времени . Система использовала прерывания , выполняла запланированные задачи, такие как своевременное включение двигателя спуска лунного модуля, а компьютер также определял приоритеты операций, когда задачи накапливались за короткий период времени. У каждой запланированной задачи был определенный объем выделенной стираемой памяти, которую можно было использовать при необходимости. Система была разработана для сохранения самой важной информации, необходимой для перезагрузки компьютера, что позволило обрабатывать важную информацию даже после перезагрузки компьютера, после того, как компьютер зависает.
Имея небольшой доступный объем стираемой памяти, компьютерным специалистам приходилось планировать использовать один и тот же адрес памяти для разных целей в разное время. Например, данные, содержащие высоту над поверхностью Луны во время фазы посадки, могли быть перезаписаны на координатах астрономических объектов, установленных оптическим телескопом выравнивания (AOT), необходимым для ориентации инерциальной платформы IMU , поскольку эти данные (координаты) уже использовались, и следующее наблюдение звезды и ориентация ИДУ должны были произойти до начала всплытия с поверхности Луны.
Компьютер и операционная система были разработаны для выполнения критических задач, таких как запуск цифрового автопилота, даже когда другие части программного обеспечения вызывали проблемы. 20 июля 1969 года Нил Армстронг и Базз Олдрин спустили лунный модуль на поверхность серебряного шара. Они находились на высоте около 1800 метров (6000 футов) над поверхностью, когда на дисплее компьютера отображалась ошибка №1202. Что означала эта ошибка для астронавтов, управление наземного полета сообщило, что указывало на перегрузку памяти. Ответственность за принятие решения о том, была ли ошибка значительной или нет [e], легла на 26-летнего компьютерного гения Стива Бейлза, эксперта по информационным системам для управления полетом лунного модуля. Ошибка возникла из-за неожиданного поступления информации с посадочного радара, и эту информацию, как вторичную, можно было проигнорировать, но она не была прямым результатом сообщения об ошибке: Ошибка № 1202. Ошибка повторялась несколько раз. в следующие минуты, но это не остановило приземление и не изменило решение Стива Бейлза. За принятие решения о продолжении Бейлс и трое астронавтов миссии « Аполлон-11 » были награждены Медалью свободы США [8] .
Модуль LM, выполняющий полет от CSM к поверхности Луны и обратно, управляемый и управляемый компьютерный лунный модуль, называемый LM Guidance Computer (LGC) . LGC была центральным устройством обработки данных, подсистемой целеуказания, навигации и управления, называемой Подсистемой наведения, навигации и управления (GN & CS) . LGC обрабатывала данные, выдавала команды и сигналы для многих подсистем. В нем хранятся важные данные для воссоздания траектории спуска, посадки, взлета и всплытия Луны с поверхности Луны.
Клавиатура и дисплей компьютера LM располагались на панели 4 блока DSKY. Компьютер рулевого управления LM:
- полученные данные из оптической части и на их основе рассчитать и установить стабильный сегмент из лунного модуля инерциального блока измерения (ИДУ).
- управлял двигателями набора высоты и спуска
- двигатели казались командами управления угловой реакцией система управления (RCS)
- отданы команды на управление посадочной антенной РЛС Landing Radar (LR)
- Казалось, командование управления исполнительными механизмамиРЛС антенны слежения называется CSM .Рандеву Радар (RR)
- отправил сигналы на контрольные индикаторы в кабине LM [10]
Компьютерная система командного модуля состояла из:
- компьютер называется командным модулем. Командный модуль компьютера (CMC)
- два устройства, совмещающие дисплей с клавиатурой (DSKY)
CMC с одним DSKY находился на главной панели, а другой DSKY находился в нижнем отсеке командного модуля.
CMC выполнил следующие операции:
- сориентировал стабильный член командного модуля инерциальной платформы (IMU).
- расположил настройки секстанта
- он решал вопросы, связанные с управлением CSM или CM
- собраны данные профиля полета, необходимые для выполнения миссии
- командовал маршевым двигателем CSM о его включении и выключении и направлении тяги.
- дал команду двигателям RCS включать и выключать их
- собирали данные с акселерометров инерциальной системы и предоставляли изменения скорости в CMC для оценки общей скорости [11]
Компьютер Apollo на борту был использован в первой фазе экспериментального муха по проводам программы внедрения на F-8 Crusader , компьютер был на основе новых технологий , используемых в этой программе. Компьютер AGC проработал более 2000 часов без повреждений. Проблемы, возникшие в первых полетах, были устранены заменой стираемой памяти [12] [13] .
1202 программный будильник
PGNCS генерировал непредвиденные предупреждения во время Лунный спуск Аполлона-11, при этом AGC показывает 1202 будильник («Исполнительный переполнение — НЕТ ОСНОВНЫХ НАБОРОВ»), [27] а затем 1201 будильник («Исполнительный переполнение — НЕТ ОБЛАСТЕЙ VAC»). [28] [ нужна цитата ] ) Ответом AGC на любой сигнал тревоги был мягкий перезапуск. Причиной был быстрый и постоянный поток ложных велосипедные кражи от радара сближения (отслеживание орбитального командного модуля), намеренно оставленного в режиме ожидания во время спуска на случай, если это потребуется для прерывания. [29] [30]
Во время этой части подхода процессор обычно загружен почти на 85%. Дополнительные 6400 перехватов циклов в секунду добавили нагрузки, эквивалентной 13%, оставляя достаточно времени для выполнения всех запланированных задач до завершения. Через пять минут после начала спуска Базз Олдрин дал компьютеру команду 1668, который дал ему указание периодически вычислять и отображать ДЕЛЬТА (разницу между высотой, измеренной радаром, и вычисленной высотой). [nb 1] В 1668 добавили еще 10% к нагрузке на процессор, что привело к переполнению руководства и 1202 тревога. Получив «GO» из Хьюстона, Олдрин вошел. 1668 снова и еще 1202 произошла тревога. Сообщая о втором сигнале тревоги, Олдрин добавил комментарий: «Кажется, он появляется, когда у нас есть 1668 вверх ». Программное обеспечение AGC было разработано с учетом планирования приоритетов и автоматически восстанавливалось, удаляя задачи с более низким приоритетом, включая 1668 отображение задачи для выполнения важных задач управления и контроля. Контроллер наведения Стив Бэйлз и его команда поддержки, в которую входили Джек Гарман издал несколько вызовов «GO», и посадка прошла успешно. За свою роль Бейлз получил премию США. Президентская медаль свободы от имени всей команды центра управления и трех астронавтов Аполлона. [31]
Проблема не была ни в программной ошибке AGC, ни в ошибке пилота. Это была ошибка конструкции периферийного оборудования, которая уже была известна и задокументирована инженерами Apollo 5. [32] Однако, поскольку проблема возникла только один раз во время тестирования, они пришли к выводу, что безопаснее летать с существующим оборудованием, которое они уже тестировали, чем летать с новой, но в значительной степени непроверенной радиолокационной системой. В реальном оборудовании положение радара сближения кодировалось с помощью синхронизаторы возбуждается от другого источника переменного тока с частотой 800 Гц, чем тот, который используется компьютером в качестве источника отсчета времени. Два источника 800 Гц были синхронизированы по частоте, но не синхронизированы по фазе, и небольшие случайные изменения фазы создавали впечатление, что антенна быстро «колеблется» в положении, даже если она была полностью неподвижной. Эти фантомные движения вызвали серию быстрых перехватов.
Дж. Холкомб ЛэнингПрограммное обеспечение и компьютерный дизайн спасли посадочную миссию Аполлона-11. Если бы не конструкция Лэнинга, посадка была бы прервана из-за отсутствия стабильного компьютера наведения. [33] [34]
Приложения за пределами Apollo
AGC легла в основу экспериментальной системы управления полетом по проводам (FBW) , установленной на F-8 Crusader, чтобы продемонстрировать практичность управляемой компьютером FBW. AGC, использовавшийся на первом этапе программы, был заменен другой машиной на втором этапе, а исследования, проведенные в рамках программы, привели к разработке систем управления полетом для космического корабля «Шаттл» . AGC также привел, хотя и косвенно, к разработке проводных систем для поколения истребителей, которые разрабатывались в то время.