Viajeros computados

Lanzadas en 1977, las sondas Voyager 1 y 2 eran piezas de tecnología de vanguardia para su época. Las computadoras centrales para sus operaciones consistían en tres sistemas, cada uno con doble redundancia, trabajando al un{isono para permitir que las sondas viajaran a Júpiter, Saturno y más allá: el Sistema Control Computado (CCS), el Subsistema de Datos de Vuelo (FDS), y el Sistema de Control de Actitud y Articulación (AACS).

Lo sorprendente es que incluso después de cuatro décadas de viajar a través del duro y a veces impredecible entorno del espacio, ambas sondas continúan funcionando y aportando nuevos conocimientos y datos. Cada vez lleva más tiempo poder comunicar y cargar nuevas rutinas en las sondas, pero el hecho de que todavía sea posible con tecnología de una época pasada es un testimonio de la calidad de la ingeniería aplicada a estas naves espaciales.

La historia de cómo tomaron forma las computadoras Voyager es fascinante. Los detalles, que se reunieron durante los recortes presupuestarios de la NASA después de que se desvaneciera el entusiasmo por la era Apollo, y superaron los desafíos que aún no habían encontrado los ingenieros al explorar algunos de los lugares más intrigantes de nuestro sistema solar, seguramente permitirán apreciar mejor las computadoras Voyager.

Desarrollo y Gestión

El proceso de desarrollo y gestión de hardware y software informático puede no ser la parte más apasionante del proceso, pero es increíblemente crucial para el resultado final.

Una de las primeras decisiones de diseño que se tomaron sobre las computadoras Voyager fue la de utilizar el Computer Command System (CCS) de la veterana sonda Viking. Esto no sólo satisfizo una propuesta para estandarizar el sistema informático sino que también fue una decisión impulsada por los recortes presupuestarios de la NASA tras el éxito de las misiones Apollo en los años 1970. Por entonces, la exploración espacial no tripulada se había vuelto mucho menos prioritaria, por lo que era importante mantener bajos los costos de desarrollo para permitir que el proyecto en general continuara.

Los nuevos elementos de las computadoras Voyager en general serían el Sistema de datos de vuelo (FDS) y el Sistema de control de articulación de actitud (AACS). El CCS sería responsable de mando y gestión de la memoria del FDS y AACS, lo que impuso agregarle una rutina MEMLOAD ("carga en memoria") y una rutina AACSIN para monitorear el estado del AACS.

Cada sistema informático de la sonda espacial Voyager tiene doble redundancia: hay dos CCS, dos FDS y dos AACS. Por lo general, el CCS permanecía encendido en todo momento, pero el FDS y el AACS operaban de a un bus por vez. La idea fue que la inactividad regular de los sistemas informáticos en espera ayudaría a mantener la vida útil de los sistemas.

El CCS de la Voyager y de la Viking tenían en última instancia la misma cantidad de memoria (poco menos de 70 kB), sólo que las rutinas y programas de las Voyager eran mucho más complejos. La capacidad de reprogramación a bordo les permitió cargar periódicamente nuevas rutinas y programas en su memoria no volátil y eliminó la necesidad de grandes cantidades de memoria a bordo.

El software original para las sondas Voyager fue escrito en Fortran 5, luego portado a Fortran 77 y hoy en día ciertas rutinas están portadas en C. El software liviano y de bajo nivel cobró relevancia a medida que las sondas se alejaron cada vez más de la Tierra, con lo que el enlace de comunicaciones se fue volviendo cada vez más lento.

La parte de gestión del sistema informático Voyager también experimentó algunos cambios en la estructura típica; H. Kent Frewing, ingeniero de software de naves espaciales, comandaría a los ingenieros responsables de cada sistema informático, y hasta cuatro programadoras trabajarían juntas en el proyecto a la vez. Se formó un Equipo de Diseño de Software de abordo para guiar el desarrollo de software y el Laboratorio de demostración de capacidades completaría la validación del software. Una vez desarrollado el software inicial, el hardware que se configuró con la misma configuración que se usaría a bordo de la nave espacial se usaría para probar y continuar con el desarrollo.

Sistema computado de control

Como se mencionó anteriormente, el Voyager CCS sería casi idéntico al Viking CCS, con algunas modificaciones para permitir la interfaz con el FDS y el AACS. El Viking CCS fue el primer sistema informático redundante implementado por el JPL (Laboratorio de Propulsión a Chorro de la NASA), con un diseño relativamente simple que permitía una potencia informática mucho mayor.

El Viking CCS se formaba a pares: de fuentes de alimentación, de procesadores, de buffers, y de entradas y salidas. Cada elemento del CCS tenía buses cruzados, lo que permitía una redundancia de "tolerancia a fallas únicas" de modo que si una parte de un CCS fallaba, podía hacer uso del resto operativo en el otro.

El CCS también podría funcionar en tres modos: canal simple (cada CCS completa tareas de forma independiente), dúplex paralelo (ambos CCS trabajan juntos en una tarea) o tándem (cada CCS trabaja en la misma tarea de forma independiente). Durante encuentros cercanos con objetivos (Júpiter, Saturno, etc.), el CCS estaría en modo tándem.

--> Fuente ----------------+            EPROM  -> usuarios
       |                   |          /
+-> Procesador A ->  Unidad de salida 1 ->  RAM -> usuarios
|               \ /        |
|                X         +-------------------------------->  telemetria } FDS
|	       /  \	   +-------------------------------->  telemetria } FDS
|             /    \       |
+-> Procesador B ->  Unidad de salida 2 ->  RAM -> usuarios
                           |           \
-->  Fuente ---------------+              EPROM -> usuarios

Diagrama de bloques para Viking y Voyager CCS.

El CCS es responsable de administrar las operaciones generales, incluida la secuenciación de programas, monitorear el estado de las sondas, comunicarse con las otras computadoras y cargar programas en memoria.

Ambos módulos CCS en el sistema de doble redundancia estarían encendidos continuamente para permitir mayor capacidad de procesamiento, de importancia mayor una vez que se produjeran los encuentros con Júpiter, Saturno, Urano y Neptuno para recopilar datos.

A nivel arquitectónico, los dos núcleos de procesamiento del CCS operaban en serie, y contenían un intérprete de instrucciones, control de ruta de datos y registros (acumulador de 18 bits, registro de enlace de 12 bits, contador de programa de 12 bits, registro de código de condición de 4 bits). Las 64 instrucciones eran WORDS de 18 bits, los 12 bits más significativos contenían direcciones (4k de direccionamiento directo) y los 6 bits menos significativos contenían códigos de operación.

Sistema de datos de vuelo

El FDS es donde se recopilan, formatean y almacenan los datos científicos y de ingeniería de las sondas Voyager, y donde se recopila toda la telemetría. El desarrollo del FDS comenzó con un trabajo de posgrado que describía sus requisitos generales, así como el discernimiento de los beneficios de implementarlos en hardware o software (qué características operan mejor en cada caso).

Una de las consideraciones más importantes para el FDS lo constituyó la la velocidades de datos de entrada/salida. A medida que los sensores y el hardware de recopilación de datos se volvían más sofisticados, esto incrementó la resolución de la información que se necesitaba transmitir. En las sondas Voyager, los datos de regreso a la Tierra se transmitirían a alta velocidad, de ser posible. Sin embargo, si no se podía alcanzar estas velocidades de transmisión (por ejemplo, si no se podía comunicar con la estación terrena de seguimiento), los datos se almacenaban en cintas magnéticas.

Estas cintas magnéticas todavía se utilizan para la recopilación y transmisión de datos a bordo de las sondas mientras navegan actualmente por el espacio interestelar.

El FDS del Voyager fue la primer computadora de vuelos espaciales en utilizar memoria volátil CMOS. Esto fue un gran paso para el cómputo, pues que era una tecnología bastante nueva y - en el caso que los circuitos integrados perdiesen momentáneamente alimentación eléctrica - también se perdería toda la memoria. No obstante, se implementó una línea de alimentación eléctrica directa desde los generadores de radioisótopos, que le proporciona corriente continua, garantizando que los circuitos integrados de semiconductores no pierdan energía jamás, a menos que algo les sucediera a los generadores. De todos modos se decidió que si de suceder algo que incapacitara los reactores nucleares, probablemente el FDS ya sería inútil.

Debido a las tasas de entrada/salida requeridas por el FDS, el CCS y el FDS se construyeron como diseños modulares separados (si bien desde el punto de vista computacional, podrían haberse integrado fácilmente). De hecho las sondas Voyager fueron las últimas construidas por el JPL en contar con tal separación. El FDS - al igual que el CCS - es reprogramable en vuelo, lo que permite optimización o cambios.

Sistema de Control de Actitud y Articulación (AACS)

El AACS de las sondas Voyager determina la orientación de la antena, manteniéndola apuntada hacia la Tierra. La intención original de los diseñadores había sido emplear una tecnología nueva para el AACS a que denominaban "HYSPACE" (Electrónica Híbrida de Control de Actitud Programable). HYSPACE combinaba hardware analógico y digital, con direccionamiento de registros por índice y arquitectura serial de 4 bytes, lo cual permitiría usar el mismo código fuente del AACS en el accionamiento de los tres ejes.

Sin embargo, los programadores estuvieron condicionados a la reutilización del viejo CCS de las sondas Viking para efectuar el control de actitud, ya que había demostrado su valía, y reduciría los costos del desarrollo de un nuevo sistema no probado.

Al final, terminó empleándose una versión modificada del CCS de la Viking, con algunos elementos integrados del HYSPACE destinados a lograr los beneficios del direccionamiento de registros por índice.

El AACS cuenta con cuatro rutinas ejecutables: motores paso a paso de la plataforma de escaneo, actuadores del propulsor, software del control de actitud y lógica de propulsor. La AACS también envía un ping en forma de "latido" a la CCS a intervalos regulares.

Conclusión

El clima único en el momento del desarrollo de las sondas Voyager influyó en gran medida en el resultado general de los sistemas informáticos emplados a posteriori. Reutilizar diseños y modificarlos para reducir costos, optimizar el uso de memoria limitada y maximizar la velocidad sin aumentar la necesidad de energía siguen siendo problemas que enfrentan los proyectos espaciales modernos en la actualidad.

A su vez, es increíblemente impresionante que el equipo detrás de las computadoras Voyager no solo haya logrado diseños de bajo costo, eficientes y computacionalmente poderosos, sino que toda su visión de futuro e ingeniería inteligente permitieron a ambas sondas continuar operando, con expectativas que lo hará durante al menos otra década.