Die SPS Familie S7 von SIEMENS gehört zu den weit verbreiteten SPS Systemen (Speicher Programmierbare Steuerungen) in der Automatisierung. SIEMENS bietet umfangreiche Tools, um die S7 gemäß IEC1131 zu programmieren und für alle möglichen Steuerungsaufgaben einzusetzen. (Wenn Sie nicht wissen, was eine SPS ist - hier ein älterer Beitrag aus dem Jahr 2000: Grundlagen einer SPS.)
In vielen Fällen wünschen Automatisierungskunden ein frei programmierbares Linuxterminal, das direkt mit der SPS S7 kommuniziert und von dort Daten und Werte aller Art übernimmt. Diese Werte sollten auf dem Linuxterminal beliebig weiter verarbeitet werden. Im einfachsten Fall handelt es sich hierbei um Datenlogging (die Werte der S7 werden auf dem Linuxterminal gespeichert) oder um eine komfortablere Visualisierung (die Werte der S7 werden im Display des Terminals angezeigt. Der Benutzer kann zusätliche Eingaben über die Frontpaneltastatur des Terminals eingeben.)
Die S7 bietet von Haus aus alle Möglichkeiten, um die internen Werte - nachfolgend Operanden genannt - beliebig abzufragen. Lediglich die Kommunikationsmöglichkeit zwischen S7 und einem Linuxterminal ist nicht standardmäßig vorhanden - und muß durch eine kleine Linuxsoftware realisiert werden.
Zugriff auf die SPS S7 Operanden
Diese Software auf dem Terminal soll möglichst universell einsetzbar sein und möglichst alle von der S7 bereitgestellten Ressourcen / Operanden abdecken. Zu den S7 Operanden zählen z.B: Eingänge (E), Ausgänge (A), Merker (M), Zeitfunktionen / Timer (T), Zählfunktionen (Z) sowie auf die Datenbausteine (DB). Hinzu kommt der verständliche Wunsch: Der Programmierer, der auf dem Linuxterminal eine Anwendung programmiert, soll sich nicht mit den Tiefen der S7 Kommunikation "herumschlagen" müssen. Das Ganze sollte weitgehend Plug&Play Fähigkeit mit einfachster Handhabung ablaufen. Zum besseren Verständnis - trotzdem hier einige Details zu Adressierung der S7 Operanden:
Adressierung der S7 Eingänge
Operand Datentyp Erläuterungen E xxx y Bit xxx = Nummer des Eingangs Bytes
y = Nummer des BitsEB xxx Byte xxx = Nummer des Eingangs Byte EW xxx Word xxx = Nummer des Eingangs Word ED xxx Doppelword xxx = Nummer des Eingangs Doppel Wort Adressierung der S7 Ausgänge
Operand Datentyp Erläuterungen E xxx y Bit xxx = Nummer des Bytes
y = Nummer des BitsAB xxx Byte xxx = Nummer des Byte AW xxx Word xxx = Nummer des Word AD xxx Doppelword xxx = Nummer des Doppel Wort Adressierung der S7 Merker
Operand Datentyp Erläuterungen M xxx y Bit xxx = Nummer des Bytes
y = Nummer des BitsMB xxx Byte xxx = Nummer des Byte MW xxx Word xxx = Nummer des Word MD xxx Doppelword xxx = Nummer des Doppel Wort Adressierung der S7 Zähler und Zeitgeber
Operand Datentyp Erläuterungen Z xx Zähler xx Zählernummer, max. 999 T xx Zeitgeber xx Zeitgeber Linuxdaemon als Basis der Kommunikation zwischen SPS und Terminal
Für die Industrieterminals der Serie TRM/xx wird ein Linuxdaemon bereitgestellt, der die Kommunikation zwischen der S7 und dem Terminal unter embedded Linux durchführt. Dieser Linuxdaemon nutzt die Multitaskingeigenschaften von Linux und stellt seine Dienste und Funktionalitäten als eigenes Programm / eigener Task im Hintergrund zur Verfügung. Quasi im Vordergrund kann der Programmierer sein individuelles Applikationsprogramm ablaufen lassen, das die Dienste des Kommunikationsdaemon nutzt. Der Linuxdaemon trägt den Namen ssvs7 und hat eine Dateigrösse von ca. 60kByte.
Der Vorteil dieser Art der Programmierung: Beide Programme (Kommunikationsdaemon und Hauptprogramm) sind quasi voneinander unabhängig. Der Anwendungsprogrammierer programmiert sein Hauptprogramm und muß keinen Aufwand für die Interna der S7 Kommunikation erbringen.
Der Linuxdaemon zur S7 Kommunikation belegt eine serielle Schnittstelle auf dem Terminal - Device tty/Sx. Diese serielle Schnittstelle dient nur der Kommunkation mit der S7 und kann für weitere Anwendungen nicht verwendet werden.
Wesentliches Element des Linuxdaemon ist die Steuerung über eine Konfigurationsdatei. Diese Konfigurationsdatei trägt den Namen ssvs7.ini. Hierbei handelt es sich um eine Textdatei, die mit einem beliebigen Editor verändert werden kann. In der Konfigurationsdatei werden die auszulesenden Operanden der S7 spezifiziert. Die in dieser Datei enthaltenen Daten liegen in Form von 2- oder 3 Elementen (Operanden) vor, die durch Separatoren, am besten Space, voneinander getrennt werden. Zusätzlich zum auszulesenden Operand wird ein Lesezyklus / Periodenmultiplikator definiert. (1 = alle 250 ms, 2 = alle 500ms, 4 = alle 1000ms usw.) Beispiel der Konfigurationsdatei in dem die nachfolgenden Operanden verschiedener Ein- und Ausgänge alle 250ms ausgelesen werden:
EB124 ; 1
EB125 ; 1
EW124 ; 1
ED124 ; 1
AB124 ; 1Beispielprogramm
Um die einfache Handhabung der Kommunikation zwischen S7 und Terminal zu demonstrieren, ein kleines Beispielprogramm. Dieses Beispielprogramm, das sich direkt in einem embedded Linux im Autostart eingetragen wurde, startet den Linuxdaemon zur S7 Kommunikation, liest über diesen dann beliebige Werte von der S7 ein und stellt diese im Display des Terminals da.
Das Terminal ist dabei über Ethernet LAN im Netzwerk eingebunden. Nebenstehendes Bild zeigt eine Displayanzeige für die o.a. Konfigurationsdatei: die aktuellen Werte der SPS S7 Operanden werden ausgelesen und als Byte / Bit Kombination bzw. als Hexwerte (0x...) in der Anzeige dargestellt.
Alternativ kann eine Loggingfunktion aktiviert werden, so daß die eingelesen Werte im Terminal gespeichert werden. (Datenlogger.) Diese Speicherung kann z.B. auf integrierte Compact Flash Karte erfolgen, die in diesem Fall als robustes Massenspeichermedium verwendet wird.
In der Praxis wird diese triviale Anzeige der SPS Operanden wohl eher selten verwendet werden. Wesentliches Kernstück ist die Demonstration, wie die S7 Operanden auf dem Linuxterminal empfangen und verarbeitet werden können. Das Beispielprogramm wird sowohl als ablauffähige Software als auch im C-Sourcecode abgegeben. Der Anwendungsprogrammierer erhält so ein funktionsfähiges Linuxbeispiel, das die Kommunikation zwischen der von ihm zu programmierenden Anwendung und Linuxdaemon bzw. S7 vorführt. Mit diesem Beispiel läßt sich relativ schnell und problemlos eine eigene Linuxanwendung realisieren, z.B. dass bestimmte Benutzeraktionen notwendig werden, wenn vordefinierte S7 Parameter erfüllt sind. Ebenso lässt sich im Terminal eine einfache Benutzerführung für den Bediener vor Ort programmieren. Mit anderen Worten: Die SPS S7 dient als Datenquelle, das Linuxterminal bietet eine frei programmierbare PC Hard- und Softwareplattform, die für individuelle Aufgabenstellungen programmiert werden kann.
Applikationsbeispiel
Stellen Sie sich bitte folgenden Fall vor: Sie haben eine SPS der S7 Familie zur Steuerung einer Maschine im Einsatz. Über ein Linuxterminal, z.B. das TRM/920, möchten Sie bestimmte Werte der SPS mitloggen und dem Benutzer die Möglichkeit geben, via Tastatur am Terminal bestimmte Eingaben zuzulassen. Alle Werte werden gleichzeitig via Ethernet LAN in ein Netzwerk überspielt und z.B. auf einem Server ausgewertet.
Ein derartiger Fall ist mit dem hier beschriebenen SPS Package einfach zu lösen. Wir gehen davon aus, dass Sie Ihre SPS bereits im Einsatz und die erforderliche IEC1131 Programmierung realisiert haben.
Das Einzige, was Sie noch benötigen, ist das Linuxterminal TRM/920 sowie das hier vorgestellte SPS PACKAGE. Den Linuxdaemon im SPS Package konfigurieren Sie über Konfigurationsdatei so, dass die von Ihnen gewünschten SPS Operanden im Linuxterminal ausgelesen werden können.
Anschließend programmieren Sie für das Linuxterminal eine kleine Software, die eine Auswertung der Linuxoperanden übernimmt. In Abhängigkeit bestimmter Werte werden dann bestimmte Displaymeldungen angezeigt und bestimmte Eingaben vom Benutzer angefordert.
Über die integrierte TCP / IP Übertragung werden alle relevanten Dateien sofort in das Ethernet Netzwerk (LAN) übertragen. Auf dem Server können weitere nachgeschaltete Programmteile diese Daten sofort auswerten und nach Belieben verarbeiten.
Linux bietet Ihnen aber noch mehr. Sie können das Linuxterminal jetzt z.B. auch mit einem integrierten Webserver ausrüsten. (Standardmässig für Linux vorhanden. Sie müssen den Webserverdienst / den Daemon lediglich aktivieren.) Anschliessend können Sie über Ethernet das Linuxterminal auch fernwarten, d.h. auf Ihrem Arbeitsplatz PC starten Sie einen Webbrowser, geben eine http-Verbindung mit der IP Adresse des Terminals an und sind in der Lage vordefinierte Aktionen am Terminal durchzuführen. (Einige weitere Informationen zum Webserver finden Sie hier.)
Die Loggingfunktion möchten wir noch kurz erwähnen. Die Linuxterminals sind für den robusten Einsatz in einer rauhen Industrieumgebung ausgelegt. Um z.B. hohe (oder extrem niedrige) Arbeitstemperaturen und hohe Vibrationsfestigkeit zu gewährleisten, verfügen diese Terminals NICHT über eine integrierte Festplatte. Diese wäre für den rauhen Einsatzfall zu empfindlich. Stattdessen werden als Massenspeichermedium Compact Flash Speicherkarten eingesetzt. (Das sind die Speicherkarten, die Sie auch in digitalen Cameras finden. Robust und unempfindlich.) Für das Programm funktioniert eine Compact Flash Speicherkarte wie eine Festplatte - allerdings wg. der nichtmechanischen Bauweise ohne bewegende Teile. Im vorliegenden Beispiel bedeutet das, Sie können alle gewünschten Daten der SPS auch gleich auf eine Compact Flash Karte speichern (loggen) - und diese Daten dann zu seinem späteren Zeitpunkt via Ethernet Netzwerk "abholen". (Z.B. per FTP File Transfer, mittels Webbrowser o.ä. Einige Informationen zu den Speichermedien in Embedded Systemen finden Sie hier.)
Ihrer weiteren Phantasie sind keine Grenzen gesetzt. Das Linuxterminal ist frei programmierbar. Jeder Linuxprogrammierer kann diese Anwendung nun beliebig ausbauen und so individuell programmieren, dass Ihre Aufgabenstellung optimal umgesetzt wird.
Starter Kit
Im Zuge der Startup Pakete wurde ein S7 EMBEDDED PACKAGE geschaffen, das diese wesentlichen Grundfunktionen für ein Terminal realisiert. Das S7 Embedded Package ist für nahezu alle Linux Terminals der Serie TRM/xx mit DILNet CPU verfügbar und umfasst:
- MPI Datenkabel für den Anschluß Linuxterminal an S7 über serielle Schnittstelle
- Vorkonfiguriertes Linux für das betreffende Terminal der Serie TRM/xx
- Linuxdaemon zur Kommunikation zwischen Linuxterminal und S7 incl. Konfigurationsdatei
- Beispielprogramm zum Auslesen beliebiger S7 Operanden
<< In Bearbeitung >>
Text: Hans-J. Walter.
(c) hjw AE, Last Update: 17.07.2009. Alle Angaben ohne Gewähr
IT Lösungen für die Industrie: www.terminal-systems.de || IT Beiträge