Forum: Mikrocontroller und Digitale Elektronik Echtzeitprogrammierung Sinn


von Florian S. (sirius7)


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

von Ulrich F. (Gast)


Lesenswert?

Echtzeit ist ein komischer Begriff....

Eigentlich sagt es nur, dass eine garantierte Reaktionszeit eingehalten 
wird. Das können Sekundenbruchteile sein, aber auch Stunden.

von Teo D. (teoderix)


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)

von Florian S. (sirius7)


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

von Falk B. (falk)


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.

von Ulrich F. (Gast)


Lesenswert?

Alex S. schrieb:
> dass
> die Reaktionszeit vorhersehbar ist..?
Ja!
Wikipedia: Echtzeit
Sagt das gleiche, nur mit viel mehr Worten......
Lohnt sich zu lesen!

von Kaj (Gast)


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.

von Florian S. (sirius7)


Lesenswert?

ich frage mal so, was kann ein Beispiel sein, wo eine Programmierung mit 
freeRtos vorteilhafter ist, als einfach auf eine signal=true mit Mc zu 
reagieren?

von Georg (Gast)


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

von wendelsberg (Gast)


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

von Florian S. (sirius7)


Lesenswert?

Hallo Georg,

jetzt leuchtet es ein, vielen Dank für die gute Erklärung!

von W.A. (Gast)


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.

von Rolf M. (rmagnus)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.