Какие процессоры и языки программирования используются в новых системах управления полетом авиалайнера?

Построены ли сегодня новые системы с теми же процессорами, языками программирования и программным обеспечением для разработки, что и 20 или более лет назад?

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

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

Меня интересуют примеры из любых бортовых систем (но не, например, бортовых развлечений).

В рамках этого вопроса: склонна ли отрасль обновлять свои продукты посредством постепенных обновлений микропроцессоров и языков программирования, которые она принимает, или она склонна к переходу на новые технологии раз в поколение? И есть ли существенные различия в том, как к этому подходят производители авиакомпаний (в отличие от военной/авиационной промышленности общего назначения)?

Ответы (2)

Примечание. Я больше сосредоточился на изменениях в авиационном оборудовании и программном обеспечении, чем на том, что используется в настоящее время, поскольку вопрос, связанный с языками программирования, все еще актуален для «новых» самолетов. Я не хочу дублировать этот вопрос или ответы на него. По моему мнению, C++, C# и Ada, вероятно, будут доминирующими языками программирования для авионики, по крайней мере, в следующем десятилетии.

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

Так что же изменилось на практике?

Если авионика проходит через обновление поколения (например, от ЭЛТ до ЖК-экранов), все изменения должны стоить затрат, поэтому обычно мало что меняется. Может процессор, но точно не язык программирования. Например, G1000 отсутствовал в течение 12 лет, прежде чем было выпущено следующее поколение аппаратного обеспечения (хотя в то же время они выпустили множество обновлений программного обеспечения для аппаратной совместимости, синтетического зрения и т. д.).

Точно так же Avidyne Entegra отсутствовала в течение пяти лет и постоянно добавляла основные функции, такие как погода по каналу передачи данных и подход LPV, прежде чем, наконец, обновить аппаратное обеспечение в выпуске 9 в 2009 году. Самолеты Falcon, такие как Falcon 900, имели обновление программного и аппаратного обеспечения для своей авионики в 2011 году . , но это обновление было основано на семействе аппаратных и программных средств Primus Epic, первому поколению которого уже исполнилось 9 лет. Я считаю, что все 900-е все еще работали на старом оборудовании 1996 года до обновления 2011 года. На другом конце спектра от этих медленных обновлений находится военная система JSF, разработанная таким образом, чтобы ее можно было легко обновлять каждые несколько лет (но они не говорят, как часто).

Почему бы не делать более частые обновления?

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

Инженер из Rockwell Collins сказал то, что применимо ко всей авионике: «В прошлом мы изо всех сил пытались уместить все, что нам нужно, в размер процессора и скорости, которые у нас были, и как получить все эти биты через интерфейсы, которые у нас были. Процессоры, которые у нас есть сейчас, и оптоволоконные интерфейсы, это больше не проблема... Теперь проблема заключается в том, как управлять и разрабатывать хорошее, безотказное программное обеспечение, а также тестировать все задействованные строки кода. Итак, теперь, когда у нас есть вся обработка и пропускная способность, которая нам нужна, мы должны убедиться, что можем использовать ее, а не загонять себя в угол».

Верификация — один из важнейших движущих факторов (и затрат) при использовании процессора и языка программирования. Все аппаратное и программное обеспечение должно иметь уровень безопасностиприкрепленный к нему, при этом наиболее важные функции (например, авионика для автоматической посадки) считаются «Уровнем А», что означает, что такой отказ авионики может иметь катастрофические последствия. Чтобы соответствовать строгим требованиям безопасности к программному обеспечению уровня А (что часто составляет один такой отказ на 10^9 летных часов), программное и аппаратное обеспечение необходимо тщательно протестировать, чтобы гарантировать, что ничего не пойдет не так. Это включает в себя покрытие каждого условия в каждой строке кода. Большинство инструментов, разработанных для работы с вашим языком программирования и архитектурой программного обеспечения, также нуждаются в формальной проверке (обычно называемой «квалифицированной»). Вдобавок ко всему, необходимо провести дорогостоящие летные испытания, чтобы оценить любые изменения. Это создает большую инерцию и означает полную перестройку существующего продукта или создание нового продукта с нуля только для того, чтобы получить "

Как насчет поддержки новых функций процессора?

Виртуализация (позволяющая различным ОС действовать так, как будто они работают сами по себе, но на самом деле работают с прослойкой между собой и голым оборудованием) и многоядерная обработка теперь поддерживаются некоторыми ОС реального времени для коммерческих готовых процессоров. . Они должны соответствовать стандартам DO-332 и других материалов. Согласно моему тексту от 2013 года, это все еще находится на стадии изучения, и ни одна авионика с такими характеристиками не была сертифицирована. Основная проблема заключается в том, что многоядерные процессоры не просто имеют больше функций, но и имеют больше функций, которые не всесторонне задокументированы или протестированы. Для получения дополнительной информации о проблемах с использованием многоядерных процессоров см . CAST 32 FAA и эту презентацию .

" Виртуализация (где разные процессы действуют так, как будто они работают сами по себе, но на самом деле работают на виртуальной машине) "... гм, определение, которое я даю для виртуализации, таково: ЦП, память, хранилище, ввод-вывод и сеть. кажется, что они принадлежат и используются исключительно ОС, в то время как на самом деле несколько экземпляров ОС работают на одних и тех же ресурсах, которые виртуализатор разделяет между ними. Виртуализация может быть аппаратной или программной .
Спасибо @CodyP за этот подробный и информативный ответ на вопрос. Здесь есть много вопросов, которые заслуживают более пристального внимания, но два из них выделяются: 1) multi-core processors [have] features that are not comprehensively documented or testable- другими словами, будущие поколения ЦП могут оказаться совершенно непригодными для критически важных аэрокосмических приложений! 2) может наступить время, когда микропроцессорное оборудование, на котором построены эти очень консервативные системы, просто станет недоступным - не станет ли это триггером для перестройки программного/аппаратного обеспечения с нуля?
@mins Спасибо за улов!
Всесторонне документированное или тестируемое означает наличие внутренних скрытых переменных и не полностью описанных функций. Вероятно, в конечном итоге стоит дополнительная сложность проверки для использования многоядерных процессоров. В худшем случае вы можете отключить ядро. Однако не забывайте, что 1) Мы говорим о встроенных процессорах, а не о настольных или мобильных процессорах, поэтому это другой рынок, и поэтому вы увидите, что используются разные процессоры 2) Даже рынок бытовой электроники сам по себе очень разнообразен. В конце концов, Apple до сих пор ставит двухъядерные процессоры Apple в iPad.
Для виртуализации главная проблема заключается в том, что чем больше вещей вы запускаете на одной машине, тем больше вы создаете себе «единую точку отказа». Когда что-то ломается в самолете, нам нравится избыточность и независимость системы: чем меньше вещей ломается, когда ломается что-то еще, тем лучше!
@JonStory Я не уверен, насколько виртуализация влияет на анализ единой точки отказа, но я могу предположить, что при правильной реализации это не будет сильно отличаться от текущих IMA, где вы можете параллельно выполнять техническое обслуживание и летать по проводам. на одной карте. Единая точка отказа устраняется наличием нескольких отдельных таких компьютеров. Однако виртуализация ЦП не была разработана с таким же надежным разделением, которое мы используем в программном обеспечении для авионики, поэтому разделение было бы проблемой.
Да, это определенно возможно сделать - как и в любом другом случае, у нас может быть только две... просто вы накапливаете больше в одной системе: это отлично подходит для сокращения затрат, но не обязательно идеально подходит для критически важной с точки зрения безопасности надежности, где «Каждая система делает одно, все одно и ничего, кроме этого» часто более полезно. Это, безусловно, может быть управляемым риском, но, тем не менее, это риск.
Проголосовали против, потому что, хотя это подробный ответ, он на самом деле не отвечает на исходный вопрос о процессорах или языках программирования.
Определенно не C#, я думаю, вы имеете в виду простой C. C# — это сборщик мусора, чего вы определенно избегаете в системах реального времени.

На выбор языка программирования и процессора для каждого продукта влияет множество факторов, некоторые из которых:

  • Общее назначение программной системы
  • Выбранный уровень гарантии проектирования (AE)
  • Аппаратные ограничения продукта
  • Опыт компании с языком
  • Доступные инструменты разработки
  • Доступные инструменты проверки

Я считаю, что наиболее распространенными языками, используемыми в системах, критически важных для безопасности полетов, являются C и Ada, а C++ получает все большее распространение в последние 10 или 15 лет.

Процессоры могут варьироваться от простых 8-битных микропроцессоров SO8 до PowerPC и многоядерных процессоров x86 или ARM System on Chips. Электронное оборудование, такое как PLD и FPGA, также становится популярным для определенных рабочих нагрузок.

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