菜单

AGC 架构概述

相关源文件

本文档提供了阿波罗制导计算机(AGC)架构的高级概述,重点介绍核心系统设计、主要组件及其交互。有关特定模块的详细信息,请参阅其各自的维基页面,例如指令舱 (Comanche055)登月舱 (Luminary099)

AGC 简介

阿波罗制导计算机是美国国家航空航天局(NASA)阿波罗计划中用于引导和控制阿波罗航天器的机载数字计算机系统,其中包括具有历史意义的阿波罗11号登月任务。AGC由麻省理工学院仪器实验室(现德雷珀实验室)开发,在当时具有革命性意义,是集成电路首次应用于任务关键型系统之一。

AGC 为指令舱(CM)和登月舱(LM)提供了关键的制导、导航和控制能力,并为每种飞行器配备了专用版本

  • Comanche055:指令舱的 AGC 程序
  • Luminary099:登月舱的 AGC 程序

这两个版本共享一个共同的架构基础,但包含针对各自任务要求定制的飞行器特定功能。

来源:README.md85-114

硬件架构概述

按照现代标准,AGC 在极其有限的硬件条件下运行。了解这些限制对于理解其所采用的优雅软件设计原则至关重要。

硬件规格

组件规格
CPU16位字长,2.048 MHz 时钟频率
内存36,864字(2,048字可擦写存储器,34,816字固定存储器)
大小24" × 12.5" × 6.5"(61厘米 × 32厘米 × 17厘米)
字重约70磅(32公斤)
功耗约70瓦
接口DSKY(显示和键盘),各种航天器系统

内存组织

AGC 采用了独特的内存架构,分为:

  1. 固定存储器:用于存储程序代码的只读磁芯绳存储器
  2. 可擦写存储器:用于存储变量和状态信息的可读写磁芯存储器

这种内存布局对软件设计造成了重大限制,需要巧妙的优化技术和内存管理。

I/O 系统

AGC 通过离散的输入/输出通道与其他航天器系统交互。这些通道通过内存映射I/O访问,特定的内存地址被分配给物理I/O端口。宇航员主要通过DSKY(显示和键盘)界面与AGC进行交互。

软件架构

AGC 软件架构遵循模块化设计,其子系统围绕核心功能清晰定义。本节提供了软件结构的高级概述。

主要软件子系统

来源:Luminary099/MAIN.agc1-91 README.md85-114

系统关系与数据流

来源:Luminary099/MAIN.agc1-91

核心运行时系统

AGC 软件的基础是四个主要的运行时组件,它们负责管理程序执行、计时和命令解释。

执行系统

执行系统(位于EXECUTIVE.agc中)是 AGC 的多任务内核,提供作业调度和优先级管理。与现代操作系统不同,它采用协作式多任务模型,其中作业自愿放弃控制权。执行系统管理:

  • 作业控制块和优先级队列
  • CPU 资源分配
  • 核心集(作业上下文存储区)

等待列表系统

等待列表系统(位于WAITLIST.agc中)是一个基于时间的任务调度器,与执行系统协同工作。执行系统处理基于优先级的作业调度,而等待列表系统则管理时间相关的任务:

  • 跟踪需要在特定时间间隔后执行的任务
  • 维护待处理任务及其执行时间的列表
  • 通过 T3RUPT(定时器中断)触发任务执行

来源:Luminary099/WAITLIST.agc Luminary099/EXECUTIVE.agc

解释器

解释器(位于INTERPRETER.agc中)处理命令并提供用于执行程序的虚拟机。它处理:

  • 来自用户输入的动词-名词处理
  • 程序指令的解释
  • 数学运算

重启保护

AGC 包含复杂的重启保护(位于FRESH_START_AND_RESTART.agcRESTART_TABLES.agc中),以在不丢失任务关键功能的情况下从硬件或软件故障中恢复。该系统:

  • 维护重启表以跟踪关键操作
  • 提供在系统重置后恢复操作的机制
  • 保留基本状态信息

来源:Luminary099/FRESH_START_AND_RESTART.agc Luminary099/RESTART_TABLES.agc

制导与导航

制导和导航系统是 AGC 功能的核心,提供精确的轨道计算和轨迹规划。

关键组件

制导系统使用复杂的数学算法来:

  1. 使用圆锥曲线方程计算轨道参数
  2. 对航天器轨迹进行数值积分
  3. 整合传感器测量数据以提高导航精度
  4. 计划和执行机动,包括:
    • 月球轨道切入
    • 月球下降和着陆
    • 交会对接操作
    • 跨地球轨道注入

来源:Luminary099/CONIC_SUBROUTINES.agc Luminary099/ORBITAL_INTEGRATION.agc Luminary099/MEASUREMENT_INCORPORATION.agc

数字自动驾驶系统

数字自动驾驶仪(DAP)控制航天器的姿态和推力,保持稳定并执行机动。

DAP 主要有两个组成部分:

  1. RCS 自动驾驶仪:使用反作用力控制系统(RCS)推进器控制航天器姿态
  2. TVC 自动驾驶仪:通过万向节主发动机在动力飞行期间控制推力矢量

该系统处理不同的控制模式:

  • 自动机动
  • 速率指令/姿态保持
  • 最小脉冲控制
  • 动力下降和上升

来源:Luminary099/DAP_INTERFACE_SUBROUTINES.agc Luminary099/DAPIDLER_PROGRAM.agc Luminary099/P-AXIS_RCS_AUTOPILOT.agc Luminary099/Q_R-AXIS_RCS_AUTOPILOT.agc

用户界面系统

宇航员主要通过DSKY(显示和键盘)界面与AGC交互,该界面由PINBALL系统管理。

动词-名词系统

该界面采用动词-名词范式:

  • 动词:要执行的动作(例如,显示、计算、机动)
  • 名词:要操作的数据对象(例如,时间、姿态、速度)

宇航员会输入一个两位数的动词代码,然后是一个两位数的名词代码,向 AGC 发出命令。

扩展动词

扩展动词提供了对标准动词集之外的专用功能和能力的访问。它们处理复杂的任务,例如:

  • IMU 对准
  • 交会对接目标设定
  • 系统测试
  • 显示管理

来源:Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc Luminary099/EXTENDED_VERBS.agc Luminary099/PINBALL_NOUN_TABLES.agc

任务程序

任务操作被组织成编号程序(P代码),用于执行特定的任务阶段或功能。

关键任务程序

程序功能描述
P20-P25交会对接交会对接操作的跟踪与导航
P30-P37轨道机动轨道机动的规划和执行
P40-P47推力控制管理动力飞行操作
P51-P53IMU 对准惯性测量单元的对准
P63-P67月球着陆控制下降至月球表面
P70-P71中止程序紧急中止程序
P12动力上升月球起飞和上升制导

每个程序协调多个子系统以执行其指定功能,通常包括制导、导航、控制和用户界面元素。

来源:Luminary099/P20-P25.agc Luminary099/P30_P37.agc Luminary099/P40-P47.agc Luminary099/THE_LUNAR_LANDING.agc

指令舱与登月舱软件对比

尽管指令舱(Comanche055)和登月舱(Luminary099)的 AGC 共享相同的核心架构,但它们在支持各自独特任务角色方面存在显著差异。

主要区别

功能指令舱 (Comanche055)登月舱 (Luminary099)
导航地心和月心导航月球表面和轨道导航
任务程序指令舱专用程序(再入制导)登月舱专用程序(着陆、上升)
自动驾驶仪SPS 发动机大推力点火控制下降发动机和上升发动机控制
用户界面指令舱专用显示和程序登月舱专用显示和程序

登月舱软件包含指令舱软件中没有的专用组件:

  • 月球着陆制导方程
  • 月球表面对准程序
  • 上升制导
  • 着陆雷达接口

同样,指令舱软件包含独特的组件:

  • 地球大气层再入制导
  • 服务推进系统控制
  • 指令舱专用姿态控制律

尽管存在这些差异,两个系统都共享核心运行时架构、解释器以及许多导航和制导算法。

来源:README.md101-102 Luminary099/README.md11-19

代码组织

AGC 源代码被组织成功能模块,每个模块负责系统的特定方面。代码结构旨在有效利用有限的可用内存。

内存分配

内存分配通过存储区和段进行精心管理

  • 固定存储器被划分为存储区
  • 特殊的“绳芯存储器”制造限制影响了代码组织
  • 内存地址使用带有符号名称的SETLOC指令进行分配

源代码结构

该存储库根据功能角色组织 AGC 源代码文件:

MAIN.agc 文件作为根文件,包含了所有其他源文件,并以逻辑顺序组织它们进行汇编。这种结构反映了原始开发中使用的单体构建过程,其中源模块被组合成一个单一的汇编文件,而不是作为单独的目标文件进行链接。

来源:Luminary099/MAIN.agc1-91 Luminary099/README.md21-26

结论

阿波罗制导计算机是计算和航天史上的一项里程碑式成就。其架构通过优雅的软件设计和精心的系统集成,平衡了严苛的硬件限制与复杂的任务需求。其模块化结构、优先任务调度和重启保护能力在当时遥遥领先,并建立了在现代嵌入式系统中仍然相关的设计模式。

AGC 的设计展示了有效的软件架构如何克服硬件限制以实现非凡目标——在本例中,即以远低于现代智能手机的计算能力,安全地引导人类往返月球。