Erschienen am: 29.10.2015, Ausgabe SPS-MAGAZIN 11 2015

Matlab goes Simatic S7

Die Software Matlab und Simulink ist etabliert für Simulation und Diagnose in der Automatisierungsbranche. Bis dato fehlte in dieser Umgebung aber das notwendige Interface, um mit Simatic-S7-Steuerungen Prozessdaten auszutauschen. Eine neue Toolbox für Matlab liest und schreibt Daten der Steuerungsfamilien Simatic S7-1500, 1200, 300, 400, Logo! sowie kompatibler Systeme ohne SPS-Programm - via direkten Datenzugriff - auch symbolisch.

Autoren: Dipl.-Ing. (FH) Alois Träger, Traeger Industry Components GmbH;
Dominik Scharnagl, Traeger Industry Components GmbH.


Bild: Traeger Industry Components GmbH

Die Firma Traeger Industry Components liefert mit IP-S7-Link .Net Advanced eine Toolbox für Matlab, die sich nahtlos ins System integriert und komfortablen Zugriff auf sämtliche Daten der S7-Steuerung ermöglicht. Die Adressierung der Variablen erfolgt dabei gemäß IEC61131-3. Beispielsweise könnte ein Datenbaustein in der SPS zur Simulation des gesamten Prozesseingangsbereiches dienen. Dazu müsste im SPS-Programm lediglich am Zyklusbeginn der Baustein ins Prozessabbild kopiert werden. So könnten über Matlab, durch Änderung der DB-Daten, die Eingangswerte simuliert werden.

Sammlung implementierter Objekte

Die auf den IP-S7-Link-.Net-Software-Treiber basierende Toolbox stellt eine Sammlung von in Matlab implementierten Objekten bereit (Bild 3). Mit-hilfe dieser lässt sich mit wenigen Zeilen Matlab-Code die Kommunikation mit der SPS realisieren. Das Interface an sich ist dabei komplett objektorientiert implementiert. Auf der Webseite des Anbieters kann eine 14 Tage lauffähige unverbindliche Testversion heruntergeladen werden. Zur Installation muss der Anwender lediglich das heruntergeladene Archiv gemäß den Anweisungen in der Readme.txt einrichten. Der im Folgenden beschriebene Umgang mit der Toolbox beschränkt sich auf das Command Window von Matlab. Zum Test bietet der Hersteller seinen Kunden auf Wunsch auch einen Zugang per Internet auf eine S7-SPS. So lässt sich der Erfolg der ausgeführten Methode sofort nachvollziehen. Das erste zu erstellende Objekt ist vom Typen SiemensDevice. Dabei spielt es für die Toolbox keine Rolle, ob es sich bei der SPS um eine S7-300, S7-400, S7-1200, S7-1500 bzw. eine Logo! handelt. Wurde erst einmal der entsprechende Endpunkt der SPS (IP-Adresse, Rack und Slot) definiert, kann die verbindungsorientiere Interaktion mit der SPS beginnen. Hierzu bietet das zuvor definierte Device-Objekt die CreateConnection-Methode an (Bild 2). Das dabei bereitgestellte PlcDeviceConnection-Objekt übernimmt schließlich die Kommunikation mit der SPS via ISO on TCP. Zu beachten ist, dass sich die Verbindung aktuell im Zustand Created befindet. Vor dem ersten Zugriff auf die SPS muss somit per Aufruf der Open-Methode die Verbindung geöffnet werden (Bild 2). Die tatsächliche Verbindung zur SPS wird letztendlich beim ersten Aufruf einer Methode durchgeführt die eine direkte Interaktion mit der SPS voraussetzt. Eine solche Methode wäre z.B. ReadByte oder WriteByte der PlcDeviceConnection-Klasse.

Lesen und Schreiben von Werten

Unter Einsatz eines PlcDeviceConnection-Objektes lassen sich sowohl einzelne Werte (skalar) als auch ganze Arrays aus der SPS lesen und auch wieder in diese zurückschreiben (Bild 4). Hierzu stehen datentypspezifische Read&Write-Methoden sowie die allgemeinen ReadValues- und WriteValues-Methoden zur Verfügung. Die dabei zu adressierenden Speicherbereiche der SPS lassen sich im typischen Adress-Operanden-Format gemäß dem IEC61131-3 angeben. Die dabei an die Toolbox übergebene PlcAddress wird gemäß dem Standard validiert und auf Kompatibilität mit dem zu lesenden bzw. schreibenden Speicherbereich geprüft. Alternativ kann der Adress-Operand auch dynamisch über die Klassen PlcAddress und PlcOperand im Code erzeugt werden (Bild 4). Bei Verwendung der dynamischen Erzeugung der absoluten Adress-Operanden wird an Stelle des Text-Operanden das PlcAddress-Objekt übergeben. Im Vergleich zum Zugriff auf skalare Werte muss beim Zugriff auf mehrere Werte vom gleichen Datentyp lediglich die Anzahl der zu lesenden Elemente nach dem Adress-Operanden übergeben werden. Beim Schreiben von Werten in die SPS bedient man sich der Write-Methoden der PlcDeviceConnection-Klasse. Im Gegensatz zu den Read-Methoden wird zusammen mit dem Adress-Operanden der zu schreibende Wert an die Methode übergeben. Auch hier lassen sich die dynamisch per Matlab-Code erzeugten Adress-Operanden verwenden. Auch ganze Arrays lassen sich über die selbigen Write-Methoden direkt in die SPS schreiben. Hierzu übergibt man an Stelle der einzelnen Zahl die entsprechende Array Variable oder definiert die Array Werte inline beim Aufruf der Methode (Bild 4). Das Besondere daran ist, dass die Toolbox dabei keinen Unterschied zwischen einem einfachen Array oder einem Cell-Array in Matlab macht. Beide Array-Typen werden gleich behandelt und führen zum selben Schreibergebnis. Die bisher erwähnten Zugriffe bezogen sich immer auf Datenbausteine. Die Toolbox bietet ebenso Zugriff auf Merker, Timer, Zähler sowie E/As und den Peripheriebereich der SPS. Hierzu verwendet man z.B. für einen Merker die Eigenschaft Flag der PlcOperand-Klasse anstelle der Methode DataBlock, die die Nummer des zu adressierenden Datenbausteins erwartet.

Klassenmodell verhindert unnötigen Traffic

Bei Einzelzugriffen muss für jede Variable ein separates Telegramm erzeugt und zur SPS gesendet werden. Dieses Vorgehen führt zu Performance-Verlust und unnötigen Traffic auf der Leitung. Dieses Problem löst die Toolbox mit einem entsprechenden Klassenmodell (Bild 3). Per Definition handelt es sich bei den SPS-Zugriffen immer um die Kombination von Adress-Operand und Wert. Kapselt man diese Paare anhand der spezialisierten PlcValue-Klassen (Bild 5), so lassen sich innerhalb einer einzigen Transaktion n-verschiedene skalare Werte bzw. Arrays in beliebiger Kombination in die SPS schreiben oder von dieser lesen. Die Toolbox kollektiert die geforderten Transaktionen und generiert die kleinstmögliche Menge von benötigten Transporttelegrammen für die SPS. Dabei wird auch die maximale PDU-Size der Kummunkationsebene ausgeschöpft. Werden die Verweise auf die Value-Objekte in Variablen gemerkt, so lassen sich diese auch jederzeit wiederverwenden. Die Werte der Variablen können vor Aufruf von Write über die Value-Eigenschaft gesetzt werden. Nach Read-Aufrufen wird der Wert über die Value-Eigenschaft abgerufen. Initialwerte der PlcValue-Objekte können bereits beim Aufruf des Konstruktors festgelegt werden.

Verbindungen unter der Haube

Betrachtet man die PlcDeviceConnection-Klasse genauer, so finden sich u.a. Eigenschaften die den Typen, Zustand und Timeouts der Verbindung festlegen. Weiter finden sich noch zahlreiche andere Read- und Write-Methoden für den lesenden und schreibenden Zugriff auf die SPS (Bild 6). Wird eine mit Open geöffnete Verbindung nicht länger benötigt, sollte diese mit der Close-Methode wieder geschlossen werden. So werden die zur Kommunikation mit der SPS angeforderten Ressourcen wieder freigegeben. Die genaue Art des verwendeten Kanals lässt sich darüber hinaus über die Type-Eigenschaft festlegen. Hierzu stehen SPS-typisch die Kanäle Operationpanel (OP), Programmiergerät (PG) und Sonstige/SPS zur Verfügung. Die für die SPS spezifischen Daten wie der Gerätetyp, Rack und Slot werden hingegen auf der PlcDevice-Klasse über die EndPoint-Eigenschaft festgelegt. Die dafür entsprechenden Werte können darüber hinaus auch beim Erstellen des IPDeviceEndPoint Objektes im Konstruktor übergeben werden. In Sachen Fehlerbehandlung bedient sich die Toolbox am für Matlab üblichen Error-Handling. Kommt es somit bei der Kommunikation zu einen Fehler, so wird eine Matlab-Ausnahme (MException) erzeugt. Interessant ist auch, dass die Toolbox Verbindungen zur SPS automatisch wiederherstellt, sobald wieder möglich. Seien es Störungen im Netzwerk oder weil z.B. die SPS außer Betrieb war. Ein besonderes Szenario im Falle von Verbindungsproblemen bleibt somit dem Toolbox-Anwender erspart. Die Toolbox liest und schreibt alle Daten immer konsistent. Dadurch wird zum einen die Korruption von Daten in der SPS vermieden und zum anderen auch die Richtigkeit der Daten die gelesen werden sichergestellt.

Ausblick

Im Release 11/2015 implementiert Traeger die Integration von Siemens-Projekten wie dem Step7- und TIA-Projektformat. Eines der dabei adressierten Funktionen ist das automatische Bereitstellen von PlcDevice-spezifischen Informationen. Dazu gehören die Endpunkt Konfigurationen, die Baustein Daten und Symboltabellen. Sie ermöglichen den symbolischen Zugriff auf SPS-Variablen (Bild 5). Hierbei finden die vom SPS-Programmierer vorgegebenen symbolischen Namen Verwendung. Die S7-Toolbox für Matlab erlaubt durch die übersichtlichen Klassen und Schnittstellen einen schnellen Einstieg in die Ansteuerung der SPS in Matlab. Ob skalare Werte, Arrays oder gar gemischte Datentypen alle Kombinationen lassen sich einfach und schnell aus der SPS lesen und in diese zurückschreiben. Auch auf die Fehlerbehandlung wurde geachtet, so dass die Kommunikation stets stabil und passend durchgeführt wird. Hierbei werden sämtliche SPS-Datenformate wie Ganzzahl-, Fließkommazahl-, Datum-, Zeit- und S7-String-Werte unterstützt und können mit einer Zeile Code gelesen und geschrieben werden. Das zusätzliche dynamische Erzeugen der Adress-Operanden überzeugt hierbei auch in Sachen Parameterisierbarkeit.