Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Für Themen rund um das Prozessabbild des RevPi Core
Peter
Posts: 7
Joined: 03 Mar 2017, 10:27
Answers: 0

Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by Peter »

Hallo zusammen,
Ich möchte über ein Python- oder C-Programm Ventile steuern, die über Profinet an einer S7 angebunden sind.
Die Teilnehmer des Netzes scheinen richtig konfiguriert zu sein, es leuchtet keine rote LED.
Netzwerkteilnehmer sind die Siemens Simatic S7-300, der RevPi IRT Gateway und ein Profinet-Feldbusknoten (CPX-FB33) von der Firma Festo.
Um eine erste Kommunikation zwischen den Teilnehmern herzustellen, habe ich versucht, im TIA-Portal Ausgänge zu forcen und mit Hilfe von PiTest im Prozessabbild nachgeschaut, ob sich etwas verändert hat.
Umgekehrt habe ich versucht mit Hilfe von PiTest auf dem RevPi-Core Werte in verschiedenen Offsets zu schreiben und mit Hilfe der Beobachtungstabellen im TIA-Portal die Veränderungen nachzuvollziehen.
Leider konnte ich keine Veränderungen feststellen.

Dies liegt vermutlich auch daran, dass ich nicht weiß auf welchen E/A-Adressen ich überhaupt schreiben/lesen soll.
Aber vielleicht gibt es auch eine bessere Methode, um eine Kommunikation zwischen den Netzwerkteilnehmern herzustellen?
Im PiCtory wurde der Profinet IRT Gateway links vom RevPi-Core konfiguriert. Er hat die Adresse 31.

Im TIA-Portal unter Gerätesicht findet sich Folgendes:
Gerätesicht.png
Gerätesicht.png (43.05 KiB) Viewed 10469 times
Die Netzsicht sieht so aus:
Netzsicht.png
Netzsicht.png (47 KiB) Viewed 10469 times
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by volker »

Hallo Peter,
bitte stelle mal einen Screenshot vom PiCtory (mit gateway angeklickt) online, damit wir sehen, wie dort die E/As eingebunden wurden. Außerdem rufe im PiCtory mal "Export" und dann einen der beiden Exports und stelle die generierte Textdatei mal online. Dann kann man mehr dazu sagen.
Unser RevPi Motto: Don't just claim it - make it!
Peter
Posts: 7
Joined: 03 Mar 2017, 10:27
Answers: 0

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by Peter »

Hallo Volker, vielen Dank für die schnelle Reaktion!
Hier der gewünschte Screenshot:
PiCtory.png
PiCtory.png (191.07 KiB) Viewed 10460 times
Und hier der Inhalt der exportierten Dateien:
GLOBALS hardwareConfig
VAR_GLOBAL

RevPiStatus AT %IB1.1024: BYTE := ; //
RevPiLED AT %QB1.1025: BYTE := ; //

END_VAR
END_GLOBALS

Die zweite Datei sieht so aus:
RevPiStatus 1024 //BYTE
RevPiLED 1025 //BYTE
Peter
Posts: 7
Joined: 03 Mar 2017, 10:27
Answers: 0

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by Peter »

Okay, ich kann jetzt auf dem RevPi-Core mit folgenden Befehlen die LED ein bzw. ausschalten.
ausschalten:
./piTest -w 1025,1,0

einschalten:
./piTest -w 1025,1,1

Leider veränderten sich die Werte im TIA-Portal an der enstsprechenden Adresse dabei nicht.

Jetzt habe ich bei PiCtory bei allen Ein- und Ausgängen das Kästchen "Export" angeklickt.
Nach dem Exportieren sah die Datei so aus:

GLOBALS hardwareConfig
VAR_GLOBAL

Input_1 AT %IB1.0: BYTE := ; //
Input_2 AT %IB1.1: BYTE := ; //
Input_3 AT %IB1.2: BYTE := ; //
Input_4 AT %IB1.3: BYTE := ; //
Input_5 AT %IB1.4: BYTE := ; //
Input_6 AT %IB1.5: BYTE := ; //
Input_7 AT %IB1.6: BYTE := ; //
Input_8 AT %IB1.7: BYTE := ; //
Input_9 AT %IB1.8: BYTE := ; //
Input_10 AT %IB1.9: BYTE := ; //
Input_11 AT %IB1.10: BYTE := ; //
Input_12 AT %IB1.11: BYTE := ; //
Input_13 AT %IB1.12: BYTE := ; //
Input_14 AT %IB1.13: BYTE := ; //
Input_15 AT %IB1.14: BYTE := ; //
Input_16 AT %IB1.15: BYTE := ; //
Input_17 AT %IB1.16: BYTE := ; //
Input_18 AT %IB1.17: BYTE := ; //
Input_19 AT %IB1.18: BYTE := ; //
Input_20 AT %IB1.19: BYTE := ; //
Output_1 AT %QB1.20: BYTE := ; //
Output_2 AT %QB1.513: BYTE := ; //
Output_3 AT %QB1.514: BYTE := ; //
Output_4 AT %QB1.515: BYTE := ; //
Output_5 AT %QB1.516: BYTE := ; //
Output_6 AT %QB1.517: BYTE := ; //
Output_7 AT %QB1.518: BYTE := ; //
Output_8 AT %QB1.519: BYTE := ; //
Output_9 AT %QB1.520: BYTE := ; //
Output_10 AT %QB1.521: BYTE := ; //
Output_11 AT %QB1.522: BYTE := ; //
Output_12 AT %QB1.523: BYTE := ; //
Output_13 AT %QB1.524: BYTE := ; //
Output_14 AT %QB1.525: BYTE := ; //
Output_15 AT %QB1.526: BYTE := ; //
Output_16 AT %QB1.527: BYTE := ; //
Output_17 AT %QB1.528: BYTE := ; //
Output_18 AT %QB1.529: BYTE := ; //
Output_19 AT %QB1.530: BYTE := ; //
Output_20 AT %QB1.531: BYTE := ; //
RevPiStatus AT %IB1.1024: BYTE := ; //
RevPiLED AT %QB1.1025: BYTE := ; //

END_VAR
END_GLOBALS

Ich vermute ich muss diesen Text im TIA-Portal irgendwo eintragen, richtig? Aber wo?
User avatar
RevPiModIO
KUNBUS
Posts: 322
Joined: 20 Jan 2017, 08:44
Answers: 0
Contact:

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by RevPiModIO »

Moin Peter!

Wir haben das Profinet Gateway mit 512 Bytes für Inputs und Outputs konfiguriert.
Screenshot_20170303_122717.png
Screenshot_20170303_122717.png (3.63 KiB) Viewed 10453 times
Und ich würde dir empfehlen piCtory auf die neuste Version zu aktualisieren, da hat sich auch einiges getan!

Ich hab mal unseren TIA Entwickler nach dem Projekt gefragt, mit dem wir das Gateway mal getestet haben. Er hat bei der Baugruppe noch Input und Output Module gesetzt:
Screen Shot 03-03-17 at 12.02 PM.PNG
Screen Shot 03-03-17 at 12.02 PM.PNG (164 KiB) Viewed 10453 times
Das Python-Programm auf dem RevPi sah dann so aus:

Code: Select all

import revpimodio
import time

revpi = revpimodio.RevPiModIO()

# 8 Bytes ab "Input'1" zu einem int() Wert registrieren
revpi.devices[34].reg_inp("timestamp","Input'1","Q")

while True:

    # Inputs lesen
    revpi.devices.readprocimg()

    # Inputbyte "Input'33" auf Outputbyte "Output'33" spiegeln
    revpi.devices[34]["Output'33"].value = revpi.devices[34]["Input'33"].value

    # Timestamp, der von der SPS in den Output "Output32 Byte_1" geschrieben wird ausgeben
    print(revpi.devices[34]["timestamp"].value)

    # Outputs schreiben
    revpi.devices.writeprocimg()

    time.sleep(0.5)
Durch den Test wurde auch die Idee zu RevPiModIO geboren.

Bei den Gateway-Modulen war es besonders praktisch mit reg_inp oder reg_out die einzelnen Bytes zu bestimmten Werte zusammenzufassen, um sie dann bequem im Python-Programm zu verwenden!

Gruß, Sven

PS: Das Tia-Projekt darf ich dir auch geben, solltest du da mal reinschauen wollen: http://files.miprotek.de/s/nqDQzfghEVSsx5t
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
User avatar
RevPiModIO
KUNBUS
Posts: 322
Joined: 20 Jan 2017, 08:44
Answers: 0
Contact:

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by RevPiModIO »

Auf die IO-Module am RevPi-Core inkl. der LEDs hast du über TIA kein Zugriff. Da musst du dann ein Python-Programm drum bemühen...

Wenn du über TIA z.B. auf dem ersten Byte das erste BIT setzt, kann ein Python-Programm das dann auf die LED "umwandeln"

Code: Select all

import revpimodio
import time

revpi = revpimodio.RevPiModIO()

# Nulltes BIT vom nullten Byte ("Input'1") zu einem bool() Wert machen
revpi.devices[31].reg_inp("ledan","Input'1", "?", bit=0)

while True:

    # Inputs lesen
    revpi.devices.readprocimg()


    if revpi.devices[31]["ledan"].value:
        print("led grün")
        revpi.devices.core.A1 = revpimodio.GREEN
    else:
        print("led aus")
        revpi.devices.core.A1 = revpimodio.OFF

    # Outputs schreiben
    revpi.devices.writeprocimg()

    time.sleep(0.5)
Wenn TIA auf dem Output das erste BIT setzt, ist es aus Sicht vom Pythonprogramm ein Input in piCtory mit dem Namen "Input'1". Wenn das Bit True ist, wird die LED A1 grün, sonst ist sie aus.

Gruß, Sven
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by volker »

Hallo Peter,
lass uns nicht zu viel auf einmal hier besprechen. Darum komme ich zu Deiner ersten Frage zurück. Du willst in TIA Signale setzen und dann mit piTest im PA vom RevPi Core die Änderungen sehen. Dazu musst Du in TIA erst einmal dein Gateway komplett konfigurieren. Die Screendumps zeigen, dass Du zwar das gerät reingeholt hast, aber noch keine E/A Module. Ähnlich wie bei Sven auf dem Bild zu sehen, sollten im Baum rechts bei den möglichen Geräten eine Ebene tiefer auch die möglichen E/A Module sein, die das gateway simuliert. Hier kannst Du N x Ein- oder Augabemodule in die Slots auf TIA ziehen. Die Größe ist dabei Dir überlassen. Auf dem Gateway wird das ja eh nicht interpretiert, sondern die Bytes liegen hintereinander im Speicherbereich. Dieser Speicherbereich wird 1:1 ins PA kopiert. Dort erfolgt der Zugriff mit piTest zum Beispiel über den offset, den Du in der Export-Offsetliste siehst.
Wenn Du also das erste Ausgangsbyte in TIA veränderst, sollte sich im ersten Input-Byte im PA diese Änderung zeigen und piTest sollte unter dem symbolischen namen, den Du im PiCtory dem ersten byte gegeben hast, diese Änderung auch zeigen.

Das ganze ist absolut unabhängig von der PiCtory Version und auch von den Export-Häkchen. Die sind nur für logi.CAD relevant (oder bei bstimmten Zugriffsfunktionen über PiControl per C / Python).
Du brauchst auch kein Python oder irgend etwas anderes außer PiCtory und piTest, um dieses Experiment zu machen.

Zu den LEDs am Core: Wenn Du die über die S7 und den Gateway setzen willst, dann brauchst du eine Applikationssoftware auf dem RevPi Core (selber schreiben oder logi.CAD). Diese Software muss die Eingänge des Gateway lesen und bei entsprechenden Werten mit PiControl die LED-Ausgänge im PA (das ist ein Byte, in welchem die 4 LEDs 2 x grün und 2 x rot bitcodiert stecken) wie gewünscht setzen. Das ist für einen ersten Test daher weniger sinnvoll. Du solltest pitest verwenden, so wie Du es geschrieben hast. Wenn Du das Gateway in TIA korrekt eingebunden und konfiguriert hast, dann sollte das auch gehen.
Unser RevPi Motto: Don't just claim it - make it!
Peter
Posts: 7
Joined: 03 Mar 2017, 10:27
Answers: 0

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by Peter »

Vielen Dank miprotek für das Softwarearchiv, die Codebeispiele und die Ratschläge! Dies ist auch über mein konkretes Problem hinaus äußerst hilfreich.
Auch allerherzlichsten Dank an Volker für den Tip. Ich habe mir schon gedacht, dass ich noch etwas vergessen habe.
Ich habe die Module jetzt reingezogen. Es sieht jetzt so aus:
IOModule_reingezogen.PNG
IOModule_reingezogen.PNG (62.96 KiB) Viewed 10445 times
Bislang bleiben die Tests allerdings noch ohne Erfolg. Soll ich im PiCtory Inputs / Outputs auf 21 oder auf 512 stellen?
Ich könnte auch versuchen die Ausgänge im logi.CAD 3 zu schalten und vom TIA aus beobachten.
User avatar
volker
Posts: 1046
Joined: 09 Nov 2016, 15:41
Answers: 1

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by volker »

ok, da sieht schon besser aus. Jetzt befürchte ich, dass du eventuell nur noch ein verständnisproblem bei der Logik der Zuordnungen hast. Bitte versuche nicht irgendwelche symbolischen namen in TIA mit denen in PiCtorry zu verwechseln, Das sind 2 getrennt Welten. In TIA hast Du auf dem Screenshot die A-Adresse 256 dem ersten Byte vom Gatewayspeicher zugeordnet. laut Deinem Screendump landet dieses Byte im PA vom revPi in dem Eingang Input_1. Wenn Du also eine Ausgabe von diesem Byte mit piTest willst, dann gebe auf der Commandline ein "piTest -r Input_1". Wenn Du nun in TIA Deinen A 256 auf einen anderen Wert setzt, sollte die Ausgabe mit piTest diese Änderung widerspiegeln.
Alternativ bekommst Du eine Dauerausgabe von der Commandline mit "piTest -r xx 1", wobei Du xx mit der Adresse im PA ersetztne musst, an der Input_1 liegt. Diese kann ich aus Deiner Exportliste entnehmen, da dort "Input_1 AT %IB1.0: BYTE " die Adresse 0 angibt. Also: mit piTest -r 0,1 bekommst Du eine kontinuierliche Anzeige des ersten bytes im Gateway Input, welches gemäß Deiner TIA-Konfiguration der A 256 ist.

versuch das bitte mal...
Unser RevPi Motto: Don't just claim it - make it!
Peter
Posts: 7
Joined: 03 Mar 2017, 10:27
Answers: 0

Re: Kommunikation zwischen RevPi und Siemens S7 mit dem Profinet IRT Gateway im TIA-Portal

Post by Peter »

Ich habe das gerade ausprobiert.
So sieht meine Beobachtungstabelle aus:
Beobachtungstabelle.PNG
Beobachtungstabelle.PNG (65.09 KiB) Viewed 10443 times
Auf dem RevPi-Core passiert hingegen leider nichts:
RevPi_Core.jpg
RevPi_Core.jpg (49.14 KiB) Viewed 10443 times
Post Reply