Александр Аб Грандмастер

Из-за каких ошибок программистов теряли космические устройства?

Если ваш компьютер по какой-то причине вдруг «завис» во время работы, то это в любом случае нельзя назвать катастрофой. А вот если из-за ошибки в программном обеспечении безвозвратно теряется дорогостоящее космическое оборудование — тут уже настоящая беда. А во всем оказывается «виноват» лишний или недостающий символ в программном коде.

aslysun , Shutterstock.com

Почему-то считается, что больше всего ляпов допустили космические программисты СССР и в дальнейшем России. Видимо, потеря двух аппаратов «Фобос» поспособствовала этому. Но на самом деле финансовое лидерство с ляпами — у программистов США и Европейского космического союза. Вот доказательства.

28 июля 1962 года Соединенные Штаты Америки запустили к Венере аппарат «Mariner-1». Но он почти сразу же после отделения от ракеты-носителя потерял связь с наземными службами управления. Автоматика из-за этого ЧП включила внутреннюю систему навигации. А она имела совсем «маленький» баг — в программе был пропущен один-единственный символ. В результате этого «Mariner-1» отправился совсем в другую сторону.

Очень дорого для США обошлась потеря зонда «Mars Global Surveyor». Проработав несколько лет на красной планете, он вполне мог действовать и дальше. Но фатальная ошибка программистов его погубила. Зонд получил на бортовой компьютер задание переориентировать солнечные батареи. Операция особо сложной не являлась, она была штатной для аппарата. И все бы прошло гладко, но пятью месяцами ранее проводилось обновление программы управления антенной. Часть нового кода ошибочно загрузили в другую область, которая взаимодействовала с программой ориентации солнечных панелей. В результате этой ошибки одна из панелей была направлена неправильно и сильно перегрелась, вышла из строя, перекрыв собой «обзор» аппарату. «Mars Global Surveyor» полностью потерял ориентацию в пространстве, антенна связи стала бесполезной для передачи каких-либо сигналов на Землю. Потери NASA превысили 250 миллионов долларов.

Еще более катастрофической по финансам стала потеря 4 июня 1996 года ракеты-носителя «Ariane-5». Она взорвалась через 40 секунд в момент своего первого старта, имея на борту четыре спутника. Но что же случилось? Длительное и тщательное расследование катастрофы выявило невероятную, на первый взгляд, ошибку программистов. Суть в том, что система управления была «скопирована» с предыдущей ракеты-носителя «Ariane-4». Попробую сложные математические выводы комиссии «перевести» в понятный язык. Если, конечно, получится.

Система ориентации ракеты — гироскопы и акселелометры. Но из-за ошибки в программном коде они получали абсолютно неверные команды. Хотя внешне все выглядело нормально. То есть эти команды ничем не грозили бы ракете «Ariane-4» при ее скорости взлета, но они «запутали» систему ориентации «Ariane-5», имевшей намного более высокую скорость. Сработала система защиты от неуправляемого полета и ракета взорвалась. Однако какая же ошибка была допущена? Ниже пойдет текст для программистов, понимающих суть. Обычные читатели, далекие от написания программ, могут его пропустить. Привожу текст из заключения комиссии, расследовавшей чрезвычайное происшествие:

«Данные с плавающей запятой для инерциальной системы отсчёта переводились из 64 бит в 16. В результате одно из чисел оказалось больше 32767 (максимально возможное шестнадцатибитное целое число со знаком). Система ориентации ракеты отключилась, получив недопустимое число, в действие пришел механизм подрыва ракеты… Программисты посчитали, что цифра переменной никогда не превысит предельно допустимое значение. Но это было справедливо для «Ariane-4» и в корне ошибочно для «Ariane-5».

А теперь скажу своими словами попроще. Система автоподрыва была задействована после остановки двух процессоров. Началом для ее включения стало переполнение буфера, так как система навигации дала недопустимо большое значение параметра скорости. Программисты на рабочем компьютере ракеты убрали защиту от ошибки переполнения буфера. Они были уверены, что такая ошибка невозможна в принципе.

На разработку «Ariane-5» Евросоюз потратил семь миллиардов долларов. Стоимость же самой ракеты превышала 500 миллионов долларов, не считая стоимости имевшихся на ней спутников.

Человеческий фактор — самая главная причина различных космических катастроф. И обидно бывает, когда многолетний труд губится из-за маленького пропущенного или лишнего символа в программе, а то и вовсе из-за глупости программистов.

Обновлено 24.12.2015
Статья размещена на сайте 28.03.2015

Комментарии (2):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Serebryakov Anton Читатель 24 декабря 2015 в 01:39 отредактирован 25 мая 2018 в 06:41

    Закончить статью можно было бы без тупой фразы "а то и вовсе из-за глупости программистов". Нелепо называть программистов, создающих программы для космических ракет, глупыми...

  • Михаил Кондратьев Михаил Кондратьев Читатель 9 апреля 2015 в 01:09 отредактирован 9 апреля 2015 в 01:22

    акселометры - такого прибора не существует.
    Для измерения ускорений используются АКСЕЛЕРОМЕТРЫ.
    Гироскопы, датчики угловых скоростей (ДУСы), акселерометры - являются датчиками возмущающих воздействий на летательный аппарат. Снятые с них данные используются для вычисления необходимого активного воздействия - поворота газовых рулей, стабилизаторов и иных органов управления для обеспечения полёта с заданными параметрами. На датчики сигналы не подаются, наоборот, с их чувствительных элементов снимаются сигналы, соответствующие величинам измеряемых параметров.
    Недавняя авария с отечественной ракетой произошла, по мнению комиссии, из-за неправильной установки ДУС (неправильного ориентирования), сигнал с датчика поступал, но он был противоположного знака, автопилот отрабатывал его, пытаясь парировать закручивание, тем самым его усугубляя.