RT-Linux Implementierung RevPiPyLoad
Posted: 26 Nov 2020, 13:36
Hallo,
ich bin gerade dabei, mich mit dem RevPi in SPS-Gefilde vorzutasten. Hierfür mochte ich das Programm in Python mit RevPiModIO programmieren. An RevPiModIO gefällt mir insbesondere die RevPi PLC-Control GUI gut, da Sie das Ganze ein wenig idiotensicherer macht.
Was ich machen möchte:
Ich habe vor, mein Steuerungsprogramm als Echtzeit-Thread laufen zu lassen. Da ich nur weiche Echtzeitanforderungen erfüllen möchte, ist dies für mich kein kritischer Punkt. Aber wenn wir schon für ein RT-Linux bezahlt haben, wollen wir das doch nutzen oder ? (Jaja ich weiß: Python => Garbage-Collector != Echtzeit; Damit kann ich leben) Erfahrung mit unixoiden System habe ich. Mit RT-Linux habe ich aber bisher praktisch keinen Kontakt gehabt.
Soweit ich es weiß, bedeutet RT-Linux nur, dass wir einen RT-Scheduler haben, welcher RT-Tasks priorisiert Rechenzeit zuweißt und die restliche an den normalen Scheduler weitergibt.
Die Frage hierzu:
Nun gibt es in der Konfigurationsdatei revpipyload.conf den Konfigurationspunkt rtlevel = 0. Dazu habe ich auf den ersten Blick keine Dokumentation finden können. Hört sich ja sehr verdächtig an und es hat sich auch gezeigt, dass der Punkt einen Einfluss auf die Priorität des Prozesses hat.
Beim Wert 0 habe ich die Priorität 20, was ja Ideal-Standard ist. Beim Verstellen stellt kann die Priorität -2 erreicht werden, welche höher ist. Das ich ja aber nach meinem Verständnis noch immer eine Priorität von dem herkömmlchen Scheduler. Die RT-Priotitäten sind in htop anscheinend mit RT gekennzeichnet.
- Welche Verstellmöglichkeiten gibt es bei dem rtlevel?
- Wie kann ich mein Steuerungsprogramm mit RevPiPyLoad als RT-Thread starten?
- Gibt es Erfahrung bezüglich RT-Thread vs -2-Thread?
Falls es Antworten geben sollte, bedanke ich mich für diese schon einmal im Vorraus!
Beste Grüße
Jan
ich bin gerade dabei, mich mit dem RevPi in SPS-Gefilde vorzutasten. Hierfür mochte ich das Programm in Python mit RevPiModIO programmieren. An RevPiModIO gefällt mir insbesondere die RevPi PLC-Control GUI gut, da Sie das Ganze ein wenig idiotensicherer macht.
Was ich machen möchte:
Ich habe vor, mein Steuerungsprogramm als Echtzeit-Thread laufen zu lassen. Da ich nur weiche Echtzeitanforderungen erfüllen möchte, ist dies für mich kein kritischer Punkt. Aber wenn wir schon für ein RT-Linux bezahlt haben, wollen wir das doch nutzen oder ? (Jaja ich weiß: Python => Garbage-Collector != Echtzeit; Damit kann ich leben) Erfahrung mit unixoiden System habe ich. Mit RT-Linux habe ich aber bisher praktisch keinen Kontakt gehabt.
Soweit ich es weiß, bedeutet RT-Linux nur, dass wir einen RT-Scheduler haben, welcher RT-Tasks priorisiert Rechenzeit zuweißt und die restliche an den normalen Scheduler weitergibt.
Die Frage hierzu:
Nun gibt es in der Konfigurationsdatei revpipyload.conf den Konfigurationspunkt rtlevel = 0. Dazu habe ich auf den ersten Blick keine Dokumentation finden können. Hört sich ja sehr verdächtig an und es hat sich auch gezeigt, dass der Punkt einen Einfluss auf die Priorität des Prozesses hat.
Beim Wert 0 habe ich die Priorität 20, was ja Ideal-Standard ist. Beim Verstellen stellt kann die Priorität -2 erreicht werden, welche höher ist. Das ich ja aber nach meinem Verständnis noch immer eine Priorität von dem herkömmlchen Scheduler. Die RT-Priotitäten sind in htop anscheinend mit RT gekennzeichnet.
- Welche Verstellmöglichkeiten gibt es bei dem rtlevel?
- Wie kann ich mein Steuerungsprogramm mit RevPiPyLoad als RT-Thread starten?
- Gibt es Erfahrung bezüglich RT-Thread vs -2-Thread?
Falls es Antworten geben sollte, bedanke ich mich für diese schon einmal im Vorraus!
Beste Grüße
Jan