Harte Echtzeit mit Python oder C?

Topics about the Software of Revolution Pi
Post Reply
Rechenschieber
Posts: 4
Joined: 20 May 2021, 12:33

Harte Echtzeit mit Python oder C?

Post by Rechenschieber »

Hallo Forum,

ich würde gerne den RevPi als digitalen Regler einsetzen und benötige deswegen harte Echtzeit Anforderungen. Das bedeutet, das beispielsweise alle 20 ms ein Wert ausgegeben werden muß!
Jetzt stellt sich für mich die Frage wie das umzusetzen ist. Geht das mit Pyton oder nur mit C bzw. was ist dann dabei zu berücksichtigen?

Gruß, Rechenschieber
User avatar
p.rosenberger
Posts: 91
Joined: 03 Jul 2020, 11:07

Re: Harte Echtzeit mit Python oder C?

Post by p.rosenberger »

Hallo Rechenschieber,

das Thema Echtzeit ist leider Komplexer auf einem Linux System ist komplexer als man denkt. Wir haben auf unserem System den PREEMPT_RT Echtzeitpatch. Dies ist aber nur die halbe Miete. Mit welchen Schnittstellen willst du arbeiten? Und ich glaube kaum dass Python für Echtzeitprogrammierung taugt. Nach eine kurzen suche bin ich über dies gestolpert:
https://stackoverflow.com/questions/707 ... via-python
Python's stop-the-world garbage collector makes latency non-deterministic. When Python decides it needs to run the garbage collector, your program gets stopped until it finishes. You may be able to avoid this through careful memory management and carefully setting the garbage collector parameters, but depending on what libraries you are using, you may not, too.
Und auch bei der Programmierung mit C muss man auf verschiedene Dinge achten. Ohne weiter Informationen kann ich dir aber kaum sagen ob dein Projekt auf dem RevPi realisierbar ist.

Viele Grüße
Rechenschieber
Posts: 4
Joined: 20 May 2021, 12:33

Re: Harte Echtzeit mit Python oder C?

Post by Rechenschieber »

Hallo Herr Rosenberger,

das mit dem Garbage Collector in Python hatte ich mir auch schon so gedacht. Dann muß man auf C ausweichen.
Es würde darum gehen einen analogen Wert einzulesen und nach entsprechenden Berechnungen wieder einen analogen Wert auszugeben (z.B. über RevPi AIO). Die Ausgabe muß dabei immer im gleichen Tankt erfolgen. Eine Feldbus-Schnittstelle wäre nicht notwendig.

Wäre soetwas machbar?

Gruß, Rechenschieber
danielcharles
Posts: 1
Joined: 22 May 2021, 08:01

Re: Harte Echtzeit mit Python oder C?

Post by danielcharles »

Hello

No, you cannot write real-time programs with it. But even with C ++ or C you need an underlying real-time operating system.

I don't know what you want to do. But a lot can be solved by passing the real-time evaluations on to microcontrollers. These then only forward the information to the computer if it is relevant for global control. For communication with the microcontrollers you are usually well served with USB. This means that the data can be transferred to and from the µC with 1.5 Mbit, 12 Mbit or even 480 Mbit.

For example:http://www.siphec.com/converter/index.html#USB2PARALLEL

Communication with the microcontrollers via USB is again something that can be done with Python.

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

Thanks
Daniel Charles
Rechenschieber
Posts: 4
Joined: 20 May 2021, 12:33

Re: Harte Echtzeit mit Python oder C?

Post by Rechenschieber »

Hi Charles,

i understand that Python is not the way for Realtime Applications. I am fine to do it in C with the RevPI Core (including the well known Linux Preempt-RT-Patch).
I want to programm a digital controller that reads an analog value and after some calculations output an analog value every 20 ms . I think the RevPi AIO Modul can do this. But it is very important that the value will be refreshed exactly every 20 ms. Otherwise the control loop will get in trouble.

Best regards,
Rechenschieber
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

Re: Harte Echtzeit mit Python oder C?

Post by dirk »

Hi 20ms Zykluszeit ist sportlich. Das Worst Case Szenario bedeutet 2x Zykluszeit plus die Zeit der Verarbeitung durch das Programm.
Du kannst die Zykluszeit abfragen durch die Variable “RevPiIOCycle”. Beschreibung siehe hier:
https://revolution.kunbus.de/pictory-ne ... -2-jessie/
Ich denke wenn Du einen Wert von 5 hast bist Du auf der sicheren Seite.
Post Reply