Wir erfuhren von einer „Open Source IPC auf Basis des Raspberry Pi“ mit dem Namen RevolutionPi und wurden hellhörig!
Nach einigen Tests und „Spielereien“ mit diesem System, ergaben sich schon die ersten, ernsthaften Anwendungen für den industriellen Einsatz!
Die Hardwarekonfiguration wird über eine Webseite gemacht, die sich auf dem PiCore-Modul befindet. Das Programm nennt sich „piCtory“.
Allen Ein- und Ausgängen können dort symbolische Namen zugewiesen werden, die einem den Umgang und die Programmierung erleichtern sollen. Wenn diese Konfiguration angelegt und aktiviert ist, werden die Daten der Ein-, Ausgangsmodule und Gatewaymodule über ein 4096 Byte großes Prozessabbild ausgetauscht.
Möchte man mit Python3 ein Programm schreiben, kann man mit einem FileHandler auf dieses Prozessabbild zugreifen und jene Daten der Module lesen und schreiben. Allerdings stehen einem die symbolischen Namen dort nicht zur Verfügung und man muss die einzelnen Bits der IOs in den Bytes selber suchen… ausrechnen… lesen… schreiben… … …
Aber genau an dieser Stelle kommt unser python3-revpimodio2 Modul ins Spiel!
Wenn man es in Python verwendet, erstellt es, mit Hilfe der piCtory Konfiguration, alle Ein- und Ausgänge mit deren symbolischen Namen als Objekte. Der Programmierer kann diese direkt über die symbolischen Namen ansprechen und auf die Werte der Ein- und Ausgänge zugreifen – sowohl lesend, als auch schreibend!
# Wenn Eingang t_an aktiv ist, wird Ausgang h_an gesetzt if rpi.io.t_an.value: rpi.io.h_an.value = True
Zusätzlich stellt es dem Entwickler viele nützliche Funktionen zur Verfügung, mit denen zyklische oder ereignisbasierte Programme entwickelt werden können.
Kennt man vom Raspberry Pi die .add_event_detect(...)
Funktion aus dem GPIO Modul, kann man dieses Verhalten auch mit dem Revolution Pi erzielen:
def event_detect(ioname, iovalue): rpi.io.h_an.value = iovalue print(ioname, iovalue) # Ereignisfunktion an Eingang t_an koppeln rpi.io.t_an.reg_event(event_detect)
Selbst bei Hardwareänderungen, aber gleichbleibenden Namen der Ein- und Ausgänge, muss der eigentliche Python3-Quellcode nicht mehr verändert werden!
Zusammenfassung
Mit diesem Modul möchten wir allen Python Entwicklern einiges an Arbeit ersparen. Die ganze Kommunikation mit dem Prozessabbild wird optimiert modulintern durchgeführt. Änderungen der Ein- und Ausgänge werden nebenbei mit ausgewertet und die zusätzlichen Funktionen des Moduls geben dem Entwickler viele Werkzeuge mit auf seinen Weg.