Zum Hauptinhalt springen

Studierendenprojekte

Echtzeitgerichtetes Task-System auf Linux-Basis

mit Anwendungsszenario SPS

Im Zuge des Research and Development Projektes im berufsbegleitendem Master-Studiengang Informationstechnik & System-Management wurde untersucht, ob und wie auf Basis des weit verbreiteten Linux-Kernels ein SPS-System realisiert werden kann. Durch den Einsatz eines Linux-basierten Betriebssystems könnte beispielsweise der benötigte Wartungsaufwand der Steuerungs-Hersteller erheblich reduziert werden. Notwendige, und oft auch sicherheitskritische, Updates könnten damit schneller verteilt werden und damit die Vernetzung der Systeme sicherer gestalten.

Der Linux-Kernel wird erst nach Anwendung der sogenannten RT-Patches echtzeitfähig und stellt die notwendigen Schedulingmechanismen für Prozesse und auch Threads zur Verfügung. Die Patches sind aktuell noch nicht im Mainline-Tree des Kernels, eine Integration wird aber in nächster Zeit erwartet. Eine Stärke des Linux Kernels ist der weitreichende Hardwaresupport für verschiedenste Peripherie und auch CPU-Architekturen. Um eine Aussage über die Echtzeitfähigkeit des Linux-Kernels auf einem Raspberry PI treffen zu können, wurde eine Reihe von Versuchen durchgeführt. Eine zyklische Ausführung eines Tasks variierte im Messsetup nur rund 150µs vom optimalen Zeitpunkt. Dieser Wert ist abhängig von der CPU und IO-Last, aber im Gegensatz zu einem nicht echtzeitfähigen System kann eine maximale Abweichung mit hoher Wahrscheinlichkeit gemessen werden.

Um eine SPS Laufzeitumgebung auf Linux implementieren zu können, wurden die zur Verfügung stehenden Task-Scheduler analysiert und bewertet. Der Linux-Kernel stellt die Scheduler SCHED_RR (Round-Robin), SCHED_FIFO (First-In, First-Out) und SCHED_DEADLINE, basierend auf Earliest-Deadline-First (EDF), zur Verfügung, wobei SCHED_RR und SCHED_FIFO nicht für zyklisch wiederkehrende Tasks, wie im klassischen Industriellen Umfeld benötigt, geeignet sind. Da auch die SCHED_DEADLINE Methode nicht die optimale Wahl für einen Scheduler ist, wurden weitere Algorithmen untersucht, und auch ein eigener Scheduler basierend auf dem bekannten Least-Laxity (LL) Algorithmus entworfen, welcher mit weniger Kontextwechsel arbeiten kann. Zum Vergleich der verschiedenen Methoden wurde ein Simulationsframework für Echtzeitscheduler in Python implementiert. Die Grafik zeigt den Vergleich des im Kernel integrierten EDF mit LL und zwei adaptierten LL Algorithmen, wie der Erfolg mit steigender Echtzeitauslastung abnimmt und gleichzeitig die Anzahl der Kontextwechsel zunimmt. Die Auswahl einer passenden Methode für ein bestimmtes Projekt kann mit dieser Information erleichtert werden.

Facts:
Projekt-Betreuer: FH-Prof. DI Dr. Stefan Huber und DI (FH) DI Simon Kranzer
Typ: R&D-Projekt
Studiengang: Master Informationstechnik & System-Management

Foto: FH Salzburg/Studierengruppe

Foto: FH Salzburg/Studierengruppe