RevPi7

RevPi 7 ist ein Dienst, der Daten zwischen einer Siemens-Steuerung vom Typ S7 und dem RevPi austauschen kann. Durch das Step7-Protokoll werden zyklisch Anfragen an die S7 gesendet. Diese Anfragen enthalten Aufforderungen zum Schreiben oder Lesen der globalen Speicherbereiche (Eingänge, Ausgänge, Merker und Datenbausteine). Die Siemens-Steuerung antwortet auf diese Anfragen mit einer Quittung oder den angefragten Daten.

RevPi7 ist in PiCtory als virtuelles Modul im Gerätekatalog angelegt und wird dort auch konfiguriert.

Das STEP7 Protokoll wird über die Bibliothek SNAP7  und einen Python Wrapper bereitgestellt. Der Service wird über ein Pythonscript realisiert, dass die SNAP7 Bibliothek importiert. Das Pythonscript liest beim Start/Reset des PiControl-Treibers die Datei _config.rsc, um die Konfigurationsdaten zu ermitteln.
Es können mehrere Instanzen des Dienstes laufen bzw. in einer Instanz können mehrere virtuelle RevPi7 Module verarbeitet werden. Für jedes virtuelle RevPi7 Modul werden im PA 128 Byte Input und 128 Byte Output reserviert. Ggf. werden Module mit 512 und 1024 Byte pro Richtung bereitgestellt.

Umsetzung des RevPi7 Dienstes

Der Dienst RevPi7 ist in mehrere Tasks aufgeteilt. Eine Task ist für den Zugriff auf das Prozessabbild und das Löschen des Fehlerstatus zuständig. Alle anderen Tasks schreiben und lesen Werte ausschließlich über diese Task.

Jede Aufgabe aus der Liste wird in eine separate Task mit Timer umgesetzt. Diese Tasks verwenden für die Aufgabe jeweils blockierende Aufrufe in die SNAP7 Library. Rückgegebene Fehlercodes werden in die zugehörigen Statusbytes im PA geschrieben. Eine eigene Task überwacht den Reset von PiControl und beendet in einem solchen Event die Aufgaben-Tasks, um sie gemäß der _config.rsc neu aufzusetzen. Diese Task wird auch nach Initialisierung des Dienstes gestartet.

Es werden nur Logeinträge geschrieben, wenn der Dienst mit einem switch –d (debug) gestartet wurde.
Der Dienst beendet sich nicht selber, wenn keine Connection aufgebaut werden kann, sondern versucht die Connection periodisch aufzubauen. Bei später auftretenden Kommunikationsstörungen heilt sich die Verbindung ebenfalls selbst (z.B. RJ45 Stecker vorübergehend gezogen).
Die Fehlerstatus bleiben permanent im Prozessabbild gespeichert und werden erst beim Setzen des Reset-Flags im PA zurückgesetzt.