Quelles sont les langues utilisées pour les systèmes temps réel de la programmation?
Je n'ai pas trouver toutes les informations utiles sur les langages de programmation pour les systèmes temps réel. Tout ce que je trouve était En Temps réel des Systèmes et des Langages de Programmation: Ada 95, en Temps Réel Java et le Temps Réel C/POSIX (certains pdf ici), qui semble parler d'extensions de Java et de C pour des temps réels systèmes d' (je n'ai pas le livre à lire). Aussi, le livre a été publié en 2001, et les informations peuvent être obsolètes maintenant.
Donc, je suis douteux si ces langues sont utilisées dans les applications du monde réel, ou si les systèmes temps réel dans le monde réel sont faites dans d'autres langues, comme les Dsl.
Si la deuxième option qui est vrai pour vous, quelles sont les caractéristiques marquantes de la langue que vous utilisez?
- Je dirais oui, mais alors tous mes exemples, à partir de quand je travaillais dans le même département. en tant qu'auteur.
- DSL = Langage Spécifique au Domaine
Vous devez vous connecter pour publier un commentaire.
Le Real-Time Specification for Java a maintenant plusieurs qualité commerciale des implémentations:
Ces produits englobent l'ensemble de la compilation en code natif (Aonix) pour J2ME (aicas, apogee), à la pleine J2SE (Sun, IBM). La plupart, si pas tous, ont vu les déploiements dans les petits numéros de sécurité ou systèmes essentiels à la mission, mais le momentum est la construction. Les exemples incluent Eglin AFB espace radar de surveillance de la modernisation et de la Marine américaine, l'utilisation de RTSJ dans le DDG-1000/Zumwalt destroyer. Soleil aussi les revendications de déploiement dans le traitement des opérations financières de domaine.
Si vous êtes intéressé par RTSJ, je suggère Peter Dibble de Plate-Forme Temps Réel De La Programmation, ou le Professeur Wellings' Simultané et en Temps Réel de la Programmation en Java.
Sur une note connexe, il ya aussi le travail en cours pour fournir une Critique de Sécurité profil pour le langage de programmation Java, construit comme un sous-ensemble de RTSJ. Aussi, un groupe d'experts a créé pour examiner les Distribuée RTSJ DRTSJ, mais le travail est bloqué.
Je suis une avionique software engineer.
J'ai pu participer à plusieurs projets de développement.
Les langues que j'ai utilisé dans ces projets sont les suivants: C, C++, et le temps Réel Java.
C est grand.
C++ n'est pas si mauvais, mais C/C++ exigent des normes strictes de codage pour la sécurité des considérations telles que la norme DO-178B.
Je pense en temps Réel Java est le chemin à parcourir mais je ne vois pas beaucoup d'applications avioniques, encore.
Coréen, les avions d'entraînement T-50 sera une mission ordinateur exécutant RT Java de l'application desservant le HUD et le MFD affiche, et toutes les fonctions essentielles à la mission.
Le livre couvre l'utilisation de Ada 95, la Java du Système en Temps Réel et en temps réel les extensions POSIX (programmé en C). Aucun de ces est directement un langage spécifique au domaine.
Ada 95 est un langage de programmation couramment utilisé dans la fin des années 90 et (autant que je sache) encore largement utilisé en temps réel de la programmation de la défense et de l'aérospatiale. Il y a au moins un DSL construit sur le haut de l'Ada SparkAda - qui est un système d'annotations qui décrivent les caractéristiques du système à un programme de vérification de l'outil.
Cette interview du 6 avril 2006 indique certaines des classes et de la machine virtuelle changements qui font la Java du Système en Temps Réel. Il ne parle pas de n'importe quel domaine spécifique des extensions de langage. Je n'ai pas rencontré de l'utilisation de Java dans les systèmes temps réel, mais je n'ai pas été en regardant les sortes de systèmes où je m'attends à le trouver (je travaille dans l'aéronautique, la simulation, où il est en C++, Fortran et parfois Ada en temps réel dans les systèmes en boucle).
En temps réel POSIX est un ensemble d'extensions POSIX système d'exploitation des installations. Comme OS extensions, ils ne nécessitent pas quelque chose de spécifique dans la langue. Cela dit, je pense C DSL pour la description de systèmes embarqués - SystemC - mais je n'ai aucune idée si il est aussi utilisé pour générer les systèmes embarqués.
Pas mentionné dans le livre est Matlab, qui, dans le dernier quelques années, est passé d'un outil de simulation pour un développement dirigé par les modèles du système en temps réel des systèmes.
Matlab/Simulink est, en effet, un DSL pour la programmation linéaire, de l'état des machines et des algorithmes. Matlab peut générer C ou HDL en temps réel et des systèmes embarqués. Il est très rare de voir une avionique, EW ou d'autres industrie de la défense en temps réel emploi qui ne nécessite pas certaines Matlab expérience. (Je ne travaille pas pour Matlab, mais il est difficile de l'accent sur la façon ubiquitaire, il est vraiment dans l'industrie)
Temps réel les demandes peuvent être faites dans toutes les langues. L'environnement (système d'exploitation, d'exécution et de bibliothèques d'exécution) doit cependant être conforme aux contraintes du temps réel. Dans la plupart des cas, en temps réel, il y a toujours un déterministe du temps dans lequel il se passe quelque chose. Déterministe moment ussually une très faible valeur de temps en microsecondes/millisecondes gamme.
Temps réel des systèmes de dépendre uniquement sur ces critères, comme la specificiations l'habitude de dire quelque chose comme " Tous les x (période de temps) (faire quelque chose | vérifier quelque chose)'. Habituellement, cela se passe si les interfaces de système avec des capteurs externes et les contrôles de sauver des vies ou la vie en danger des systèmes.
Je travaillais sur une voiture de navigation et d'infotainment system, développé principalement en C/C++ avec un système d'exploitation configuré spécifiquement pour répondre aux contraintes temps-réel pour fournir en temps réel de la navigation et la lecture de médias.
Mais ce n'est pas tout pour les systèmes temps-réel: en général, la sélection d'algorithmes dans l'ensemble du système est constitué d'avoir déterministe temps d'exécution en fonction de la Big-O notation, utilisant la plupart du temps linéaire ou à temps constant. Tout le reste est considéré comme non-déterministe et donc pas utilisable pour les systèmes en temps réel.
Tous les systèmes temps-réel qui j'ai travaillé ont été principalement écrit en C avec quelques morceaux de l'assembleur, ou surtout écrits en assembleur avec des petits bouts de C. (Selon que nous parlons de la des années 90 et au-delà, ou les années 80, respectivement.) Toutefois, certains de ces systèmes en temps réel, avec qui j'ai travaillé ont utilisé-pas exactement Dsl -- special endogène des générateurs de code.
En temps réel langage orienté?
Ce qui est en temps réel
Nous devons d'abord définir ce que en temps réel veux dire.
Bien sûr, tout dépend de votre outil de travail contre de l'environnement physique pur en temps réel ne pouvait pas être fait, surtout parce qu'il y aura beaucoup de librairies tierces.
Si vous êtes à la construction intégrer des trucs en utilisant les microcontrôleurs comme arduino, la langue à utiliser sera limité par le matériel, mais avec des trucs plus complexe comme Raspberry Pi, le choix de la langue est très large.
Granularité
C'est en fonction de ce que vous êtes en mesure de, si vous travaillez avec:
Événement en fonction de lecture
La bonne façon (meilleure) pour la collecte des données est basée sur événement de changement de valeur... à chaque fois que l'appareil ne le permet.
Votre outil doit pas sondage valeurs à partir de l'appareil, mais l'appareil pour envoyer les valeurs de votre outil de travail, lorsqu'elles changent.
Ce qui pourrait être fait à l'aide d'un interruption matérielle déclencher ou en utilisant le port protocole comme RS-232 rester à l'écoute sur certains port série, par exemple.
De surveillance de l'environnement
La dernière chose à être averti est quelle est la légitimité de l'utilisateur va interagir avec.
Si vous êtes la construction d'intégrer périphérique autonome, comme robot, vous pouvez utiliser une bibliothèque graphique pour interagir avec l'écran tactile.
Si vous êtes à la construction basé sur le web d'un moniteur, vous pourriez avoir à garder à l'esprit que le client pourrait être une ancienne 800x600 écran monochrome, une mauvaise connexion internet et petit processeur... Mais en fonction de l'objectif final si vous pouvez interagir avec les clients, vous pouvez vous assurer forte de matériel et de fortes connexions internet. De toute façon vous avez à regarder pour la connexion à perdre et un événement pour le délai de communication entre le serveur et le client. Il est surtout tiers de dépendances.
Qui langage de programmation?
À partir de là, le choix de la langue est large et dépendent clairement de
Vous pourriez construire la surveillance en temps réel du moteur à l'aide de bash et sql seulement, J'ai vu des moteurs sophistiqués qui a été construit sous postgresql seulement... j'ai personnellement construit un basé sur le web, l'énergie solaire moniteur à l'aide de perl, mysql et javascript.
Je ne crois pas, personne n'a mentionné de programmation LabVIEW langue qui est largement utilisé en temps Réel de la sécurité des systèmes critiques. Il possède de vastes bibliothèques et bien connu des modèles de conception pour architecturing et la mise en œuvre de la RT systèmes.
Également de National Instruments fait divers matériel (cRIO, PXI et etc) qui sont conçus pour les applications en temps réel.
Nous utiliser LabVIEW pour la Fracturation hydraulique (la Fracturation Hydraulique) qui est utilisé en toute sécurité dans des environnements critiques.
Par la voie, LabVIEW est également utilisé pour le non-RT demandes trop.
Automates exécuter échelle et fbd code qui est vraiment un dsl en temps réel, dans le sens que vos options sont si limitées qu'il est difficile de programme d'une manière qui aurait pour résultat, des performances d'exécution
Vraiment motivantes application de la langue de programmation en temps réel - et toutes les questions connexes (tels que la programmation parallèle) est offerte par mon Kickstarter
http://www.kickstarter.com/projects/767046121/crawl-space-computing-with-connel
Il est appelé "l'ensemble des programmes", et j'ai fait la plupart de ma vie. Les récompenses incluent une bibliothèque de logiciels et un livre conçu pour être utile.
la société, j'ai travaillé depuis 2003 a été le développement et le déploiement d'un Scada/Mes plate-forme. Origine de la mise en œuvre a commencé en 1993, utilisé Modula2 sur OS/2. Plus tard (1998), il a été porté à Ada95 et Windows. Actuellement (2019) nous utilisons le compilateur Ada par AdaCore. Notre système a été porté, et a été déployé pour 32/64 Windows, hp-ux, OpenVMS (et, dernièrement, même à la Framboise). Nous disposons de plusieurs types d'installation en Europe centrale (l'industrie du gaz, les raffineries, les usines, les centrales électriques).
Nous nous sentons d'Ada caractéristiques de notre système à un degré élevé de fiabilité et évite les erreurs qui auraient pu facilement occour si nous avons utilisé des langages comme le C.
Voir aussi mon blog
https://www.ipesoft.com/en/blog/what-language-is-the-d2000-written