Авария ракеты-носителя «Ариан-5» Европейского космического агентства (ЕКА) произошла во время первого запуска, 4 июня 1996 года на космодроме Куру. Ракета разрушилась на 40-й секунде полёта из-за неверной работы бортового программного обеспечения.
Этот неудачный запуск стал одной из самых дорогостоящих компьютерных ошибок в истории — оценки только материальных потерь варьируются от 360 до 500 млн долларов. Сбой произошёл в программном обеспечении, унаследованном от предыдущей ракеты «Ариан-4», когда модуль не был протестирован в новом окружении.
В результате аварии были потеряны 4 спутника ЕКА «», предназначенных для изучения магнитного поля Земли. Данная научная программа была отложена, и впоследствии спутники «» были запущены ракетами «Союз» летом 2000 года.
Произошедшая авария имела большой резонанс — как по причине больших материальных потерь, так и вследствие оперативного расследования, характеризовавшегося открытостью результатов и проводившегося с участием специалистов заинтересованных европейских стран. Комиссии удалось найти и воспроизвести ошибку, реконструировав события полёта.
История
Разработка После разработки предыдущих версий ракет «Ариан» в конце 1987 года было принято решение о создании новой системы «Ариан-5», которая должна была вывести ЕКА в лидеры по запускам на коммерческом рынке. Характеристики новой ракеты-носителя должны были позволить как выводить телекоммуникационные спутники, так и дать возможность запускать челнок «Гермес». Несмотря на то, что работы над челноком были свёрнуты в 1992 году, разработка «Ариан-5» продолжилась для потенциальной реализации пилотируемой космонавтики. Заявленная надёжность не должна была быть меньше 0,98 при рассматриваемых 50—100 запусках, а стоимость пуска по сравнению с «Ариан-4» должна была быть уменьшена на 10 %.
Работы над «Ариан-5» велись около 10 лет и на разработку было потрачено 7 млрд долларов. «Ариан-5» основывалась на предыдущей модели, «Ариан-4», которая успешно запускалась 90 раз из 93. В феврале 1994 года был оформлен промышленный заказ на изготовление 14 ракет-носителей для запусков в 1996—1999 годах, и первый полёт был запланирован на октябрь 1995 года. Одной из задач первых двух пусков являлась демонстрация возможности ракеты-носителя по выводу полезной нагрузки на орбиту. Первый запуск несколько раз откладывался и произошёл летом 1996 года.
Полезная нагрузка
Полезная нагрузка для первого запуска ракеты, включающая в себя четыре спутника «Cluster», составляла 4681 кг. Данный пуск должен был реализовать один из этапов научной программы «Cluster», которая была инициирована ЕКА в 1982 году при сотрудничестве с НАСА. Задачей миссии являлось измерение малых колебаний магнитосферы Земли и воздействия на неё солнечного ветра вследствие солнечной активности. Для этого была спроектирована многоспутниковая миссия, так как требовались синхронные измерения на нескольких спутниках, находящихся в разных точках космического пространства. «Ариан-5» должна была одновременно вывести четыре спутника «Cluster» на промежуточную геостационарную орбиту.
Полёт
Погода утром 4 июня 1996 года была приемлемая и ракета «Ариан-5» (серийный номер 501) была доставлена на стартовую площадку (ELA-3, космодром Куру) — время старта было запланировано на 8:35 местного времени (11:35 UTC). Обратный отсчёт, в который включена подготовка ракеты, проходил гладко до момента за 7 минут до старта, когда условия видимости ухудшились, и в связи с этим запуск был перенесён. Новое время старта H0 было установлено на 09:33:59 местного времени.
36,7 секунды после зажигания (H0+36,7) полёт проходил штатно. Однако после этого момента ракета, находившаяся на высоте ~ м, внезапно отклонилась от запланированной траектории, начала разваливаться на части и взорвалась на 40-й секунде (H0+40). Это произошло в начале полёта — номинальное время работы двигателей первой ступени составляет 575 секунд.
По сразу же проведённому анализу данных было определено, что ракета вела себя нормально до того момента, как вдруг она отклонилась от курса и самоуничтожилась. Взрыв произошёл на высоте ~4 км, на удалении в 1 км от стартовой площадки, и осколки были рассеяны на площади около 12 км2 в саванне и болотах. Некоторые фрагменты упали возле стартовой площадки, но она осталась нетронутой. Во время данного происшествия пострадавших не было. Погода была приемлемой, и она не могла оказать влияния. При этом полётные данные показывали, что системы, управлявшие соплами твердотопливного ускорителя (активная система и первичная Инерциальная система ориентировки, ИСО), отказали практически одновременно перед разрушением ракеты.
Расследование На следующей день после аварии началось формирование комиссии для расследования. Её возглавил представитель Французской академии наук профессор Жак-Луи Лионс, а в комиссию вошли учёные и специалисты из заинтересованных европейских стран. 13 июня она приступила к работе. Комиссии были предоставлены телеметрические данные ракеты, данные траектории (с радиолокационных станций и с постов оптического наблюдения), а также полученная информация с упавших обломков и восстановленной ИСО. Кроме того, в распоряжение попали отдельные компоненты ракеты, в том числе использованные для тестирования и осмотра. Для незамедлительного предоставления всех данных комиссией был сформирован специальный Технический комитет из представителей заказчиков и подрядчиков. Были собраны и изучены части ракеты и оборудования, а также заслушаны показания специалистов и изучены производственная и эксплуатационная документация.
После проведённого анализа и имитационного моделирования были реконструированы события полёта: Программный модуль, унаследованный от «Ариан-4», выполнял выравнивание инерционной платформы для оценки точности измерений ИСО. После старта в «Ариан-5» этот модуль не выполнял никаких функций, в отличие от «Ариан-4», в которой он работал полных 50 секунд, так как у неё траектория полёта значительно отличалась от той, которая была у «Ариан-5». Вскоре после старта ошибочный программный модуль попытался просчитать значение, исходя из горизонтальной скорости ракеты. Так как это значение было значительно больше, чем то, которое было у «Ариан-4», то возникла ошибка. У ракеты имелось две системы ИСО — активная и запасная — у которых программное обеспечение было идентичным. Так как сбой был программный, то ошибка проявилась на обоих экземплярах ИСО. Исходя из требований реализации, контекст ошибки должен сохраняться в ПЗУ до отключения процессора, и по этой причине ИСО сохранила информацию об исключении. В дальнейшем эти данные были прочитаны бортовым компьютером, который на их основании дал команду соплам твердотопливного ускорителя и главному двигателю. Данная команда требовала полного отклонения сопел, а это вызвало то, что ракета вышла на запредельную траекторию. На новой траектории ракета получила запредельную аэродинамическую нагрузку и начала разрушаться (H0+39), при этом уровни рыскания и тангажа составляли 30° в секунду. Стартовые двигатели отделились от ракеты и это запустило её самоуничтожение (H0+40).
Возникшая ошибка в программном модуле ИСО произошла во время конвертации 64-битного вещественного числа в 16-битное знаковое целое, и при этом случилось арифметическое переполнение последней. Эта переменная (E_BH, , горизонтальное смещение) показывала горизонтальное смещение инерционной платформы и была связана с горизонтальной скоростью ракеты. В программном модуле, вызвавшем ошибку, было семь переменных, из которых четыре были защищены. Строка программного кода, при выполнении которого произошла ошибка, выглядит следующим образом:
P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS( TDB.T_ENTIER_16S( (1.0 / C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH) ) );
Особенностью задействования данного модуля являлось то, что система «Ариан-5» имела другой порядок выполнения предполётных действий, отличающийся от «Ариан-4». Данная разница была настолько большой, что работа сбойного программного модуля после старта не была нужна, но модуль использовался повторно без каких-либо модификаций.
Комиссии удалось быстро найти ошибку из-за наличия данных измерений, имитационных сред и документации. Метеорологические данные исключали влияние погоды, телеметрия позволила определить реальные данные траектории полёта. Это позволило сузить область потенциальных дефектов и на основании полученной информации провести имитационное моделирование, которое точно воспроизвело цепь событий, приведших ракету к аварии.
Причины аварии Как и в случае с другими ошибками , авария была вызвана не одной причиной. В ходе разработки и тестирования было много стадий, на которых дефект мог быть выявлен. Основными причинами названы следующие:
Программный модуль был повторно использован в новой среде, где условия функционирования были другие. Данная часть программного обеспечения тестировалась для «Ариан-4», и для новой ракеты требования не были пересмотрены. Система выявила и распознала ошибку, однако спецификация механизма обработки ошибок не соответствовала ситуации, что вызвало окончательное разрушение. Ошибочный модуль никогда должным образом не тестировался в новом окружении — ни на уровне оборудования, ни на уровне системной интеграции. Как следствие, не была обнаружена ошибка реализации.
Комиссией было подчёркнуто, что к процессу контроля не привлекались специалисты из организаций, не зависимых как от заказчика, так и от подрядчика системы, что нарушило принцип разделения исполнительных и контрольных функций. Претензии были предъявлены как к процессу тестирования, так и к стратегии верификации. Так, на этапе тестирования и отладки было технически возможно посредством интегрального моделирования полёта исследовать работу ИСО, что позволило бы практически гарантированно выявить ошибку. Однако, при моделировании работы всего аппаратно-программного комплекса ИСО рассматривалась как чёрный ящик, который работает исправно. Было обращено внимание на взаимную противоречивость между необходимостью обеспечения надёжности и декларацией о величине максимально допустимой нагрузки на компьютер. Дополнительно критиковался механизм обработки исключительных ситуаций, который работал в отрыве от общего контекста всей ситуации, и в итоге «уподобился тому врачу, что без всякого осмотра пристрелил пришедшего к нему с непонятными симптомами больного, дабы тот не мучился». Данная реализация являлась следствием практики радикального отключения аппаратных блоков в случае любых аппаратных сбоев, основанного на предположении, что вероятность сбоя в резервном блоке чрезвычайно мала. Однако, в случае «Ариан-5» имела место систематическая ошибка — так как ошибка была допущена в программном обеспечении, то она проявилась и в резервном блоке.
Отчёт комиссии содержит следующее наблюдение:
Команда обслуживания «Ариан-5» предоставила следующие объяснения произошедшего: Разработчики решили не защищать некоторые переменные от возможной ошибки операнда. Они считали, что значения этих переменных ограничены как физическими параметрами, так и запасом по величине. Команда «Ариан-5» решила не включать данные о траектории в функциональные требования ИСО, и по этой причине во время тестирования новые данные о траектории не использовались. На практике сложно выполнить реалистичный тест полёта ИСО. Из-за этого было решено не тестировать ИСО, так как эта система должна была быть проверена ранее на аппаратном уровне. Кроме того, дополнительной сложностью была необходимость достижения требуемой точности при имитационном моделировании.
Последствия
Этот неудачный запуск стал одной из самых дорогостоящих компьютерных ошибок в истории. Оценки материальных потерь варьируются от 360 до 500 млн долларов (в которые входит не только стоимость ракеты, но и научное оборудование полезной нагрузки). Помимо этого, ряд последующих коммерческих запусков агентства не состоялся, программа «Ариан-5» была задержана на один год, а ЕКА потеряло репутацию на рынке.