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

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

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

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

Ответ 1

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

Эти продукты охватывают континуум от компиляции до нативного кода (Aonix) до J2ME (aicas, apogee) и до полной J2SE (Sun, IBM). Большинство, если не все, видели развертывания в небольших количествах safety- или критически важных систем, но импульс набирает силу. Примерами могут служить модернизация радара космического наблюдения Eglin AFB и использование RTSJ ВМС США в эсминце DDG-1000/Zumwalt. Sun также заявляет о развертывании в области обработки финансовых транзакций.

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

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

Realtime POSIX - это набор расширений для объектов операционной системы POSIX. Как расширения ОС, они не требуют ничего конкретного на языке. Тем не менее, я могу придумать один DS на основе C для описания встроенных систем - SystemC - но я не знаю, использовала ли она для создания встроенных систем.

В книге не упоминается Matlab, который в последние годы перешел от инструмента симуляции к моделируемой системе разработки для системы реального времени. Matlab/Simulink, по сути, является DSL для линейного программирования, государственных машин и алгоритмов. Matlab может генерировать C или HDL для реального времени и встроенных систем. Очень редко можно увидеть рекламу авионики, EW или другой оборонной промышленности в режиме реального времени, которая не требует какого-либо опыта Matlab. (Я не работаю для Matlab, но мне трудно переоценить, насколько повсеместно это происходит в индустрии)

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

Язык в реальном времени?

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

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

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

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

Зернистость

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

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

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

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

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

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

Мониторинг среды

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

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

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

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

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

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

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

Ответ 7

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

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

Мы используем LabVIEW для Fracking (Hydraulic Fracturing), который используется в безопасных средах.

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

Ответ 8

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

Ответ 9

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

Ответ 10

компания, в которой я работаю с 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 написано