Вопрос:

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

programming-languages real-time

34014 просмотра

10 ответа

15987 Репутация автора

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

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

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

Автор: eKek0 Источник Размещён: 30.03.2009 04:22

Ответы (10)


7 плюса

1950 Репутация автора

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

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

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

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

Автор: grover Размещён: 30.03.2009 04:32

6 плюса

45377 Репутация автора

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

Автор: Eddie Размещён: 30.03.2009 04:38

12 плюса

43196 Репутация автора

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

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

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

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

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

Автор: Pete Kirkham Размещён: 30.03.2009 05:10

21 плюса

17317 Репутация автора

Решение

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

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

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

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

Автор: andersoj Размещён: 10.04.2009 02:12

24 плюса

1883 Репутация автора

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

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

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

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

Автор: Keugyeol Размещён: 26.06.2010 05:44

2 плюса

179 Репутация автора

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

Автор: Tallak Tveide Размещён: 09.02.2013 08:43

1 плюс

11 Репутация автора

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

Автор: Larry Dickson Размещён: 15.08.2013 06:36

4 плюса

3215 Репутация автора

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

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

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

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

Автор: Kamran Bigdely Размещён: 02.01.2014 05:20

5 плюса

35930 Репутация автора

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

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

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

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

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

Зернистость

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

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

Событийное чтение

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

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

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

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

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

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

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

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

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

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

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

Автор: F. Hauri Размещён: 07.09.2014 10:59

0 плюса

1 Репутация автора

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

Автор: Peter Humaj Размещён: 02.02.2019 04:48
Вопросы из категории :
32x32