27 Stimmen

Welche Sprachen werden für die Programmierung von Echtzeitsystemen verwendet?

Ich habe keine nützlichen Informationen über Programmiersprachen für Echtzeitsysteme gefunden. Alles, was ich fand, war Echtzeitsysteme und Programmiersprachen: Ada 95, Echtzeit-Java und Echtzeit-C/POSIX ( einige pdf hier ), in dem es um Erweiterungen von Java und C für Echtzeitsysteme zu gehen scheint (ich habe das Buch nicht zum Lesen). Außerdem wurde das Buch 2001 veröffentlicht, und die Informationen könnten inzwischen veraltet sein.

Ich bin mir also nicht sicher, ob diese Sprachen in der realen Welt verwendet werden, oder ob Echtzeitsysteme in der realen Welt in anderen Sprachen, wie DSLs, erstellt werden.

Wenn die zweite Option auf Sie zutrifft, was sind die herausragenden Merkmale der von Ihnen verwendeten Sprache?

5voto

F. Hauri Punkte 57640

Eine echtzeitorientierte Sprache?

Was ist Echtzeit?

Zunächst müssen wir definieren, was Echtzeit bedeuten.

Natürlich hängt es davon ab, wie Ihr Werkzeug in der physischen Umgebung funktioniert reine Echtzeit konnte nicht effektiv durchgeführt werden, vor allem, weil es viele Abhängigkeiten von Dritten geben wird.

Wenn Sie mit Hilfe von Mikrocontrollern wie arduino wird die zu verwendende Sprache durch die Hardware begrenzt, aber bei komplexeren Dingen wie Raspberry Pi ist die Sprachauswahl sehr groß.

Granularität

Das hängt davon ab, was Sie messen und womit Sie arbeiten:

  • Wettertemperaturen eine Lektüre alle 10 Minuten könnte ausreichen
  • Größe oder Gewicht der Personen eine oder vielleicht vier am Tag lesen
  • Serverstatus zwischen 1 Sekunde für die Fehlersuche und ca. 1 Stunde für einen ruhigen, unwichtigen Sekundärserver.
  • Anzahl der Atomkollisionen : etwas Feineres...

Ereignisbasiertes Lesen

Die richtige (bessere) Art der Datenerfassung basiert auf Wertänderungsereignis ... wenn das Gerät es zulässt.

Ihr Werkzeug muss nicht Umfrage Werte vom Gerät, aber das Gerät muss Werte an Ihr Tool senden, wenn sie sich ändern.

Dies könnte durch die Verwendung einer Hardwareunterbrechung Trigger oder durch Verwendung von Port-Protokollen wie RS-232 auf einer seriellen Schnittstelle lauschen, zum Beispiel.

Überwachung der Umgebung

Der letzte Punkt, vor dem gewarnt werden muss, ist wie der rechtmäßige Nutzer mit .

Wenn Sie ein eigenständiges Gerät bauen, wie Roboter können Sie Grafikbibliotheken verwenden, um mit dem Touchscreen zu interagieren.

Wenn Sie einen webbasierten Monitor entwickeln, müssen Sie bedenken, dass der Client ein alter 800x600 monochromen Bildschirm, mit schlechter Internetverbindung und kleinem Prozessor... Aber je nach Endziel, wenn Sie mit Kunden interagieren, könnten Sie für starke Hardware und starke Internetverbindungen sorgen. Auf jeden Fall muss man auf Verbindungsverluste und Verzögerungen bei der Kommunikation zwischen Server und Client achten. Es gibt meist Abhängigkeiten von Drittanbietern.

Welche Programmiersprache?

Von dort aus ist die Auswahl an Sprachen groß und hängt eindeutig von folgenden Faktoren ab

  • Ihr Wissen.
  • gewünschte Granularität (natürlich auch ereignisbasiert)
  • die Zeit, die Sie für die Erstellung des Werkzeugs benötigen (Geld;)
  • Verzögerung, Mitarbeiter...
  • Art des Geräts
  • Art der Überwachung
  • einige andere politische Gründe

Sie können eine Echtzeit-Überwachungsmaschine aufbauen, indem Sie bash y sql nur, ich habe hochentwickelte Motoren gesehen, die unter postgresql nur... Ich habe persönlich einen webbasierten Solarenergie-Monitor gebaut, indem ich perl , mysql y javascript .

4voto

Kamran Bigdely Punkte 7228

Ich kann nicht glauben, dass niemand die Programmiersprache LabVIEW erwähnt hat, die weithin für sicherheitskritische Echtzeitsysteme verwendet wird. Sie verfügt über umfangreiche Bibliotheken und bekannte Entwurfsmuster für die Architektur und Implementierung von RT-Systemen.

Auch National Instruments stellt verschiedene Hardware (cRIO, PXI usw.) her, die für Echtzeitanwendungen konzipiert ist.

Wir verwenden LabVIEW für Fracking (Hydraulic Fracturing), das in sicherheitskritischen Umgebungen eingesetzt wird.

2voto

Tallak Tveide Punkte 331

SPS führen Kontaktplan- und Fbd-Code aus, der eigentlich ein Echtzeit-DSL in dem Sinne ist, dass die Optionen so begrenzt sind, dass es schwierig ist, so zu programmieren, dass eine unvorhersehbare Laufzeitleistung entsteht.

1voto

Larry Dickson Punkte 11

Eine wirklich zielgerichtete Anwendung der Sprache C auf die Echtzeitprogrammierung - und alle damit zusammenhängenden Themen (wie parallele Programmierung) - bietet mein Kickstarter http://www.kickstarter.com/projects/767046121/crawl-space-computing-with-connel Es heißt "Wide Programming" und ich habe es fast mein ganzes Leben lang gemacht. Zu den Belohnungen gehören eine Software-Bibliothek und ein Buch, das nützlich sein soll.

0voto

Peter Humaj Punkte 1

Das Unternehmen, für das ich seit 2003 arbeite, entwickelt und implementiert eine Scada/Mes-Plattform. Die ursprüngliche Implementierung begann 1993 und verwendete Modula2 unter OS/2. Später (1998) wurde sie auf Ada95 und Windows portiert. Derzeit (2019) verwenden wir den Ada-Compiler von AdaCore. Unser System wurde portiert und auf 32/64 Windows, HPUX, OpenVMS (und neuerdings sogar auf Raspberry) eingesetzt. Wir haben mehrere Installationen in Mitteleuropa (Gasindustrie, Raffinerien, Fabriken, Kraftwerke). Wir sind der Meinung, dass die Funktionen von Ada unserem System ein hohes Maß an Zuverlässigkeit verleihen und viele Fehler verhindern, die bei der Verwendung von Sprachen wie C leicht auftreten würden. Siehe auch mein Blog https://www.ipesoft.com/en/blog/what-language-is-the-d2000-written

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X