Echtzeitprogrammierung Sinn

OP #4230705
Lesenswert?
• ▲
▼
Hallo,

bevor ich jetzt richtig in die Theorie von Echtzeitprogrammierung 
einsteige und Queues und Semaphores lerne, wollte ich erstmal ganz 
allgemein den Sinn der Echtzeitprogramiierung nachvollziehen..
Ich programmiere eigentlich schon seit einiger Zeit Mikrokontroller und 
die reagieren auf verschiedene Ereignisse mehr oder weniger zeitnah, 
also was soll denn der eigentlicher Sinn der Echtzeitprogrammierung und 
verschiedener Betriebssysteme wie FreeRtos usw sein?

da wurde ich im Internet leider nicht viel weitergeholfen.

freue mich auf Eure Hilfe!

Alex
#4230719
Lesenswert?
• ▲
▼
Alex S. schrieb:
> Ich programmiere eigentlich schon seit einiger Zeit Mikrokontroller
> ....
> eigentlicher Sinn der Echtzeitprogrammierung und
> verschiedener Betriebssysteme wie FreeRtos usw sein?

Du kennst den Unterschied zwischen EINEM Programm das auf einem µC läuft 
und einem BETRIEBSSYSTEM?

Bei einem Echtzeitbetriebssystem kannst du die Reaktionszeit 
vorhersagen, bei den anderen nicht. (mal so ganz grob gesagt)
OP #4230730
Lesenswert?
• ▲
▼
ok das heißt, der eigentliche Unterschied liegt halt nur darin 
(abgesehen davon, dass man in einem Betriebssystem programmiert), dass 
die Reaktionszeit vorhersehbar ist..? verstehe ich das richtig, oder 
gibt es noch was ausschlaggebendes, was ich da nachvollziehen soll? 
momentan ist für mich da noch alles dunkel
#4230734
Lesenswert?
• ▲
▼
@ Alex S. (sirius7)

>ok das heißt, der eigentliche Unterschied liegt halt nur darin
>(abgesehen davon, dass man in einem Betriebssystem programmiert),

Nö, man kann auch ohne Betriebssystem Echtzeit erreichen, bisweilen 
sogar einfacher ;-)

>dass
>die Reaktionszeit vorhersehbar ist..?

Ja.

>verstehe ich das richtig, oder
>gibt es noch was ausschlaggebendes, was ich da nachvollziehen soll?

Nein.

Echtzeit ist nur ein Schlagwort für's Bullshitbingo.
Gast #4230736
Lesenswert?
• ▲
▼
Teo D. schrieb:
> Bei einem Echtzeitbetriebssystem kannst du die Reaktionszeit
> vorhersagen, bei den anderen nicht. (mal so ganz grob gesagt)
Natuerlich kann man auf einem µC vorhersagen, wie lange es braucht, auf 
etwas zu reagieren. Wenn du keine Interrupts benutzt und nur pollst ist 
das kein Problem.
1
int main(void)
2
{
3
  while(1) {
4
    if(hat der UART Datenempfangen) {
5
    // mach was mit den Daten
6
    }
7

8

9
    if(hat der I²C Datenempfangen) {
10
    // mach was mit den Daten
11
    }
12

13
  }
14
  return 0;
15
}
Hier kann man sehr wohl vorher sagen, wie lange es braucht (sowohl im 
günstigsten als auch im schlechtesten falle), um auf empfangene Daten zu 
reagieren, und wie lange es dauert, bis diese fertig verarbeitet sind 
(in abhängigkeit von dem µC). Ganz ohne Betriebssystem. Einfach 
Compilieren, den Asm-Code anschauen und Takte zählen. Oder gleich in ASM 
programmieren.

Ein OS nimmt einem aber ein paar sachen ab, um die man sich sonst zu 
fuss kümmern müsste, z.B. Kontextwechsel wenn mehr als nur eine Aufgabe 
ausgeführt wird, scheduling, etc. pp.

Ulrich F. schrieb:
> Echtzeit ist ein komischer Begriff....
>
> Eigentlich sagt es nur, dass eine garantierte Reaktionszeit eingehalten
> wird. Das können Sekundenbruchteile sein, aber auch Stunden.
Nicht ganz, denn man muss unterscheiden zwischen harter und weicher 
Echtzeit.

harte Echtzeit:
Deadlines sind unter allen umständen einzuhalten. Eine verletzung der 
Deadlines führt sofort zu fehlern im System.

weiche Echtzeit:
Es gibt keine garantie das Deadlines eingehalten werden. Eine Verletzung 
von Deadlines hat keine schwerwiegenen Fehler zur folge und können 
ignoriert werden. Es gibt eine Garantie, dass Reagiert wird, aber nicht 
wann.

Aber ja: Echtzeit ist nicht als konkreter Zeitwert definiert (z.B. 5ms). 
Das Zeitfenster hängt von der Aufgabe ab.
Eine Raketenabwehranlage oder ein Industrieroboter hat andere 
Zeitanforderungen als die Druckerpresse bei der Bildzeitung.
Gast #4230759
Lesenswert?
• ▲
▼
Alex S. schrieb:
> was kann ein Beispiel sein, wo eine Programmierung mit
> freeRtos vorteilhafter ist

Wenn du bzw. das System mehr als eine Aufgabe hat - z.B. eine Regelung, 
das Führen von Log-Dateien und die Bearbeitung von Benutzer-Eingaben. 
Nimm eine Heizungsregelung state of the art: ohne die Temperaturregelung 
zu beeinträchtigen muss das System im Internet der Dinge ständig Google 
drüber informieren, welche Temperatur deine Räume haben. Das willst du 
sicher nicht alles zu Fuss programmieren.

Es gibt zahllose Werkzeugmaschinen, die einerseits Bearbeitungen 
durchführen, andrerseits den Benutzer über Bildschirm informieren und 
Daten mit einem Leitrechner austauschen. Für die Punkte 2 und 3 ist 
Windows Ok, aber nicht für das fräsen einer Freiformoberfläche, da 
braucht man ein System, dass garantiert keine Löcher ins Werkstück fräst 
bloss weil gerade von der Festplatte oder DVD gelesen wird - und das ist 
ganz sicher nicht Windows, sondern eben ein Echtzeitsystem.

Georg
Gast #4230764
Lesenswert?
• ▲
▼
Kaj schrieb:
> Eine Raketenabwehranlage oder ein Industrieroboter hat andere
> Zeitanforderungen als die Druckerpresse bei der Bildzeitung.

Nein, der Druckmaschine ist es egal, was sie druckt.
Den Druckern vielleicht nicht, aber das ist hier nicht relevant.

Im Zeitungsdruck sind heute Geschwindigkeiten von bis 75000 Exemplare/h 
ueblich, also etwas mehr als 20 Ex./s.

wendelsberg
Gast #4230788
Lesenswert?
• ▲
▼
Kaj schrieb:
> weiche Echtzeit:
> Es gibt keine garantie das Deadlines eingehalten werden. Eine Verletzung
> von Deadlines hat keine schwerwiegenen Fehler zur folge und können
> ignoriert werden. Es gibt eine Garantie, dass Reagiert wird, aber nicht
> wann.

Und was ist daran bitte Echtzeit?
Das ist bestenfalls eine Beschreibung der Anforderungen eines zu 
steuernden Prozesses.
#4230804
Lesenswert?
• ▲
▼
Alex S. schrieb:
> Ich programmiere eigentlich schon seit einiger Zeit Mikrokontroller und
> die reagieren auf verschiedene Ereignisse mehr oder weniger zeitnah,
> also was soll denn der eigentlicher Sinn der Echtzeitprogrammierung und
> verschiedener Betriebssysteme wie FreeRtos usw sein?

Echtzeit heißt, daß die Reaktion nicht "mehr oder weniger zeitnah" ist, 
sondern garantiert innerhalb einer gewissen Zeit erfolgt.

Kaj schrieb:
> Teo D. schrieb:
>> Bei einem Echtzeitbetriebssystem kannst du die Reaktionszeit
>> vorhersagen, bei den anderen nicht. (mal so ganz grob gesagt)

> Hier kann man sehr wohl vorher sagen, wie lange es braucht (sowohl im
> günstigsten als auch im schlechtesten falle), um auf empfangene Daten zu
> reagieren, und wie lange es dauert, bis diese fertig verarbeitet sind
> (in abhängigkeit von dem µC). Ganz ohne Betriebssystem.

Ja, aber oben ging es explizit um den Fall mit Betriebssystem. Und 
wenn das nicht echtzeitfähig ist, ist auch das darin laufenden Programm 
nicht echtzeitfähig, unabhängig davon, auf welcher Hardware das läuft.

> Einfach Compilieren, den Asm-Code anschauen und Takte zählen. Oder gleich
> in ASM programmieren.

Takte zählen geht auch nur auf den einfachsten Prozessoren wie z.B. AVR. 
Bei den meisten Prozessoren hängt die genaue Ausführungszeit von sehr 
vielen Faktoren ab, wie z.B. Cache, TLB, Branch Prediction, Wait States 
u.s.w.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.