Алгоритмическая ошибка привела к аварии самолёта / Алгоритмы

Недавно, 19 декабря 2011г, Австралийское бюро по безопасности на транспорте выпустило отчёт об авиационном происшествии с самолётом А-330 (б/н VH-QPA) авиакомпании Qantas, которое произошло 7 октября 2008г.



(фотография Stefan Roesh planepictures.net)

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

История полёта

7 октября 2008г. самолёт с 303 пассажирами на борту выполнял рейс Qantas72 Singapore — Perth, Western Australia. Полёт проходил в дневное время, в ясную погоду.

Через 3 часа после взлёта, когда самолёт находился в крейсерском полёте, неожиданно сработало автоматическое отключение автопилота, на табло стали появляться различные аварийные сообщения, одновременно срабатывали сирены сваливания и превышения скорости, на экране капитана стали отображаться нереальные параметры полёта.

Через 5 минут после отключения автопилота, когда капитан пытался разобраться с ситуацией, самолёт неожиданно перешёл в пикирование, достигнув значения тангажа в 8.4 градуса. Пилот сразу же потянул ручку на себя, чтобы исправить положение. Вертикальная перегрузка при этом достигала 1.5g в обоих направлениях. Многие пассажиры в этот момент были не пристёгнуты, и их швырнуло в потолок. Ещё через 3 минуты ситуация повторилась, но с меньшей амплитудой.

Командир принял решение посадить самолёт в ближайшем аэропорту. Определить причину отказов на борту не удалось, остаток полёта командир пилотировал самолёт в режиме альтернативного управления (alternate law), ориентируясь по резервным индикаторам. Дальнейший полёт прошёл без происшествий, самолёт произвёл посадку в аэропорту Learmonth.

В результате инцидента 119 пассажиров/членов экипажа получили ранения, из них 12 тяжёлые.

http://www.youtube.com/embed/3dpG7_2izXsанимация события



повреждения в салоне

Расследование

Самолёт А-330, как и любой другой современный лайнер, имеет электродистанционную систему управления. Непосредственное управление осуществляется бортовым компьютером, который получает сигналы по проводам. Для обеспечения должного уровня безопасности на самолёте установлено три компьютера (FCPC). Компьютеры, в свою очередь, получают данные от трёх инерциально-навигационных систем (ADIRU).

Для предупреждения выхода самолёта за критические режимы полёта, в нём существует автоматическая защита от выхода на критические углы атаки, а также защита от аэродинамического кабрирования на высоких числах Маха. При их срабатывании, самолёт автоматически переводится на пикирование и не слушается ручки управления в течение 2с. Срабатывание одной из этих защит и стало непосредственной причиной резкого уменьшения тангажа в полёте. Следствием были демонтированы и изучены модули ADIRU LTN-101 от Northrop Grumman Corporation и модули FCPC производства Airbus.

В результате изучения информации с бортовых самописцев было установлено, что одна из ADIRU периодически выдавала резкие скачки по нескольким параметрам, в частности по углу атаки и числу М. После проведения испытаний было выяснено, что в ADIRU произошёл аппаратный сбой в процессоре Intel, наиболее вероятно, из-за производственного брака. Сбой выражался в том, что вместо, к примеру, угла атаки, выдавалось значение высоты и т.д. Более точно природу сбоя определить не удалось.

Однако, по действующим стандартам, сбой в одной из систем самолёта никак не должен приводить к аварийным последствиям. Как же получилось, что бортовой компьютер «проглотил» неверное значение угла атаки и выдал команду на пикирование?

Ниже представлена блок-схема алгоритма обработки угла атаки (АОА):

Для вычисления угла атаки используется среднее значение с двух сенсоров АОА1 и АОА2. Если значение сильно отличается от среднего, алгоритм использует крайнее валидное значение на протяжении 1.2 секунды. Если на протяжении секунды ситуация не меняется – этот вход отключается и больше не используется. Ниже показаны возможные сценарии с отклонениями параметров.

В нашем случае получился вариант D. Через секунду после скачка значение было правильным, но через 1.2 секунды опять произошёл скачок и это значение пометилось как валидное (я лично так и не понял, для чего же была придумана эта разница в 0.2 секунды).

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

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




Оставить комментарий