Не обновили: как маленькая погрешность отправила в мир иной 28 американцев

14 7158

Автор: Дарина

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

Вечером 25.02.1991 г. незадолго до завершения «Бури в пустыне» на авиационную базу ВВС США в Дахране упал иракский «Скад». На первый взгляд, округление дробей тут роли не играет. «Скад» попал в казарму 475-го отряда квартирмейстерской службы американских вооруженных сил, в задачу которого входила очистка воды. В результате взрыва погибло 28 солдат – 20% потерь США за все время проведения кампании. Около 100 военнослужащих были ранены. 

Последствия от попадания “скада” 

Ракету засек локатор дежурной батареи ЗРК «Patriot», защищавшей Дахран. «Скад» обнаружили, но перехватить не смогли. Оставалось лишь смотреть, как она разрушает казарму. Как впоследствии оказалось, виновным в гибели 28 бойцов стало программное обеспечение ЗРК. 

Роковая математическая неточность 

Ошибка оказалась элементарной: программистам и военным она была известна, но ее игнорировали, считая несущественной. Внутренний таймер комплекса представляет собой счетчик численности промежутков времени, истекшего с момента активации ЗРК. Продолжительность подобного временного промежутка составляет 0,1 сек. Для перевода численности данных интервалов в секунды, ее, разумеется, необходимо поделить на 10. С какой инициативой выступили программисты? Конечно, умножить на 0,1. В машинной математике деление нередко заменяли на умножение на обратное число. За счет этого было легче создавать вычислительные приспособления, и функционировали они шустрее. 

Кстати, способ умножения на обратное число использовался еще в античном Вавилоне. 

Потом следовала другая часть процесса кодирования. Дело в том, что числа представлены в двоичной системе. Точного выражения десятичной дроби 0,1 в двоичной форме нет – его можно сделать лишь примерным. В связи с этим сотрудники компании «Raytheon» число 0,1 решили представить как 0,00011001100110011001100. Данное число чуть меньше необходимой десятичной дроби – приблизительно на 0,0000001. На него и умножили, считая, что вопрос закрыт. 

Кодеры не ошиблись, поступая подобным образом. В процессе вычисления характеристик движения цели «Patriot» пользуется приблизительными показателями времени с единой и крайне малой систематической погрешностью. Соответственно, сложностей возникнуть не должно. Ситуацию объявили нормальной для применения в боевой обстановке – и предали забвению. В подобном виде «Patriot» и поступил на вооружение в 1982 г. 

Неудачное улучшение 

Летом 1990 г. войска иракского лидера оккупировали Кувейт. В распоряжении армии Ирака находились оперативно-тактические ракеты, самостоятельно улучшенные, а также химическое оружие. Все это несло нешуточную угрозу. Необходимо было быстро модернизировать ЗРК «Пэтриот» для Ближнего Востока, чтобы тот сумел перехватить баллистические ракеты, движущиеся на скорости 1700 м/с и выше. Корпорация-производитель стала срочно совершенствовать комплекс. Однако результат оказался прямо противоположным ожидаемому – система стала хуже. 

Некий «мастер» в кодировке додумался устранить ошибку с неточным преобразованием 0,1 в двоичную систему и написал новый алгоритм умножения. 

Все бы хорошо, поскольку погрешность получилось уменьшить, но горе-кодер установил вызов данного алгоритма не в каждом случае, когда это было необходимо. Местами сохранился прежний расчет времени. 

Иначе говоря, в софте появилось 2 внутренних показателя времени, применяемых при вычислении различных характеристик. Чем дольше «Patriot» работал, тем ощутимее становилась разница. Но проблеме не уделяли должного внимания. Первой на данном вопросе зациклилась не Америка, а Израиль. 

Какой дурак до такого додумался? 

 Первые «Скады» Ирак запустил по еврейскому государству 18.01.1991 г. Офицеры израильской армии не поленились изучить «логи». Уже 11.02.1991 г. они направили в Америку первый отчет, содержавший сведения о наличии ошибки: после нескольких часов бесперебойного функционирования комплекса наблюдается непонятное расхождение параметров во время перехода от режима выявления цели к ее сопровождению. Локатор при функционировании в режиме «на сопровождение» нацелен на определенную неширокую зону пространства, где должна находиться цель – т.н. «Рейндж Гейт Эриа» (RGA). 

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

Позиция РГА вычисляется расчетом на опережение в зависимости от координат и быстроты перемещения цели. Данная математика имеет непосредственную связь с точным отсчетом времени. Вот здесь-то и скрывалась опасность, поскольку по вышеуказанным причинам ни о какой точности не могло идти и речи. 

Час от часу расхождение во времени становилось все больше. Офицеры в Израиле обнаружили, что границы окна, установленные по неправильному времени, стали съезжать. Цель находилась уже не по центру «РГА», а ближе к краю. За 8 ч она сползала примерно на 20% в сторону от центра. Подсчитали и поняли, что спустя 20 ч бесперебойного функционирования цель покинет границы RGA, и тогда «Patriot» вообще не сможет захватывать цели на сопровождение, даже обнаружив их. Соответственно, комплекс потеряет возможность их сбить в полете. 

Но руководство американской армии к отчету израильских военных отнеслось без должной ответственности. Понадеялись на русский «авось». 

Следует сказать, что ПО системы «Пэтриот» за время, начиная с осени 1990 г., исправляли целых 6 раз. Причем в авральном порядке: требовалось научить комплекс бороться с иракскими «Аль-Хусейнами» и «Скадами». Какое-то глупое расхождение во времени никого не беспокоило. Вдобавок установка патча длилась не меньше 2 ч, в течение которых ЗРК превращался в обычную груду металлолома. Для чего это нужно, когда идут активные боевые действия? 

Однако 16.02.1991 г. патч все же написали и стали постепенно устанавливать его на «Patriot». Через 5 дней после этого военное руководство, интуитивно предчувствуя надвигающуюся катастрофу, дополнительно отправило инструкцию для операторов «Patriot». Она включала единственную фразу, рекомендующую не держать ЗРК в рабочем состоянии чересчур длительное время, иначе возникнут сложности с перехватом цели. Конкретного допустимого периода бесперебойной работы не указали. …

У дежурной батареи «Альфа», относящейся к батальону, что защищал авиационную базу в Дахране, на вечер 25.02.1991 г. «Patriot» функционировал больше 96 ч. За данный срок разница во времени достигла 0,343 сек. Для баллистической ракеты она означала смещение центральной части «Range Gate Area» почти на 0,7 км относительно действительного местонахождения «Скада». И это при размере самого РГА примерно 0,3 км. 

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

Таковы причины трагедии, унесшей жизни 28 человек. На следующее утро в Дахран прибыли ничего не знающие о случившемся офицеры, доставившие…патч, устраняющий баг.

Источник: https://militaryexp.com/ne-obn...

Беспредел вместо законов войны

Напоминаю, что я по-прежнему не военный эксперт, любые мои мнения насчёт военных действий являются дилетантскими (и дальше согласно стандартному дисклеймеру). Но тут как раз не про военный аспект, а п...

Китайцы во Франции. Тупосюжетный триллер

Поотнимаю немного хлебушка у Баграта... Заселяется Си Цзиньпинь в гостиничный номер в Париже, а все ножки у кровати стоят в тазиках с водой. Чтобы клопы с пола на кровать попасть не могли. - А...

Тот самый случай, когда после приказа Верховного, в Париже, Вашингтоне и Лондоне сделали правильные выводы

Здравствуй, дорогая Русская Цивилизация. Сегодня день лёгкого (а может и не очень) испуга в рядах западных элит.Итак, в 9:00 по московскому времени, появляется информация о том, что Вер...

Обсудить
  • Туда им и дорога В АД
  • В разработки ПО есть понятие устойчивости. Определение. Устойчивость - это способность ПО соответствующим образом реагировать на аварийные ситуации. Устойчивость дополняет корректность. Корректность относится к поведению системы в случаях, определенных спецификацией; устойчивость характеризует то, что происходит за пределами этой спецификации. Как видно из определения, устойчивость по своей природе более нечеткое понятие, чем корректность. Наши ученые устойчивые молодцы, а мериканцские очень корректные.
  • "Мастер" уже давно в Москве.... :smiley: :smiley: :smiley:
  • Эта ситуация один в один повторяет ту, которую я, молодой инженер, объяснял прожженным зубрам-конструкторам со стажем лет 30 минимум. Короче - ЦКБ спроектировало устройство. Для чего оно надобно сказать не могу - но одна деталь, сварная, имела форму трубы наружным диаметром 1500 мм толщиной стенки 10 мм и длиной 2000 мм. Такая себе сварная бочка.Рубится лист 10 мм сталь на гильотине по размерам развертки, указанной конструктором...ну, все просто да? Длина развертки считается по средней линии листа, итого Ф1500-10=Ф1490мм умножаем на число пи - 3,14 - и получаем требуемый размер.1490 х 3,14=4678.6 мм. Запомним эту цифру - именно такое число конструктор и поставил на размере развертки. Я в это время работал в КБ спецоснастки - проектировал штампы, приспособления, кондуктора, оправки и так далее. И мне шеф дал задачу спроектировать сварочный кондуктор для сварки этой трубы. Я сосчитал диаметр кондуктора и получил цифру развертки совсем иную, а именно: 1490х3,14=4680,97 мм. Два мм разницы откуда-то взялось. То есть заготовка трубы на кондуктор НЕ НАЛЕЗЕТ! Вопрос - а почему? А по той же причине что и у пиндостанцев - число пи в данном случае необходимо брать максимально возможное значение - а не просто 3,14, по той причине что счет умножения пошел на тысячи. А конструктор взял просто пи, равное 3,14 - а я на калькуляторе число пи вводил всегда до 10 знака включительно. Кстати, калькулятор Сasio fx-140 до сих пор жив - это уже раритет. Вот такой фокус.
  • :thumbsup: :thumbsup: :thumbsup: