Pull to refresh

Отладка самолета? Это очень просто!

Reading time 13 min
Views 119K
Некоторое время назад мне пришлось очень плотно поучаствовать в приемо-сдаточных испытаниях самолета. Эти испытания были основной частью процесса передачи свежеизготовленного, самого (по моему мнению) технически продвинутого на настоящий момент времени бизнес-джета от производителя заказчику. Казалось бы, причем здесь тестирование, разработка, да и вообще тематика Хабра? Желающие узнать это могут перевернуть страницу и прочитать довольно много текста, причем вообще без картинок.

Сразу предупреждаю – вводная часть будет длинной, но без этого просто невозможно подойти к сути дела.

По целому ряду причин я не буду приводить названия конкретных производителей, модели самолета и прочих упомянутых в статье изделий. Если кто сможет идентифицировать самостоятельно – пожалуйста, но я здесь не при чем.

В данной статье не ставится задача дать читателю полный курс всех авиационных наук. Буду разъяснять только самое необходимое, причем чаще всего в упрощенном виде (упуская несущественные для понимания статьи детали).

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

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

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

Чтобы понять, можно ли с той или иной неисправностью эксплуатировать самолет, существует так называемый Minimum Equipment List (MEL) – документ, описывающий критичность обнаруженных неисправностей на возможность выполнения различных типов летной эксплуатации борта. Если какая-то конкретная неисправность не запрещает полностью производство полетов, то соответствующий пункт MEL описывает, какие именно ограничения накладываются на эксплуатацию самолета, и какие дополнительные меры нужно предпринять для выполнения полета (в случае с кофеваркой – повесить на нее табличку о запрете включения).

Возникает вопрос – а почему фактически неисправные самолеты вообще допускаются к полетам, ведь это опасно ?! Проблема в том, что если бы требовалась абсолютно 100% исправность, то подавляющее большинство самолетов просто вообще никогда не взлетело бы. Причем, опять таки в подавляющем большинстве случаев, MEL как раз обеспечивает необходимый уровень безопасности даже при наличии некоторых неисправностей за счет сужения допустимых диапазонов эксплуатации техники.

Рассматриваемый самолет только-только начал выпускаться, и конкретный экземпляр имеет серийный номер в первой десятке. Это значит очень много – например, то, что еще практически нет ни опыта эксплуатации, ни опыта техобслуживания, да и младенческие болезни проявятся во всей красе.

По своей начинке является, возможно, самым компьютеризированным типом в своем классе. Между составными частями самолета (датчики, исполнительные механизмы, органы управления и т.д.) вообще нет прямых аналоговых связей. Даже цифровые связи не прямые, а через центральный компьютер. Например, при необходимости выпустить закрылки перевод соответствующего рычага в нужное положение всего лишь посылает запрос центральному компьютеру на это действие. Далее компьютер анализирует целую кучу параметров на предмет возможности выполнения действия, и принимает решение, удовлетворить ли запрос, или же сначала возмутиться бестолковостью пилота. В классическом же самолете этот рычаг был подключен к исполнительному механизму практически напрямую. Аналогично работают все датчики – они рассказывают свое состояние центральному компьютеру, а он уже раздает эту информацию по запросу. Сравните – в «обычном» самолете от каждого датчика расходятся провода ко всем узлам, которым может понадобиться узнать состояние этого датчика. Например, датчиком обжатия стоек колес (чтобы понять, на земле уже самолет, или еще нет) интересуются десятка два систем.

Мало того, это единственный из известных мне самолетов (сразу скажу – я не знаком детально с устройством последних Boeing и Airbus), на котором можно реализовать сюжет идиотского боевика о суперхакерах, которые удаленно захватили управление над самолетом. Чисто теоретически (ну очень теоретически, но все таки с какой-то степенью вероятности) возможно подключиться к бортовому WiFi (не тому, который для пассажиров, а предназначенному для некоторых служебных функций) и загрузить свою программу в блоки управления. Далее каждый может фантазировать на собственное усмотрение…

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

Итак, после пары дней изучения самолета на земле у нас сложилась какая-то картина. В принципе, летать можно. Да, найден ряд проблем, часть из которых будет исправлена в течении нескольких следующих дней, часть известна производителю и находится в работе, некоторые же вещи, похоже, потребуют принятия серьезных решений производителем и полной переделки соответствующих узлов в будущем. После подготовки самолета к полету и запуска двигателей на экране светится штук 5 информационных сообщений о разных несоответствиях тому, что, по мнению самолета, должно быть. Вообще-то кабина экипажа спроектирована по принципу “dark cockpit” – т.е. при нормальной работе всех узлов никаких сообщений вообще не должно быть, но ладно, на данном этапе это нормально.

В довершение ко всему, к самолету прилагался файл с FAQ, где объяснялось, почему неправильная работа тех или иных систем пока является совершенно нормальной, и что делать в ряде случаев, когда чтение руководства по летной эксплуатации (РЛЭ) не дает ответа на возникший вопрос. Если честно, нас всех смутило больше сотни позиций в данном FAQ, но делать было уже нечего.

Первый полет решаем сделать прямо на аэродроме, где расположен завод производителя. Взлетаем, убираем шасси и далее минут 10 выполняем команды диспетчера, прежде чем он направляет нас на посадку. После первой посадки решаем, что в целях экономии времени уйдем на соседний аэродром, где движение посвободнее. Перелетаем туда и начинаем процесс освоения самолета. После того, как все пилоты попробовали основные маневры под руководством летчика-испытателя производителя, начинается процесс «наматывания кругов» — взлет, короткий полет по кругу, посадка и снова взлет. Таким образом каждый пилот должен сделать десять взлетов-посадок. Обычно на самолетах такого класса подобные вещи не практикуются – считается, что тренажера вполне достаточно для получения необходимых навыков, а летное время такого борта стоит очень дорого (если интересно – себестоимость около 5 тысяч долларов в час). К счастью, владелец понимает, что такой подход в корне неправильный, и принимает решение дать возможность пилотам прочувствовать реальный самолет.

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

И снова обучающее отступление. На самолетах с турбореактивными двигателями реверс тяги осуществляется путем выпуска специальных створок на двигателе, которые отклоняют часть исходящих газов вперед. В результате эти газы создают тягу, направленную назад, и помогают замедлить самолет. Реверс тяги является вспомогательной системой, даже расчет длины требуемой полосы при посадке делается без учета работы реверса. Так что его отказ сам по себе особых проблем не вызывает, но возникает очень серьезный вопрос – что именно случилось?

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

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

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

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

Я понимаю, что процесс заходит в тупик. Мысль о необходимости более длительного проживания в гостинице меня расстраивает (а переезжать в другую просто лень), и я начинаю напрягать мозги, хотя понимаю всю смехотворность моих попыток по сравнению с людьми, которые всю свою жизнь проработали в авиационной отрасли. Тем не менее, меня внезапно посещает идея. Я прошу подготовить самолет к вылету и обещаю продемонстрировать первый полет по кругу без возникновения ошибки, а второй – уже с ошибкой. В чем смысл, пока никому не говорю, но при этом слегка нервничаю – а что, если моя догадка неправильна, и я буду выглядеть идиотом?

Взлет, уборка шасси, набор высоты, переход в горизонтальный полет – все нормально. Представители производителя начинают посматривать на меня с интересом и подозрением. Ну, только бы вторая часть тоже прошла бы, как запланировано! Итак, снова взлет, набор высоты и до боли знакомый звуковой сигнал. Все, полдела сделано – по крайней мере, понятно, как воспроизвести проблему.

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

Имея под рукой уже довольно крепкую опорную точку, сотрудники производителя с утроенным энтузиазмом принялись за поиски неисправности. В ходе процесса, который подробно описывать не буду, появилась первая существенная деталь. Оказывается, система реверса тяги (TR) не ломалась сама, а принудительно отключалась по команде от FADEC.

Вот на FADEC стоит остановиться подробнее – ведь это уже прямо соответствует тематике сайта. Full Authority Digital Engine Control представляет собой специализированный компьютер, управляющий двигателем самолета. Для меня одним из самых впечатляющих параметров этой коробочки размером в пол кирпича является цена. Сказать, что устройство на вес золота – не сказать ничего. На мой взгляд, FADEC стоит раз в 100 дороже, чем должен, даже если принять во внимание все требования по надежности работы. Причем таких коробочек на каждом двигателе две, они работают по очереди, да еще и следят друг за другом в процессе работы, чтобы в трудную минуту (если одной из коробочек вдруг станет плохо) подставить товарищу плечо. Фактически, самолет просит FADEC произвести те или иные действия (запустить/остановить двигатель, установить определенную мощность и т.д.), а FADEC полностью (и довольно независимо от самолета) управляет необходимыми системами (стартер, топливный контроллер и т.д.), чтобы исполнить просьбу, если посчитает это возможным.

Так вот, по каким-то, все еще непонятным для нас, причинам FADEC при определенных условиях принудительно переводил TR в состояние отказа, причем мы знали эти условия в самом общем виде (взлет без последующей уборки шасси), но как-либо связать их между собой не могли. Чтобы разобраться в проблеме детальнее, пришлось обратиться к производителю двигателей. На завод, произведший двигатели, были отосланы лог-файлы с FADEC, и довольно быстро (хотя к этому моменту мы уже переехали в другую гостиницу) был получен ответ. Оказывается, одна из ветвей логики FADEC предусматривает проверку работы тормозов. Если во время проверки FADEC решает, что тормоза на какой-то стороне самолета работают плохо, то реверс на противоположной стороне отключается. Причем даже больше того – нам пояснили, что, по показаниям FADEC, колеса самолета после взлета замедляют свое вращение с разной скоростью, что и вызвало соответствующую реакцию FADEC. Если же шасси убрать сразу после взлета, то колеса автоматически затормаживаются довольно энергично, и FADEC не обнаруживает в этом месте никаких проблем.
Для проверки этой теории мы сделали еще один полет, в ходе которого шасси не убирали, но сразу же после взлета затормозили колеса вручную. В принципе, полет подтвердил выдвинутую теорию – при принудительном торможении все было нормально, без него – стабильно появлялся отказ реверса.

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

К этому моменту на аэродроме появился представитель производителя двигателей, которого я и решил попытать на предмет того, как именно FADEC решает, что с тормозами что-то не в порядке. После длительных консультаций с офисом, получением разрешений на раскрытие конфиденциальной информации и просто попыток беспредметно отмазаться, он, наконец, предоставил мне требуемую информацию.
Оказывается, FADEC отслеживает скорость вращения колес как бы скользящем временном окне длительностью несколько секунд. Наверное, проще пояснить на примере. Допустим, это временное окно равно 4-ем секундам. Пускай на 10-ой секунде полета скорость одного колеса была 20 оборотов в секунду. В таком случае, если начиная от 8-ой до 12-ой секунды полета второе колесо хоть в какой-то момент тоже вращалось со скоростью 20 оборотов в секунду, то все хорошо. Если же отдельно взятые скорости вращения колес за промежуток в 4 секунды не совпали ни разу, FADEC делает вывод о неисправности тормозной системы.

Объяснение было довольно логичным (на самом деле, оно намного сложнее, но см. примечание по поводу упрощения в самом начале статьи), но возник классический вопрос – что делать? Сотрудники производителя самолета попытались доказать, что у них все в порядке, но производитель двигателя на эти заявления особо не реагировал. Вообще была возможность подключиться к бортовой системе самолета, чтобы записать нужный лог-файл, но это требовало формального оформления испытательного полета со всем сопутствующим (куча бумаг, летчики-испытатели и т.д.), поэтому быстро реализовать такой вариант не было ни времени, ни желания.

Пришлось снова напрячь мозги и вспомнить одну деталь, которую я увидел, изучая месяцем ранее небольшой документ размером в одиннадцать с чем-то тысяч страниц (краткая выдержка их техдокументации по самолету). Дело в том, что определенную информацию можно было вывести на один из штатных дисплеев в кабине пилотов. Проблема была в том, что информация обновлялась в реальном времени (2-5 отсчетов в секунду), а анализировать ее нужно было вручную. Ничего, к этому моменту лично я уже был готов даже тайно подключиться непосредственно к FADEC. Однако обошлось без таких крутых мер, просто в ближайшем большом хозяйственном магазине были закуплены необходимые материалы, и крутыми специалистами производителя самолетов была сооружена конструкция, закрепившая iPhone перед одним из экранов в кабине. Убедившись, что видео с iPhone позволяет увидеть необходимую информацию, мы сделали полет, в ходе которого засняли показания во время возникновения ошибки.

Дальше была веселая ночь, где 6 человек, каждый со своего iPad, вводил информацию из выделенного ему временного интервала в Excel. Причем, для надежности, временных интервалов было всего три – над каждым интервалом работало по два человека. Кластерные технологии и распараллеливание мощностей принесло свои плоды, и на следующий день мы уже держали в руках красиво оформленный файл с обработанной информацией, наглядно показывающий, что все параметры со стороны самолета находятся далеко в допустимых пределах.

Данная распечатка произвела неизгладимое впечатление на представителя производителя двигателей, он взял у нас файл и ушел в никуда. В «нигде» он был около суток, после чего вернулся в компании еще двух помощников, которые и вынесли вердикт.

Прежде, чем я выдам великое откровение, что же именно стало причиной всей этой нервотрепки, предлагаю ознакомиться со статьей, рассказывающей, как сложно, долго и тщательно разрабатывается ПО для авионики (и, очевидно, почему такие разработки должны стоить ну очень много денег – приблизительно двести тысяч долларов за пол кирпича FADEC) — habrahabr.ru/post/144686

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

Еще раз – вместо того, чтобы давать временное окно для выравнивания скоростей колес, FADEC выдавал ошибку сразу же, как только в любой момент времени скорость колес отличалась больше, чем на установленную величину. И все это произошло потому, что в жутко сертифицированном по всем возможным и невозможным стандартам процессе разработки ПО (а ПО для FADEC разрабатывается по самому строгому варианту стандарта, или как там это называется) кто-то просто закомментировал часть кода, и это попало в готовое изделие.

Комментировать я это не буду, потому что цензурные слова подобрать не могу, а нецензурные стараюсь не использовать. Думаю, читатели сами смогут сделать для себя выводы…

P.S. Спрашиваете, ну а что дальше, как летать? А все очень просто – в FAQ появилась очередная строчка, которая советует не допускать свободного вращения колес после взлета дольше минимально необходимого времени, а в случае возникновения ошибки TR – сбросить потом ошибку после приземления, и спокойно летать дальше.

P.P.S. А производитель двигателей сказал, что они, конечно, немедленно выпустят обновленную версию ПО, только займет это год – полтора, так как такое ПО проходит через строгие и длительные процессы разработки и сертификации (и это не шутка).
Tags:
Hubs:
+256
Comments 150
Comments Comments 150

Articles