Datenerfassung an einer Siemens Simatic S7

Veröffentlicht am 29. Mai 2019connect, Gateway, Story

Die Simatic S7 Produktreihe der Firma Siemens ist eine sehr weit verbreitete Industrie-Steuerung (SPS). Wir zeigen, wie man mit dem verlinked connect-Gateway Datenpunkte aus einer S7-Steuerung erfassen und in einer relationalen SQL-Datenbank speichern kann.

Aufbau mit der S7-1200

In diesem Beispiel verwenden wir eine Siemens Simatic S7-1200 als Steuerung. Dies ist eine relativ moderne Variante aus der S7-Reihe. In vielen Unternehmen treffen wir etwas ältere Steuerungen, etwa eine S7-400 oder S7-300 an. Der Datenzugriff erfolgt jedoch in allen Fällen über das “S7comm” Protokoll. Dieses Protokoll ist ein proprietäres Protokoll der Firma Siemens und unterliegt keinem offenen Standard. Daher ist der Zugriff hierüber nicht ganz trivial und erfordert einiges an Know-How.

Im connect-Gateway haben wir dieses Know-How in ein Plugin zur Kommunikation via “S7comm” gegossen, so dass für den Anwender nur noch einige wenige Einstellungen zu tätigen sind.

Zur Speicherung der Daten verwenden wir eine “MariaDB” Datenbank. Dies ist eine Open-Source Implementierung der beliebten MySQL-Datenbank, die wir ebenfalls verwenden könnten. Das connect-Gateway unterstützt über das “JDBC” Plugin alle gängigen relationalen (SQL) Datenbanken. Hierzu zählen auch die großen Anbieter wie den SQL-Server von Microsoft oder die DB2 von Oracle.

Die S7-1200 ist in diesem Aufbau der Daten-Produzent und die MariaDB ist der Daten-Konsument für die Datenpunkte, die von der S7-1200 gespeist werden.

Installation

Die Datenerfassung an der S7-1200 erfolgt über das TCP/IP Netzwerk. Das connect-Gateway läuft für dieses Beispiel auf einem IPC in Form des MDE:connect. Die MariaDB Datenbank haben wir auf einer Virtuellen Maschine (VM) auf einem Server im Unternehmen gestartet. Sowohl die S7-1200 als auch der IPC und die VM sind im selben Netzwerk installiert und der connect-Gateway kann eine Verbindung über das Netzwerk zur S7-1200 und zur MariaDB aufbauen.

Daten-Produzent

Die S7-1200 liefert als Daten-Produzent die zu erfassenden Datenpunkte im connect-Gateway. Hierfür lesen wir die Eingänge und Ausgänge an der Steuerung aus und geben die Werte weiter. Die digitalen Eingänge können wir im Beispiel über kleine Schalthebel auf “High” bzw. “Low” setzen. Zusätzlich ist in der Steuerung noch ein Zähler programmiert, der einen Wert periodisch hochzählt, wenn ein bestimmter Eingang auf “High” gesetzt ist. Wichtig ist, dass wir über das connect-Gateway nicht nur die aktuellen Werte der Eingänge, sondern auch der geschalteten Ausgänge erfassen können.

Insgesamt werden die folgenden Datenpunkte im connect-Gateway erfasst:

  • /s7_1200/input_0 bis _7
  • /s7_1200/output_0 bis _5
  • /s7_1200/sec_count_output_4 und _5

Um die Daten aus der S7-1200 auslesen zu können, müssen wir die Speicheradressen für diese Werte innerhalb der S7-1200 kennen. Diese Adressen ermitteln wir über das Siemens TIA-Portal. In der Konfiguration der dortigen Datenbausteine sind alle benötigten Angaben hinterlegt. Wir wollen hier nicht auf die Details des komplexen TIA-Portals eingehen, aber für einen SPS-Programmierer oder Techniker ist es kein Problem, diese Adressen zu ermitteln.

Mit den ermittelten Adressen konfigurieren wir das connect-Gateway so, dass die zu erfassenden Werte periodisch von der S7-1200 abgefragt werden. In unserem Beispiel ermitteln wir jede Sekunde einen aktuellen Wert.

Daten-Konsument

Als Daten-Konsument wurde für alle Datenpunkte die MariaDB Datenbank konfiguriert. Hierzu haben wir in der Datenbank eine Tabelle mit Spalten für jeden Datenpunkt angelegt. Wenn nun die Daten von der S7-1200 aktualisiert werden, wird ein Trigger ausgelöst, und die aktuellen Werte können mit einer SQL-Insert Anweisung in die Tabelle geschrieben werden. So erhalten wir eine fortlaufende Tabelle in der MariaDB, die alle Wertänderungen aller Ein- und Ausgänge der S7-1200 gespeichert hat.

Selbstverständlich sind auch komplizierte Tabellen und Datenbank-Strukturen möglich und können mit dem JDBC-Plugin geschrieben werden. Der connect-Gateway erzeugt hierzu eine frei konfigurierbare SQL-Anweisung, die auf der Datenbank ausgeführt wird.

Foto-Strecke

 

Ergebnis

Die Maschinendatenerfassung an einer Siemens Simatic Steuerung ist kein Problem mit dem connect-Gateway. Es müssen lediglich die Speicheradressen bekannt sein, um die entsprechenden Werte ermitteln zu können. Sind die Daten einmal als Datenpunkt im connect-Gateway verfügbar, können sie an beliebige Systeme weitergereicht werden. Im Beispiel haben wir kurz das JDBC-Plugin gestreift, mit dem wir Daten in relationale SQL-Datenbanken schreiben können.

Im Übrigen ist der umgekehrte Weg auch möglich. Es lassen sich Werte aus einer Datenbank auslesen und diese Werte wiederum in der S7-Steuerung setzen. So kann man etwa bestimmte Konfigurationsparameter über eine Datenbank an die Steuerung weiterreichen. Der verlinked connect-Gateway macht es möglich.