DoorPi Verbindung zu S7 SPS

  • Hallo
    ich habe mal ein eigenes Thema herzu erstellt.
    Ich habe Doorpi sowie Snap 7 erfolgreich auf einem Raspberry pi 3 Jessie installiert.
    Snap 7 bildet die Schnittstelle zwischen der SPS und dem Raspberry pi. Jetzt fehlt mir noch eine Schnittstelle zwischen einen Python Skript und Doorpi.

    Folgendes hab ich vor.

    Mein Klingeltaster und der Türöffner sind in der SPS verdrahtet. Die Haustüre wird von der SPS geöffnet.
    Wenn der Klingeltaster gedrückt wird, wird ein Bit in der SPS gesetzt. Diesen lese ich mit dem unteren Skript ein.
    Wie kann ich jetzt in Doorpi das Ereignis auslösen das geklingelt wird?

    Umgekehrt muss Doorpi ein Python Skript starten das mir ein Bit in der SPS setzt damit die Haustüre geöffnet wird.


    Hier mal das Skript







  • Wie kann ich jetzt in Doorpi das Ereignis auslösen das geklingelt wird?


    - mittels Hardware über GPIO / PiFace
    - mittels dem virtuellen Keyboard (basierend auf dem Dateien im Dateisystem)
    - WebApi per URL-Aufruf:

    Code
    1. http://raspberrypi/control/trigger_event?event_name=OnKeyPressed_test.11&event_source=doorpi.keyboard.from_gpio


    Wäre Event OnKeyPressed für Taste 11 für das Keyboard mit dem Namen test


    Alle Events gibt es bei Deinem DoorPi unter der URL:

    Code
    1. http://raspberrypi/dashboard/pages/status.modules.eventhandler.html


    Unter Übersicht -> aktive Quellen -> gelber Button ganz rechts als URL kopieren



    Umgekehrt muss Doorpi ein Python Skript starten das mir ein Bit in der SPS setzt damit die Haustüre geöffnet wird. [/font][/size]


    Schau Dir mal die Actions an - am Beispiel Log-Action:
    https://github.com/motom001/Do…tion/SingleActions/log.py


    Du müsstest Dir eine Action dafür anlegen - z.B. s7_setvalue.py

  • Hallo motom



    ich kenne mich nicht so gut aus wie das ganze Doorpi Programm Arbeitet. Deswegen habe ich noch einige Verständnis Probleme desweitern ist Pyhton nicht meine stärke.
    Ich habe folgende Skripts erstellt

    Hiermit werden die Klingeltaster aus der SPS gelesen







    und hirmit kann der Türöffner betätigt werden





    Wie und wo muss ich das ganze in Doorpi einbinden damit Doorpi mitbekommt wenn ein Taster gedrückt wird und Doorpi die Haustüre öffnet ?

  • Kannst Du mir noch sagen, wo man die Bibliothek "import snap7" herbekommt?


    Hallo


    https://sourceforge.net/projects/snap7/files/


    Hier mal die Anleitung zur Installation


  • Hallo motom
    ich habe mal versucht snap 7 als Funktion in Doorpi einzubinden, jedoch fehlt mir jede Menge hintergrundwissen wie Doorpi Arbeitet.

    Was passiert bei Parameter?
    Wie wird die Funktion s7_setvalue aufgerufen diese wir doch nirgends aufgerufen?
    Kannst du mir erklären wie Doorpi die Funktionen abarbeitet?


    Hier mal die ersten Versuche jedoch verstehe ich noch nicht wie doorpi seine Bausteine abarbeitet




  • Code
    1. http://raspberrypi/control/trigger_event?event_name=OnKeyPressed_test.11&event_source=doorpi.keyboard.from_gpio


    Alle Events gibt es bei Deinem DoorPi unter der URL:

    Code
    1. http://raspberrypi/dashboard/pages/status.modules.eventhandler.html


    Noch besser klappt's, wenn man den Port (default ist, glaube ich, 8080) mit einbindet. ;)


    Auf diese Weise teste ich z.B. die Funktion der mit Eingang 0 des PiFace-Moduls verbundenen Klingel, ohne dass ich jedes Mal zum Briefkasten laufen muss:


    Code
    1. http://192.168.0.22:8080/control/trigger_event?event_name=OnKeyPressed_onboardpins.0&event_source=doorpi.keyboard.from_piface


    Gruß,


    Thorsten

  • Hallo


    ich habe es mit folgendem Skrip hin bekommen eine Virtual Input BIN in die SPS zu Schreiben und einen BIT aus der SPS zum Türöffnen in einen Virtual Output zu übergeben.
    Mein skript muss extra gestartet werden damit es Funktioniert.




    Am liebsten würde ich das ganze in doorpi mit einbinden, hierzu habe ich mir in Singel Aktion das out.py angeschaut, jedoch verstehe ich einiges noch nicht.


    Im "def get" werden wohl die Parameter aus der config eingelesen, das wäre dann bei mir die Adressen S7_Write und S7_Read und die Vatiable True oder False + Zeit
    Dann werden die Parameter mit "return" ausgegeben an OutAction was passiert da genau ?


    Weiterhn müsste der Teil meines Programmes der den SPS BIT liest immer ausfegührt werden, so wie die Überwachung der Gipo s Bin's ? Wie und wo wird das ausgefürt ?
    Weiterhin möchte ich den Pfad der Virtual Keyboard aus der doorpi.ini Lesen ?


    Es wäre super wenn mir jemand die genaue Funktion des out.py erklären könnte



  • Hallo,
    ich würde gerne das Thema noch mal aufgreifen.
    Das oben genannte SPS S7 Skript funktioniert ja soweit und liest und setzt Virtuelle Ein/Ausgänge in Doorpi. Ich muss diese aktuell noch manuell starten.


    1. Besteht die Möglichkeit das Skript über Doorpi zu starten ? Oder Arbeitet dann Doorpi nicht mehr weiter da eine while Schleife permanent läuft?
    2. Kann ich Parameter wie IP, S7_DRead, S7_DWrite Adresse von Doorpi an das Skript übergeben um Änderungen in Doorpi durchzuführen ?

  • Hallo zusammen, bin neu hier und möchte eine Verbindung zwischen Raspberry Pi 3B und meine S7 1200 herstellen.
    Kommt leider diese Fehlermeldung.
    Wenn mir es jemand ohne Fachwörter erklären kann wäre ich dankbar.



    root@raspberrypi:~# ipython
    Python 2.7.13 (default, Nov 24 2017, 17:33:09)
    Type "copyright", "credits" or "license" for more information.


    IPython 5.1.0 -- An enhanced Interactive Python.
    ? -> Introduction and overview of IPython's features.
    %quickref -> Quick reference.
    help -> Python's own help system.
    object? -> Details about 'object', use 'object??' for extra details.


    In [1]: import snap7


    In [2]: plc = snap7.client.Client()


    In [3]: plc.connect('192.168.0.1'.0.1)
    File "<ipython-input-3-1b5e63f2bb0e>", line 1
    plc.connect('192.168.0.1'.0.1)
    ^
    SyntaxError: invalid syntax



    Mein IP Protokol bei der S7 1200

  • Hi, das ist mir auch klar das es mit der Zeile zutun hat aber was?
    Und mittlerweile kriege ich dies Meldung.
    Kennt sich da jemand aus?


    In [1]: import snap7


    In [2]: plc = snap7.client.Client()


    In [3]: plc.connect('192.168.0.1',0.1)
    ---------------------------------------------------------------------------
    TypeError Traceback (most recent call last)
    <ipython-input-3-47ab5c6e6712> in <module>()
    ----> 1 plc.connect('192.168.0.1',0.1)


    /usr/local/lib/python2.7/dist-packages/snap7/client.pyc in f(*args, **kw)
    22 """Parses a s7 error code returned the decorated function."""
    23 def f(*args, **kw):
    ---> 24 code = func(*args, **kw)
    25 check_error(code, context="client")
    26 return f


    TypeError: connect() takes at least 4 arguments (3 given)