Raspberry Pi3b mit Siemens S7-1500

  • Hallo zusammen,


    ich würde gerne offline, also ohne Anbindung an das Internet, Inputs einer Siemens S7-1500 1516F-3 mit einem Raspberry Pi3b auslesen. Explizit geht es darum, die Inputs %I7.0 - %I7.5 auszulesen. Diese Daten sollen dann für zwei weitere Raspberry Pi3b zugänglich sein, da diese Variablen (=Inputs der SPS) in einem Python-Skript auf den beiden anderen Raspberry Pi3b gebraucht werden.


    Hier wären jetzt meine Umsetzungsideen, die ich aus vorherigen Beiträgen gewonnen habe:


    - als Schnittstelle zur SPS würde ich auf dem ersten Raspberry Pi3b Node-Red installieren und die jeweiligen Inputs auslesen, in dem ich den Raspberry per Ethernet an die Profinet Schnittstelle der SPS anschließe. Diese sollen dann direkt über Node-Red in eine SQL Datenbank gespeichert werden. Erste Frage: Ist das an sich möglich und auch vernünftig oder gibt es in dem Fall eine andere Lösung?


    - der oben genannte Raspberry dient ebenfalls als WIFI Access Point, wodurch sich die anderen beiden Raspberry Pi3b in das Netzwerk verbinden können und Zugriff auf die SQL Datenbank des ersten Raspberry Pi haben. Funktioniert das oder gibt es eine bessere und einfachere Möglichkeit?


    - kann ich mit einem Python-Skript auf den anderen beiden Raspberry Pi3b (das gleiche Skript auf beiden Raspberry Pi natürlich) über das lokale Netzwerk auf die Datenbank zugreifen und die einzelnen Variablen in dem weiterführenden Skript verwenden?


    Ich hoffe mein Problem wurde halbwegs verständlich erklärt. Bei weiteren Fragen oder Unklarheiten könnt ihr euch gerne melden.


    Vielen Dank schon mal und beste Grüße


    Flo :)

  • Es gibt ziemlich viele Möglichkeiten das auf die eine oder andere Art umzusetzen.



    Der moderne Weg wäre z.B. übers Netzwerk via OPC-UA die Daten auszutauschen. Benötigt aber eine 1200/1500 mit aktueller Firmware.

    Die FrameTime ist 100 ms. Für schnelle Anwendungen also ungeeignet, es seiden man kauft die Modelle mit 10 ms.


    Dann gibt es die Möglichkeit via open user communication über TCP/UDP sein eigenes Protokoll zu erstellen (umständlich).

    Etwas weniger Umständlich wäre MQTT. Auf der anderen Seite braucht man dann irgendwo einen Broker, der von allen Clients und der SPS erreichbar ist.


    Eine weite Möglichkeit wäre Snap7, dass sich mit dem S7Online-Protokoll verbindet, aber nur eingeschränkt funktioniert.

    Snap7 unterstützt z.B. keine symbolischen Zugriffe und optimierte Datenbausteine auch nicht. Bei Snap7


    Das waren erst mal die Möglichkeiten (nicht alle), um die Daten aus der SPS auslesen zu können.


    ---


    Wenn man die Daten lokal speichern will, ist sqlite eine gute Wahl.


    Wenn man Datenbanken übers Netzwerk teilen will, dann nimmt man eher MariaDB oder PostgreSQL.

    Oder Zeitbasierte Datenbanken wie z.B. InfluxDB.

    Die meisten kennen MySQL (MariaDB).


    Wenn du jetzt einfach auf jedem Client lokal sqlite nutzt, um die Daten zu archivieren, muss auch jeder Client einzeln mit neuen Daten versorgt werden.


    Im Web-Bereich hat man einfach auf dem Server eine Datenbank, alle schreiben dorthin und alle lesen von dort und um ein Locking (z.B. INSERT + SELECT) kümmert sich die Datenbank selbst. Wenn die Datenbank nicht erreichbar ist, kann weder geschrieben noch gelesen werden (ist ja logisch).


    Vom Aufbau würde ich das so machen, dass ein Daemon eine Datenbank mit Daten versorgt.

    Die Clients können sich mit der Datenbank verbinden und abfragen.


    Es gäbe auch die Möglichkeit sqlite lokal zu nutzen und die Daten dann über ein eigenes Protokoll oder XML-RPC/JSON-RPC oder mit einer REST-API den Clients zur Verfügung zu stellen.


    Die meisten Webentwickler tendieren zu einer REST-API. Für nodejs wird es sicherlich auch gute Bibliotheken geben.

  • Seit der Firmware-Version 2.8 kannst du mit geringem Aufwand über die JSON-RPC API des S7-1500 Webservers auf Prozessvariablen zugreifen, sofern du symbolische Namen für deine Inputs definierst hast.


    Auf Youtube gibt es da eine schöne Demonstration:

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Im Handbuch des S7-1500 Webservers sind Details beschrieben:

    https://cache.industry.siemens…S_en-US.pdf?download=true