Matlab goes Simatic S7

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