Ich überlege, ob der Raspberry Pi (3B) hinreichend schnell für eine produktionstechnische Steuerungsaufgabe ist. Es geht dabei um die Schaltung relativ schneller Ventile, die zur Materialbearbeitung auf einem Fließband dienen.
Folgende Anforderungen sind gegeben:
- Es müssten ein bis drei GPIO Eingänge ausgewertet werden.
- Abhängig vom Eingangssignal müsste nach einer Wartezeit (t1, t2 oder t3) ein GPIO Ausgang für eine Zeitdauer (t4, t5 oder t6) eingeschaltet werden (um das Ventil anzusteuern).
- Die Werte t1, t2, t3 liegen voraussichtlich im Bereich von "null" bis ca. 20 ms - fallweise auch höher. Möglicherweise sind auch alle drei stets gleich - es würde dann also einer genügen.
- t4, t5, t6 >= 40 ms - bis hin zu ca. 1000 ms.
- Die Geschwindigkeit der Maschine beträgt ca. 0,125 mm/msec. Also acht Millisekunden pro Millimeter. Die Abweichungen sollten nicht mehr als 4 ms ~ 0,5 mm betragen und sich natürlich auch nicht aufaddieren.
- Die nachfolgenden Zeitverzögerungen durch die elektronische Ansteuerung der Ventile durch Transistoren/Optokoppler oder was auch immer sind nach meiner Einschätzung vernachlässigbar.
Evtl. kommt je ein weiterer Eingang und Ausgang dazu - die wären aber nicht zeitkritisch.
Für die drei Eingänge wären ggf. also je zwei Werte nötig - insgesamt also sechs ( t1 - t6 ).
Die Werte könnten auf der Benutzerschnittstelle jeweils beliebig eingestellt werden.
Gegenüber einer Hardware-Schaltungslösung aus Timern, Quarzen, Teilern, Potis, Kondensatoren, Widerständen o. ä. hätte der Pi den Charme einer relativ einfachen Realisierung der Logik, einer verständlichen Benutzerschnittstelle, einer exakten Parametrisierung und einer bei Defekten leicht austauschbaren Hardware. Ein kleiner Touchscreen würde das ganze sogar richtig sexy machen!
Der Pi wäre nur für diese Steuerung eingesetzt und müsste keine weiteren Aufgaben bewältigen, die Last wäre also sehr gering. Netzwerkanbindung ist nicht nötig. Notfalls muss nicht mal eine grafische Benutzeroberfläche sein. Eine einfache alphanumerische Bedienoberfläche würde genügen.
Hat jemand Erfahrung mit zeitkritischen Zugriffen auf die GPIOs? Mit welchen Verzögerungen ist schon durch die programmtechnische Ansprache der GPIOs (über die Bibliotheken oder APIs und das Interrupthandling) zu rechnen?
Schafft der Pi diese kurzen Zeiten mit hinreichender Genauigkeit? Nach allem, was ich gelesen habe, liegen die Verzögerungen beim Pi in Bereichen bis 500 µs - allerdings bin ich nicht sicher, ob es nicht in Einzelfällen auch mal deutlich mehr sein kann... Ein hängendes System, das die Ventile sekundenlang nicht schaltet, wäre schlecht.
Ich habe von einem Realtime-Kernel gelesen. Ist es hier ratsam oder notwendig, einen RT-Kernel einzusetzen? Hat jemand Erfahrung mit diesem Kernel und dem Zugriff auf GPIOs? Nach allem, was ich gelesen habe. liegen die Verzögerungen mit dem RT-Kernel auch bei hoher Last unter 200 µs.
Gibt es Unterschiede in den Programmiersprachen hinsichtlich der Zeitverzögerungen? Welche Sprache ist ggf. geeignet? Einfach wäre die Programmierung in Python. Ich scheue mich aber auch nicht C#, C/C++ einzusetzen, wenn es erforderlich ist. (Assemblerprogrammierung wollte ich aber wirklich vermeiden! Ist Python als Interpretersprache zu langsam? Angeblich gibt's auch einen Compiler für Python - würde das was bringen?
Bin für jeden Tipp und jede Erkenntnis dankbar.