Datenaustausch über OPC XML

Werbung
Datenaustausch über OPC XML
Beschreibung und Beispiel zum Datenaustausch
über OPC XML Schnittstelle
Allgemeine Hinweise
Copyright © Siemens AG Copyright 2007 All rights reserved
Datenaustausch über OPC XML
Technische Änderungen des Produktes vorbehalten.
Copyright
Weitergabe sowie Vervielfältigung dieser Unterlage, Verwertung und
Mitteilung ihres Inhaltes sind nicht gestattet, soweit nicht ausdrücklich
zugestanden. Zuwiderhandlungen verpflichten zu Schadenersatz. Alle
Rechte vorbehalten, insbesondere für den Fall der Patenterteilung oder
GM-Eintragung.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
2/34
Allgemeine Hinweise
Datenaustausch über OPC XML
Allgemeine Hinweise
Copyright © Siemens AG Copyright 2007 All rights reserved
Hinweis
Die Applikationsbeispiele sind unverbindlich und erheben keinen
Anspruch auf Vollständigkeit hinsichtlich Konfiguration und Ausstattung
sowie jeglicher Eventualitäten. Die Applikationsbeispiele stellen keine
kundenspezifische Lösungen dar, sondern sollen lediglich Hilfestellung
bieten bei typischen Aufgabenstellungen. Sie sind für den sachgemäßen
Betrieb der beschriebenen Produkte selbst verantwortlich. Diese
Applikationsbeispiele entheben Sie nicht der Verpflichtung zu sicherem
Umgang bei Anwendung, Installation, Betrieb und Wartung. Durch
Nutzung dieser Applikationsbeispiele erkennen Sie an, dass Siemens
über die beschriebene Haftungsregelung hinaus nicht für etwaige
Schäden haftbar gemacht werden kann. Wir behalten uns das Recht vor,
Änderungen an diesen Applikationsbeispiele jederzeit ohne Ankündigung
durchzuführen. Bei Abweichungen zwischen den Vorschlägen in diesen
Applikationsbeispiele und anderen Siemens Publikationen, wie z.B.
Katalogen, hat der Inhalt der anderen Dokumentation Vorrang.
Gewährleistung, Haftung und Support
Für die in diesem Dokument enthaltenen Informationen übernehmen wir
keine Gewähr.
Unsere Haftung, gleich aus welchem Rechtsgrund, für durch die
Verwendung der in diesem Applikationsbeispiel beschriebenen Beispiele,
Hinweise, Programme, Projektierungs- und Leistungsdaten usw.
verursachte Schäden ist ausgeschlossen, soweit nicht z.B. nach dem
Produkthaftungsgesetz in Fällen des Vorsatzes, der grober Fahrlässigkeit,
wegen der Verletzung des Lebens, des Körpers oder der Gesundheit,
wegen einer Übernahme der Garantie für die Beschaffenheit einer Sache,
wegen des arglistigen Verschweigens eines Mangels oder wegen
Verletzung wesentlicher Vertragspflichten zwingend gehaftet wird. Der
Schadensersatz wegen Verletzung wesentlicher Vertragspflichten ist
jedoch auf den vertragstypischen, vorhersehbaren Schaden begrenzt,
soweit nicht Vorsatz oder grobe Fahrlässigkeit vorliegt oder wegen der
Verletzung des Lebens, des Körpers oder der Gesundheit zwingend
gehaftet wird. Eine Änderung der Beweislast zu Ihrem Nachteil ist hiermit
nicht verbunden.
Copyright© Copyright 2007 Siemens A&D. Weitergabe oder
Vervielfältigung dieser Applikationsbeispiele oder Auszüge daraus
sind nicht gestattet, soweit nicht ausdrücklich von Siemens A&D
zugestanden.
Bei Fragen zu diesem Beitrag wenden Sie sich bitte über folgende E-MailAdresse an uns:
mailto:[email protected]
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
3/34
Allgemeine Hinweise
Datenaustausch über OPC XML
Qualifiziertes Personal
Copyright © Siemens AG Copyright 2007 All rights reserved
im Sinne der Dokumentation sind Personen, die mit Aufstellung, Montage,
Inbetriebsetzung, Betrieb und Instandhaltung der einzusetzenden Produkte
vertraut sind und über die ihrer Tätigkeit entsprechenden Qualifikationen
verfügen
z. B.:
• Ausbildung oder Unterweisung bzw. Berechtigung, Stromkreise und
Geräte gemäß den Standards der Sicherheitstechnik ein- und
auszuschalten, zu erden und zu kennzeichnen.
•
Ausbildung oder Unterweisung gemäß den Standards der
Sicherheitstechnik in Pflege und Gebrauch angemessener
Sicherheitsausrüstung.
•
Schulung in Erster Hilfe.
Warnhinweise werden in dieser Dokumentation explizit nicht gegeben. Es
wird jedoch ausdrücklich auf die Warnhinweise der Betriebsanleitung für
das jeweilige Produkt verwiesen.
Hinweis auf Exportkennzeichen
AL: N
ECCN: N
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
4/34
Inhaltsverzeichnis
Datenaustausch über OPC XML
Copyright © Siemens AG Copyright 2007 All rights reserved
Inhaltsverzeichnis
1
Wie kann die OPC XML-DA Schnittstelle genutzt werden? ........................ 6
2
2.1
2.2
Voraussetzungen und Ziele dieser FAQ’s .................................................... 7
Was ist OPC? Warum OPC XML-DA? ............................................................. 7
Besondere Eigenschaften der OPC XML-DA Kommunikation ......................... 8
3
3.1
3.2
3.3
3.3.1
3.3.2
3.3.3
3.3.4
3.4
3.5
OPC-Client Software in Java ....................................................................... 10
Grafische Benutzeroberfläche des Java-Programms ..................................... 10
Erstellung der Klassen zur OPC Kommunikation ........................................... 12
Klassenbeschreibung der OPC Browser Applikation...................................... 14
Klasse MainWindow (MainApplet) .................................................................. 16
Klasse PWDWindow....................................................................................... 20
Klasse CyclicRead.......................................................................................... 20
Klasse Subscription ........................................................................................ 21
Ausführen des Beispiel-Programms ............................................................... 24
Import des Beispiel-Projektes in Eclipse......................................................... 24
4
4.1
4.2
Aufzeichnen von SOAP-Telegrammen zu Diagnosezwecken .................. 31
Einstellungen des Trace Tools MSSoapT3 .................................................... 31
Beispiele der Telegrammaufzeichnungen ...................................................... 32
5
5.1
5.2
5.3
Anhang .......................................................................................................... 34
Quelltexte und Softwaredokumentation .......................................................... 34
Weiterführende Informationen ........................................................................ 34
Literatur- und Quellenverzeichnis ................................................................... 34
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
5/34
Wie kann die OPC XML-DA Schnittstelle genutzt
werden?
Datenaustausch über OPC XML
1
Wie kann die OPC XML-DA Schnittstelle genutzt
werden?
Das vorliegende Dokument beschreibt die Nutzung der OPC XML-DA
(Open Process Control XML-DataAccess) - Server Funktionalität der
SIMOTION Steuerung. Die Schnittstellen zur OPC-Kommunikation
zwischen einem OPC-Client und der Steuerung werden dabei anhand
eines in Java realisierten Beispielprogramms vorgestellt. Abbildung 1-1
zeigt einen schematischen Aufbau des OPC XML-DA Client-ServerSystems.
Abbildung 1-1: Schematischer Aufbau desClient-Server-Systems
Copyright © Siemens AG Copyright 2007 All rights reserved
SIMOTION RT V4.1
MiniWeb Server
Standard-Ethernet
OPC XML-DA Server
SOAP-documents
For example:
OPC-clientapplication
Der OPC XML-DA Server ist ab der Firmware Version 4.1.1 in die
SIMOTION Runtime integriert. Mittels Standard-Ethernet- oder PROFINETVerbindung kann ein Datenaustausch zwischen diesem OPC Server und
einer Client-Anwendung realisiert werden. So kann ohne zusätzliche
Engineering Tools, wie z.B. SIMOTION Scout, auf bestimmte
Programmvariablen sowie Systemfunktionen der Steuerung zugegriffen
werden. Die zur Verfügung stehenden Daten werden von dem sog.
„Variablen-Provider“ bereitgestellt (s. Kapitel 5 - „Variablen-Provider“ der
SIMOTION Dokumentation: SIMOTION IT - Ethernet basierende HMI- und
Diagnosefunktion „Produktinformation SIMOTION DIAG.pdf“).
Die folgenden Abschnitte dieses Dokumentes beschreiben die Grundlagen
der hier verwendeten Technologien. Mittels des Beispielprogramms „OPCXML-Browser“ können die von der SIMOTION Steuerung per OPC zur
Verfügung gestellten Variablen durchsucht werden. Anhand der Quellcodes
werden die OPC - Zugriffs- und Kommunikationsfunktionen ausführlich
erläutert.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
6/34
Voraussetzungen und Ziele dieser FAQ’s
Datenaustausch über OPC XML
2
Voraussetzungen und Ziele dieser FAQ’s
In diesem Dokument wird der Umgang mit OPC XML-DA am Beispiel einer
OPC-Client Software in Java erläutert. Das Ziel ist es, eine einfache
Vorlage für eine Java-Anwendung zu bieten, auf der Weiterentwicklungen
mit eigenen Anforderungen des Kunden aufbauen können. Dazu wird der
Quelltext dieser Java-Anwendung zur freien Verwendung zur Verfügung
gestellt.
Copyright © Siemens AG Copyright 2007 All rights reserved
Voraussetzungen zum optimalen Verständnis dieses Dokumentes sowie
der Nutzung der Beispiel-Quelltexte sind Programmierkenntnisse in Java,
weiterhin wird dringend empfohlen, sich mit der OPC XML-DA 1.0
Spezifikation vertraut zu machen.
Um Änderungen an den bestehenden Projekten vorzunehmen wird die
Verwendung der kostenfreien Java-Entwicklungsumgebung Eclipse
empfohlen. Nähere Hinweise zur Nutzung dieser sind in Kapitel 3.4 dieses
Dokumentes enthalten.
2.1
Was ist OPC? Warum OPC XML-DA?
OPC beschreibt eine standardisierte und vor allem herstellerunabhängige
Kommunikationsmöglichkeit zwischen unterschiedlichen Endgeräten. Die
Pflege und die Weiterentwicklung dieses Standards unterliegt der OPCFoundation (http://opcfoundation.org).
Die Kommunikation mittels OPC-DA (OPC Data Access, nicht zu
verwechseln mit OPC XML-DA) basiert auf Microsofts COM/DCOMTechnologie (Component Object Model, Distributed COM, siehe
http://www.microsoft.com/com/ für weiterführende Informationen) und setzt
somit ein Microsoft basiertes Betriebssystem für die Verwendung dieser
Technologie voraus.
Bei OPC XML-DA hingegen löst man sich von der COM Technologie und
nutzt mit dem XML-Dokumentenformat einen offenen und für viele
Betriebssysteme nutzbaren Standard. Die eigentliche Kommunikation
zwischen den Endgeräten findet hierbei über das SOAP (Simple Object
Access Protocol, eine fest definierte XML-Datenstruktur) statt. SOAP
wiederum setzt auf dem http-Protokoll auf. Dadurch wird bereits ersichtlich,
dass ein Datenaustausch via OPC XML-DA hardwaremäßig auf einer
Ethernet-Verbindung basiert.
Prinzipiell handelt es sich bei der Kommunikation sowohl bei OPC-DA als
auch bei OPC XML-DA um ein Client-Server-System. Ein OPC-Server stellt
bestimmte Daten bereit, und ein entsprechender OPC-Client ist in der
Lage, Daten von dem Server abzufragen bzw. auf dem Server zu
verändern. Dabei muss ein Server laut OPC Spezifikation bestimmte
vorgeschriebene Methoden und Datenschnittstellen anbieten, die vom
Client angesprochen werden können. Beispielsweise muss jeder Server
eine Read-Funktion anbieten, welche es einem Client ermöglicht, einen
vorhandene Variable oder einen Datensatz (konkret: OPC-Item(s)) des
Servers auszulesen. Eine weitere Funktion ist z.B. write, die ein Schreiben,
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
7/34
Voraussetzungen und Ziele dieser FAQ’s
Datenaustausch über OPC XML
also Verändern einer bereitgestellten Variablen des Servers realisiert. In
Tabelle 2-1 ist eine stichwortartige Gegenüberstellung zwischen OPC XMLDA und OPC-DA enthalten.
Copyright © Siemens AG Copyright 2007 All rights reserved
Tabelle 2-1: Gegenüberstellung OPC XML-DA und OPC-DA
2.2
Besondere Eigenschaften der OPC XML-DA Kommunikation
Wie schon in Tabelle 2-1 erläutert, hat die Nutzung des OPC XML-DA
Standards vor allem den Vorteil, betriebssystemunabhängig zu sein. Dies
ermöglicht erst die Realisierung der OPC-Server-Funktionalität auf einer
Simotion-Steuerung, da die SIMOTION RT kein Windows-basiertes System
ist und OPC-DA somit hier nicht verfügbar ist. Durch die Nutzung des
ebenfalls offenen SOAP-Protokollstandards kann ebenfalls
betriebssystemunabhängig auf diese Serverfunktionalität zugegriffen
werden. Ein beliebiges Client-System, welches in der Lage ist SOAP zu
verarbeiten, kann so als OPC-Client eingesetzt werden.
Durch die Beschaffenheit einer auf http basierenden Kommunikationsstruktur ist eine beidseitige, also server- und clientseitige Verbindungsinitialisierung nicht möglich. Eine Kommunikation zwischen OPC-Client und
OPC-Server muss stets von der Client-Seite angestoßen werden. Dadurch
kann der Callback-Mechanismus des Servers bei OPC XML-DA nicht ohne
weiteres realisiert werden. Bei OPC-DA ist der Server in der Lage, die
Verbindung zum Client von sich aus herzustellen um bspw. zu melden,
dass sich bestimmte Daten geändert haben. Um innerhalb eines gewissen
Zeitintervalls von der Änderung eines Wertes im OPC-Server zu erfahren,
müsste ein OPC XML-DA Client diesen Wert kontinuierlich mindestens ein
Mal innerhalb dieses gewünschten Zeitintervalls abfragen (sog. Polling).
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
8/34
Voraussetzungen und Ziele dieser FAQ’s
Datenaustausch über OPC XML
Sollte sich der abzufragende Wert innerhalb einer Reihe von Zyklen nicht
ändern, so wird er dennoch jedes Mal abgefragt und an den Client
übertragen. Bei sehr kleinen Zeitintervallen entsteht so ein hoher
Netzwerkverkehr sowie je nach System eine hohe Systemlast.
Copyright © Siemens AG Copyright 2007 All rights reserved
Um diese zu reduzieren bietet OPC XML-DA die Funktion Subscription an.
Zur Erläuterung der Funktionsweise der Subscription sei auf Kapitel 3.3.4
dieses Dokumentes verwiesen.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
9/34
OPC-Client Software in Java
Datenaustausch über OPC XML
3
OPC-Client Software in Java
Im Folgenden wird das Java Beispiel-Programm in Bezug auf die OPCFunktionalitäten und dessen Verwendung detailliert erläutert. Auf Basis
dieser Beschreibung sollen Erweiterungen des Quelltexts ermöglicht
werden. Weiterhin wird die Erstellung eines Projektes innerhalb der
Entwicklungsumgebung Eclipse beschrieben.
3.1
Grafische Benutzeroberfläche des Java-Programms
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-1: Bedienoberfläche des Java Programms
Die grafische Benutzeroberfläche (GUI – graphical user interface) ist in
Abbildung 3-1 dargestellt. Es werden die folgenden OPC-Funktionalitäten
unterstützt:
• Read: Durch Klick auf ein neues Blatt im Browse-Baum (bewirkt
implizites Ändern von ItemPath und ItemName) wird der aktuelle Wert
der ausgewählten Variablen aus dem OPC-Server gelesen. Der Wert
der Variablen wird im Ausgabefeld rechts angezeigt (hier z.B. „STOP“).
Es besteht auch die Möglichkeit der manuellen Eingabe von ItemPath
und ItemName. Durch Drücken von „Enter“ im Feld ItemName wird das
eingegebene Item gelesen. Sollte dieses Item nicht vorhanden sein, wird
eine entsprechende Meldung im unteren Statusbereich des Fensters
angezeigt.
• Write: Schreiben der in den Eingabefeldern ItemPath und ItemName
spezifizierten Simotion Variablen. Der Schreibvorgang wird durch
Ändern des Wertes im Eingabefeld ‚Var’ und anschließendem Klick auf
den „Write“ Button oder Abschluss der Eingabe mit „Return“ ausgelöst.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
10/34
OPC-Client Software in Java
Datenaustausch über OPC XML
• Browse: Browsen des Variablenhaushalts in der Simotion Steuerung;
die Funktionalität ist ähnlich dem Windows Explorer. Mit jedem Öffnen
eines Knotens wird die zugehörige Information von der Simotion
Steuerung ermittelt. Solange die Browse-Antwort noch nicht vorhanden
ist bzw. falls es keine Variablen (entspricht Blätter im Baum) gibt, ist eine
Dummy-Variable als Blatt sichtbar.
• Connect: Durch Ändern der URL (Eingabe durch Klick auf den Button
„Connect“ oder mit „Return“ abschließen) kann eine Verbindung zu
einem neuen Simotion Gerät aufgebaut werden. Dabei wird der
existierende Variablenbaum neu aufgesetzt.
Eine aufgebaute Verbindung wird mit grünem Farbhintergrund
visualisiert und eine fehlende Verbindung wird mit orangenem
Hintergrund angezeigt
Copyright © Siemens AG Copyright 2007 All rights reserved
• Im PWD Fenster können Loginname und Passwort geändert werden,
voreingestellt sind die Standardeinstellungen der Simotion-Steuerung
(Benutzername: simotion; Passwort: simotion).
• Subscribe: Durch Klicken von „Subscribe“ kann die OPC-Funktion
Subscription initialisiert werden. Nach Eingabe der benötigten Werte
(oder Übernahme der voreingestellten Standard-Werte) im folgenden
Eingabedialog (Abbildung 3-2) wird die im Feld ItemPath und ItemName
angezeigte Variable für eine Subscription registriert. Für eine
ausführliche Beschreibung dieser in OPC XML-DA verfügbaren
Funktionalität sei hier auf Kapitel 3.3.4 verwiesen.
Abbildung 3-2: Konfigurationsmaske Subscription
• ReadCyclic: Mittels Drücken von ReadCyclic kann ein zyklisches Lesen
(„Polling“) mit dem eingestellten Intervall der in den Eingabefeldern
ItemPath und ItemName spezifizierten Simotion Variablen gestartet
werden. Gestoppt werden kann das zyklische Lesen durch Drücken des
dann sichtbaren Buttons ‚Stop’. Die Anzahl der erfolgten Leseaufrufe
wird im Ausgabefeld ‚Read Count:’ angezeigt
Hinweis
Je nach Version und Konfiguration der Java Virtual Machine kann die
in Abbildung 3-1 dargestellte grafische Benutzeroberfläche ein
anderes Design aufweisen. Dies hat jedoch keinen Einfluss auf die
Funktionalität des Programms.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
11/34
OPC-Client Software in Java
Datenaustausch über OPC XML
3.2
Erstellung der Klassen zur OPC Kommunikation
Die Klassen, welche die Kommunikation mit dem OPC Server ermöglichen
sind in den beiden Paketen
„org.opcfoundation.webservices.XMLDA._1_0“ sowie
„org.opcfoundation.webservices.XMLDA._1_0.holders“
Copyright © Siemens AG Copyright 2007 All rights reserved
enthalten. Diese liegen sowohl als Java Quelltext-Dateien als auch als
kompilierte Java Klassen (*.class) vor. Sie wurden mithilfe des Tools
„WSDL2Java“ (siehe Apache Axis) erstellt. Mit diesem Tool ist es möglich,
aus einer WSDL1 - Datei Java-Quellcode zu generieren, welcher die
Umsetzung von SOAP Telegrammen in Java realisiert. Die Datei
OpcXmlDa_R1_0.wsdl, auszugsweise dargestellt in Abbildung 3-3, bildet
hier die Grundlage für die erzeugten Java Klassen, sie wird von der OPC
Foundation als Standard für die OPC XML-DA-Kommunikation
bereitgestellt (http://opcfoundation.org/webservices/XMLDA/1.0/). Es handelt
sich um eine im XML Format angelegte Beschreibung der Datenstruktur,
Interfaces und Datentypen, welche für die Kommunikation zwischen Client
Anwendung und OPC Server benötigt werden. In Abbildung 3-3 ist unter
anderem das Element „Write“ abgebildet.
Abbildung 3-3: Auszug aus WSDL-Datei OpcXmlDA_R1_0.wsdl
Aus diesem hier beschriebenen Element erstellt das Tool „WSDL2Java“
zum Beipsiel die Klasse Write, mit den drei Variablen „Options“ vom Typ
RequestOptions, „ItemList“ vom Typ WriteRequestItemList und
1
WSDL – Web Service Description Language, weitere Informationen s. http://www.w3.org/TR/wsdl
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
12/34
OPC-Client Software in Java
Datenaustausch über OPC XML
„ReturnValuesOnReply“ vom Typ boolean. Abbildung 3-4 zeigt einen
Ausschnitt der daraus erzeugten Klasse.
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-4: Ausschnitt der Klasse Write
Im Konstruktor (Zeile 21-29) werden die Variablen initialisiert. Im weiteren
Verlauf dieser Klasse existieren Methoden, mit denen man neue Werte
setzen (z.B. setOptions(options), oder die aktuell gespeicherten
auslesen kann (z.B. getOptions()).
Im Umgang mit diesen mittels WSDL2Java-erzeugten Klassen wird jedoch
empfohlen, die mit der Applikation mitgelieferten Klassen (Java Paket
„org.opcfoundation.webservices.XMLDA._1_0“) zu verwenden, da es
innerhalb verschiedener Versionen von Apache Axis häufig zu
Versionskonflikten kommt.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
13/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Hinweis
3.3
Bei der Erzeugung der Kommunikationsklassen mittels WSDL2Java
erfolgte die Erzeugung der beiden Klassen service.java und
serviceStub.java fehlerhaft. Dies hatte zur Folge, dass für die
Verwendung der read-Funktion Korrekturen innerhalb der oben
erwähnten Klassen notwendig wurden. Außerdem resultiert daraus ein
geringfügig abgeänderter Aufruf der read-Funktion innerhalb der Client
Applikation, weitere Informationen hierzu sind in Kapitel 3.3.1 enthalten.
In der hier bereitgestellten Software-Version ist dieser Fehler jedoch
behoben und die read-Funktion kann fehlerfrei eingesetzt werden.
Klassenbeschreibung der OPC Browser Applikation
Copyright © Siemens AG Copyright 2007 All rights reserved
Im Folgenden werden die einzelnen Klassen des Java Programms und
dessen Funktionsweise erläutert. Die eigentliche Anwendung, also der
OPC Browser, besteht aus vier Basis-Klassen. Tabelle 3-1 enthält eine
Übersicht sowie kurze Beschreibung jeder Klasse. Eine detaillierte
Beschreibung der in den einzelnen Klassen enthaltenen Methoden ist in
den folgenden Abschnitten dieses Dokumentes enthalten.
Tabelle 3-1: Klassenübersicht der Applikationen
Java Beispiel-Applikation
MainWindow
Klasse zur Initialisierung aller Anfangswerte des
Programms. Enthält u.a. das GUI, einige OPCKommunikationsfunktionen sowie die main() Funktion
PWDWindow
Klasse zur Erzeugung des Fensters zur
Passworteingabe
CyclicRead
Klasse zur Erzeugung und Aktualisierung des Fensters
zur Parametereingabe der Programm-funktion Cyclic
Read
Subscription
Klasse zur Erzeugung und Aktualisierung des Fensters
zur Parametereingabe der Programmfunktion
Subscription
Im Folgenden werden die OPC XML-DA Zugriffsfunktionen getStatus,
browse, read, write und subscription beschrieben. getStatus,
browse, read und write werden dabei innerhalb der Klasse
MainWindow realisiert, die Funktion subscription entsprechend in der
gleichnamigen Klasse Subscription. Die Klasse CyclicRead stellt eine
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
14/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Erweiterung der read-Funktion dar und ermöglicht ein zyklisches Lesen
einer bestimmten Variablen. Dies entspricht also dem in Kapitel 3.1 bereits
erwähnten Pollen einer Variablen.
Zu jeder dieser Funktionen existiert eine Java Klasse innerhalb des
Paketes „org.opcfoundation.webservices.XMLDA._1_0“ (z.B.
Read.class, Write.class. etc.), die automatisch aus der WSDL Datei
erzeugt wurde. Zusätzlich existieren noch weitere Klassen, für die Funktion
write z.B. WriteResponse.class oder
WriteRequestItemList.class. Diese Klassen haben je nach OPCFunktion bestimmte Aufgaben, z.B. ist die Klasse WriteResponse.class
der Datentyp für die vom Server zurück gelieferten Daten eines write Aufrufs.
Copyright © Siemens AG Copyright 2007 All rights reserved
Grundsätzlich läuft ein Zugriff auf den OPC XML-DA Server der Simotion
Steuerung wie folgt ab (hier am Beispiel der Funktion write):
1. Zunächst wird eine globale Instanz der Klasse ServiceStub mit
Namen mySimotionWebService erzeugt. Die Klasse ServiceStub
resultiert aus der WSDL-Datei und wurde automatisch erzeugt. Sie
bildet die Basisklasse für die mittels Apache Axis nutzbaren
Webservices. Weitergehende Informationen hierzu sind in der
Dokumentation der Apache Axis Software zu finden.
2. Erzeugen einer Instanz und anschließende Initialisierung der Klasse
Write. Diese enthält die beim Aufruf der write Funktion an den
OPC-Server zu übergebenen Parameter. Für die Parametrierung
dieser Instanz von Write wiederum werden Instanzen weiterer
Klassen als entsprechender Datentypen benötigt, hier z.B.
WriteRequestItemList, die die Liste der Items enthält, welche in
den OPC-Server geschrieben werden sollen.
3. Erzeugen einer Instanz der zugehörigen Response-Klasse (hier
WriteResponse, diese Klasse existiert für alle OPC-Funktionen, z.B.
ReadResponse, etc.). Diese Instanz wird nach dem Aufruf der OPCFunktion write die vom OPC-Server zurück gelieferten Daten
enthalten, hier z.B. eine Statusmeldung, ob das write erfolgreich war.
4. Nach der Ausführung der OPC-Funktion erfolgt eine Auswertung der
vom OPC-Server gelieferten Daten, also der nun in der Instanz der
Klasse WriteResponse enthaltenen Daten. Diese Daten stehen nun
zur weiteren Bearbeitung innerhalb des Java-Programms zur
Verfügung.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
15/34
OPC-Client Software in Java
Datenaustausch über OPC XML
3.3.1
Klasse MainWindow (MainApplet)
Die Klasse MainWindow enthält die grundlegenden Funktionen zur
Erstellung der grafischen Benutzeroberfläche (GUI) des Programms, auf
die hier nicht weiter eingegangen wird.
Weiterhin enthält sie die Implementierungen der OPC-Funktionen
getStatus, browse, read und write. Diese werden im Folgenden
ausführlich erläutert. Die Methode getStatus eignet sich hier besonders
gut als Einstieg, da dem zugehörigen OPC-Aufruf eine relativ einfache
Datenstruktur zugrunde liegt. Zunächst sollte jedoch die Methode
mySimotionWebService_SetUp betrachtet werden: Diese realisiert
keine OPC-Funktion, sondern initialisiert eine Instanz der Klasse
ServiceStub, auf der die OPC-Kommunikation aufsetzt.
Copyright © Siemens AG Copyright 2007 All rights reserved
private void mySimotionWebService_SetUp()
Wie in Kapitel 3.3 - 1. beschrieben, wird die Variable
mySimotionWebService mittels des Aufrufs
org.opcfoundation.webservices.XMLDA._1_0.ServiceStub
mySimotionWebService;
als globale Variable innerhalb des Java Programms erzeugt. Sie ist also
innerhalb aller anderen Methoden verfügbar. Die Initialisierung von
mySimotionWebService wiederum findet in der hier betrachteten
Methode statt:
mySimotionWebService =
new org.opcfoundation.webservices.XMLDA._1_0.ServiceStub
(new java.net.URL(jTextFieldURL.getText()), null);
mySimotionWebService.setUsername(sUName); //credentials
mySimotionWebService.setPassword(sPWD);
Es wird also eine Instanz der Klasse ServiceStub erzeugt. Dem
Konstruktor der Klasse wird die im URL-Textfeld des Java Programms
eingetragene URL übergeben. Dies entspricht der URL, unter der die
Simotion Steuerung (und somit der OPC-Server) angesprochen wird. Die
zweite übergebene Variable (null) wird nicht weiter betrachtet.
Anschließend werden noch Benutzername und Passwort gesetzt.
private void getStatus()
org.opcfoundation.webservices.XMLDA._1_0.GetStatus parameters =
new org.opcfoundation.webservices.XMLDA._1_0.GetStatus();
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
16/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Die Variable parameters ist eine Instanz der Klasse GetStatus. Im
Folgenden wird diese Variable initialisiert, hier lediglich mit der Zuweisung
parameters.setLocaleID("en");
Dies entspricht bis hier hin dem in Kapitel 3.3unter 2. Zusammengefassten.
Bei diesem relativ einfachen Aufruf getStatus besteht die
Parameterinitialisierung lediglich aus dieser einen Zuweisung. Weitere
Parametrierungen wie in Kapitel 3.3- 2. beschrieben werden hier nicht
benötigt. Es reicht aus, die Variable parameter direkt zu initialisieren.
Nun wird die Response-Klasse zu GetStatus instanziert (siehe Kapitel 3.33.):
org.opcfoundation.webservices.XMLDA._1_0.GetStatusResponse
getStatusResp = null;
Copyright © Siemens AG Copyright 2007 All rights reserved
Die Variable getStatusResp vom Typ GetStatusResponse wird die vom
OPC-Server nach dem Aufruf der getStatus Methode zurück gelieferten
Daten aufnehmen. Diese Zuweisung erfolgt beim eigentlichen Aufruf der
OPC-Funktion (siehe Kapitel 3.3- 4.):
getStatusResp = mySimotionWebService.getStatus(parameters);
Hier wird der eigentliche Aufruf der Funktion getStatus an den OPCServer gesendet. Die vom Server gelieferten Daten werden in der
Variablen getStatusResp vom Datentyp GetStatusResponse
gespeichert. Eine Auswertung dieser vom Server gesendeten Daten, also
eine Umsetzung in eine Java Programmvariable erfolgt in den beiden
Anweisungen
ServerStatus serverStatus = getStatusResp.getStatus();
String simotionServerStatus = serverStatus.getStatusInfo();
Der Datentyp ServerStatus ist ebenfalls eine aus der WSDL-Datei
erzeugte Klasse. Die Variable simotionServerStatus vom Typ String
kann dann innerhalb des Java Programms verwendet und beispielsweise
als Statusmeldung ausgegeben werden.
private void browse()
Die Kommunikation zu dem OPC-Server mittels der Funktion browse
gestaltet sich sehr ähnlich zu der oben beschriebenen Funktion
getStatus. Zunächst wird wieder eine Variable parameters erzeugt,
hier natürlich als Instanz der Klasse Browse anstatt als Instanz der Klasse
getStatus. Daraufhin werden hier zusätzlich zu dem oben auch
getätigten Aufruf
parameters.setLocaleID("en");
noch die beiden Member-Variablen itemPath und itemName von
parameters initialisiert:
parameters.setItemPath(itemPath);
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
17/34
OPC-Client Software in Java
Datenaustausch über OPC XML
parameters.setItemName(itemName);
Eine Besonderheit ist an dieser Stelle, dass nach dem ersten
Verbindungsaufbau des Clients zur Simotion Steuerung die Methode
browse aufgerufen wird, ohne das aktuelle Variabeln itemPath und
itemName existieren. In diesem Fall werden leere Strings an den OPCServer übergeben mit der Anforderung, den Root-Knoten seiner internen
Variablenstruktur zurückzuliefern.
Im weiteren Verlauf dieser Methode werden dann analog zu getStatus
die vom OPC-Server erhaltenen Daten weiter verarbeitet. Konkret werden
hier die erhaltenen OPC-Items der internen Server-Variablen als
Baumstruktur innerhalb der GUI dargestellt.
private void write()
Copyright © Siemens AG Copyright 2007 All rights reserved
Eine etwas komplexere Datenstruktur liegt einem write-Aufruf zugrunde:
(1) org.opcfoundation.webservices.XMLDA._1_0.Write
parameters = new (…)Write();
(2) org.opcfoundation.webservices.XMLDA._1_0.RequestOptions
options = new (…)RequestOptions();
(3) org.opcfoundation.webservices.XMLDA._1_0.WriteRequestItemList
itemList = new (…)WriteRequestItemList();
(4) org.opcfoundation.webservices.XMLDA._1_0.ItemValue[] items =
new ItemValue[1];
(5) org.opcfoundation.webservices.XMLDA._1_0.ItemValue
item = new ItemValue();
Wie schon bei getStatus und browse, wird zunächst eine Instanz der
Klasse Write selbst erzeugt (auch hier erneut eine Variable namens
parameters(1)). Diese Variable parameters wird, ebenso wie schon
gesehen, beim Aufruf der write Funktion an den OPC-Server übergeben,
hier ist allerdings eine andere Initialisierung derselben nötig. Dazu wird die
Variable options deklariert (2), die nachdem sie selbst initialisiert wurde
(options.setLocaleID("en")) wiederum der Variablen
parameters zugeordnet wird:
parameters.setOptions(options);
Es folgt die Variable itemList als Instanz der Klasse
WriteRequestItemList (3) sowie die Variablen items (4) und item
(5) als Instanz von ItemValue. Diese auf den ersten Blick redundante
Struktur ist nötig, um die von der OPC XML-DA Spezifikation vorgegebene
Datenstruktur einzuhalten. itemList ist also eine Liste von Items, und
diese Liste von Items benötigt auch eine Liste von entsprechenden Werten
(also ItemValues (4)). Da hier nur ein Item an den Server übermittelt
wird, wird items als Array mit nur einem Element als Inhalt initialisiert
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
18/34
OPC-Client Software in Java
Datenaustausch über OPC XML
(ebenfalls (4)). Die Variable item (5) schließlich repräsentiert das
eigentlich zu übertragene Item. Diese gesamte Struktur wird deutlicher,
wenn man folgende Zuweisungen betrachtet:
(1) item.setItemPath(itemPath);
(2) item.setItemName(itemName);
(3) item.setValue(str); //String str ist der in der GUI eingetragene
//und zu schreibende Wert des
//entsprechenden Items
(4) items[0] = item;
(5) itemList.setItems(items);
(6) parameters.setItemList(itemList);
Copyright © Siemens AG Copyright 2007 All rights reserved
Zunächst wird die Variable item mit den aktuellen Werten belegt, also
itemPath (1), itemName (2) und str (3) als den im OPC-Server zu
schreibenden Wert. Dann wird dieses item an Position 0, also der ersten
(und in diesem Fall einzigen) Position des Arrays items geschrieben (4).
Mithilfe der Methode setItems wird das Array items nun der Variablen
itemList zugeordnet (5), dieses wiederum wird mittels setItemList
der Variablen parameters zugewiesen (6). Damit ist die Variable
parameters für die write Funktion des OPC-Servers initialisiert. Analog zu
den vorherigen Funktionen wird nun noch der WriteResponse-Typ
deklariert:
org.opcfoundation.webservices.XMLDA._1_0.WriteResponse
writeResponse = null;
Der eigentliche write-Zugriff auf den OPC-Server erfolgt ebenfalls analog
zu den bereits beschriebenen Funktionen.
writeResponse = mySimotionWebService.write(parameters);
In diesem Beispiel besteht die anschließende Auswertung von
writeResponse lediglich darin zu prüfen, ob sie null ist oder nicht. Ist
dies nicht der Fall, wird durch den Aufruf der read-Funktion (siehe
nächster Abschnitt) der aktuelle (also soeben neu geschriebene) Wert des
OPC Items abgefragt. Eine weitere Möglichkeit wäre hier z.B., mittels der
Anweisung
parameters.setReturnValuesOnReply(true);
den Wert der aktuell geschriebenen Variablen vom Server in der
writeResponse mit zurücksenden zu lassen.
Alle weiteren möglichen Optionen und Einstellungen der zu übermittelnden
Parameter an den OPC-Server sind der OPC XML-DA Spezifikation 1.0 zu
entnehmen.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
19/34
OPC-Client Software in Java
Datenaustausch über OPC XML
private String read()
Die Methode read, welche ein OPC-Item des Servers liest, ist vom Aufbau
der Datenstruktur der Parameter dem des write-Aufrufes sehr ähnlich.
Der Unterschied zu write resultiert daraus, dass die read-Funktion bzw.
die Klasse Read fehlerhaft aus der WSDL-Datei erzeugt wurde (s. Kapitel
3.2). So wird nach der Korrektur dieser Fehler bei dem Aufruf nicht nur eine
Variable (parameters) übergeben wie oben, sondern die Parameter
options und itemList, die jedoch analog zu oben
initialisiert wurden. Im Endeffekt fallen also die
beiden Zuweisungen
parameters.setOptions(options);
Copyright © Siemens AG Copyright 2007 All rights reserved
parameters.setItemList(itemList);
weg, die (in obigen Fällen) die an den OPC-Server zu übermittelnde
Variable parameters initialisiert. Stattdessen werden hier die beiden
Parameter options und itemList direkt übergeben:
readResponse = mySimotionWebService.read(options,itemList);
Natürlich werden auch diese beiden Parameter analog zur write-Funktion
vorher mit dem Namen, Pfad, etc. des zu lesenden Items initialisiert.
Ein weiterer Unterschied zu den vorherigen Methoden ist, dass die
Methode read vom Typ String ist, also einen String als Rückgabewert
liefert. Bei diesem Rückgabewert handelt es sich um eben den vom OPCServer gelesenen Wert des Items. Dieser wird im weiteren Verlauf der
Methode aus der Variablen readResponse ermittelt und dem
Rückgabewert der read-Methode zugewiesen.
3.3.2
Klasse PWDWindow
Die Klasse PWDWindow hat lediglich die Aufgabe, ein neues Fenster mit
einer Benutzername-Passwort-Abfrage zu erzeugen und anzuzeigen. Die
eingetragenen Daten werden in die Variablen String sUName und
String sPWD geschrieben, und anschließend an die gleichnamigen
Strings in MainWindow übergeben, die dort als globale Variablen
deklariert wurden.
3.3.3
Klasse CyclicRead
Die Klasse CyclicRead realisiert ein zyklisches Lesen einer Variablen im
OPC-Server. Dazu wird im Hauptprogramm der Klasse MainWindow eine
Instanz der Klasse CyclicRead erstellt. Dabei wird das aktuell im
Variablenbaum ausgewählte Item an CyclicRead übergeben.
CyclicRead erzeugt nun ein neues Fenster, in dem die weiteren
Parameter des zyklischen Lesevorgangs eingetragen werden können.
Die grundlegende Funktionalität, d.h. die Deklaration und Initialisierungen
der benötigten Variablen und Parameter entsprechen dabei denen der
Standard-Read-Funktion wie in Kapitel 2.2.1 beschrieben. Das zyklische
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
20/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Auslesen der Variablen, also der sich zyklisch wiederholende Aufruf der
read-Methode, wird mittels der Standard-Java-Klasse Timer und der
zugehörigen Funktion einer TimerTask realisiert. Weitergehende
Informationen hierzu sind in der Standard-Java-API2 zu finden (für Java
1.4.2 z.B. unter http://java.sun.com/j2se/1.4.2/docs/api/).
3.3.4
Klasse Subscription
Copyright © Siemens AG Copyright 2007 All rights reserved
Grundsätzlich könnte man die Funktion Subscription als „intelligentes Pollen“ interpretieren.
Der Client registriert eine oder mehrere Variablen für die Subscription im
Server. Daraufhin wird mittels der Funktion SubscriptionPolledRefresh
dieses intelligente Polling eingeleitet. Technisch gesehen wird dabei vom
Client eine Verbindung zum Server aufgebaut, die der Server für einen
gewissen Zeitraum aufrechterhält, indem er die Antwort verzögert. Ändern
sich innerhalb dieses Zeitraums einer der zur Subscription registrierten Werte
im Server, so sendet dieser sofort nach dieser Änderung eine Antwort mit den
entsprechenden neuen Werten an den Client. Ändert sich jedoch keiner der
Werte innerhalb dieses Zeitraums, wird eine leere Antwort an den Client
zurück gesendet, welche dann vom Client entsprechend ausgewertet werden
kann. So kann eine Reduzierung des Datenverkehrs sowie der durch
hochfrequentes Polling (s. CyclicRead) entstehenden Systemlast erreicht
werden. Mittels des Aufrufs der Methode SubscriptionCancel wird
eine laufende Subscription beendet. Innerhalb einer Subscription, also der
Registrierung mittels der Methode subscribe, können eine oder mehrere
Variablen überwacht werden. Die Identifizierung der zur Subscription
registrierten Variablen wird über serverHandles realisiert. Diese
serverHandles werden bei dem Aufruf der Methode subscribe
vom OPC-Server zurückgeliefert. Der Client verwendet
diese Handles, um bei Aufruf der Methoden
SubscriptionPolledRefresh sowie
SubscriptionCancel die anzusprechende(n) Variable(n) zu
identifizieren.
Abbildung 3-5 zeigt den gesamten Ablauf der Subscription-Funktion,
welche im Anschluss an die Abbildung ausführlich erläutert wird. Wie hier
bereits ersichtlich ist, werden bei der Subscription im Vergleich zu den bis
jetzt betrachteten OPC-Funktionen noch einige zusätzliche Angaben
benötigt. Der Ablauf der gesamten Funktion Subscription ist im Folgenden
beschrieben.
2
application programming interface – Deutsch: Schnittstelle zur Anwendungsprogrammierung
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
21/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-5: Flussdiagramm einer Subscription
1. Zunächst wird - wie bei allen anderen OPC-Funktionen auch - eine
globale Instanz der Klasse ServiceStub mit Namen
mySimotionWebService erzeugt.
2. Es folgt die Deklaration und Initialisierung von jeweils einer Instanz der
Klassen Subscribe, SubscriptionPolledRefresh und
SubscriptionCancel. Wie bei den anderen OPC-Funktionen sind
diese Instanzen für die Parameterübergabe an die OPC-Funktion
zuständig.
3. Die Instanzen aus 2. werden initialisiert mit den benötigten Werten.
Dazu müssen weitere Variablen erstellt werden, beispielsweise eine
Instanz der Klasse SubscribeRequestItem, welche in diesem Fall
lediglich ein Item enthält, dass für die Subscription registriert werden
soll.
4. Die Methode subscribe wird aufgerufen, das vorher zugewiesene
Item wird für die Subscription im OPC-Server registriert.
5. Mittels der Methode SubscriptionPolledRefresh wird der Wert
einer Variablen überprüft. Diese Methode muss zyklisch aufgerufen
werden, die Antworten des Servers können durch die beiden Parameter
holdtime und waitTime entsprechend der benötigten zeitlichen
Aktualität herausgezögert werden. Hier ist der eigentliche Vorteil einer
Subscription gegenüber einem einfachen Polling zu sehen. waitTime
ist der Zeitraum, die der Server auf die Änderung einer Variablen
warten soll. Die holdtime dagegen beschreibt einen Zeitraum, die der
Server vor einer Rückmeldung eines Variablenwertes auf jeden Fall
warten muss, ob nun eine Änderung des Wertes eintritt oder nicht. Also
beginnt die eigentliche Überwachung einer Variablen nach der
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
22/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Copyright © Siemens AG Copyright 2007 All rights reserved
holdtime, danach, also innerhalb der waitTime, würde eine
Variablenänderung im Server unmittelbar an den Client gesendet
werden.
6. Abbildung 3-6 verdeutlicht diese Funktionalität. Durch Anpassung
dieser beiden Parameter kann also je nach zeitlicher Anforderung der
Anwendung ein Kompromiss zwischen Benachrichtigungszeitraum
nach Werte-Änderung und Netzwerkverkehr gefunden werden. Zu
beachten ist hier, dass der OPC-Server als holdtime eine absolute
Zeitangabe in Form eines java.util.Calendar erwartet. Die
Eingaben der GUI in Millisekunden werden im Java-Programm in eine
Variable vom Typ Calendar konvertiert. Als Basis-Zeitwert wird der
Antwortzeitpunkt des Servers auf die Registrierung der Subscription
herangezogen, also der bei der Methode subscribe zurück gelieferte
Parameter ReplyTime. Die waitTime hingegen wird vom OPC-Server
als Zeitangabe in Millisekunden erwartet und kann also direkt aus der
GUI übernommen und in den entsprechenden Parameter übertragen
werden.
Hinweis
Die im Subscription-Dialog angezeigte Zeit basiert auf den SIMOTIONinternen Zeiteinstellungen. Zu beachten ist die Einstellung der Zeitzone
bezogen auf die GMT. Während der Sommerzeit ist die die Standardeinstellung von GMT +60min auf GMT +120min einzustellen.
Abbildung 3-6: Zusammenhang zw. holdTime und waitTime
Minimaler Zeitraum bis
zur Antwort des Services
Maximaler Zeitraum bis
zur Antwort des Services
Hold Time
Wait Time
Veränderungen innerhalb dieses
Zeitraumes resultieren in einer
Rückmeldung nach Ablauf
der Holdtime
Veränderungen innerhalb dieses
Zeitraumes resultieren in einer
unmittelbaren Rückmeldung
7. Soll die Überwachung der Variablen beendet werden, geschieht dies
mittels des Aufrufs der Methode SubscriptionCancel. Durch
Übergabe des serverHandle bzw. des Arrays von serverHandles
bei mehreren Variablen an den OPC-Server beendet dieser die
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
23/34
OPC-Client Software in Java
Datenaustausch über OPC XML
entsprechende Subscription, das heißt die Überwachung der Variablen
auf Änderungen deren Werte.
Um während des zyklischen Aufrufes von SubscriptionPolledRefresh
nicht die Funktionalität des restlichen Programms zu beeinträchtigen, wird
hier die Klasse SubscriptionPolledRefreshThread als Erweiterung der
Java Klasse Thread genutzt. Mit der Implementierung der Funktion
SubscriptionPolledRefresh innerhalb dieser Klasse wird erreicht, dass
diese in einem separaten Thread ausgeführt wird und die while-Schleife,
welche den zyklischen Aufruf von SubscriptionPolledRefresh enthält,
nicht die Ausführung des restlichen Programms beeinträchtigt.
Auf eine ausführliche Beschreibung des gesamten Quelltextes der Klasse
Copyright © Siemens AG Copyright 2007 All rights reserved
Subscription wird hier verzichtet, da die grundlegenden Mechanismen
zur Initialisierung der benötigten Parameter etc. mit denen der anderen,
bereits beschriebenen OPC-Funktionen identisch sind. Lediglich werden in
dem Fall Subscription einige zusätzliche Parametrierungsvariablen
verwendet (z.B. eben holdTime oder waitTime). Für weitergehende
Informationen der Funktionsweise einer Subscription sei auf die OPC XMLDA 1.0 Spezifikation verwiesen.
3.4
Ausführen des Beispiel-Programms
Zum Ausführen des Java Beispielprogramms müssen die folgenden
Voraussetzungen erfüllt sein:
• Installation von Java Runtime Environment JRE V1.4.2 (oder größer) (http://java.sun.com/j2se/1.4.2/download.html)
• Extrahieren des zip-Archivs OPC-Xml-Browser.zip. Es entsteht ein
gleichnamiges Verzeichnis OPC-Xml-Browser. Das Skript run.cmd muss
in dem genau übergeordneten Pfad liegen.
Sind diese Voraussetzungen erfüllt, kann die Beispiel-Applikation mittels
Ausführen des Skripts „run.cmd“ gestartet werden.
3.5
Import des Beispiel-Projektes in Eclipse
Um Änderungen oder Erweiterungen des Beispielprogramms
vorzunehmen, wird empfohlen, die Java Programmierumgebung Eclipse zu
verwenden. Diese ist kostenfrei verfügbar und kann unter der Adresse
http://www.eclipse.org/downloads/ geladen werden. Das Beispiel-Projekt
wurde erstellt und getestet mit der Version SDK 3.2.2 der Eclipse
Programmierumgebung. Ebenso wird der Projektexport und -import auf
Basis dieser Version beschrieben. Eine evtl. Änderung der Dialoge oder
eingeschränkte/fehlerhafte Funktionalität des Projektimportes sowie der
Lauffähigkeit des Beispiel-Projektes allgemein kann für andere Versionen
des Eclipse SDK nicht ausgeschlossen werden.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
24/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Hinweis
Unter http://www.eclipse.org/documentation/ ist eine (englischsprachige)
Dokumentation des Eclipse SDK zu finden, welche einen Einstieg in die
Arbeit mit Eclipse bieten kann.
Um das Projekt in Eclipse zu öffnen, sind die folgenden Schritte notwendig:
Über den Menüzugriff „File“ Î „Import“ (Abbildung 3-4) öffnet sich der
folgende Dialog (Abbildung 3-5). Hier ist die Option „Existing Projects into
Workspace“ auszuwählen und mit „Next“ zu bestätigen.
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-4: Importieren eines Eclipse-Projektes 1
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
25/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-5: Importieren eines Eclipse-Projektes 2
Im Dialog „Import“ (Abbildung 3-6) ist die Auswahl auf „Select archive file“
zu setzen und das mit diesem FAQ gelieferte zip-File „OPC-XmlBrowser.zip“ auszuwählen.
Abbildung 3-6: Importieren eines Eclipse-Projektes 3
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
26/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Das bestehende Projekt wird nun in den Eclipse Workspace importiert und
anschließend automatisch kompiliert. Es wird nach dieser Kompilierung
nicht fehlerfrei sein, weil die benötigten externen Bibliotheken noch nicht
eingebunden sind. Diese sind zwar in dem Projekt-Zip-File enthalten,
jedoch werden sie nicht automatisch in das importierte Projekt integriert.
Dies kann folgendermaßen nachgeholt werden:
Durch einen Rechtsklick auf das importierte Projekt öffnet sich das
Kontextmenü, hier ist „Properties“ auszuwählen (Abbildung 3-7).
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-7: Externe JAR-Dateien hinzufügen 1
Es erscheint der Properties-Dialog (Abbildung 3-8), unter „Java Build Path“
ist die Registrierkarte „Libraries“ zu aktivieren. Mittels des Buttons „Add
external JARs“ müssen nun die fehlenden externen Bibliotheken eingefügt
werden.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
27/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Abbildung 3-8: Externe JAR-Dateien hinzufügen 2
Copyright © Siemens AG Copyright 2007 All rights reserved
Diese Bibliotheken befinden sich im während des Imports des Projektes
neu angelegten Projekt-Ordner „OPC-Xml-Browser“, und dort im
Unterordner „lib“. Der Projekt-Ordner ist zu finden im „Workspace“ von
Eclipse, welcher beim Erststart der Eclipse Software angelegt wurde.
Nach Drücken des Buttons „Add external JARs“ erscheint ein DateiAuswahl-Dialog (Abbildung 3-9). Es müssen alle im „lib“ Verzeichnis
enthaltenen Bibliotheken (*.jar-Dateien) ausgewählt und dem Projekt
hinzugefügt werden.
Abbildung 3-9: Externe JAR-Dateien hinzufügen 3
Nach Übernahme dieser Einstellungen kompiliert Eclipse das Projekt
erneut, nun wird der Quellcode fehlerfrei übersetzt.
Durch Öffnen des im „Package Explorer“ entstandenen Verzeichnisbaums
„OPC-Xml-Browser Æ src Æ simotion_opc_xml“ kann die Java-Klasse
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
28/34
OPC-Client Software in Java
Datenaustausch über OPC XML
„MainWindows.java“ ausgewählt werden. Diese ist wie in Kapitel 3.3
beschrieben die Hauptklasse des Java Programms. Ein Rechtsklick auf
diese Klasse öffnet das zugehörige Kontextmenü, mit „Run as Æ Java
Application“ wird das Programm ausgeführt (Abbildung 3-10).
Hinweis
Nach erstmaliger Ausführung des Programms kann es durch Klicken des
in Abbildung 3-10 rot markierten „Start“ Buttons ausgeführt werden.
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 3-10: Programm ausführen
Nachdem der Import des Projektes abgeschlossen ist, können nun
Änderungen der OPC-Browser-Anwendung vorgenommen werden.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
29/34
OPC-Client Software in Java
Datenaustausch über OPC XML
Nach einem Speichern einer geänderten Quelltextdatei kompiliert Eclipse
wiederum automatisch die geänderte(n) Datei(en). Um Änderungen
vorzunehmen reicht also ein Speichern der Quellen aus, die zugehörigen
*.class Dateien erzeugt Eclipse selbständig.
Copyright © Siemens AG Copyright 2007 All rights reserved
Hinweis
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
30/34
Aufzeichnen von SOAP-Telegrammen zu
Diagnosezwecken
Datenaustausch über OPC XML
4
Aufzeichnen von SOAP-Telegrammen zu
Diagnosezwecken
4.1
Einstellungen des Trace Tools MSSoapT3
Die gesendeten und empfangenen SOAP Telegramme können mittels des
Trace-Tools MsSoapT3.exe zu Diagnosezwecken im XML Format
angezeigt werden.
Dazu müssen in MsSoapT3 folgende Einstellungen gewählt werden (
Abbildung 4-1):
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 4-1: Einstellung Trace-Tool
Als „Destination host“ muss die IP-Adresse der Simotion Steuerung
eingetragen werden. Der OPC XML Browser adressiert dann nicht mehr
direkt die Steuerung, sondern verwendet stattdessen die folgende
URL:http://localhost:8080/soap/opcxml (Abbildung 4-2). Das Trace Tool
fungiert so als Gateway und leitet alle lokalen Anfragen an Port 8080 an
den OPC Server weiter.
Abbildung 4-2: Adressierung im OPC Browser
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
31/34
Aufzeichnen von SOAP-Telegrammen zu
Diagnosezwecken
Datenaustausch über OPC XML
4.2
Beispiele der Telegrammaufzeichnungen
In Abbildung 4-3 und Abbildung 4-4 sind Aufzeichnungen der SOAPTelegramme als Beispiel dargestellt.
Abbildung 4-3 enthält die Darstellung einer Browse-Anfrage an den OPC
Server und dessen Antwort.
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 4-3: Browse Anfrage (oben) und Antwort (unten)
Abbildung 4-4 stellt eine Read-Anfrage an den Server dar.
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
32/34
Aufzeichnen von SOAP-Telegrammen zu
Diagnosezwecken
Datenaustausch über OPC XML
Copyright © Siemens AG Copyright 2007 All rights reserved
Abbildung 4-4: Read Anfrage der Variablen var/servoControlClock mit Resultat 1000:
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
33/34
Anhang
Datenaustausch über OPC XML
5
Anhang
5.1
Quelltexte und Softwaredokumentation
Die Java-Quelltexte sowie eine Standard-Softwaredokumentation
(JavaDoc, siehe http://java.sun.com/j2se/javadoc/) sind auf der „Tools and
Applications“ – CD zu finden, welche weitere zusätzliche Anwendungen /
FAQ’s zum Thema SIMOTION enthält.
Copyright © Siemens AG Copyright 2007 All rights reserved
5.2
Weiterführende Informationen
Für weitere Informationen zum Thema OPC im Allgemeinen ist der Internet
auftritt der OPC Foundation zu empfehlen (http://www.opcfoundation.org/).
Diese Organisation entwickelt und pflegt die OPC-StandardSpezifikationen.
Zum Thema Eclipse sei die Internet-Seite http://www.eclipse.org/
empfohlen. Hier finden sich ausführliche Informationen über das Projekt
Eclipse an sich sowie zu weiteren Projekten bezüglich der Eclipse
Entwicklungsumgebung.
5.3
Literatur- und Quellenverzeichnis
Tabelle 2-1:
SIMOTION IT - Ethernet basierende HMI- und
Diagnosefunktion, Siemens AG
Abbildung 3-5:
„OPC XMLDA 1.01 Specification.pdf“, OPC Foundation
Technische Änderungen vorbehalten.
Version 1.0
Ausgabe 07/2007
34/34
Herunterladen