В этой статье будет затронут вопрос надёжности встраиваемого программного обеспечения, используемого в военной технике.
11 февраля 1991 года Patriot Project Office получил израильские данные о дефекте в ракетной системе Patriot. Они нашли, что, если система работает 8 часов, она начинает мазать на 20%. Они прикинули, что после 20 часов работы система начинает промахиваться настолько, что перестанет быть способной захватывать, отслеживать и поражать баллистические ракеты. Американские военные не приняли во внимание всю важность открытия, заявив, что система предназначена для портативных и краткосрочных защитных операций и что никто никогда не будет использовать систему больше 8 часов.
16 февраля был выпущен Bug Fix, но, чтобы его внедрить во все единицы боевой техники, требовалось время, ибо война.
21 февраля военные выпускают указание, что система не должна работать "долго". Военные не уточнили сколько длится "долго".
25 февраля в Дахране (Саудовская Аравия) в казарму в гости к американцам прилетела баллистичекая ракета "керосинка" (она же Р-17, она же Scud). 28 убито 96 ранено, потому что ЗРК "Патриот" промахнулся из-за программной ошибки.
26 февраля Bug Fix был доставлен в Дахран.
Р-17 (по классификации МО США и НАТО — SS-1c Scud B, экспортное обозначение R-300, неофициально — "керосинка") — советская жидкостная одноступенчатая баллистическая ракета на долгохранимых компонентах топлива.
Военные осматривают ракету типа Р-17 сбитую в пустыне ЗРК MIM-104 "Патриот" во время операции Desert Storm
MIM-104 "Патриот" (англ. MIM-104 Patriot, перевод с английского — Патриот) — американский зенитный ракетный комплекс (ЗРК), используемый армией США и их союзниками.
A detailed view of an AN/MPQ-53 radar set. The circular pattern on the front of the vertical component is the system's main phased array, consisting of over 5,000 individual elements, each about 39 millimeters (1.535 in) diameter.
PAC-3 missile launcher, note four missiles in each canister
В программном обеспечении, отвечающем за ведение цели, присутствовал баг, из-за которого со временем внутренние часы постепенно отходили от истинного значения времени.
Системное время хранилось как integer в 24-битном регистре с точностью до одной десятой секунды. Поэтому на каждом такте по 0.1 сек "терялась" часть времени. При рассчете данные переводились в real numbers [источник].
Число 1/10 равно 1/24+1/25+1/28+1/29+1/212+1/213+... Другими словами, бинарное разложение 1/10 = 0.0001100110011001100110011001100... Поэтому 24 bit регистр в системе Patriot хранил вместо этого 0.00011001100110011001100 внося ошибку равную 0.0000000000000000000000011001100... в двоичном исчислении, или примерно 0.000000095 в десятичном. За сто часов работы набегает 0.000000095?100?60?60?10=0.34 секунды
"Керосинка" летит со скоростью 1676 метров в секунду, и проходит за 0.34 секунды больше полукилометра. Этого больше чем достаточно, чтоб прошмыгнуть радиус поражения Патриотов. Забавно, что кривое вычисление времени пофиксили в некоторых частях программы, но не во всех.
Софт был написан на ассемблере 15-20 лет назад и с тех пор несколько раз модифицировался различными командами программистов.
Несколько слайдов из отчета, где выявляется проблемы с системой Patriot:
Золотые правила:
Правильно подбирайте размер. Всегда тщательно перепроверяйте, сколько бит вам требуется для хранения каждой переменной выбрать (long, int, double, float, и пр) в конкретном языке и конкретной операционной системе. Используйте целые числа вместо float где только возможно. Храните деньги в центах, а не долларах. Если все же необходимо использовать float, используйте двойную точность. Никогда не используйте float в качестве счетчика цикла. Избегайте смешанных типов (signed, unsigned; integer, floating point; single precision, double precision). Тщательно производите конвертацию. Проверяйте возможные ситуации переполнения. Проверяйте деление на ноль. Читать еще про Patriot Обсуждение бага на hackernews New York Times: AFTER THE WAR; Army Is Blaming Patriot's Computer For Failure to Stop the Dhahran Scud Lethal Software Defects: Patriot Missile Failure Software Bug Report: Patriot Missile Software Problem Заключение
Мы хотим привлечь внимание людей к проблемам надежности программного обеспечения. Программы — это давно не только странные непонятные расчёты ученых на Fortran или компьютерные игры. Это то, что давно и повсеместно нас окружает.
Раньше серьезные баги наносили вред в узких специфичных областях — ракетостроение мирное (Ariane 5) и военное. Сейчас же с ошибкой в программе вы можете столкнуться, не только сидя за компьютером, но и сидя в автомобиле (Toyota) или посещая больницу (Therac-25). Мы одни из тех, кто сражается на стороне программистов против багов. Нами разработан статический анализатор кода PVS-Studio, позволяющий выявлять ещё на этапе кодирования многие ошибки в программах на языке С, С++ и С#.
Кстати, как сравнили PAC-3 и С-400, если его особо пока и нет? По бумажным характеристикам? И чем он там особо отличился? Неужто стрельбы в космос были? Или кинетическая головка появилась?
Это и предопределило о чем скопипастить написать в следующей.
Преимущества ЗРК С-400 над ЗРК Patriot
Зенитно-ракетный комплекс «Patriot» составляет основу тактической ПВО армии США и их союзников. Отечественные ЗРК С-400 охраняют небо Подмосковья, Дальнего Востока, Балтики и юга России. Мы сравнили эти системы и результат оказался не в пользу американцев.
Оба комплекса призваны решать две основные задачи. Во-первых, защищать от нападения с воздуха важные объекты: радары ПВО, ракетные батареи, штабы, промышленные районы. Во-вторых, перехватывать и уничтожать боеголовки баллистических ракет. И «Patriot», и С-400 предназначены для работы в условиях активного радиоэлектронного противодействия — их радиолокационные станции способны интенсивно менять рабочую частоту, отстраиваясь от помех.
Американский и российский ЗРК оснащены радарами с фазированной активной решеткой (ФАР) — она позволяет неподвижной антенне формировать необходимое количество подвижных радиолучей. Кроме того, в состав комплекса входят пункт управления и пусковые установки зенитных ракет.
ЗРК мобильны и способны работать как автономно, так и получая информацию извне: с пунктов управления ПВО и ПРО, спутников и самолетов дальнего радиолокационного обнаружения. При этом любой комплекс С-400 может не только стрелять по чужим командам, но и сам управлять сетью ЗРК различных типов: С-400, С-300, Панцирь-С1, Тор-М1, — объединив под своим началом десятки пусковых установок с сотнями ракет.
Патриот, да не тот
ЗРК «Patriot» работает следующим образом. Радар обнаружения с углом обзора 90 градусов устанавливается в направлении вероятного появления воздушных объектов. Многофункциональная РЛС осуществляет поиск, обнаружение и опознавание целей, вычисляет их координаты. По мере приближения опасных целей к рубежу перехвата определяются точки их перехвата, на индикаторе появляются данные о порядке обстрела. При подходе цели к намеченному рубежу пусковая установка поворачивается в сторону цели и происходит пуск ракеты.
После пуска ракета-перехватчик MIM-104 берется на сопровождение радаром наведения. В те моменты, когда луч РЛС направлен на ракету, на нее передаются команды управления. На конечном участке траектории режим управления меняется. Радар наведения подсвечивает цель, головка самонаведения ракеты ловит отраженный сигнал и передает данные на землю для выработки команд управления.
Боевая часть MIM-104 осколочно-фугасная, весом 90 кг. Согласно тактико-техническим характеристикам, ЗРК «Patriot» способен перехватывать уничтожать цели, летящие со скоростью до 2500 км/ч, на дистанциях до 100 км (баллистические — до 25 км) и на высоте до 25 км (баллистические — до 11 км). Время реакции комплекса 15 секунд. ЗРК может одновременно обстреливать до 8 целей, пуская ракеты с интервалом 3 секунды.
Заявленная производителем вероятность перехвата целей составляет: самолет 0,8-0,9 , оперативно-тактическая ракета 0,4-0,6. Боевое крещение «Патриоты» приняли во время войны в Персидском заливе. В начале 1991 года авиация коалиции нанесла удары по территории Ирака. Армия Саддама Хуссейна ответила пуском баллистических ракет «Аббас» и «Хуссейн» по саудовскому городу Дхаран, близ которого располагалась американская военная база. Иракские ракеты — варианты советской Р-11, разработанной еще Сергеем Королевым, не имеющие средств радиоэлектронной борьбы.
Американцы предвидели такую реакцию и разместили в Саудовской Аравии и Израиле несколько батарей «Patriot». Пуски иракских ракет засекали американские спутники, данные передавали самолеты системы AWACS. Радарам ЗРК помогала надгоризонтная РЛС НАТО в Турции.
Несмотря на идеальные условия для перехвата: отсутствие массового пуска, ложных целей и радиопомех, — эффективность работы «Патриотов» оказалась низкой. Из 91 выпущенной Ираком ракеты были сбиты 45 при расходе 158 зенитных ракет. При этом в большинстве случаев происходило повреждение корпуса иракской ракеты, а не уничтожение боевой части, что не уменьшает ущерба при стрельбе по площадям. В результате на американской базе под Дхараном погибло 28 военнослужащих.
Боевое применение выявило и другие недостатки американского ЗРК: чувствительность электрогенераторов к засорению песком, а аппаратуры РЛС — к нестабильности электропитания. Имели место несанкционированные пуски. Главным же минусом «Пэтриота» оказалась малая дальность и высота перехвата цели — менее 20 и 7 километров от прикрываемого объекта соответственно. Иначе говоря, «зонтик», который ЗРК «Patriot» раскидывает над своей зоной ответственности, получился куцым.
ЗРК С-400 сбивает всё, что летит
Купол, которым накрывает подопечные объекты С-400, намного просторнее — 400 километров по радиусу и высоте. Внешне ЗРК напоминает своего предшественника С-300 — сделано это специально, чтобы противник не мог понять, какая именно система ему противостоит. Зато возможности С-400 перекрывают показатели любого другого комплекса противовоздушной обороны в мире. Недаром его назвали «Триумф».
Глазами ЗРК является помехозащищенный радар кругового обзора с двухсторонней ФАР. Он обнаруживает все существующие в природе виды летающих объектов — от самолетов-невидимок до гиперзвуковых ракет, — на дальности 600 км. РЛС классифицирует цели, отделяет свои от чужих, определяет степень опасности каждой из последних и передает их координаты на пункт боевого управления. Тем временем радар подсветки с радиусом действия 400 км берет потенциальные мишени на сопровождение.
Уникальная особенность «Триумфа» в том, что к нему подключаются дополнительные модули для повышения эффективной работы как в целом, так и по определенным типам целей. На днях в оснащенные С-400 подмосковные полки воздушно-космической обороны поступили пять всевысотных обнаружителей, способных одновременно опознавать до 100 целей различных классов.
Для перехвата самолетов и ракет, выполненных по стелс-технологиям, отсеивания ложных целей предназначены специальные РЛС «Гамма», «Орион», «Противник». Существуют модули для формирования закрытых каналов связи между ЗРК на расстоянии до 90 км, радиоэлектронной защиты комплексов и постановки помех, радары целеуказания и масса других полезных устройств.
Когда цель опознана и захвачена, остается запустить один из пяти типов ракет, которыми оснащается С-400. Ракеты предназначены для поражения различных целей на разных высотах, что позволяет «Триумфу» создавать эшелонированную противовоздушную оборону. Изделие 9М96Е, например, способно работать за пределами зоны видимости наземных станций наведения. Это его свойство обеспечивается принципиально новой головкой самонаведения, разработанной — как и весь С-400, — в ЦКБ «Алмаз».
Ракета может наводиться на цель и по командам с земли, и самостоятельно, не требуя подсветки радара сопровождения. На все типы ракет возможна установка управляемых боевых частей, обладающих как останавливающим (разрушение конструкции цели), так и нейтрализующим (выведение из строя боезаряда) эффектом. Вероятность поражения такой ракетой баллистических боеголовок и ударных беспилотников возрастает в полтора-два раза.
Все применяемые в С-400 ракеты имеют «холодный старт». Они выбрасываются из пускового контейнера пороховой катапультой, на высоте 30 метров газовые рули поворачивают ракету в сторону цели, после чего включается маршевый двигатель. Это увеличивает дальность полета и снижает ближнюю границу зоны поражения. А благодаря вертикальному старту ЗРК может обстреливать цели в любом направлении без поворота пусковой установки.
Кстати, о границах: нижний предел работы ЗРК «Patriot» — 60 метров. Летящие ниже цели американский комплекс пропускает. С-400 сбивает объекты на высоте пяти метров над землей.
Заявленные производителем высокие характеристики были подтверждены в ходе учений и испытаний. Во время стрельб на полигоне Капустин Яр «Триумф» поразил мишень, двигавшуюся со скоростью 2800 м/с. Вторая цель, баллистическая, была запущена на большую высоту с большого расстояния.
«Это была малоразмерная мишень типа «Кабан». Обнаружить ее — все равно, что найти карандаш в стоге сена. Но нами на высоте 16 километров она была уничтожена», — рассказал генерал-полковник Юрий Соловьев.
Малозаметная гордость американских ВВС включает радар и...
0 сек. Включение БРЛС.
+ 5 сек. Ближайшая "Кольчуга": "Взят на сопровождение источник ПШС, ЭИИМ: *** ватт, медиана: *** ГГц, дальность: *** метров, азимут: *** угол места: *** Идёт обсчёт сигнатур"
+20 сек. "Кольчуга": Готовы результаты анализа сигнатур. С вероятностью 78% источник - изделие марки AN/APG77, выпущенное фирмой "Тухес Инструмент". Индивидуальная сигнатура не коррелируется - архив данных РТР пуст.
+25 сек "Байкал": Объект поставлен в очередь на "перезвон", дивизионам NN, MM и KK - исполнять, "по четыре развертки", по очереди...
+ 3 мин 51 сек 9А83: "Ффух! Дело сделано, а я что , дура одна во чистом поле стоять? Съё... быстро!"
+ 3 мин 55 сек 5Н36 дивизиона NN: "фиксирую объёмную неподвижную цель с нулевым доплером в координатах ***,***,***. Трасса отслеживаемой НЛЦ пуста."
+ 4 мин 30 сек JDAM №1: "БУМ-М! Надувная 36Д6 успешно поражена!"
+ 4 мин 30 сек JDAM №2: "БУМ-М! То место, где полминуты назад стояла 9А83 успешно поражено!"
Вот примерно так...
Глоссарий:
Байкал - АСУ группировки ПВО Газетчик - станция защиты РЛС от противорадиолокационных ракет Имбирь - войсковая РЛС программного обзора Кольчуга - станция радиотехнической разведки 36Д6 - всевысотная трехкоординатная РЛС обнаружения целей комплекса ПВО 5Н36 - командный пункт управления боевыми действиями комплекса ПВО 9А83 - войсковая пусковая установка с четырьмя ЗУР 9М83 - войсковая зенитная управляемая ракета (ЗУР) 9С32 - войсковая многоканальная станция наведения ракет 9С457 - войсковой командный пункт управления боевыми действиями АД НЛЦ - аэродинамическая низколетящая цель ПШС - псевдошумовой сигнал БРЛС - бортовая радиолокационная станция РТР - радиотехническая разведка СПЦ - станция подсветки целей ТПК - транспортно-пусковой контейнер ЭИИМ - эквивалентная изотропно излучаемая мощность AN/APG77 - БРЛС с АФАР на F-22 Raptor AN/ALR-944 - система предупреждения об облучении на F-22 Raptor JDAM - высокоточное оружие (бомба или ракета) SA-12 Giant - войсковой ЗРК С-300В (по классификации НАТО)