Comments 149
А вообще я за 100% математическую верификацию всего софта, который связан с критическими системами, у пусть погромисты вешаются, если писать нормально не умеют.
Математическая верификация не гарантирует защиту от целого ряда проблем.
Пока рано говорить о точных причинах в этом случае, но уже есть пару кандидатов от которых бы не спасла верификация:
- Ложные данные от датчика
- Плохой UX и документация для пилотов
Собственно, по известному случаю — датчиков у них два, и один из них давал неверные показания скорости. Система была настроена так что при разных показаниях она предполагала худший сценарий и начала реагировать соответственно. В случае первой неполадки пилоты разобрались что происходит и смогли заставить систему выполнять ручные команды, невзирая на то что с точки зрения показаний системы они были камикадзе. Во втором случае пилоты видимо не смогли или не успели принять правильное решение
Ведь в самолете помимо датчиков подверженных внешним воздействиям есть инерциальная система (акселерометры, гироскопы) и GPS.
тут инженеры боинг явно облажались.
Как с этим обстоит у Airbus? Они раньше начали внедрять компьютерные системы управления полетом.
Требования к верификации ПО — есть в стандартах. Использование инструментов статического (наподобие PVS-Studio) и динамического анализа кода — предусмотрено. Использование автогенерации кода проверенными инструментами, применение стандартов языка (MISRA C и т.п.) — существует бесконечно длинный список требований к разработке безопасного ПО, которые можно и нужно применять.
Те, кто умолчал/скрыл косяки — те виноваты, потому что есть вполне четкие процедуры на такие случаи. Не все, через кого проходил этот софт, несут ответственность, и это нормально. Потому что мы — люди, и даже при всех принятых мерах безопасности, существует вероятность ошибки. Наказывать за случайность? Извините, это бред. Стругацкие метко высказались на этот счет:
… на следующем листе был приказ об отдаче под суд сотрудника группы научной охраны Х.Тойти в соответствии с директивой «О привнесении порядка» «за злостное потакание закону больших чисел, выразившееся в поскользнутии на льду с сопутствующим повреждением голеностопного сустава… Сотрудника Х.Тойти предлагалось впредь во всех документах именовать ПРОБАБИЛИТИКОМ Х.Тойти...
По софту не скажу, но на производстве и при проектировании систем управления имеется процедура HAZOP, которая должна была выявить данные недостатки системы и свести риски к минимуму.
А системы математической верификации кто по-вашему будет делать? И кто гарантирует что эти системы не без багов?
У меня в Боинге работал знакомый. По его словам, там любой инженерный результат кладется в репозиторий только вместе с отсканированной подписью исполнителя (сейчас, наверное, ЭЦП там уже), так что стрелочника найти и посадить просто, было бы желание. Но Боинг действительно понимает, что даже в случае условного срока получит огромный отток инженеров, поэтому любой ценой переведет проблему в область сбоя оборудования или софта, типа диск сбойнул, конфиг накрылся, и система контроля версий взяла по дефолту первый коммит, а не последний (это бред, конечно, но оправдания Боинга будут примерно в таком ключе).
Я в свое время писал статью про безопасность софта для критических применений, там есть более подробные объяснения.
офф Шутка на хабре 2010 года материализовалась.
«Плохой код убивает»
habr.com/ru/post/309388
И это не конкретный программист, это общий инженерный подход к разработке, при котором подсистема, непосредственно управляющая аэродинамикой самолёта, получала критичные для неё данные всего с одного датчика — при том, что в 737 этих датчиков два.
Ну и дальнейшая цепочка про то, что пилоты не понимали, что происходит, и вслепую воевали с самолётом, что вытянуть установленный этой системой на пикирование стабилизатор рулями оказалось сложно/невозможно, что всё это происходило во время взлёта, etc.
После катастрофы индонезийского самолета выяснилось, что на 737MAX -8/ -9 в целях улучшения характеристик лайнера при ручном пилотировании на больших углах атаки была внедрена система MCAS – Maneuvering Characteristics Augmentation System. Появление этой системы на MAX -8/ -9 было обусловлено влиянием новых, больших по размеру, двигателей на аэродинамические характеристики самолета повышенных углах атаки, близких к углам сваливания.
Выглядит весьма удивительным, но Боинг не стал внедрять «проверку на вшивость», поэтому дефектный датчик, сдуру посылавший в систему данные о запредельных углах атаки, был принят MCAS на веру, и она, повинуясь коду, заложенному в нее эффективными программистами, нежно и печально начала перекладывать стабилизатор на пикирование, как только появились прочие условия для ее работы — ручное пилотирование и убранные закрылки, создав реальные проблемы и без того взвинченному экипажу. Который, замечу, выполнял очень ранний вылет и, разумеется, не успел нормально выспаться.
Замечу, что до фатального полета индонезийского борта аналогичная ситуация случилась на том же самом самолете, но с другим экипажем. Те справились, применив стандартные действия по памяти, которые предписывается знать наизусть и выполнять в случае непроизвольной перекладки стабилизатора.
Герои? Частично. После успешной посадки пилоты почему-то сделали записи в бортовом журнале: «разногласие в показаниях высоты» и «горит табло FEEL DIFF PRESS» (разница давлений в системе имитации усилий на штурвале). О тряске штурвала, о разнице в показаниях скорости, о своей отчаянной борьбе с перекладывающимся стабилизатором они не написали.
Естественно, это не помогло инженерам найти глобальную причину происшествия. Они выполнили тесты, которые предписывается выполнить в тех случаях, о которых записали пилоты и с чистой совестью выпустили дефектный самолет. Итог мы знаем.
737MAX, MCAS и рекомендации Боинга. Все ли идеально?
А это говорит о том, что в систему не заведена самодиагностика оборудования по косвенным признакам и она не может отсекать устройства, данные которых близки к граничным состояниям, когда на дублирующем всё в порядке (отсекает наоборот нормальный).
Что касается датчика угла атаки, то они обычно временно выходят из строя по вполне понятным причинам, и они с высокой вероятностью ОБА покажут неверные данные, может даже и одинаковые. Как в таком случае должна реагировать самодиагностика?
Боинг А380, посреди океана… компьютер верно определил утечку топлива, но пилоты посчитали это сбоем… и были в этом уверены вплоть до остановки первого двигателя.
«Полет с пустым баком» 1 сезон, 3-й эпизод Air Crash Investigation.
В Гимли как раз компьютер был в неведении из-за неверно введённых данных и нерабочего топливомера. В этом же самолёте компьютер и датчики все были исправны и до самого конца всё правильно показывали, только пилоты не верили.
Как минимум можно добиться того, что бы система понимала, что самолету не угрожает сваливание и она не пыталась его угробить, только потому что один из датчиков сбоит.
Понимаете… гироскоп никак не сможет определить реальный поток воздуха набегающий на самолёт. Поток при помощи гироскопа можно определить только при одном условии — воздух неподвижен относительно земли и без турбулентностей. А такого не бывает почти никогда.
Весь вопрос в абсолютных значениях — насколько этот угол атаки может отличаться от направления «вперед», какие углы являются критическими, в каких пределах/условиях можно пилотировать самолет без реальных показаний угла атаки?
Просто скорее всего сбойный датчик давал показания сильно отличающиеся от реальности.
Вообще система управления самолетом в идеале должна иметь какую то цифровую модель полета, постоянно обновляемую на основе показаний датчиков. Тогда будет четкое понимание происходящего с самолетом.
Маленький самолёт можно пилотировать и без этого датчика, а большой уже не обойдётся.
Сбойный датчик… нет не так, датчик скорей всего не был сбойным. Он просто временно ПРИМЁРЗ в одном из положений это как бы вполне предсказуемая особенно на взлёте ситуация — взлетаем в облако переохлаждённого пара и он мгновенно намерзает на всём чём может, потом лёд быстро сдувает за минуту-две. Система начала выравнивать самолёт, но датчик упорно показывает что нос задран, вот она и дожимает до упора.
Зачем системе цифровая модель полёта? Она в той или иной степени существует в виде связей между датчиками и органами управления собственно для самого управления, а модель нужна скорее для предсказания поведения. Но это должен быть сложный алгоритм, и если он применяется для управления самолётом или принятия критичных решений то… такую модель нужно сертифицировать. А кому это надо если она не улучшает характеристики полёта? И только немного влияет на исход некоторых аварийных ситуаций, которые возникают раз в 100 лет…
Знаешь какой уровень аварийности заложен для АЭС? 10E-8 проектных аварий в год на энергоблок(хотят или вроде бы уже установили требования на уровне 10E-9). Учитывая количество энергоблоков в мире, вероятность аварии даже больше чем для самолёта. тут уже чистая экономика — если внедрение системы будет дороже репутационных потерь и выплат пострадавшим, то у системы нет шансов.
Ночью горизонта не видно, в облаке темболее.
да, я это понимаю, но насколько я знаю, большинство аварий происходит на взлете или посадке. А тут уже и не такой густой туман может быть, и ночью фонари обычно есть.
По поводу скользкости ИИ да, я знаю. Но что-то такое можно было бы делать поверх уже существующей системы.
большинство аварий происходит на взлете или посадке. А тут уже и не такой густой туман может быть, и ночью фонари обычно есть.
Я конечно не пилот, но посадка «по приборам» может осущетвляться при довольно паршивой видимости. ЕМНИП вплоть до 30 метров по высоте, если класс аэродрома позволяет. Покрайне мере я уже так летал, когда в илюминаторе была нулевая видимость из-за облаков/тумана (короче дымка непрозрачная) и полосу я увидел за пару секунд до посадки.
1. Организационная. Пресловутая MCAS была вставлена в самолет практически тайно. До катастрофы в Индонезии никто о ней из пилотов не знал. По-крайней мере в документации ее описания не было. Информация появилась только потом. И тут сразу возникает вопрос — а какие в новом самолете есть еще неописанные системы, влияющие на его жизнеспособность? Одного этого, на мой взгляд, должно быть достаточно для приостановки летного сертификата.
2. Техническая. Во времена многократного дублирования критически важная система MCAS работает базируясь на показаниях одного датчика. Это уже весьма странно. Хуже того, /далее не уверен наверняка, но такое ощущение сложилось после обсуждения Индонезии/ — информация в системе о неисправности датчика появилась, но MCAS все равно продолжила работу. Если бы это происходило в богадельне поменьше и попроще чем боинг, я бы решил что к уже разработанной платформе решили добавить небольшую фичу, кое как ее проверив и не думая, как она влияет на систему в целом.
3. Коммерческо-этическая (бонусная). Как выяснилось, имеется специальная индикация, которая может указать на проблему MCAS, однако она поставляется в виде отдельной платной опции. У некоторых компаний она была заказана, у компаний третьего мира — нет.
В общем все это очень печально. Хорошо если до летнего сезона разберутся…
критически важная система MCAS работает базируясь на показаниях одного датчика… информация в системе о неисправности датчика появилась, но MCAS все равно продолжила работу
При разработке авионики требований по надёжности не меньше, чем у «космоса». То, что вы пишите — это вообще беспредельный бардак! Налицо падение уровня инженерной компетенции, наверняка помноженный на «эффективный менеджмент».
Чем больше я про нее читаю, тем больше я убеждаюсь, что это классический «костыль».
Им нужно было пройти сертификацию с новыми двигателями, которые мощнее, и вынесены «более вперед». Из-за этого повышалась вероятность сваливания при дачи полной тяги. И тут они типа подстраховались «если чо, мы нос подопустим, и никто не свалится».
А то что нос стал опускаться когда не надо… ну… «ой, как интересно получилось!»
Немного не уяснил про тягу и сваливание. Если руль высоты зафиксирован, выше нос при большей тяге идти не должен.
такая пилотская аксиома.
в частности, позволяет управлять самолетом при заклинивании руля высоты.
Но мне казалось, оно не с этим связано. В субботу спрошу у инструктора как у Пайперов с этим дела обстоят :)
И действительно нашёл такое объяснение — What is the Boeing 737 Max Maneuvering Characteristics Augmentation System?
By moving the engine slightly forward and higher up and extending the nose landing gear by eight inches, Boeing eked another 14% improvement in fuel consumption out of the continually tweaked airliner.
That changed, ever so slightly, how the jet handled in certain situations. The relocated engines and their refined nacelle shape1 caused an upward pitching moment — in essence, the Max’s nose was getting nudged skyward. Boeing quietly added a new system “to compensate for some unique aircraft handling characteristics during it’s (sic) Part 25 certification” and help pilots bring the nose down in the event the jet’s angle of attack drifted too high when flying manually, putting the aircraft at risk of stalling, according to a series of questions and answers provided to pilots at Southwest Airlines, the largest 737 Max operator reviewed by The Air Current.
The Maneuvering Characteristics Augmentation System (MCAS) was designed to address this, according to Boeing engineers and pilots briefed on the system, now at the center of the inquiry into the crash of Lion Air 610, a brand new Boeing 737 Max 8. MCAS is “activated without pilot input” and “commands nose down stabilizer to enhance pitch characteristics during step turns with elevated load factors and during flaps up flight at airspeeds approaching stall.”
flying-elk.livejournal.com/46084.html
Из-за этого повышалась вероятность сваливания при дачи полной тяги. И тут они типа подстраховались «если чо, мы нос подопустим, и никто не свалится».То есть сваливание можно компенсировать опусканием «носа»?
сваливание — штурвал от себя
Грубо: Сваливание происходит из-за недостатка скорости. Опускаем нос вниз — разгоняемся.
Грубо: Сваливание происходит из-за недостатка скорости. Опускаем нос вниз — разгоняемся.Я понимаю, что такое сваливание, просто для большого пассажирского самолета возможен вариант выхода из сваливания за счет чуть ли не пикирования? Хватит ли высоты?
Если у нас сильно задран нос, происходит быстрая потеря скорости. Если этот процесс не остановить, произойдет сваливание.
А если нос чуть приопустить, то потрея скорости прекратится и сваливания не будет. При этом опускании нос будет все еще выше горизонта, и самолет продолжит набор высоты, но с меньшей вертикальной скоростью.
Первая часть квеста: Набираем скорость на которой крыло может удерживать вес самолета.
А затем набираем высоту стараясь скорость не уронить ниже этой границы.
Эта система как раз и нужна была затем, чтоб нос сильно не задрать. Но перестарались.
Vy — скорость на которой идет самый быстрый набор высоты
Vx — скорость на которой набор высоты максимален по отношению к пройденной дистанции
Vs — скорость сваливания (и варианты Vs0, Vs1 — с закрылками/без)
Vs < Vx < Vy
Обычно набор высоты делается на скорости Vy.
Если надо обогнуть препятствие можно уменьшить скорость до Vx.
Ни при каких обстоятельствах нельзя замедляться до Vs.
Выдерживать скорость можно руками, можно автопилотом.
Вообще говоря, крылу абсолютно всё равно с какой скоростью мы летим. Точнее не крылу, а потоку воздуха который крыло огибает.
Этот поток воздуха может крыло огибать ламинарно (если он движется более менее параллельно хорде), а может срываться в турбулентность. Это называется «срыв потока».
Если у вас есть двигатель с огромной мощностью вы можете лететь хоть вертикально вверх. Поток воздуха при этом будет параллелен крылу и срыва не произойдет. Поэтому «угол набора» никого не интресует. Интересует угол между направлением потока воздуха и хордой крыла. Он называется углом атаки.
Вот за этим углом эта система MCAS и следит.
Следит, да, из предположения что пилоты могут прозевать скорость и выйти в опасный режим.
Неверно. Сваливание происходит при превышении критического угла атакиНо если не будет скорости, то никакой угол атаки не поможет.
Например для аирбаса есть четкие рекомендации при отказе трубки пито (и отсутсвии показателей скорости) — вывести двигатели на нужный режим и выдерживать постоянную высоту. По датчику угла атаки можно определить скорость. И наоборот, если отказал датчик угла атаки по тангажу и скорости можно определить угол.
Так что дублирование в самолете реализуется не тупым втыканием такой же системы рядом а добавлением другой системы работающей на других принципах.
Скорость можно определить на крайняк от датчиков гпс или по радару, или их выдаст инерциальная или доплеровская система. Высоту можно высчитать зная путевую скорость и имея показатель скорости если остались только гпс и трубка пито
Свалить можно. Но вот необходимые перегрузки для такого «можно», обычно не сочетаются с пассажирскими перевозками.
И да, без порывов ветра сравнимых с Vx-Vs.
критически важная система MCAS работает базируясь на показаниях одного датчика
Очень хотелось бы увидеть первоисточник этой информации…
Глядя на закон о Фейковости становится интересно — авторы статей не боятся попасть на деньги? Ведь в заявлении не сказано до обновления ПО.
У пилотов возможность была. В Индонезии (по Эфиопии данных пока нет) в полете предшествующем катастрофе все спокойно отключили, отписав техникам «чо это было за нафиг?». Техники повертели датчики и сказали «вроде работает», и отдали самолет следующему экипажу.
Следующий экипаж обнаружив проблему старательно пытался поведение этой системы пересилить. Эти самые 10 раз. А вот до отключить у них дело не дошло…
Что касается ручного управления: они как раз в ручном режиме и были. MCAS пыталась им помочь (ну как ABS на автомобиле). Самое смешное что в режиме автопилота эта система не работает.
Потом включается снова.
Поэтому и появились те самые 10 раз.
Пилот тоже может управлять триммером.
Поэтому если пилот тронул триммер, то MCAS «замирает» на 5 секунд (типа, «можт пилот и сам знает что делать?». через 5 секунд — «а нет, не знает»).
Но есть отдельный рубильник, который вырубает всю автоматику которая умеет рулить триммером.
Инструкции пилотам что делать если стабилизатор убёг, были давно.
Но вот то, что причин, для этого убегания, стало чуть больше, они умолчали.
И ещё, возвращать стабилизатор из крайнего положения в нейтраль вручную — ДОЛГО. Может тупо не хватить времени.
Система отключается. Ализар видимо постеснялся переписывать Медузу, на которой есть гораздо более подобная статья об обоих происшествиях (на самом деле происшествий уже было три). А может сознательно умолчал, хайпа в обсуждениях ради.
denokan.livejournal.com/204046.html
И вообще интересно пишет.
Аэрродромная служба обслуживания
TL;DR — Если Боинг 787 проработает дольше 248 дней подряд — питание отрубится, даже если он при этом в воздухе летит.
231 это 2 147 483 648 десятков миллисекунд.
Совпадение?
Не думаю…
This condition is caused by a software counter internal to the GCUs that will overflow after 248 days of continuous power.
Или вы про вероятный тип данных счётчика? :)
В 2015 году Боинг выпустил вот такой интересный документ — s3.amazonaws.com/public-inspection.federalregister.gov/2015-10066.pdf
TL;DR — Если Боинг 787 проработает дольше 248 дней подряд — питание отрубится, даже если он при этом в воздухе летит.
Мне это напоминает стикер от производителя, приклеенный под какой то табуреткой.
«Срок годности один год.»
Самолет упал в нигерии.
* через пару часов, все боинги в китае сели на землю.
* еще через несколько — тоже самое сделала европа
* еще через парочку — британия.
Еще через день, в новостях сша, сурьзные дяди начали вещать «у нас есть все основания, для выношения на рассмотрения конгресса вопроса об том что надо что-то делать».
Демократия, однако )
* некоторое время тому, законодательно (на уровне сената) разрешили «крупным компаниям типа боинга», проводить все сертификации, включая сертификации по безопасности, своими силами.
* «с целью понижения стоимости», боинг немного ускорил процессы проверок, и немного сократил штат проверяющих.
Так что я конечно дико извеняюсь, но это не баги, и не просчеты девелоперов/инженеров/ещекогототам. Это просто оптимизация расходов, которая смогла.
Это более похож на уязвимость нулевого дня для встроенного костыля МСAS.
Если 3 года летал, то и на тестах могли бы пропустить
Но больше смущает не осведомленность пилотов о новой фиче. Ибо эта не осведомленность — это результат не апдейта документации, и не апдейта сертификаций которые те пилоты должны проходить. И наличие в самолоте чего-то, о чем пилот не в курсе что с этим делать… Ну в общем, это не правильно.
В имеющейся на борту ситуации, а именно (Unreliable air speed), которая уже зафиксирована, сменилась индикация МФД у пилотов, сработал соответствующий алярм — оставлять работать автоматику действующую на основе показаний одного из элементов системы определения этой самой Air Speed (а что там сломалось мы не знаем) и вносящую коррективы в управление ВС это серьезный конструкторский просчет, программисты и баги ПО тут совсем не причем.
Все полёты Boeing 737 MAX прекращены до обновления самолётного программного обеспечения