Python und Echtzeitprogrammierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Nameless
User
Beiträge: 2
Registriert: Dienstag 25. Dezember 2007, 18:23
Wohnort: Bayern

Hallo

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


Gruß
Nameless
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Falls du Threads meinst, die gibts in Python.
Jona
User
Beiträge: 94
Registriert: Sonntag 23. September 2007, 23:25

vorraussetzung dafür wäre ein echtzeitbetriebssystem.
(falls du es mit echtzeit wirklich ernst meinst)
BlackJack

Und es kommt auch sehr darauf an was man unter "Echtzeitprogrammierung" versteht.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Nameless
User
Beiträge: 2
Registriert: Dienstag 25. Dezember 2007, 18:23
Wohnort: Bayern

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
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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten