Seite 1 von 1

Python und Echtzeitprogrammierung

Verfasst: Dienstag 25. Dezember 2007, 18:30
von Nameless
Hallo

Ich habe mal eine Frage - nur so aus Interesse:
Kann man mit Python auch richtige Echtzeitprogrammierung (wie in C++) betreiben?


Gruß
Nameless

Verfasst: Dienstag 25. Dezember 2007, 18:35
von schlangenbeschwörer
Falls du Threads meinst, die gibts in Python.

Verfasst: Dienstag 25. Dezember 2007, 18:58
von Jona
vorraussetzung dafür wäre ein echtzeitbetriebssystem.
(falls du es mit echtzeit wirklich ernst meinst)

Verfasst: Dienstag 25. Dezember 2007, 19:19
von BlackJack
Und es kommt auch sehr darauf an was man unter "Echtzeitprogrammierung" versteht.

Re: Python und Echtzeitprogrammierung

Verfasst: Dienstag 25. Dezember 2007, 19:20
von gerold
Nameless hat geschrieben:Kann man mit Python auch richtige Echtzeitprogrammierung (wie in C++) betreiben?
Hallo Nameless!

Nein, Echtzeitprogramme kann man damit nicht schreiben. Aber auch bei C++ oder C braucht man dafür ein darunter liegendes Echtzeitbetriebssystem.

Ich weiß ja nicht, was du machen möchtest. Aber vieles lässt sich lösen, indem man die Echtzeitauswertungen an Mikrocontroller weitergibt. Diese leiten dann die Informationen nur dann an den Computer weiter, wenn diese für die globale Steuerung relevant sind. Zur Kommunikation mit den Mikrocontrollern ist man normalerweise mit USB gut bedient. Damit können die Daten von und zum µC mit 1,5 MBit, 12 MBit oder sogar mit 480 MBit übertragen werden.

Z.B. damit: http://www.siphec.com/converter/index.html#USB2PARALLEL

Die Kommunikation mit den Mikrocontrollern per USB ist wieder eine Sache, die man mit Python erledigen kann.

- PyUSB: http://pyusb.berlios.de/
- http://web.media.mit.edu/~dmerrill/sens ... howto.html

mfg
Gerold
:-)

Verfasst: Dienstag 25. Dezember 2007, 19:41
von Nameless
BlackJack hat geschrieben:Und es kommt auch sehr darauf an was man unter "Echtzeitprogrammierung" versteht.
Das harte Echtzeitanforderungen erfüllt werden.


@gerold
Ein Echtzeitbetriebssystem wie eCos?

Andere Frage:
Braucht man für Echtzeitprogrammierung in Python unbedingt einen Mikrocontroller oder würde es theoretisch (nicht logisch) auch mit einem Mini-PC funktionieren?


Gruß
Nameless

Verfasst: Dienstag 25. Dezember 2007, 19:49
von BlackJack
Das wird mit Python, zumindest mit CPython nicht machbar sein, wie in jeder Sprache bzw. Implementierung bei der es einen Garbage Collector gibt, der jederzeit Rechenzeit beanspruchen kann.

Verfasst: Dienstag 25. Dezember 2007, 20:25
von gerold
Nameless hat geschrieben:Ein Echtzeitbetriebssystem wie eCos?
[...]
Braucht man für Echtzeitprogrammierung in Python unbedingt einen Mikrocontroller oder würde es theoretisch (nicht logisch) auch mit einem Mini-PC funktionieren?
Hallo Nameless!

Messen, steuern, regeln. Für so etwas sind Mikrocontroller ideal geeignet. Da läuft ein kleines Programm in einer Schleife und kümmert sich um nichts Anderes als um die paar Aufgaben die man dem Mikrocontroller gegeben hat. So ist harte Echtzeit kein Problem. Wichtige Ereignisse unterbrechen die Schleife kurzfristig (Interrupt). Danach läuft die Schleife wieder weiter.

Ob du mit so etwas gut bedient bist, kommt darauf an, was du machen möchtest. Python kann nichts mit harter Echtzeit anfangen. Aber vielleicht brauchst du das ja auch nicht.

Vielleicht eignet sich Python für dein Vorhaben -- vielleicht aber auch nicht. Es kommt ganz auf die Anwendung an. Was willst du denn machen?

Natürlich kannst du das auch mit einem MiniPC erreichen. Es muss dann aber ein Echtzeitbetriebssystem darauf laufen und darf sich um nichts Anderes als um die Abarbeitung der Echtzeitanwendung kümmern. Und das Programm sollte so geschrieben sein, dass keine Aktionen zufällig passieren. Man kann den Garbage Collector von Python ausschalten. Das ist aber eine heikle Sache und nichts für Anfänger. http://docs.python.org/lib/module-gc.html

Hier findest du mehr Infos zu dem Thema:
- http://www.fh-wedel.de/~si/seminare/ws0 ... nuxRT0.htm
- http://www.heise.de/newsticker/meldung/52051
- http://www.heise.de/newsticker/meldung/88529/from/rss09
- http://www.lineltech.de/echtzeit1.html
- http://de.wikipedia.org/wiki/Liste_der_ ... ebssysteme
- http://de.wikipedia.org/wiki/Echtzeitbetriebssystem

mfg
Gerold
:-)

Verfasst: Dienstag 25. Dezember 2007, 20:43
von Leonidas
gerold hat geschrieben:Und das Programm sollte so geschrieben sein, dass keine Aktionen zufällig passieren. Man kann den Garbage Collector von Python ausschalten. Das ist aber eine heikle Sache und nichts für Anfänger. http://docs.python.org/lib/module-gc.html
Ich glaube dennoch nicht, dass CPython einem in Bestimmten Zeitraum definierte Reaktionen garantieren kann, so wie es für harte Echtzeit notwendig ist.

Achja, Ingo Molnar arbeitet auch an Patches die Linux RT-fähig machen. Aber ich habe mich nicht weiter damit befasst.

Verfasst: Dienstag 25. Dezember 2007, 20:56
von gerold
Leonidas hat geschrieben:Ich glaube dennoch nicht, dass CPython einem in Bestimmten Zeitraum definierte Reaktionen garantieren kann, so wie es für harte Echtzeit notwendig ist.
Hallo Leonidas!

Du hast natürlich Recht. Das Ausschalten des GC verbessert die Laufzeit eventuell ein wenig. Aber harte Echtzeit ist damit nicht zu erreichen. Das geht nur mit Programmen, die mit Echtzeitbetriebssystemen eng zusammen arbeiten und evt. sogar deren Libraries einbinden um deren Verhalten genauer steuern zu können. Es ist schon ein paar Jahre her. :? Ich finde die Links nicht mehr, die ich damals zu diesem Thema gesammelt habe.

lg
Gerold
:-)