Quels langages sont utilisés pour la programmation des systèmes temps réel ?[fermé]

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

  •  22-08-2019
  •  | 
  •  

Question

Je n'ai trouvé aucune information utile sur les langages de programmation pour les systèmes temps réel.Tout ce que j'ai trouvé c'est Systèmes temps réel et langages de programmation :Ada 95, Java temps réel et C/POSIX temps réel (un pdf ici), qui semble parler d'extensions de Java et C pour les systèmes temps réel (je n'ai pas le livre à lire).De plus, le livre a été publié en 2001 et les informations sont peut-être désormais obsolètes.

Je me demande donc si ces langages sont utilisés dans des applications du monde réel ou si les systèmes en temps réel du monde réel sont créés dans d'autres langages, comme les DSL.

Si la deuxième option est vraie pour vous, quelles sont les caractéristiques marquantes de la langue que vous utilisez ?

Était-ce utile?

La solution

La spécification Real-Time pour Java dispose désormais de plusieurs implémentations de niveau commercial :

Ces produits couvrent le continuum de la compilation au code natif (Aonix) en passant par J2ME (aicas, apogee) et le J2SE complet (Sun, IBM).La plupart, sinon la totalité, ont été déployées dans un petit nombre de systèmes critiques pour la sécurité ou la mission, mais la dynamique prend forme.Les exemples comprennent Modernisation du radar de surveillance spatiale d'Eglin AFB et l'utilisation du RTSJ par l'US Navy dans le Destroyer DDG-1000/Zumwalt.Sun revendique également un déploiement dans le domaine du traitement des transactions financières.

Si RTSJ vous intéresse, je vous suggère celui de Peter Dibble Programmation de plateforme en temps réel, ou celui du professeur Wellings Programmation simultanée et temps réel en Java.

Dans le même ordre d'idées, des travaux sont également en cours pour fournir un profil critique pour la sécurité pour le langage de programmation Java, construit comme un sous-ensemble de RTSJ.En outre, un groupe d'experts s'est formé pour explorer un RTSJ DRTSJ distribué, mais le travail est au point mort.

Autres conseils

Je suis un ingénieur logiciel avionique. J'ai pu participer à plusieurs projets de développement. Les langues que j'utilisées dans ces projets sont:. C, C ++, et en temps réel Java

C est grande. C ++ est pas si mal, mais C / C ++ exigent des normes de codage strictes pour les considérations de sécurité telles que DO-178B.

Je pense en temps réel Java est le chemin à parcourir, mais je ne vois pas beaucoup d'applications avioniques, encore.

jet d'entraînement coréen T-50 aura un ordinateur de mission en cours d'exécution l'application RT Java au service affiche HUD et MFD, et toutes les fonctions critiques.

Le livre couvre l'utilisation d'Ada 95, le système Java en temps réel et des extensions en temps réel (POSIX programmées en C). Aucun de ceux-ci est directement un domaine langage spécifique.

Ada 95 est un langage de programmation couramment utilisé dans les années 90 et (AFAIK) encore largement utilisé pour la programmation en temps réel dans la défense et de l'aérospatiale. Il y a au moins un DSL construit sur Ada - SparkAda - qui est un système de annotations qui décrivent les caractéristiques du système à un outil de vérification du programme.

Cette interview du 6 Avril, 2006 indique certaines des classes et des changements de machines virtuelles qui composent le système Java en temps réel. Il ne mentionne pas d'extensions de langage de domaine spécifique. Je ne suis pas venu à travers l'utilisation de Java dans les systèmes en temps réel, mais je ne l'ai pas regardé les sortes de systèmes où je vous attendriez à trouver (je travaille dans la simulation aérospatiale, où il est C ++, Fortran et parfois Ada pour en temps réel dans la boucle des systèmes).

en temps réel POSIX est un ensemble d'extensions aux installations du système d'exploitation POSIX . Comme les extensions OS, ils ne nécessitent pas quelque chose de spécifique dans la langue. Cela dit, je peux penser à un C DSL basé pour décrire les systèmes embarqués - SystemC - mais je « ai aucune idée s'il est également utilisé pour générer les systèmes embarqués.

Non mentionné dans le livre est Matlab , qui, dans les dernières années est passé d'un outil de simulation à un système de développement piloté par modèle pour les systèmes en temps réel. Matlab / Simulink est, en effet, une connexion DSL pour la programmation linéaire, machines d'état et des algorithmes. Matlab peut générer C ou HDL pour les systèmes temps réel et embarqués. Il est très rare de voir une avionique, EW ou autre industrie de la défense emploi en temps réel annoncé qui ne nécessite pas une certaine expérience Matlab. (Je ne travaille pas pour Matlab, mais il est difficile de plus de la façon dont l'accent omniprésent, il est vraiment dans l'industrie)

applications en temps réel peuvent être faites dans presque toutes les langues. L'environnement (système d'exploitation, l'exécution et les bibliothèques d'exécution) doit toutefois être conforme aux contraintes de temps réel. Dans la plupart des cas signifie en temps réel, il y a toujours un temps déterministe où quelque chose se passe. temps déterministe étant ussually une valeur de temps très faible de l'ordre de microsecondes / millisecondes.

Les systèmes en temps réel dépendent uniquement sur ce critère, comme les specificiations disent quelque chose comme «Tous les x (période de temps) (faire quelque chose | vérifier quelque chose). En général, cela se produit si les interfaces du système avec des capteurs externes et des contrôles de sauvetage ou des systèmes menaçant le pronostic vital.

Je travaillais sur un système développé principalement en C / C ++ avec un système d'exploitation de navigation et d'infodivertissement en voiture configuré spécifiquement pour répondre aux contraintes en temps réel pour fournir la navigation et la lecture multimédia en temps réel.

Mais ce n'est pas tous les systèmes en temps réel: En général, la sélection des algorithmes dans l'ensemble du système est fait pour avoir runtimes déterministe selon la notation Big-O, la plupart du temps en utilisant le temps linéaire ou constante. Tout est autre considéré comme non-déterministe et donc pas utilisable pour les systèmes en temps réel.

Tous les systèmes en temps réel, j'ai travaillé ont été principalement écrit en C avec quelques bits d'assembleur, ou écrit la plupart du temps en assembleur avec des petits morceaux de C. (selon que l'on parle des années 90 et au-delà, ou les années 80, respectivement) Cependant, certains des systèmes en temps réel, j'ai travaillé ont utilisé -. pas exactement DSLs -. générateurs de code Homegrown spéciaux

langage orienté en temps réel?

Qu'est-ce en temps réel

D'abord, nous devons définir ce que en temps réel signifie.

Bien sûr, en fonction de la façon dont votre outil fonctionnera contre l'environnement physique pur en temps réel n'a pas pu être fait efficacement, la plupart du temps parce qu'il y aura beaucoup de dépendances tiers.

Si vous construisez des choses embed en utilisant comme arduino, sera limité la langue à utiliser par le matériel, mais avec des choses plus complexes comme de, le choix de la langue est très large.

Granularité

dépend de ce que vous mesurez, si vous travaillez avec:

  • Températures , on lit chaque 10 minutes pourrait être suffisant
  • personnes taille ou le poids , un ou peut-être quatre lu par jour
  • l'état du serveur , entre 1 seconde pour le débogage fin à environ 1 heure pour le serveur secondaire sans importance calme.
  • collision atomique nombre : quelque chose de plus fin ...

Événement basé lecture

Le droit (meilleure) pour la collecte des données est basée sur valeur événement change ... chaque fois que l'appareil ne le permettent.

Votre outil doit pas sondage valeurs de l'appareil, mais le dispositif doit envoyer des valeurs à votre outil, quand ils changent.

Cela pourrait se faire en utilisant un matériel d'interruption déclencheur ou en utilisant protocole de port comme RS-232 rester à l'écoute sur un port série, pour l'échantillon.

Environnement de surveillance

La dernière chose à être averti est comment utilisateur légitime va interagir avec .

Si vous construisez périphérique autonome embed, comme Robot , vous pouvez utiliser les bibliothèques graphiques pour interagir avec l'écran tactile.

Si vous construisez moniteur basé sur le Web, vous pouvez avoir à garder à l'esprit que le client pourrait être un vieux 800x600 écran monochrome, en utilisant une mauvaise connexion Internet et un petit processeur ... Mais selon objectif final si vous pouvez interagir avec les clients, vous pouvez assurer le matériel solide et de fortes connexions Internet. Quoi qu'il en soit, vous devez regarder pour délier de connexion et d'événements de retard de communication entre le serveur et le client. Il est principalement tiers des dépendances du parti.

Quelle langue de programmation?

A partir de là, le choix de la langue est large et dépendent clairement

  • vos connaissances.
  • granularité demandé (à l'aide basée sur les événements aussi, bien sûr)
  • la quantité de temps que vous devez construire l'outil (l'argent;)
  • retard, collègues ...
  • type d'appareil
  • surveillance de type
  • d'autres raisons politiques

Vous pouvez construire le moteur de surveillance en temps réel en utilisant et seulement, j'ai vu moteurs sophistiqués qui a été construit sous seulement ... J'ai personnellement construit une base web, moniteur de l'énergie solaire en utilisant , et .

Je ne peux pas croire que personne ne l'a mentionné le langage de programmation de LabVIEW qui est largement utilisé pour les systèmes critiques de sécurité en temps réel. Il a de vastes bibliothèques et modèles de conception bien connus pour architecturing et mettre en œuvre des systèmes RT.

Aussi National Instruments fait divers matériels (cRIO, PXI et etc) qui sont conçus pour les applications en temps réel.

Nous utilisons LabVIEW pour Fracking (fracturation hydraulique) qui est utilisé dans des environnements sûrs critiques.

Par ailleurs, LabVIEW est également utilisé pour les applications non-RT aussi.

API échelle et exécuter le code FBD qui est vraiment dsl en temps réel dans le sens que vos options sont si limitées qu'il est difficile à programmer d'une manière qui entraînerait des performances d'exécution imprévisibles

Une application vraiment délibérée du langage C pour la programmation en temps réel - et toutes les questions connexes (telles que la programmation parallèle) - est offert par mon Kickstarter http://www.kickstarter.com/projects/767046121/crawl -space-informatique-with-connel Il est appelé « Wide programmation » et je l'ai fait la majeure partie de ma vie. Les récompenses comprennent une bibliothèque logicielle et un livre -. Conçu pour être utile

la société que je travaille depuis depuis 2003 a été le développement et le déploiement d'une plate-forme Scada / Mes. la mise en œuvre originale a commencé en 1993, utilisé Modula2 sur OS / 2. Plus tard (1998), il a été porté à Ada95 et Windows. À l'heure actuelle (2019), nous utilisons le compilateur Ada par AdaCore. Notre système a été porté et a été déployé à 32/64 de Windows, HPUX, OpenVMS (et dernièrement encore à la framboise). Nous avons l'installation multiple en Europe centrale (industrie du gaz, les raffineries, les usines, les centrales électriques). Nous pensons que les caractéristiques de Ada donnent notre système un haut degré de fiabilité et empêche beaucoup d'erreurs qui facilement occour si nous avons utilisé des langues comme C. Voir aussi mon blog https://www.ipesoft.com/en/ blog / what-langue-est-le-écrit D2000-

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top