Вообще говоря, для чего используется язык программирования в авиации (ATC Radio, Radar, ILS, Auto-pilot и бортовая авионика)?
- Существует ли стандарт, применяемый ИКАО?
- Использует ли каждый производитель самолетов язык программирования, который им нравится, пока он надежен и проходит тестирование?
Я помню, как смотрел документальный фильм на YouTube в прошлом году об авиации, и он сказал что-то о ЕС, после Второй мировой войны, начал создавать стандарты для авиационных систем внутри Европы.Я свяжу видео, если смогу его найти
Нет никаких языковых рекомендаций или требований, кроме того, что разумно, учитывая требования проверки в различных стандартах (например, DO-178B/C). Для самых высоких уровней гарантии проектирования сгенерированный код должен быть проверен на уровне кода op, чтобы гарантировать, что известные ошибки процессора не вызываются. Вам также придется проверить каждую часть каждого условия, как истинную, так и ложную стороны, и убедиться, что никакие инструкции по прыжку не приведут вас туда, где вы не ожидали, что это произойдет.
По этим причинам три больших языка, используемых сегодня во встроенной авионике:
- C++ (как лучший C. природа OO часто используется только экономно. Такие вещи, как полиморфизм, слишком дороги для проверки)
- Ada (возможно, Вам это не понравится ,но тонна текущей авионики написана в Ada и в настоящее время поддерживается и обновляется новыми функциями)
- C — как близко к оборудованию, как вы хотите получить и по-прежнему быть очень продуктивным (не намереваясь оскорблять тех, кто продуктивен в чем-то другом)
Ассемблер часто используется для конкретных нужд, но он не будет использоваться в большей степени, чем один из вышеупомянутых языков.
Что делает эти языки идеальными для авионики, так это то, что они относительно близки к аппаратной структуре и структуре памяти, а не слишком абстрактны. Их инструменты зрелы и хорошо известны. Люди имеют многолетний опыт сертификации программного обеспечения, написанного в них. И есть много программистов, которые могут быстро ускориться в них (да, даже Ada).
Программное обеспечение, не относящееся к безопасности полетов, как на борту, так и вне самолета, будет написано на любом из больших языков дня: Java, C#, VB, C, C++, Python, Perl, Ruby и т. д.
iPads становятся полезными внутри кабины и одобрены в ограниченных ситуациях. приложения iOS написаны на Objective-C, C, C++ и все чаще Swift (новый язык Apple).
Исторически Фортран использовался очень часто. Пример: X-31.
SPARK все чаще заменяет Ada, поскольку он более надежен и удаляет много двусмысленностей Ada.
Очень важным компонентом стека является аппаратное обеспечение и операционная система.Аппаратное обеспечение обычно предназначено для работы с операционной системой, которая работает в режиме реального времени. Обеспечение детерминированной реакции операционной системы на прерывания, которая обеспечивает обработку уведомлений в рамках одной из нескольких моделей различных уровней гарантии обслуживания. Понимание аппаратного обеспечения и комбинации операционной системы (только аппаратное обеспечение без ОС) важно для обеспечения наилучшего выбора и практики разработки программного обеспечения.
Насколько я знаю, нет директивы, на каком языке использовать. У вас есть рекомендации по тестированию и сертификации программного обеспечения, но, что касается этих рекомендаций, ни один язык не является предпочтительным, это выбор дизайна.
На сегодняшний день, в моем (ограниченном) опыте работы инженером/программистом, я в основном видел, что предпочтительны не объектно-ориентированные языки, поскольку они уменьшают объем необходимого тестирования. Обычные аргументы, с которыми я столкнулся, в основном касаются явного управления памятью в часто ограниченных ресурсами средах.
Все верно, но Ada очень распространена в существующей авионике, потому что она была разработана с учетом проверки. Однако новая разработка отходит от этого.
Стоит отметить, что не только ваш выбор языка является проблемой, но и ваш компилятор. Часто компиляторы имеют известные ошибки,и вы должны быть осторожны, чтобы избежать или обойти эти проблемы.
non-OO уменьшает испытание? Первый… OO был частично введен для улучшения тестируемости кода.
@jwenting учитывая рекомендации, связанные в ответе, да.
Не oo уменьшите тест, когда вам нужно проверить код сборки. ОО сборки гораздо сложнее расшифровать.
Предпочтение эксперта для критических для безопасности систем, которые я когда-то слушал, было
- Ад
- C со стандартом программирования (например, Misra-C в автомобильной промышленности).
Он определенно предпочитал аду Си.
Это объясняет все о компьютерных системах Boeing 777: http://archive.adaic.com/projects/atwork/boeing.html
Honeywell должен был разработать основные средства управления полетом кабины в двух проекты, информационная система управления самолетом Boeing 777 и свои данные по Воздуха / инерциальная система отсчета. Для этих проектов Honeywell купил DDC-I, Inc.система компилятора Ada, использующая ее в качестве интерфейса источник для символического отладчика Honeywell. Обе компании работали вместе в течение полутора лет, чтобы построить окончательный отладчик компилятора и весь бэк-энд, ориентированный на передовые микро устройства (AMD) 29050 микропроцессор. Согласно недавнему телефонному интервью Джефф Грисон, руководитель проекта Honeywell для проекта 777 Инжиниринг, компании » смогли встроить в компилятор много функций оптимизации, характерных для нашего оборудования.»
Hydro-Aire выбранные инструменты разработки программного обеспечения Ада Алсис для управления тормоза системный проект. Поставщик использовал кросс-компиляторы AdaWorld с Умный исполнительный и сертификационный пакет для обеспечения встречи в режиме реального времени и требования FAA. Компиляторы размещены на Hewlett-Packard HP 9000/300 платформ; они предназначались для микроконтроллера Motorola 58333, создание Hydro-Aire одной из первых компаний, использующих новый чип.
Каждый Система управления тормозами 777 включает в себя два микроконтроллера Motorola запрограммирован полностью в аде. Гарри Хансен, менеджер Hydro-Aire Software Engineering сообщила, что » мы находим Ada отличным языком для разработки приложений реального времени.»Процессоры управления встроенный тест (бит) и функции автоматического тормоза. Бит включает в себя и он-лайн интерфейс к центральному компьютеру обслуживания и автономная возможность обслуживания. Автоматический тормоз прикладывает правильное количество тормозного давления во время посадок и применяет максимум количество давления — без причинять дуновение-вне автошины — во время прерванные взлеты. Дополнительно, система включает оборудование и програмное обеспечение для того чтобы предотвратить скиды, датчики и датчики к внешнему системы, и гидровлические клапаны.
Sundstrand тоже выбрал компилятор из Alsys, Inc. (теперь Thomson Software Products, Inc.). Работает на ПК хост, он сгенерировал код, предназначенный для микропроцессора Intel 80186. Этот Certifiable Small Ada Run Time (CSMART) исполнительный код, который взаимодействует с языком находится внутри контроллера времени выполнения и, поэтому пришлось протестировать и проверить. Это было крупное предприятие, но не долгосрочное неудобство. «Ada продолжает оставаться нашей базой — язык будущих электрических систем, — сказал Теске, — по причинам стоимость и эффективность. Теперь мы можем повторно использовать код. Мы вытаскиваем некоторые куски программного обеспечения самолета и положить их в новые проекты.»
В недавнем телефонном интервью старший инженер-программист Malkit Rai, кто возглавил усилия по проекту Sundstrand 777 electrical power, согласился с важностью поддержки Ada для повторного использования. Ada имеет постоянно замененный язык магазина предыдущий высокопоставленный, PLM, который был разработан Intel и основан на PL/I. » От десяти до 15 процентов 777 система производства электроэнергии главного канала уже в повторном использовании, — сказал он. Два новых проекта для бизнеса Gulfstream V самолет и вертолет Команчей, смогли интегрировать Sundstrand’s библиотека общих универсальных пакетов, написанных в Ada для 777.
В фактически, 80 000 строк кода Sundstrand power systems были в сами себя повторно используют от 10 до 15 процентов. Небольшое встроенное программное обеспечение размер доказывает, что Ada хорошо подходит для проектов до 100 000 линий кода, а также для больших усилий. Управление каютой 777 Система, например, модуль связей установленный на 777’s задние сиденья и предлагает пассажирам различные услуги и только 70 000 строк.
Создание новой архитектуры
Для сравнения, информационная система управления самолетом Honeywell (AIMS) проект состоит из крупнейшего центрального компьютера jetliner; он запускает 613 000 новых строк кода (определяется как body точка с запятой), занимая 15,656 килобайт (КБ) дискового пространства и 4,854 КБ оперативной памяти (ОЗУ). При избыточности программное обеспечение работает 46,191 КБ и 10,732 КБ оперативной памяти. Многопроцессорная стойка система, цели заменила много из лини-меняемых блоков и сокращение аппаратной и программной избыточности.
2 коробки целей регулируют 6 основных дисплеев полета и навигации: 2 комплекта расположены внутри перед капитаном и вторым пилотом, чтобы они могли двигаться от одного место к другому, и 2 центральных набора параметров двигателя разделяют пилоты. Основные летные приборы указывают высоту тона и ориентация крена, направление, скорость воздуха, тариф подъема, высота, etc. Цели также включают центральную функцию обслуживания, которая получает отчеты с других компьютеров 777, а затем собирает данные в центральный отчет по обслуживанию для механика. Свой система мониторинга собирает данные о том, как работают другие функции, и может определить, например, что двигатель деградирует, перед ним фактически терпит неудачу. Другие функции AIMS включают преобразование данных шлюз, сбор полетных данных, загрузка данных, преобразование Ada шлюз и управление тягой.
Огромные усилия Honeywell на 777 задействовано более 550 разработчиков программного обеспечения. Компания построила цели компьютер как пользовательская платформа на базе процессора AMD 29050. Это было уникальный среди авиационных систем для интеграции других компьютеров функции; в других системах каждая функция находится в другой коробке [центральное обслуживание имело свою собственную коробку с своими собственными входным сигналом / выходом (I / O), свой собственный центральный процессор (CPU), etc.]. Цели совмещают все эти функции и разделяет CPU и I/O среди них: он использует такие же сигналы для управления полетом и для дисплеев, так, что данные приходит внутри только раз вместо дважды; одна цепь входного сигнала обеспечивает данные для всех функций; каждая из функций получает часть CPU, как в компьютере мэйнфрейма, где системы используют часть CPU, но не все это; и каждая функция гарантирована своим временным интервалом. Инженер Джефф Грисон сказал, что » Федеративная система устарела. Помещение всех функций в одну коробку-это скачок вперед в технологии что мы принесли в индустрию.»
Еще одним нововведением является то, что дисковод может читать файлы, отформатированные для операционной системы Microsoft Система, обеспечивающая обслуживание с доступом к терминалу система связи. Механики могут передавать файлы для загрузки данных автобус самолета, потому что Хониуэлл построил программу для того чтобы принять новое данные и изменить программное обеспечение. В действительности, большое часть из оборудования на самолет имеет эту способность, только несколько классических систем этого не делают (например, система предупреждения о близости земли, которая доказала достаточно заслуживающий доверия и не нуждающийся в изменении).
Проектирование новой архитектуры одновременно с новым языком было «довольно интересно», сказал Грисон. «Организационные детали было трудно собрать воедино.» с Адой, менеджеры смогли делегировать семь основных функций группам 60-100 программистов. Отдельные программные объекты имеют минимальное интерфейс с другими частями программного обеспечения, а не со всеми программное обеспечение интегрировано. Путем работа с свободно Соединенными частями, руководители проекта смогли передать функции другим группам. Свободная интеграция, однако, не связывает программное обеспечение с 777 платформа, и поможет в Honeywell используя код для других цели. «Нам нужна была максимальная способность переносить его в другие места,» — Спросил Грисон.
Интерфейсы данных, которые существуют между программным обеспечением единицы довольно однородны, сказал Грисон, потому что Ада помогла разработчики программного обеспечения для реализации определенных правил во время компиляции. — Ада заставляет тебя держать его прямо здесь, а не в лаборатории. сказал: «где это помогло свести к минимуму наши трудности в его получении интегрированный и бежать.»Из-за высокого уровня точности во время компиляция, меньше времени было потрачено на отладку кода. Таким образом, Первоначальное исследование Honeywell оказалось верным. — Я убежден в этом, потому что из Ada у нас было минимальное количество проблем с интерфейсом, с которыми мы убили бы себя, если бы у нас был C или Паскаль, » Greeson заключенный. «Все прошло гораздо более гладко, чем в прошлых программах.»
Это на самом деле не отвечает на вопрос, так как это для одной OEM-платформы (B777), а не для отрасли в целом.
Это самый информативный и подробный источник, который я мог найти на авионических системах в целом. Другие источники просто упоминают, что каждая часть имеет отдельный изолированный чип и питается от ОС реального времени. Эта статья идет намного глубже и имеет некоторые ссылки на то, как все было сделано на старых самолетах.
не могли бы вы перефразировать это? или хотя бы выделить важные биты?
@Federico вопрос о том, какие языки программирования используются в авиации, бесполезен, потому что ответ прост: C, Assembly, ADA и т. д. Не учит вас многому, зная, какой язык они используют. Важно то, что (реализация) детали. В этой статье объясняется, почему была выбрана Ada, например, см.: «Я убежден, что из-за Ada у нас было минимальное количество проблем с интерфейсом, с которыми мы бы убили себя, если бы у нас были C или Pascal.». Ясно сказано, «проблемы с интерфейсом», поэтому Ada была выбрана по этой причине. Это более информативно, чем просто сказать «Ада».
я имел в виду, что если бы вы могли попытаться обобщить статью здесь, а не иметь полную копию. или хотя бы перепишите здесь только самые важные отрывки.
см. этот вопрос: programmers.stackexchange.com/questions/153266/…
В keynote on Going Native 2012 Бьярне Страуструп упоминает, что программное обеспечение для F-35 написано на C++ с некоторыми ограничениями. В частности, он упоминает, что исключения не используются, потому что для них невозможно было обеспечить жесткую гарантию в реальном времени.
Вообще говоря? Похоже на кроличью нору. Вообще говоря, я уверен, что производители авионики делают все, что хотят, если это соответствует спецификациям.
@egid первая часть этого последнего предложения настолько верна! Но если они будут соответствовать спецификациям, я буду работать только неполный рабочий день!
@Ян, О, это объясняет перерасход F-35 🙂