RevPi7 Kurzanleitung

Rund um die Software von Revolution Pi
Post Reply
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41

RevPi7 Kurzanleitung

Post by volker »

Da wir aktuell noch kein Tutorial zu RevPi7 fertig haben, hier eine Kurzanleitung im Forum. Bitte beachte, dass RevPi7 keine Freeware ist, sondern bei gewerblicher Nutzung ein Lizenzvertrag mit KUNBUS abgeschlossen werden muss. Für private Anwendungen und zum Testen im gewerblichen Umfeld darf es auch ohne Lizenz verwendet werden. Wir werden zeitnah auch noch eine "how to" Anleitung mit einem praktischen Beispiel online stellen.
Die folgende Anleitung setzt allerdings voraus, dass Du Dich mit einer S7 und den dort üblichen Begriffen (TSAP, DB, PLC Rack Nr., etc.) auskennst. Wir empfehlen diese Software generell nur Kunden, die sich in der Siemenswelt zumindest ein wenig auskennen. Sinnvoll ist sicher auch, einfach mal im Internet die vorhandenen Webseiten zu Snap7 zu durchforsten und dessen Doku gründlich zu lesen.

Beschreibung von RevPi7
Allgemein
RevPi7 ist ein Dienst, welcher durch PiCtory konfiguriert wird und gemäß dieser Konfiguration Daten zwischen einer Siemens-Steuerung vom Typ S7 und dem RevPi PA austauschen kann. Dabei werden zyklisch mittels des STEP7 Protokolls Anfragen an die S7 abgesetzt. Diese Anfragen enthalten Aufforderungen zum Schreiben oder Lesen der globalen Speicherbereiche E, A, M sowie von DBs. Die Steuerung antwortet mit einer Quittung bzw. den angefragten Daten.
Das STEP7 Protokoll wird über die Bibliothek SNAP7 sowie einen Python Wrapper bereitgestellt. Der Service wird über ein Pythonscript realisiert, welches diese Bibliothek importiert. Dieses Script liest beim Start/Reset des PiControl-Treibers die _config.rsc Datei, 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 Modul werden im PA 128 Byte Input und 128 Byte Output reserviert. Ggf. werden Module mit 512 und 1024 Byte pro >Richtung bereitgestellt (solange es keinen Editor für RAP-Dateien gibt und Varianten sich nur auf die Darstellung aber nicht auf den eigentlichen Speicherverbrauch auswirken).

Konfigurationsdaten
Die Daten gliedern sich in globale Daten und eine Liste mit N Zeilen für Aufgaben (Tasks).
Die globalen Daten umfassen folgende Einträge:
• Namen für die 128 Eingänge und 128 Ausgänge im PA
• PLC IP (IP der S7 Steuerung, muss einer der zur Verfügung stehenden Adressräume entsprechen)
• Local TSAP (2 Byte Integer, 0 bis 2^16) default = 0 (einfach mal mit 0 versuchen, das passt meistens)
• Remote TSAP (2 Byte integer, 0 bis 2^16) default = 0 (einfach mal mit 0 versuchen, das passt meistens)
• Connection Type (Byte: PG=1, OP=2, Basic3 bis Basic10 = 3 bis 10) default = OP (besser auf OP lassen, wenn Du Dich nicht mit Step7 auskennst)
• PLC Rack # (Byte, 0 bis 7) default = 0 (INFO: typically 0)
• PLC Slot # (Byte, 0 bis 16) default = 2 (INFO: typically 1 for S7 1200, 2 for S7 300 and 0 for S7 1500)
• PLC type (S7 = 0, Logo! = 1) default = 0 (ACHTUNG! Logo! funktioniert leider nicht mit RevPi7!)
• Namen für 32 Statuseinträge (pro Task ist 1 Byte Status vorgesehen, jeweils Input)
• Name für einen Connectionstatus (1 Byte Input)
• Name für einen Status Reset (1 Byte Output)

Die Liste umfasst maximal 32 Zeilen für Aufgaben. Dabei hat jede Zeile die folgenden Spalten:
• Datenrichtung (read = 0, write = 1) default = 0
• Speicherbereich (I = 0x81, Q = 0x82, M = 0x83, DB = 0x84, CT = 0x1C, TM 0x1D) default = M
• DB# (uint16, 0-2^16) default ist 0 (dieser Wert wird nur beim Speicherbereich DB verwendet)
• Start (uint16, 0-2^16) default ist 0 (dieser Wert wird nicht bei Speicherbereich DB verwendet)
• Anzahl/Size (uint16, 0-2^16): number of units, d.h. 1 Byte bei I, Q, M und DB und 2 Byte bei TM, CT) default ist 1
• Zykluszeit in ms (0 bis 2^16): default 1000, Wert 0 bedeutet bei write nur Übertragung bei PA-Werteänderung. (Wenn machbar sollten Werte unter 100 - außer 0 bei write - nicht angenommen werden).
• Source/Destination im PA: Dropdown mit Liste der Inputs vom Modul bei read und Outputs bei write (es findet keine Überprüfung von doppelt verwendeten oder überlappenden Bereichen statt!).

Umsetzung des Dienstes
Aufgliederung in mehrere Tasks, wobei eine Task für den Zugriff auf das PA sowie das Löschen der Fehlerstatus zuständig ist und alle anderen Tasks ausschließlich über diese Task die Werte schreiben und lesen. 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.
Der Dienst wird durch den Aufruf eines Pythonscripts gestartet. Dieser Aufruf erfolgt automatisiert in Abhängigkeit von seiner Aktivierung im Webstatus.
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 vorrübergehend gezogen).
Die Fehlerstatus bleiben permanent im PA gespeichert und werden erst beim Setzen des Reset-Flags im PA zurückgesetzt.


S7 1200/1500 Anmerkungen

Eine S7-1200/1500 CPU muss das S7 Basisprotokollverwenden, bei dem nur HMI-Daten, d.h. basisdatentransfer erlaubt ist.
Alle anderen PG-Aufgaben (control/directory/etc..) folgen dem "extended protocol".
Um einen DB in einer S7-1200/1500 abzufragen, müssen ergänzende Einstellungen an der SPS vorgenommen werden.
1. Nur globale Dbs können erreicht werden.
2. Der "optimierte Blockzugriff" muss ausgeschaltet sein.
3. Der Zugriffslevel muss auf "full" stehen und die Verbindungseinstellungen müssen GET/PUT erlauben.

In TIA Portal V12 sehen diese Einstellungen den DB Eigenschaften so aus:
Wähle den DB in der linken Liste “Program blocks” aus und drücke Alt-Enter (oder im Kontextmenü “Properties…” auswählen)
"Optimized block access" muss deaktiviert werden (per Default ist er eingeschaltet).
The attachment pic1.PNG is no longer available
Sicherheitseinstellung
Wähle das CPU Project in der linken Liste aus und drücke Alt-Enter (oder wähle im Kontextmenü “Eigenschaften…” aus)
Beim Punkt "Protection" wähle “Full access” und wähle “Permit access with PUT/GET ….” wie im Bild zu sehen.
pic2.PNG
pic2.PNG (83.18 KiB) Viewed 12831 times
Attachments
pic1.PNG
pic1.PNG (32.87 KiB) Viewed 12840 times
Unser RevPi Motto: Don't just claim it - make it!
MarkusH
Posts: 9
Joined: 09 Jun 2018, 20:36

Re: RevPi7 Kurzanleitung

Post by MarkusH »

Hallo Volker,

ich wollte mal nachfragen, ob es zu dem Thema schon ausführlichere Infos gibt? Ich arbeite an einer Umsetzung eines Projekts in der eine Siemens SPS mit dem RevPI kommunizieren soll. Grundsätzlich würde mich das Thema sehr interessieren, zumal es die Interaktion mit einer Siemens SPS einfacher machen würde. Zusätzliche Hardware wäre auch nicht erforderlich. Auch Beispiele wären hilfreich.

Vielen Dank!


Schönen Gruß - Markus
Post Reply