Zum Datenaustausch der Hutschienenmodule untereinander wurde der 20-polige Systembus PiBridge entwickelt. Die PiBridge enthält drei Signaltypen: vier Pins zur Erkennung der Modultypen beim Startvorgang, weitere vier Pins für eine serielle RS‑485- Schnittstelle zum Austausch kleiner Datenpakete sowie acht Pins für ein Backplane Ethernet zum Transport größerer Datenmengen (Bild 3). RS‑485 wird zur Kommunikation mit den I/O-Modulen verwendet, Ethernet kommt beim Datenaustausch mit Gateway-Modulen zum Einsatz.
Beim Starten des Systems befinden sich alle angeschlossenen Module in einem Erkennungsstatus. Nur das unmittelbar rechts neben dem RevPi Core installierte Modul wird für die RS‑485- Kommunikation freigeschaltet und tauscht mit dem RevPi Core Statusdaten aus. In der Startphase werden Modultyp und -position erkannt und mit einer Konfigurationsdatei verglichen. Bei Übereinstimmung bekommt das Erweiterungsmodul seine spezifischen Konfigurationsdaten, darunter auch eine Moduladresse im System. Ist ein Modul fertig erkannt und konfiguriert, so schaltet es über die Steuerleitungen das nächstgelegene Nachbarmodul auf seiner Seite durch. Sind alle Module der rechten Seite konfiguriert, fährt RevPi Core mit der Freischaltung, Erkennung und Konfiguration der linken Seite fort, bis auch dort alle Module erkannt und konfiguriert sind. Danach wird der Busabschluss auf den jeweils letzten Modulen zugeschaltet und eine zyklische RS‑485-Kommunikation mit hoher Übertragungsrate gestartet. Parallel dazu wird die zyklische Kommunikation über die Ethernet-Kanäle gestartet. Wenn die vorgefundene Konfiguration von der Konfigurationsdatei abweicht, wird durch LEDs ein Fehlerstatus angezeigt.
Linux-Betriebssystem mit RT-Patch
Der RevPi Core ist eine offene Plattform, auf der angefangen beim Betriebssystem bis hin zu Applikationen alles installiert werden kann, was auch auf einem Raspberry Pi läuft. Standardmäßig ist auf einem RevPi Core Linux als Betriebssystem mit passenden Treibern für die RevolutionPi-I/O- und Gateway-Module vorinstalliert. Darauf aufbauend können eine Soft-SPS von logi.cals, die SCADA-Software SpiderControl und eigene Programme eingesetzt werden. Somit ist der RevPi Core eine komplette und betriebsbereite SPS.
Der RevPi Core besitzt Raspbian in der Version Wheezy mit RT-Patch des Kernel 4.1.13. Damit ist er so nah wie möglich an der originalen Entwicklungsumgebung eines Raspberry Pi und gibt dem Anwender trotzdem eine hohe Kontrolle über die Task-Prioritäten, die der Scheduler verwaltet. Der Scheduler, der die Ausführung von Tasks durch das Betriebssystem steuert, kann bei diesem modifizierten Kernel umfangreich konfiguriert werden, sodass die üblicherweise durch Netzwerk- und andere I/O-Zugriffe verursachten Verzögerungen vermieden werden.
Damit eigene Applikationen immer vollen Zugriff auf die I/O-Erweiterungen der RevPi-Familie haben, wird üblicherweise der Treiber PiControl, kurz: PiCon, verwendet. Dieser Treiber sammelt über die PiBridge mit einer definierten Zykluszeit alle Daten der RevPi-Familie ein bzw. verteilt die Daten auf diese Geräte. Die Daten werden dabei in einem zentralen Speicherbereich, dem Prozessabbild, abgelegt. PiCon läuft als „High Priority Task“ unter Kontrolle des Linux-Scheduler. Dadurch ist die maximale Zykluszeit des Treibers definiert. In der aktuellen Version liegt diese Zykluszeit für ein System mit zwei I/O-Modulen zwischen 5 und 10 ms.
PiCon macht aber mehr als nur die Datenverteilung. Beim Starten des Systems erkennt PiCon alle über die PiBridge angeschlossenen Module eines Systems und auch deren physische Position. PiCon kann diese Systemkonstellation mit einer Konfigurationsdatei vergleichen, die zuvor mit dem grafischen Konfigurator PiCtory erstellt wurde. In der Konfigurationsdatei können auch spezifische Konfigurationswerte für jedes Modul stehen, die PiCon beim Starten an die Module verteilt, um deren Betriebsarten und Verhaltensweisen einzustellen.