¿En qué idiomas se utilizan para la programación de sistemas en tiempo real? [cerrado]

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

  •  22-08-2019
  •  | 
  •  

Pregunta

no he encontrado ninguna información útil sobre lenguajes de programación para sistemas de tiempo real. Todo lo que encontré fue Sistemas De Tiempo Real y Lenguajes de Programación: Ada 95, Real-Time Java y Real- tiempo C / POSIX ( algunos pdf aquí ) , que parece hablar de extensiones de Java y C para los sistemas veces reales (no tengo el libro para leer). Además, el libro fue publicado en 2001, y la información puede ser obsoleto en la actualidad.

Por lo tanto, estoy dudoso que estas lenguas se utilizan en aplicaciones del mundo real, o si los sistemas de tiempo real en el mundo real se realizan en otros idiomas, como DSL.

Si la segunda opción es verdad para ti, ¿cuáles son las características sobresalientes del idioma que usa?

¿Fue útil?

Solución

La Especificación de tiempo real para Java ahora tiene varias implementaciones de calidad comercial:

Estos productos abarcan todo el continuo de la compilación a código nativo (Aonix) para J2ME (aicas, apogeo), a la plena J2SE (Sun, IBM). La mayoría de las implementaciones, si no todos, han visto en un pequeño número de sistemas de seguridad o misión crítica, pero que está tomando forma. Los ejemplos incluyen de Eglin AFB vigilancia del espacio radar modernización y el uso de la US Navy de RTSJ en el DDG-1000 / Zumwalt destructor . Sun también reclama el despliegue en el dominio de procesamiento de transacciones financieras.

Si está interesado en RTSJ, sugiero de Peter Dibble en tiempo real plataforma de programación , o el profesor Wellings' concurrente y programación en tiempo real en Java .

En una nota relacionada, también hay trabajos en curso para proporcionar un perfil de seguridad-crítico para el lenguaje de programación Java, construido como un subconjunto de RTSJ. Además, un grupo de expertos ha formado para explorar una DRTSJ RTSJ distribuido, pero el trabajo está estancado.

Otros consejos

Soy un ingeniero de software de aviónica. Yo era capaz de participar en varios proyectos de desarrollo. Los idiomas que utilicé en esos proyectos son los siguientes:. C, C ++ y Java en tiempo real

C es grande. C ++ no es tan malo, pero en C / C ++ requiere estándares de codificación estrictas para las consideraciones de seguridad, tales como DO-178B.

Creo en tiempo real de Java es el camino a seguir, pero no veo muchas aplicaciones de aviónica, sin embargo.

avión de entrenamiento T-50 de Corea tendrá un equipo de misión que ejecuta la aplicación Java que sirve RT HUD y MFD muestra, y todas las funciones de misión crítica.

El libro cubre el uso de Ada 95, el Sistema de Tiempo Real Java y extensiones de tiempo real POSIX (programados en C). Ninguno de ellos es directamente un lenguaje específico de dominio.

95 Ada es un lenguaje de programación que se utiliza comúnmente en los finales de los 90 y (que yo sepa) sigue siendo ampliamente utilizado para la programación en tiempo real en las industrias aeroespacial y de defensa. Hay por lo menos un DSL construido encima de Ada - SparkAda - que es un sistema de anotaciones que describen las características del sistema a una herramienta de verificación de programas.

Este entrevista del 6 de abril de 2006 indica algunas de las clases y los cambios de máquinas virtuales que conforman el Sistema de Tiempo real de Java. No menciona ningún extensiones de lenguaje de dominio específico. No he encontrado con el uso de Java en sistemas de tiempo real, pero no he estado mirando el tipo de sistemas en los que uno esperaría encontrar que (yo trabajo en la simulación aeroespacial, donde es C ++, Fortran y ocasionalmente Ada para sistemas en tiempo real in-the-loop).

en tiempo real POSIX es un conjunto de extensiones a las instalaciones del sistema operativo POSIX . Como extensiones del sistema operativo, que no requieren nada específico en el lenguaje. Dicho esto, yo puedo pensar en una DSL basada en C para la descripción de sistemas embebidos - SystemC - pero 've ni idea de si también se utiliza para generar los sistemas embebidos.

No se menciona en el libro es Matlab , que en los últimos años ha pasado de ser una herramienta de simulación a un sistema de desarrollo basado en modelos para sistemas de tiempo real. Matlab / Simulink es, en efecto, un DSL para la programación lineal, máquinas de estado y algoritmos. Matlab puede generar C o HDL de tiempo real y sistemas embebidos. Es muy raro ver una aviónica, EW o industria otra defensa en tiempo real puesto de trabajo anunciado que no requiere un poco de experiencia Matlab. (No trabajo para Matlab, pero es difícil a más énfasis la ubicuidad de lo que realmente es en la industria)

aplicaciones en tiempo real se pueden hacer en casi cualquier idioma. sin embargo, el medio ambiente (sistema operativo, tiempo de ejecución y bibliotecas de ejecución) debe ser compatible con las limitaciones de tiempo real. En la mayoría de casos en tiempo real significa que siempre hay un tiempo determinista en el que sucede algo. tiempo determinista ser ussually un valor de tiempo muy baja en el rango de microsegundos / milisegundos.

Los sistemas de tiempo real dependen exclusivamente en este criterio, ya que los specificiations suelen decir algo así como 'cada x (período de tiempo) (hacer algo | comprobar algo)'. Por lo general, esto ocurre si las interfaces del sistema con sensores y controles externos para salvar vidas o sistemas que amenazan la vida.

Yo estaba trabajando en un sistema de navegación y de información y entretenimiento en el automóvil desarrollado en su mayoría en C / C ++ con un sistema operativo configurado específicamente para cumplir con las restricciones de tiempo real para proporcionar la navegación en tiempo real y reproducción de medios.

Pero esto no es todo para sistemas de tiempo real: Por lo general, la selección de los algoritmos en todo el sistema está hecho para tener ejecuciones deterministas acuerdo con la notación Big-O, en su mayoría utilizando el tiempo lineal o constante. Todo lo demás se considera no determinista y por lo tanto no es utilizable para sistemas de tiempo real.

Todos los sistemas en tiempo real que he trabajado predominantemente fueron escritos en C con algunos trozos de ensamblador, o escrita sobre todo en ensamblador con pequeños trozos de C (dependiendo de si estamos hablando de los años 90 y más allá, o los años 80, respectivamente) Sin embargo, algunos de los sistemas de tiempo real que he trabajado han utilizado -. no exactamente DSL -. generadores de códigos especiales de cosecha propia

Real-time lenguaje orientado?

¿Qué es en tiempo real

En primer lugar tenemos que definir lo que en tiempo real media.

Por supuesto, dependiendo de cómo su herramienta funcionará contra el entorno físico pura en tiempo real no se podría hacer con eficacia, sobre todo porque habrá un gran número de dependencias de terceros.

Si usted está construyendo cosas de inserción mediante el uso de microcontroladores como Arduino , el idioma a utilizar será limitado por el hardware, pero con cosas más complejas como Frambuesa Pi , la elección del idioma es muy amplia.

Granularidad

Esto es en función de lo que se está midiendo, si está trabajando con:

  • temperaturas climáticas , uno lee cada 10 minutos podría ser suficiente
  • gente altura o peso , una o tal vez cuatro leído por día
  • estado del servidor , entre 1 segundo para la depuración fina a aproximadamente 1 hora para la tranquilidad servidor secundario sin importancia.
  • colisión atómica recuento : algo más fino ...

Evento basado lectura

La forma correcta (mejor) para la recogida de datos se basa en cambio de valor evento ... siempre que el dispositivo no lo permite.

La herramienta no tiene que sondeo los valores de dispositivo, pero el dispositivo tiene que enviar los valores a su herramienta, cuando cambian.

Esto podría hacerse mediante el uso de un interrupción de hardware disparador o mediante el uso de protocole puerto como RS-232 mantenerse la escucha en un puerto serie, por ejemplo.

Control Medioambiental

La última cosa que ser advertido es cómo legítimo usuario interactuará con .

Si usted está construyendo dispositivo de inserción independiente, como robot , es posible utilizar librerías gráficas para interactuar con la pantalla táctil.

Si usted está construyendo el monitor basado en la web, puede que tenga que tener en cuenta que el cliente podría ser un viejo 800x600 pantalla monocromática, utilizando una mala conexión a Internet y un pequeño procesador ... Pero dependiendo de objetivo final, si es posible interactuar con los clientes, que podría asegurar una fuerte hardware y conexiones de internet fuertes. De todos modos hay que tener cuidado para desatar conexión y el caso de retardo en la comunicación entre el servidor y el cliente. Hay dependencias mayor parte de terceros.

¿Qué lenguaje de programación?

A partir de ahí, la opción de idioma es amplia y claramente dependen

  • su conocimiento.
  • granularidad solicitado (mediante el uso de evento basado en también, por supuesto)
  • la cantidad de tiempo que tiene para construir la herramienta (dinero;)
  • retardo, compañeros de trabajo ...
  • tipo de dispositivo
  • tipo de monitoreo
  • algunas otras razones políticas

Se puede construir el monitoreo del motor mediante el uso de y solamente, he visto motores sofisticados que fue construido bajo única ... he construido un personal, monitor de energía solar basado en la web mediante el uso de , y .

No puedo creer que nadie ha mencionado lenguaje de programación LabVIEW que es ampliamente utilizado para sistemas de seguridad críticos en tiempo real. Cuenta con amplias bibliotecas y patrones de diseño conocidos para architecturing e implementación de sistemas de RT.

Además de National Instruments hace varios hardware (cRIO, PXI y etc) los cuales están diseñados para aplicaciones en tiempo real.

Utilizamos LabVIEW para Fracking (fracturamiento hidráulico) que se utiliza en entornos de seguridad crítico.

Por cierto, LabVIEW también se utiliza para aplicaciones no-RT también.

PLC ejecutar código de escalera y FUP que es realmente un DSL en tiempo real en el sentido de que sus opciones son tan limitadas que es difícil de programar de una manera que resultaría en el rendimiento en tiempo de ejecución impredecible

Una aplicación realmente propósito del lenguaje C de programación en tiempo real - y todos los temas relacionados (tales como la programación en paralelo) - es ofrecido por mi pedal de arranque http://www.kickstarter.com/projects/767046121/crawl -space-computing-con-connel Se llama "Wide Programación" y he estado haciendo la mayor parte de mi vida. Las recompensas incluyen una biblioteca de software y un libro -. Diseñado para ser útil

la empresa que he estado trabajando desde 2003 para el que se ha desarrollo y despliegue de una plataforma Scada / Mes. implementación original comenzó en 1993, que se utiliza Modula2 en OS / 2. Más tarde (1998) que fue portado a Ada95 y Windows. Actualmente (2019) usamos Ada compilador AdaCore. Nuestro sistema fue portado y se ha desplegado a 32/64 de Windows, HP-UX, OpenVMS (y últimamente incluso a frambuesa). Tenemos instalación múltiple en Europa central (industria del gas, refinerías, fábricas, centrales eléctricas). Nos sentimos características de Ada dan nuestro sistema un alto grado de fiabilidad y evita que una gran cantidad de errores que occour fácilmente si utilizamos lenguajes como C. Véase también mi blog https://www.ipesoft.com/en/ blog / lo-lenguaje-es-el-d2000-escrita

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top