Un error muy caro

Por el 23 de abril de 2007

en: Sin categoría

Este es probablemente el error de programación más caro de la historia ocurrió el 4 de Junio de 1996 en el vuelo inagural de la lanzadera Ariane 5, sólo pasaron 40 segundos y fue a una altura de 3.700 metros dónde la lanzadera explotó… esto causó unas pérdidas cifradas en 370 millones de dólares.

Los ingenieros encargados del desarrollo del Ariane 5 Flight 501 fueron los culpables de este calamitoso error al reutilizar código de su predecesor (Ariane 4) pero los motores del nuevo Ariane 5 incorporaban un ‘bug’ en una rutina aritmética en la computadora de vuelo.

Este es un hecho que probablemente muchos de vosotros conozcais… lo que ya no es tan conocido son los detalles de uno de los bugs más famosos de la historia:

En términos generales, el Sistema de Control de Vuelo del Ariane-5 es de un diseño standard. La orientación de la lanzadera y sus movimientos en el espacio son medidos por un Sistema de Referencia Inercial (SRI). Éste tiene su propio computador interno, en el cual los ángulos y las velocidades se calculan sobre la base de la información de una plataforma inercial, con giroscopios láser y acelerómetros. Los datos del SRI se transmiten a través del bus de datos a la Computadora de a Bordo (OBC), la cual ejecuta el programa de vuelo y controla las bocas de los propulsores sólidos y el motor criogénico Vulcain, por medio de servoválvulas y actuadores hidráulicos.

Con el objetivo de mejorar la fiabilidad hay una redundancia considerable a nivel de equipos. Hay dos SRIs operando en paralelo, con idénticos hardware y software. Un SRI está activo y el otro está en stand-by, y si el OBC detecta que el SRI activo ha fallado inmediatamente conmuta al otro, siempre y cuando esta unidad funcione correctamente. Del mismo modo hay dos OBCs, y algunas otras unidades en el Sistema de Control de Vuelo están también duplicadas.

Basándose en la extensa documentación y datos del fallo del Ariane 501 puestos a disposición de la Comisión, se han establecido la siguiente cadena de acontecimientos, sus interrelaciones y sus causas, comenzando con la destrucción de la lanzadera y rastreando atrás en el tiempo hacia la causa primaria.

* La lanzadera se empezó a desintegrar hacia H0+39 segundos a causa de las altas cargas aerodinámicas debidas al ángulo de ataque de más de 20 grados que provocaron la separación de los propulsores de la etapa principal, disparando el mecanismo de autodestrucción de la lanzadera
* Este ángulo de ataque fue causado por deflexiones límite de las bocas de los propulsores sólidos y del motor principal Vulcain.
* Estas deflexiones de las bocas fueron ordenadas por el software del OBC sobre la base de los datos transmitidos por el Sistema de Referencia Inercial activo (SRI 2). Parte de estos datos en ese momento no contenían datos de vuelo correctos, pero mostraban la plantilla de diagnóstico de la computadora del SRI 2, por lo cual fueron interpretados como datos de vuelo.
* La razón por la que el SRI 2 no enviaba datos de orientación correctos fue que la unidad declaró una fallo debido a una excepción de software
* El OBC no pudo conmutar al SRI de reserva, el SRI 1 porque dicha unidad ya había dejado de funcionar durante el ciclo de datos previo (periodo de 72 milisegundos) por la misma razón que el SRI 2.
* La excepción de sofware interna del SRI fue causada durante la ejecución de una conversión de datos desde coma flotante a 64 bits hasta valor entero con signo de 16 bits. El número en coma flotante que fue convertido tenía un valor mayor del que podía ser representado por un entero con signo de 16 bits. Esto dio lugar a un Error de Operando. Las instrucciones de conversión de datos (en código Ada) no estaban protegidas de causar un Error de Operando, aunque otras conversiones de variables comparables en el mismo lugar en el código estaban protegidas.
* El error ocurrió en una parte del software que únicamente realiza alineamientos de la plataforma inercial. Este módulo software computa resultados significativos solamente antes del despegue. Tan pronto como la lanzadera despega, esta función deja de ser útil.
* La función de alineamiento está operativa durante 50 segundos después del comienzo del Modo de Vuelo de los SRIs, lo cual ocurre en H0-3 segundos para Ariane-5. Consecuentemente, cuando el despegue tiene lugar, la función continúa durante aproximadamente 40 segundos de vuelo. Esta secuencia de tiempo está basada en un requerimiento de Ariane-4 y no se requiere para Ariane-5.
* El Error de Operando ocurrió debido a un valor inesperadamente alto de un resultado de una función de alineamiento interno llamado BH, Horizontal Bias, relacionado con la velocidad horizontal detectada por la plataforma. Este valor es calculado como un indicador para la precisión de alineamiento con el tiempo.
* El valor de BH era mucho más alto que el esperado porque la primera parte de la trayectoria de Ariane-5 difiere de la misma en el Ariane-4 y los resultados en valores considerablemente altos de velocidad horizontal.

Los acontecimientos internos del SRI que llevaron al fallo han sido reproducidos por cálculos de simulación. Además, ambos SRIs fueron recuperados durante la investigación de la Comisión y el contexto del fallo fue precisamente determinado a partir de las lecturas de las memorias. En adición, la Comisión ha examinado el código del software el cual demostró ser consistente con el escenario del fallo. Los resultados de estos exámenes están documentados en el Informe Técnico.

Además, se establece más allá de la duda razonable que la cadena de acontecimientos arriba expuesta refleja las causas técnicas del fallo de Ariane 501.

Enlaces Relacionados

6 cosas que probablemente no conozcas sobre PHP
PHP y MySql una estrecha relación
Las 10 mejores librerías
Howto encriptar passwords en la base de datos
Reconocimiento facial y Google
El mejor antivirus
8 lenguajes de programación que deberías aprender
Sitios para ver TV online gratis
Las chicas virtuales más guapas
¿Tus vecinos te roban ancho de banda?…Castígalos
Escuchando mp3 desde Gmail
Fácil sistema de autentificación (login, password) PHP
Llamadas gratis con VoipBuster
5 increibles aplicaciones Javascript

  • Entradas relacionadas:
  • No hay coincidencias

Dejar un comentario