Daten einer Siemens Simatic S7 SPS verarbeiten

Daten einer Siemens Simatic S7 SPS verarbeiten

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 erfasst.

Aufbau mit der Simatic SPS

In diesem Beispiel verwenden wir eine Siemens Simatic S7-1200 als Steuerung. Dies ist eine relativ moderne Variante aus der Reihe. In vielen Unternehmen treffen wir etwas ältere Steuerungen, etwa eine 400er oder 300er 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.

SIMATIC S7-1200 in unserem Test

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.

Installation

Die Datenerfassung an der SPS erfolgt über das TCP/IP Netzwerk. Das connect-Gateway läuft für dieses Beispiel auf einem kleinen Industrie-PC, der über das Netzwerk mit der Steuerung verbunden ist.

Konfiguration der S7-1200

Die Steuerung fungiert als Daten-Produzent für die zu erfassenden Werte. Hierfür lesen wir die Eingänge und Ausgänge an der SPS aus und geben die Werte weiter. Die digitalen Eingänge können wir im Beispiel über kleine Schalthebel auf “High” bzw. “Low” setzen. 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.

Datapoints

Wir legen für jeden Wert, den wir aus lesen wollen zunächst entsprechende Datapoints im connect-Gateway an.

    <datapoints>
        <datapoint>
            <path>/dp_1200_di00</path>
            <type>integer</type>
        </datapoint>
    </datapoints>

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.

Endpoint S7-1200

Zunächst legen wir einen Endpoint fest. Unter diesem Endpoint ist die S7-1200 über das Netzwerk erreichbar.

    <endpoint>
        <name>S7_1200</name>

Für diesen Endpoint legen wir nun S7comm als Protocol fest. Über die Paramters legen wir u.a. die IP-Adresse und andere Einstellungen fest.

    <protocol plugin="S7comm">
        <name>S7comm</name>
        <parameters>
            <param key="host">192.168.0.31</param>
            <param key="port">102</param>
            <param key="rack">0</param>
            <param key="slot">1</param>
        </parameters>

Trigger

Die Daten sollen einmal pro Sekunde abgefragt werden. Also legen wir einen zyklischen Trigger an, der dies erledigt.

        <trigger>
            <cyclicTrigger>
                <period>1000</period>
                <unit>milliseconds</unit>
            </cyclicTrigger>
        </trigger>

Producer

Für jeden Datapoint legen wir im weiteren einen Producer an. Für jeden Datapoint müssen wir die entsprechende Adresse innerhalb der S7-1200 SPS konfigurieren.

        <producer>
            <name>dp_1200_di00</name>
            <parameters>
                <param key="area_type">PE</param>
                <param key="data_type">BIT</param>
                <param key="db_number">0</param>
                <param key="length">1</param>
                <param key="offset">0</param>
            </parameters>

Decoder

Um den konkreten Wert einer Variable in einen Datapoint zu schreiben, müssen wir im letzten Schritt noch einen NUMBER_DECODER definieren. Dieser wandelt den Datentyp aus der Siemens-Welt für unser Gateway um.

            <decoder plugin="NUMBER_DECODER">
                <parameters/>

Mapping

Innerhalb des Decoders wird nun das Mapping festgelegt. Es legt fest, wohin der Werte der Variable aus der S7-1200 SPS in den Dataspace des connect-Gateways geschrieben wird. Beim Mapping wird auch der Datentyp festgelegt.

            <mapping>
                <datapoint>/dp_1200_di00</datapoint>
                <parameters>
                    <param key="type">u8</param>
                </parameters>
            </mapping

Damit ist die Konfiguration abgeschlossen. Die Werte werden nun zyklisch erhoben und stehen im connect-Gateway für Daten-Konsumenten zur Verfügung.

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 Übrigen ist der umgekehrte Weg auch möglich, dass heißt man kann Werte in der S7-Steuerung setzen. So kann man etwa bestimmte Konfigurationsparameter über eine Datenbank an die Steuerung weiterreichen. Das verlinked connect-Gateway macht es möglich.