Какие языки используются для программирования систем реального времени?[закрыто]

StackOverflow https://stackoverflow.com/questions/697916

  •  22-08-2019
  •  | 
  •  

Вопрос

Я не нашел никакой полезной информации о языках программирования для систем реального времени.Все, что я нашел, это Системы реального времени и языки программирования:Ada 95, Java реального времени и C/POSIX реального времени (немного PDF здесь), в котором, кажется, говорится о расширениях Java и C для систем реального времени (у меня нет книги для чтения).Кроме того, книга была издана в 2001 году, и сейчас информация может устареть.

Поэтому я сомневаюсь, что эти языки используются в реальных приложениях или же системы реального времени в реальном мире создаются на других языках, например, DSL.

Если для вас верен второй вариант, каковы выдающиеся характеристики языка, который вы используете?

Это было полезно?

Решение

Спецификация реального времени для Java теперь имеет несколько реализаций коммерческого уровня:

Эти продукты охватывают континуум от компиляции до собственного кода (Aonix), J2ME (aicas, apogee) и полного J2SE (Sun, IBM).В большинстве из них, если не во всех, было развернуто небольшое количество систем, критически важных для безопасности или выполнения миссии, но темпы набирают обороты.Примеры включают в себя Модернизация РЛС космического наблюдения авиабазы ​​Эглин и использование ВМС США RTSJ в Эсминец ДДГ-1000/Зумвальт.Sun также заявляет о внедрении системы в области обработки финансовых транзакций.

Если вас интересует RTSJ, я предлагаю Питера Диббла. Программирование платформы в реальном времени, или профессора Веллингса Параллельное программирование и программирование в реальном времени на Java.

Кроме того, ведется работа по созданию профиля безопасности для языка программирования Java, созданного как подмножество RTSJ.Также была сформирована экспертная группа для изучения распределенного RTSJ DRTSJ, но работа застопорилась.

Другие советы

Я инженер-программист авионики.Мне удалось поучаствовать в нескольких девелоперских проектах.Языки, которые я использовал в этих проектах:C, C++ и Java реального времени.

С — это здорово.C++ не так уж плох, но C/C++ требует строгих стандартов кодирования из соображений безопасности, таких как DO-178B.

Я думаю, что Java в реальном времени — это лучший вариант, но я пока не вижу много приложений для авионики.

Корейский учебно-тренировочный самолет Т-50 будет иметь компьютер миссии, на котором будет установлено приложение RT Java, обслуживающее дисплеи HUD и MFD, а также все критически важные функции.

В книге рассматривается использование Ada 95, системы реального времени Java и расширений POSIX реального времени (программируемых на C).Ни один из них не является напрямую языком, специфичным для предметной области.

Ada 95 — это язык программирования, широко используемый в конце 90-х годов и (AFAIK) до сих пор широко используемый для программирования в реальном времени в оборонной и аэрокосмической промышленности.Существует как минимум один DSL, построенный на базе Ada - СпаркАда - система аннотаций, описывающих характеристики системы для средства проверки программы.

Это интервью от 6 апреля 2006 г. указывает на некоторые изменения классов и виртуальных машин, составляющих систему реального времени Java.В нем не упоминаются какие-либо языковые расширения, специфичные для домена.Я не сталкивался с использованием Java в системах реального времени, но я не рассматривал те системы, в которых я ожидал бы его найти (я работаю в области аэрокосмического моделирования, где это C++, Fortran и иногда Ada). для систем реального времени).

POSIX реального времени представляет собой набор расширений возможностей операционной системы POSIX.Будучи расширениями ОС, они не требуют ничего особенного в языке.Тем не менее, я могу придумать один DSL на основе C для описания встроенных систем — СистемаC - но я понятия не имею, используется ли он также для создания встроенных систем.

В книге не упоминается Матлаб, которая за последние несколько лет превратилась из инструмента моделирования в систему разработки на основе моделей для систем реального времени.Matlab/Simulink, по сути, представляет собой DSL для линейного программирования, конечных автоматов и алгоритмов.Matlab может генерировать С или ЛПВП для систем реального времени и встроенных систем.Очень редко можно увидеть рекламируемую в режиме реального времени работу в области авионики, РЭБ или другой оборонной промышленности, которая не требует некоторого опыта работы с Matlab.(Я не работаю в Matlab, но трудно переоценить, насколько он распространен в отрасли)

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

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

Я работал над автомобильной навигационной и информационно-развлекательной системой, разработанной в основном на C/C++, с операционной системой, настроенной специально для удовлетворения ограничений реального времени, обеспечивающих навигацию в реальном времени и воспроизведение мультимедиа.

Но это еще не все для систем реального времени:Обычно алгоритмы во всей системе выбираются так, чтобы иметь детерминированное время выполнения в соответствии с нотацией Big-O, в основном с использованием линейного или постоянного времени.Все остальное считается недетерминированным и поэтому непригодным для использования в системах реального времени.

Все системы реального времени, с которыми мне приходилось работать, были преимущественно написаны на C с небольшими кусочками ассемблера или написаны в основном на ассемблере с небольшими кусочками C.(В зависимости от того, говорим ли мы о 90-х и последующих годах или о 80-х годах соответственно.) Однако в некоторых системах реального времени, с которыми я работал, использовались (не совсем DSL) специальные генераторы кода собственной разработки.

Язык, ориентированный на реальное время?

Что такое режим реального времени

Сначала нам нужно определить, что в реальном времени иметь в виду.

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

Если вы создаете встраиваемый материал, используя микроконтроллеры, такие как ардуино, используемый язык будет ограничен аппаратным обеспечением, но с более сложными вещами, такими как Raspberry Pi, выбор языка очень широк.

Детализация

Это зависит от того, что вы измеряете, если вы работаете с:

  • погодные температуры, одного чтения каждые 10 минут может быть достаточно
  • рост или вес людей, один или, может быть, четыре чтения в день
  • Состояние сервера, от 1 секунды для тонкой отладки до примерно 1 часа для тихого неважного вторичного сервера.
  • счетчик атомных столкновений:что-то более тонкое...

Чтение на основе событий

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

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

Это можно сделать с помощью аппаратное прерывание триггер или с помощью протокола порта, например РС-232 продолжайте слушать какой-нибудь последовательный порт, например.

Среда мониторинга

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

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

Если вы создаете веб-монитор, вам, возможно, придется иметь в виду, что клиент может быть старым. 800x600 монохромный экран, плохое подключение к Интернету и маленький процессор...Но в зависимости от конечной цели, если вы можете взаимодействовать с клиентами, вы можете обеспечить надежное оборудование и надежное подключение к Интернету.В любом случае вам придется следить за потерей соединения и задержкой связи между сервером и клиентом.В основном это сторонние зависимости.

Какой язык программирования?

Отсюда выбор языка широк и явно зависит от

  • Ваши знания.
  • запрошенная детализация (конечно, также с использованием событий на основе событий)
  • количество времени, которое вам понадобится для создания инструмента (денег;)
  • задержка, коллеги...
  • вид устройства
  • вид мониторинга
  • некоторые другие политические причины

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

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

Также компания National Instruments производит различное оборудование (cRIO, PXI и т. д.), предназначенное для приложений реального времени.

Мы используем LabVIEW для гидроразрыва пласта (ГРП), который используется в критически важных средах.

Кстати, LabVIEW также используется и для приложений, не связанных с RT.

ПЛК выполняют код релейной логики и fbd, который на самом деле представляет собой dsl в реальном времени в том смысле, что ваши возможности настолько ограничены, что трудно программировать таким образом, чтобы это привело к непредсказуемой производительности во время выполнения.

По-настоящему целенаправленное применение языка C для программирования в реальном времени и всех связанных с ним вопросов (например, параллельного программирования) предлагается на моем Kickstarter.http://www.kickstarter.com/projects/767046121/crawl-space-computing-with-connelЭто называется «Широкое программирование», и я занимаюсь им большую часть своей жизни.Награды включают в себя библиотеку программного обеспечения и книгу, призванную быть полезной.

компания, в которой я работаю с 2003 года, занимается разработкой и внедрением платформы Scada/Mes.Первоначальная реализация началась в 1993 году, использовалась Modula2 в OS/2.Позже (1998 г.) он был портирован на Ada95 и Windows.В настоящее время (2019 г.) мы используем компилятор Ada от AdaCore.Наша система была портирована и развернута на 32/64 Windows, HPUX, OpenVMS (а в последнее время даже на Raspberry).У нас есть несколько установок в Центральной Европе (газовая промышленность, нефтеперерабатывающие заводы, заводы, электростанции).Мы считаем, что возможности Ada придают нашей системе высокую степень надежности и предотвращают множество ошибок, которые легко могли бы возникнуть, если бы мы использовали такие языки, как C.Смотрите также мой блогhttps://www.ipesoft.com/en/blog/what-language-is-the-d2000-write

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top