+ All Categories
Home > Documents > Datenaustausch über OPC XML - · PDF fileebenfalls offenen SOAP-Protokollstandards kann...

Datenaustausch über OPC XML - · PDF fileebenfalls offenen SOAP-Protokollstandards kann...

Date post: 06-Feb-2018
Category:
Upload: ledien
View: 216 times
Download: 0 times
Share this document with a friend
34
Datenaustausch über OPC XML Beschreibung und Beispiel zum Datenaustausch über OPC XML Schnittstelle
Transcript

Datenaustausch über OPC XML

Beschreibung und Beispiel zum Datenaustausch über OPC XML Schnittstelle

Allgemeine Hinweise

Datenaustausch über OPC XML

Technische Änderun

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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.

gen vorbehalten. Version 1.0 Ausgabe 07/2007 2/34

Allgemeine Hinweise

Datenaustausch über OPC XML

Technische Änderun

Allgemeine Hinweise

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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-Mail-Adresse an uns:

mailto:[email protected]

gen vorbehalten. Version 1.0 Ausgabe 07/2007 3/34

Allgemeine Hinweise

Datenaustausch über OPC XML

Technische Änderun

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Hinweis auf Exportkennzeichen AL: N

ECCN: N

gen vorbehalten. Version 1.0 Ausgabe 07/2007 4/34

Inhaltsverzeichnis

Datenaustausch über OPC XML

Technische Änderun

Inhaltsverzeichnis 1 Wie kann die OPC XML-DA Schnittstelle genutzt werden? ........................ 6

2 Voraussetzungen und Ziele dieser FAQ’s.................................................... 7 2.1 Was ist OPC? Warum OPC XML-DA? ............................................................. 7 2.2 Besondere Eigenschaften der OPC XML-DA Kommunikation ......................... 8

3 OPC-Client Software in Java ....................................................................... 10 3.1 Grafische Benutzeroberfläche des Java-Programms ..................................... 10 3.2 Erstellung der Klassen zur OPC Kommunikation ........................................... 12 3.3 Klassenbeschreibung der OPC Browser Applikation...................................... 14 3.3.1 Klasse MainWindow (MainApplet) .................................................................. 16 3.3.2 Klasse PWDWindow....................................................................................... 20 3.3.3 Klasse CyclicRead.......................................................................................... 20

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

3.3.4 Klasse Subscription ........................................................................................ 21 3.4 Ausführen des Beispiel-Programms ............................................................... 24 3.5 Import des Beispiel-Projektes in Eclipse......................................................... 24

4 Aufzeichnen von SOAP-Telegrammen zu Diagnosezwecken .................. 31 4.1 Einstellungen des Trace Tools MSSoapT3 .................................................... 31 4.2 Beispiele der Telegrammaufzeichnungen ...................................................... 32

5 Anhang .......................................................................................................... 34 5.1 Quelltexte und Softwaredokumentation.......................................................... 34 5.2 Weiterführende Informationen ........................................................................ 34 5.3 Literatur- und Quellenverzeichnis ................................................................... 34

gen vorbehalten. Version 1.0 Ausgabe 07/2007 5/34

Wie kann die OPC XML-DA Schnittstelle genutzt

werden?

Datenaustausch über OPC XML

Technische Änderun

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

Abbildung 1-1: Schematischer Aufbau desClient-Server-Systems

SIMOTION RT V4.1

OPC-client-application

OPC XML-DA Server

MiniWeb Server

SOAP-documentsStandard-Ethernet

For example:

Der OPC XML-DA Server ist ab der Firmware Version 4.1.1 in die SIMOTION Runtime integriert. Mittels Standard-Ethernet- oder PROFINET-Verbindung 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 „OPC-XML-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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 6/34

Voraussetzungen und Ziele dieser FAQ’s

Datenaustausch über OPC XML

Technische Änderun

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.

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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 OPC-Foundation (http://opcfoundation.org).

Die Kommunikation mittels OPC-DA (OPC Data Access, nicht zu verwechseln mit OPC XML-DA) basiert auf Microsofts COM/DCOM-Technologie (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,

gen vorbehalten. Version 1.0 Ausgabe 07/2007 7/34

Voraussetzungen und Ziele dieser FAQ’s

Datenaustausch über OPC XML

Technische Änderun

also Verändern einer bereitgestellten Variablen des Servers realisiert. In Tabelle 2-1 ist eine stichwortartige Gegenüberstellung zwischen OPC XML-DA und OPC-DA enthalten.

Tabelle 2-1: Gegenüberstellung OPC XML-DA und OPC-DA

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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 Kommunikations-struktur ist eine beidseitige, also server- und clientseitige Verbindungs-initialisierung 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).

gen vorbehalten. Version 1.0 Ausgabe 07/2007 8/34

Voraussetzungen und Ziele dieser FAQ’s

Datenaustausch über OPC XML

Technische Änderun

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.

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 9/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

3 OPC-Client Software in Java

Im Folgenden wird das Java Beispiel-Programm in Bezug auf die OPC-Funktionalitä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

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:

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 10/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

• 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

• Im PWD Fenster können Loginname und Passwort geändert werden, voreingestellt sind die Standardeinstellungen der Simotion-Steuerung (Benutzername: simotion; Passwort: simotion).

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 11/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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“

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

1 WSDL – Web Service Description Language, weitere Informationen s. http://www.w3.org/TR/wsdl

gen vorbehalten. Version 1.0 Ausgabe 07/2007 12/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

„ReturnValuesOnReply“ vom Typ boolean. Abbildung 3-4 zeigt einen Ausschnitt der daraus erzeugten Klasse.

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 13/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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

3.3 Klassenbeschreibung der OPC Browser Applikation

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Java Beispiel-Applikation MainWindow Klasse zur Initialisierung aller Anfangswerte des

Programms. Enthält u.a. das GUI, einige OPC-Kommunikationsfunktionen 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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 14/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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 OPC-Funktion bestimmte Aufgaben, z.B. ist die Klasse WriteResponse.class der Datentyp für die vom Server zurück gelieferten Daten eines write -Aufrufs.

Grundsätzlich läuft ein Zugriff auf den OPC XML-DA Server der Simotion Steuerung wie folgt ab (hier am Beispiel der Funktion write):

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 15/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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.

private void mySimotionWebService_SetUp()

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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();

gen vorbehalten. Version 1.0 Ausgabe 07/2007 16/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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.3- 3.):

org.opcfoundation.webservices.XMLDA._1_0.GetStatusResponse

getStatusResp = null;

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

getStatusResp = mySimotionWebService.getStatus(parameters);

Hier wird der eigentliche Aufruf der Funktion getStatus an den OPC-Server 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);

gen vorbehalten. Version 1.0 Ausgabe 07/2007 17/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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 OPC-Server ü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()

Eine etwas komplexere Datenstruktur liegt einem write-Aufruf zugrunde:

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

(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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 18/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

(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);

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:

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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.

gen vorbehalten. Version 1.0 Ausgabe 07/2007 19/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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);

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:

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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 OPC-Server 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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 20/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

3.3.4 Klasse Subscription

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 21/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

Abbildung 3-5: Flussdiagramm einer Subscription

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 22/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Hinweis Die im Subscription-Dialog angezeigte Zeit basiert auf den SIMOTION-internen Zeiteinstellungen. Zu beachten ist die Einstellung der Zeitzone bezogen auf die GMT. Während der Sommerzeit ist die die Standard-einstellung von GMT +60min auf GMT +120min einzustellen.

Abbildung 3-6: Zusammenhang zw. holdTime und waitTime

Wait TimeHold Time

Maximaler Zeitraum bis zur Antwort des Services

Minimaler Zeitraum bis zur Antwort des Services

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 23/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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 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 XML-DA 1.0 Spezifikation verwiesen.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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.

gen vorbehalten. Version 1.0 Ausgabe 07/2007 24/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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.

Abbildung 3-4: Importieren eines Eclipse-Projektes 1

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 25/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

Abbildung 3-5: Importieren eines Eclipse-Projektes 2

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Im Dialog „Import“ (Abbildung 3-6) ist die Auswahl auf „Select archive file“ zu setzen und das mit diesem FAQ gelieferte zip-File „OPC-Xml-Browser.zip“ auszuwählen.

Abbildung 3-6: Importieren eines Eclipse-Projektes 3

gen vorbehalten. Version 1.0 Ausgabe 07/2007 26/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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

Abbildung 3-7: Externe JAR-Dateien hinzufügen 1

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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.

gen vorbehalten. Version 1.0 Ausgabe 07/2007 27/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

Abbildung 3-8: Externe JAR-Dateien hinzufügen 2

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Nach Drücken des Buttons „Add external JARs“ erscheint ein Datei-Auswahl-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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 28/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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

Abbildung 3-10: Programm ausführen

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

Nachdem der Import des Projektes abgeschlossen ist, können nun Änderungen der OPC-Browser-Anwendung vorgenommen werden.

gen vorbehalten. Version 1.0 Ausgabe 07/2007 29/34

OPC-Client Software in Java

Datenaustausch über OPC XML

Technische Änderun

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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 30/34

Aufzeichnen von SOAP-Telegrammen zu

Diagnosezwecken

Datenaustausch über OPC XML

Technische Änderun

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): 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

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 31/34

Aufzeichnen von SOAP-Telegrammen zu

Diagnosezwecken

Datenaustausch über OPC XML

Technische Änderun

4.2 Beispiele der Telegrammaufzeichnungen

In Abbildung 4-3 und Abbildung 4-4 sind Aufzeichnungen der SOAP-Telegramme als Beispiel dargestellt.

Abbildung 4-3 enthält die Darstellung einer Browse-Anfrage an den OPC Server und dessen Antwort.

Abbildung 4-3: Browse Anfrage (oben) und Antwort (unten)

Abbildung 4-4 stellt eine Read-Anfrage an den Server dar.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 32/34

Aufzeichnen von SOAP-Telegrammen zu

Diagnosezwecken

Datenaustausch über OPC XML

Technische Änderun

Abbildung 4-4: Read Anfrage der Variablen var/servoControlClock mit Resultat 1000:

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

gen vorbehalten. Version 1.0 Ausgabe 07/2007 33/34

Anhang

Datenaustausch über OPC XML

Technische Änderun

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.

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

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.

Cop

yrig

ht ©

Sie

men

s A

G C

opyr

ight

200

7 A

ll rig

hts

rese

rved

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

gen vorbehalten. Version 1.0 Ausgabe 07/2007 34/34


Recommended