Frage

Ich habe keine nützlichen Informationen über Programmiersprachen für Echtzeit-Systeme. Alles, was ich fand, war Echtzeitsysteme und Programmiersprachen: Ada 95, Real-Time Java und Real- Zeit C / POSIX ( einige pdf hier ) , die über Erweiterungen von Java und C für die Echtzeiten Systeme zu sprechen scheint (ich habe das Buch nicht zu lesen). Außerdem wurde das Buch im Jahr 2001 veröffentlicht wurde, und die Informationen können veraltet jetzt sein.

Also, ich bin zweifelhaft, ob diese Sprachen in realen Anwendungen verwendet werden, oder wenn Echtzeit-Systeme in der realen Welt in anderen Sprachen gemacht werden, wie DSLs.

Wenn die zweite Option ist für Sie wahr, was sind die herausragenden Eigenschaften der Sprache, die Sie verwenden?

War es hilfreich?

Lösung

Die Real-Time Specification for Java hat jetzt mehr kommerzielle-grade-Implementierungen:

Diese Produkte umfassen das Kontinuum von der Kompilierung zu nativen Code (Aonix) auf J2ME (aicas, Apogäum), auf volle J2SE (Sun, IBM). Die meisten, wenn nicht alle, haben gesehen, Installationen in kleinen Stückzahlen von sicherheits- oder unternehmenskritische Systeme, aber Dynamik baut. Beispiele hierfür sind Eglin AFB der Weltraumüberwachung Radar Modernisierung und die Verwendung von RTSJ der US-Marine in dem DDG-1000 / Zumwalt Zerstörer . Sun behauptet auch, den Einsatz in der Verarbeitung von Finanztransaktionen Domäne.

Wenn Sie in RTSJ interessiert sind, schlage ich vor Peter Dibble Real-Time-Plattform-Programmierung oder Concurrent und Echtzeitprogrammierung in Java .

über einen entsprechenden Hinweis gibt es auch im Gang arbeiten, um ein sicherheitskritische Profil für die Java-Programmiersprache zur Verfügung zu stellen, als eine Teilmenge von RTSJ gebaut. Auch hat eine Expertengruppe gebildet, um eine verteilte RTSJ DRTSJ zu erkunden, aber die Arbeit ist ins Stocken geraten.

Andere Tipps

Ich bin ein Avionik-Software-Ingenieur. Ich konnte in mehreren Entwicklungsprojekten beteiligen. Die Sprachen, die ich in diesen Projekten verwendet werden:. C, C ++ und Echtzeit-Java

C ist groß. C ++ ist nicht so schlecht, aber C / C ++ für die Sicherheitsaspekte strenge Coding-Standards erfordern, wie DO-178B.

Ich denke, Echtzeit-Java ist der Weg zu gehen, aber ich sehe nicht viele Avionik-Anwendungen, vor.

Korean Jet-Trainer T-50 einen Missionscomputer HUD und MFD läuft RT Java-Anwendung haben Displays dienen, und alle der unternehmenskritischen Funktionen.

Das Buch Verwendung von Ada umfasst 95, das Java Real-Time System und Echtzeit-POSIX-Erweiterungen (in C programmiert). Keiner von ihnen ist direkt eine domänenspezifische Sprache.

95 Ada ist eine Programmiersprache, die üblicherweise in den späten 90er Jahren verwendet, und (AFAIK) immer noch weit verbreitet für Echtzeit-Programmierung in Verteidigungs- und Luftfahrtindustrie. Es gibt mindestens eine DSL auf der Ada gebaut - SparkAda - das ist ein System von Anmerkungen, die Systemeigenschaften zu einem Programmverifikationswerkzeug beschreiben.

dieses Interview 6. April 2006 zeigt einige der Klassen und die virtuellen Maschine Änderungen, die das Java Real-Time System bilden. Es erwähnt keine domänenspezifische Sprache Erweiterungen. Ich bin nicht gekommen, über den Einsatz von Java in Echtzeitsystemen, aber ich habe an den verschiedensten Systemen nicht, wo ich erwarten würde, es zu finden (ich in der Luft- und Raumfahrt-Simulation arbeiten, wo es ist C ++, Fortran und gelegentlich Ada für Echtzeit-in-the-Loop-Systeme).

Realtime POSIX ist eine Reihe von Erweiterungen der POSIX-Betriebssystem Einrichtungen . Als OS-Erweiterungen, benötigen sie nichts spezifisch in der Sprache. Das heißt, kann ich mir vorstellen ein C basierten DSL für Embedded-Systeme zu beschreiben - SystemC - aber ich habe keine Ahnung, ob es auch zu generieren, um die Embedded-Systeme verwendet wird.

Nicht im Buch erwähnt ist Matlab , die in den letzten Jahren von einem Simulationstool gegangen sind auf ein Modell Entwicklungssystem für Echtzeit-Systeme angetrieben. Matlab / Simulink ist in der Tat eine DSL für die lineare Programmierung, Zustandsmaschinen und Algorithmen. Matlab können C oder HDL für Echtzeit- und Embedded-Systeme. Es ist sehr selten eine Avionik, EW oder andere Rüstungsindustrie Echtzeit-Job beworben, um zu sehen, die nicht einige Matlab Erfahrung erfordern. (Ich arbeite nicht für Matlab, aber es ist schwer Nachdruck darüber, wie allgegenwärtig es wirklich in der Branche)

Echtzeit-Anwendungen können in fast jeder Sprache erfolgen. Die Umgebung (Betriebssystem, Laufzeit und Laufzeitbibliotheken) muß jedoch auf Echtzeit-Einschränkungen kompatibel sein. In den meisten Fällen in Echtzeit bedeutet, dass es immer eine deterministische Zeit, in der etwas passiert. Deterministisch Zeit ussually ein sehr geringer Zeit-Wert in den Mikrosekunden / Millisekunden Bereich ist.

Echtzeitsysteme hängen einzig und allein auf diesen Kriterien, wie in der Regel die specificiations etwas sagen wie ‚Every x (Zeit) (etwas tun | etwas überprüfen)‘. Normalerweise ist dies geschieht, wenn die Systemschnittstellen mit externen Sensoren und Steuerungen lebensrettenden oder lebensbedrohliche Systemen.

Ich arbeite an einem Fahrzeugnavigation und Infotainment-System entwickelt, meist in C / C ++ mit einem Betriebssystem speziell für die Echtzeitbedingungen erfüllen konfigurierte Echtzeit-Navigation und Wiedergabe von Medien zur Verfügung zu stellen.

Das ist aber nicht alles auf Echtzeitsysteme: In der Regel der Auswahl von Algorithmen im gesamten System hergestellt wird deterministisch Runtimes hat nach der Big-O-Notation, meist lineare oder konstante Zeit verwendet wird. Alles andere wird als nicht-deterministisch und somit nicht verwendbar für Echtzeitsysteme.

Alle der Echtzeit-Systeme, die ich gearbeitet habe wurden überwiegend in C geschrieben mit einigen Bits von Assembler oder geschrieben meist in Assembler mit wenig Bits von C (Abhängig davon, ob wir die 90er Jahre reden und darüber hinaus, oder die 80er Jahre, respectively) Allerdings habe ich einige der Echtzeitsystemen gearbeitet habe verwendet haben -. nicht genau DSLs -. Sonderhomegrown Code-Generatoren

Echtzeitorientierte Sprache?

Was ist real-time

Zuerst müssen wir definieren, was Echtzeit bedeutet.

Natürlich, je nachdem wie Ihr Werkzeug gegen die physische Umgebung arbeiten reine Echtzeit konnte nicht effektiv durchgeführt werden, vor allem, weil es eine Menge von Dritten Abhängigkeiten sein.

Wenn Sie einbetten Sachen bauen von Mikrocontrollern mit wie Arduino , die Sprache wird die Verwendung durch die Hardware begrenzt werden, aber mit komplexeren Sachen wie Raspberry Pi , die Sprache Auswahl ist sehr breit.

Granularität

Dies ist abhängig davon, was Sie messen, wenn Sie arbeiten mit:

  • Wetter Temperaturen , jeweils 10 Minuten lesen genug sein könnte
  • Menschen Größe oder Gewicht ein oder vielleicht vier von Tag liest
  • Serverstatus , zwischen 1 Sekunde für die Feinfehlersuche auf ca. 1 Stunde für einen ruhigen unwichtig sekundären Server.
  • Atomkollisionszählung : etwas feiner ...

Veranstaltung basiert Lesen

Das Recht (besser) Art und Weise Daten für das Sammeln basiert auf Wertänderung Ereignis ... wenn das Gerät es erlauben.

Ihr Werkzeug muss nicht Umfrage Werte von Gerät, aber das Gerät hat Werte zu Ihrem Werkzeug zu schicken, wenn sie sich ändern.

Dies könnte durch die Verwendung eines Hardware-Interrupt Trigger oder durch Verwendung von Port Protocole wie RS-232 bleiben Hören auf einigen seriellen Schnittstelle, für die Probe durchgeführt werden.

Monitoring-Umgebung

Das letzte, was davor gewarnt werden soll, wie legitime Benutzer interagieren mit .

Wenn Sie einbetten eigenständiges Gerät Gebäude sind, wie Roboter , können Sie Grafik-Bibliotheken mit Touchscreen zu interagieren.

Wenn Sie Web-basierter Monitor bauen, müssen Sie im Auge behalten, dass der Kunde eine sein könnte alt 800x600 Monochrom-Bildschirm, mit schlechter Internetverbindung und kleinen Prozessor ... Aber je nach Endziel, wenn Sie mit den Kunden interagieren können, könnten Sie starke Hardware und starke Internet-Verbindungen gewährleisten. Wie auch immer Sie für Verbindung lösende und Ereignis für die Kommunikation Verzögerung zwischen Server und Client zu beobachten. Es gibt meist Dritte Abhängigkeiten.

Welche Programmiersprache?

Von dort, die Sprache Auswahl ist groß und klar ist abhängig von

  • Ihr Wissen.
  • Granularität angefordert (unter Verwendung von ereignisbasierten natürlich auch)
  • die Menge an Zeit, die Sie das Werkzeug bauen (Geld;)
  • Verzögerung, Mitarbeiter ...
  • Art von Gerät
  • Art der Überwachung
  • einige andere politische Gründe

Sie könnten in Echtzeit aufbauen Motorüberwachung mithilfe von und , ich habe gesehen, anspruchsvolle Motoren, die unter nur markiert ... ich habe persönlich baute einen Web-basierte, Solarenergie-Monitor unter Verwendung von , und .

Ich kann nicht glauben, dass niemand hat LabVIEW Programmiersprache erwähnt, die weithin für Echtzeit-sicherheitskritischen Systemen verwendet wird. Es verfügt über umfangreiche Bibliotheken und bekanntes Design-Muster für architecturing und Implementierung für RT-Systeme.

Auch macht National Instruments verschiedene Hardware (cRIO, PXI und usw.), die für Echtzeit-Anwendungen konzipiert ist.

Wir verwenden LabVIEW für Fracking (Hydraulic Fracturing), die in sicheren kritischen Umgebungen eingesetzt wird.

Durch die Art und Weise, LabVIEW auch zu für Nicht-RT-Anwendungen verwendet wird.

Steuerungen lief Leiter und FBS-Code, der wirklich ein Echtzeit-dsl in dem Sinne ist, dass Sie Ihre Möglichkeiten so begrenzt sind, dass es zu Programm so schwierig ist, die zu unvorhersehbaren Zeitverhalten führen würden

Eine wirklich sinnvolle Anwendung der C-Sprache zu Echtzeitprogrammierung - und alle damit verbundenen Probleme (wie die parallele Programmierung) - angeboten von meinem Kickstarter http://www.kickstarter.com/projects/767046121/crawl -Raum-Computing-with-connel Es ist „Wide-Programmierung“ genannt, und ich habe die meisten meines Lebens es getan. Die Belohnungen sind eine Software-Bibliothek und ein Buch -. Entworfen, nützlich sein

die Firma, die ich seit 2003 für die Arbeit habe wurde die Entwicklung und Scada / Mes-Plattform bereitstellen. Original Implementierung begann im Jahre 1993 verwendet Modula2 auf OS / 2. Später (1998) wurde auf Ada95 und Windows portiert. Derzeit (2019) verwenden wir Ada-Compiler von AdaCore. Unser System wurde portiert und hat 32/64 Windows HP-UX, OpenVMS (und in letzter Zeit sogar Himbeere) im Einsatz. Wir haben mehrere Einbau in Mitteleuropa (Gasindustrie, Raffinerien, Fabriken, Kraftwerke). Wir glauben, Ada-Funktionen unserem System ein hohes Maß an Zuverlässigkeit geben und verhindert, dass eine Menge von Fehlern, die leicht occour würden, wenn wir Sprachen wie C eingesetzt Siehe auch mein Blog https://www.ipesoft.com/en/ Blog / what-Sprache-is-the-D2000-geschrieben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top