Какое ПО управляет современными авиалайнерами, и стоит ли беспокоиться за его надёжность
«Глюк» и баг Причиной массовых задержек рейсов American Airlines 28 апреля стал «глюк» в одном из навигационных приложений iPad. С помощью программы командиры экипажей и их помощники должны были проложить маршрут, а также получить информацию о расчётном времени движения борта. По данным СМИ, устройство на время вышло из строя, что заставило сразу нескольких пилотов отменить взлёт.
Части лётчиков удалось устранить проблему, не покидая полосы. Другие были вынуждены подняться в воздух с существенным опозданием. Всё это время в социальных сетях распространялись сообщения, в которых самой популярной версией происходящего был слух о неисправности в одной из конкретных моделей авиалайнеров перевозчика. Позже предположение было опровергнуто, однако понервничать находившемся на борту пассажирам пришлось изрядно.
Ошибка, выявленная чуть позже в ходе лабораторных тестов программного обеспечения «Боингов-787», оказалась серьёзнее неожиданно подведших пилотов планшетов Apple. Как сообщили представители Федерального управления гражданской авиации США (U.S. Federal Aviation Administration, FAA), код одной из систем, управляющих лайнером, требовал обязательной перезагрузки после 248 дней непрерывной работы. В противном случае рейс прямо в ходе полёта рисковал перейти в так называемый отказоустойчивый режим и полностью обесточить сам себя. Питания автоматически могли лишиться две пары генераторов, установленных на двигателях воздушного суда, а также два запасных генератора.
Несмотря на высокую потенциальную опасность бага, он не представляет угрозы безопасности пассажиров в реальных условиях, утверждали сотрудники FAA: при эксплуатации «Боингов» все системы постоянно перезагружаются и никогда не работают подряд 248 дней. Руководство «Боинг» также поспешило успокоить пассажиров. В компании отметили, что все самолёты оснащены дополнительной системой безопасности, позволяющей запускать двигатели в аварийном режиме в случае отказа питания.
В комментарии для TJ сотрудник одного из подразделений компании в Сиэтле подтвердил, что баг должен быть устранён в ближайшее время и действительно мог представлять разве что теоретическую угрозу. По словам специалиста, в условиях эксплуатации ПО «Боингов» перезагружается гораздо чаще критического срока.
Военный риск Катастрофы, в которых так или иначе было виноват софт авиалайнера, можно пересчитать на пальцах одной руки. Почти все они связаны с военными, а не гражданскими самолётами.
В 1993 году из-за сбоя в работе программы, контролировавшей ход полёта, разбился многоцелевой шведский истребитель JAS.39 Gripen. Произошло это в ходе показательных выступлений. При выполнении одного из элементов программы пилот потерял управление. Спустя несколько секунд лётчику пришлось катапультироваться, а сам самолёт упал неподалёку от озера, вокруг которого собрались зрители. Жертв удалось избежать. Позже стало известно, что причиной катастрофы стал слишком большой коэффициент усиления команд, осуществлявшихся с помощью ручки управления машиной. Через какое-то время проблема была устранена, а испытания JAS.39 Gripen продолжились.
В 2007 году ошибка в программном обеспечении американского истребителя F-22 Raptor не позволила группе этих самолётов завершить испытательный перелёт с базы на Гавайях на японский остров Окинава. Проблемы начались, как только F-22 пересекли так называемую линию перемены дат — условную линию, проходящую по меридиану 180 градусов. Календарные даты по разные её стороны отличаются на одни сутки. В результате сбоя была нарушена работа навигационных приборов, вышла из строя топливная система, частично отказала связь. После нескольких неудачных попыток перезагрузить работающие элементы управления, пилоты приняли решение возвращаться обратно на Гавайи, несмотря на то, что такой план был связан с определённым риском и требовал дозаправки в воздухе.
В сфере гражданской авиации подобных инцидентов практически не случается. По словам бывшего сотрудника «Боинга», согласившегося поговорить с TJ на условиях анонимности, сегодня крупнейшие производители авиалайнеров тестируют программное обеспечение в лабораториях дольше, чем саму конструкцию, двигатели и другие составные части воздушного судна.
Вы не можете пропустить программное обеспечение для борта, если не уверены в его безопасности. Это общее место, конечно. Это все знают. Но важно понимать, что везде работают люди. В ходе работ где-то могут возникнуть недочёты, где-то может что-то пойти не так. От этого никто не застрахован. Фактически, единственное, что вы в итоге можете сделать — для любой системы самолёта продумать запасные, аварийные и дублирующие элементы. И годами совершенствовать систему и накапливать опыт. При этом самолётам удаётся удерживать звание самого безопасного вида транспорта.
экс-сотрудник компании «Боинг»
Самые резонансные инциденты, возникшие из-за проблем в использующемся в авиации ПО, связаны не с бортовыми программами, а с софтом, на котором работают диспетчеры и службы наземной связи. Катастрофа рейса 5022 авиакомпании Spanair — один из самых известных подобных случаев.
В августе 2008 года борт потерпел крушение, и погибло в общей сложности более 150 человек. Проведённое расследование показало, что компьютерную систему авиакомпании поразил компьютерный вирус — троян. Часть пользователей сети неверно истолковала результаты экспертизы, предположив, что речь идёт о ПО на борту. На деле вирус попал в компьютер, находившийся на земле. Обслуживавшие его техники из-за заражения не смогли вовремя обнаружить показания о наличии в самолёте по меньшей мере трёх технических неисправностей.
Для авиалайнеров и разводных мостов ПО авиалайнеров сверхнадёжно (специфика обязывает), но всё же не идеально. Это было известно задолго до последних проблем. За работу того же «Боинга-787» в общей сложности отвечают более 14 миллионов строк кода, и гарантировать, что всё и всегда будет исполняться на 100% так, как задумано, не может никто.
В то же время программы, которые управляют сегодня самолётами, за счёт многолетнего совершенствования и «параноидального программирования», стремящегося исключить любые возможные ошибки, достигли уровня, при котором они статистически стабильнее и надёжнее, чем контролирующие их пилоты. Данные FAA за последние 10 лет показывают: подавляющее большинство аварий и катастроф происходит из-за человеческого фактора, а вовсе не по причине проблем в софте.
При этом высокое качество и надёжность достигаются вовсе не за счёт каких-то радикально новых методов создания алгоритмов. Одним из основных языков, на котором пишется код для гражданской авиации, является известный любому программисту C/С++.
Второй важный для отрасли язык — разработанный ещё в конце 70-х годов Ada. Язык изначально создавался в рамках проекта Минобороны США для систем управления автоматизированными комплексами, функционирующими в реальном времени, то есть бортовыми системами военных кораблей, самолётов, танковой техники и ракет. В гражданской авциации на Ada до сих пор работает программное обеспечение «Боинга-777». Как признаётся разработчик ПО для более новой модели «Боинга-787», одной из его первых задач в ходе создания софта стало портирование кода Ada на С.
Подробное описание того, за что именно отвечает программный код на борту и как устроена архитектура систем управления в авиации, можно найти в одной из старых публикаций на «Хабрахабре». По словам автора материала, современная система управления самолётом (Электродистанционная Система Управления, ЭДСУ), как и языки программирования, не является новинкой. ЭДСУ развивается и совершенствуется ещё с советских времён, когда она впервые была внедрена в аналоговом виде на самолёт «Максим Горький» и отвечала за управление поверхностями путём передачи электрического тока.
Что представляет собой ЭДСУ? В первую очередь, это программно-аппаратный комплекс, состоящий из приводов управляющих поверхностей самолёта, датчиков контроля, системы управления, системы индикации и вспомогательных систем, системы коммуникации и силовой системы. Каждая из систем обычно как минимум дублируется один раз. В зависимости от требуемых законов управления, ценовых и компоновочных решений архитектура может варьироваться: содержать больше контуров дублирования, контроля, силовых контуров, или же, напротив, меньше.
wwakabobik, пользователь «Хабрахабра»
При этом архитектура всей перечисленной системы критически важна. Ошибки и недочёты в ней, как правило, могут приводить к авариям и катастрофам. По словам пользователя, классическими ошибками в архитектуре являются зависимость системы от электропитания, неверное дублирование системы управления, а также различные «глупые» ошибки: например, смена знака при пересечении экватора или смене часовых поясов и вероятность отображения отрицательной скорости на гражданском самолёте.
Важной частью программного обеспечения в авиации также является операционная система реального времени под названием QNX. Система была создана ещё в 80-х. Разработавшая её компания позже оказалась поглощена канадской BlackBerry.
QNX отличает не только возможность работы с процессами в реальном времени, но и очень высокая надёжность. Система может длительное время работать без перезагрузок и зависаний, а также восстанавливать приложения после сбоя с помощью автоматического перезапуска. Кроме того, операционка легко масштабируется и позволяет быстро наращивать функциональность.
Популярность этой операционной системы росла постепенно. Завоевав себе отличную репутацию в промышленности (в нефтегазовой отрасли, при эксплуатации электростанций и так далее), QNX постепенно стала основой для множества проектов автомобилестроении, ракетостроении, а затем и в гражданской авиации.
При этом операционка до сих пор лежит в основе привычных человеку вещей. На её базе, например, создавалась Blackberry 10 для смартфонов Blackberry. QNX также управляет разводными мостами в Санкт-Петербурге и использовалась в качестве основной ОС в системе автоведения поездов петербургского метрополитена.
Довериться машине Сегодня автоматизированные системы управления отвечают за 95% составляющих всего полёта. С их помощью рассчитывается и контролируется курс, время движения, маршрут, работа двигателей и даже оптимальный угол, под которым крыло воздушного судна будет встречаться в небе с набегающим потоком воздуха.
Согласно докладу FAA, большинство пилотов постепенно привыкли во всём полагаться на программное обеспечение и теперь «крайне неохотно» переходят в ручной режим управления. Как выяснили специалисты организации, это имеет как свой положительный, так и отрицательный эффект.
С одной стороны, вероятность аварии или катастрофы снижается, так как программы с каждым годом работают всё надёжнее и надёжнее. С другой стороны, пилоты часто теряют навык управления судном в критических ситуациях. В итоге человеческий фактор получает новое преломление: необходимость в технике оборачивается чрезмерной зависимостью от неё.
Тем не менее каким бы ни был прогресс в области автоматизации управления самолётами, без пилотов гражданская авиция обойтись в ближайшем будущем не сможет. Как признаются сами лётчики, думать, что программное обеспечение сможет полностью заменить человека в кабине авиалайнера, это всё равно что предположить, что напичканная техникой и электроникой операционная комната сможет провести операцию без врача.
Курица или рыба, Виктор Степанов, специально для TJ
© TJournal