# OPC UA B&R und Java



## Dust (14 Juni 2019)

Hallo,
Unsere internen Prüfmaschinen (B&R Steuerung) sollen umgestellt werden, so dass Prüfdaten (Drücke, Temperaturen, etc.) automatisch in unser internes ERP (Java) eingetragen werden sollen.
Sowohl die Maschinen als auch die ERP Software werden von mir programmiert, heißt ich hab vollen Zugriff auf den Quellcode.
Da bin ich natürlich auf OPC UA gestoßen.

Dazu hätte ich ein paar Fragen und ich hoffe Ihr könnt mir weiterhelfen:
1. Mehrere Prüfmaschinen sollen angebunden werden: Wer ist Client, wer ist Server (Die Maschinen Clients und die ERP Server, oder andersrum)
2. Kennt wer gute freie Java OPC UA Bibliotheken (am besten Java only, ohne wrapper), die den OPC UA Server bzw. Client (siehe 1.) abbilden.
3. Gibt es frei verfügbare Dokumente des OPC UA Standards zum download, so dass ich mir auch selber eine Java OPC UA Bibliothek programmieren könnte.
4. Reicht es bei B&R, OPC UA zu aktivieren, oder muss auch noch was mit der B&R OPC UA Bibliothek programmiert werden.

Vielen Dank schon mal!


----------



## Sven Rothenpieler (14 Juni 2019)

Dust schrieb:


> 1. Mehrere Prüfmaschinen sollen angebunden werden: Wer ist Client, wer ist Server (Die Maschinen Clients und die ERP Server, oder andersrum)



In der Regel sind die Maschinen die Server, da diese ja die Daten zur Verfügung stellen, während die Clients diese Daten abfragen.

Zu den anderen Fragen kann ich leider nichts sagen. Muss es denn programmiert werden? Muss es Java sein?
Wir (INSYS) haben ein fertiges *Gateway*, was genau deine Aufgabenstellung realisiert. Wenn in der B&R der OPC-UA Server aktiv ist und die Daten darüber zur Verfügung stellt, können wir diese abgreifen und z. B. per Modbus Slave, OPC-UA (Server) oder MQTT sowie HTTP(S) an übergeordnete Systeme (ERP, MES, SCADA, Cloud, etc.) weiterleiten, nachdem wir sie auf dem Gateway sogar vorverarbeitet haben.


----------



## Dust (14 Juni 2019)

Hallo,
ja, es sollte schon Java sein, und ich würde es gerne direkt in den Server unserer ERP Software einbinden (wie gesagt, Eigenentwicklung).
Hab mir gerade mal JEasyOPC geladen, mal gucken ob ich damit was anfangen kann. (EDit: unterstützt wohl nur 32bit Plattformen, also nicht anwendbar)
Wobei schon die nächste Frage aufgetaucht ist: Wenn die Maschine der Server ist, und das ERP der Client, dann müsste der Client ja die ganze Zeit die Maschien suchen, bis sie eingeschaltet ist. Und ab dann die Daten abgreifen. Is ja nicht so "schön". Da müsste man ja noch was davor setzen wo sich die Maschine beim ERP anmeldet und das ERP sich dann and den OPC UA Server hängt, oder sehe ich das falsch?


----------



## malloc (17 Juni 2019)

Hallo Dust,

neben käuflichen Implementierungen (z. B. von Unified Automation) wäre eine freie Variante von OPC UA für Java "Eclipse Milo".

Für das Auffinden deiner Server sieht OPC UA verschiedene Register-/Discovery-Mechanismen vor. Schau mal nach "Global Discovery Server" und "Local Discovery Server".


----------



## da_kine (25 Juni 2019)

Hallo Dust,

ich sehe das ähnlich wie @Sven Rothenpieler.

Ich würde ein Gateway dazwischensetzen welches dir die Daten von der Maschine abholt, in eine Datenbank einträgt und das ERP diese Daten hier abholt. Der Vorteil liegt einfach darin, dass du eine zusätzliche Abstraktionsebene gewinnst die diese ganzen Kommunikationsmechanismen behandelt. Sowohl die zur SPS hin als auch die zu deiner Anwendung. Du bekommst die Last aus dem ERP heraus und hast noch den Vorteil auch andere evtl. nicht OPC UA fähige Clients über die gleichen Systemmechanismen aus deinem ERP heraus anzusprechen.


Grüße

Markus


----------



## Dr. OPC (10 Juli 2019)

Hallo,

beim Dazwischenhängen einer weiteren Ebene (ein Gateway/Datenbank/whatever) gewinnst du eine Abstraktionsebene und du gewinnst auch einer weitere Fehlerquelle und falls dort sensitive Daten liegen, gewinnst du auch noch eine weitere Sicherheitslücke. Auf jeden Fall bekommst du zusätzliche Latenzen und es wird alles "langsamer".

Daher wird zu ERP Sytemen gerne auch eine "direkte" OPC UA Verbindung bevorzugt. Speziell dann wenn man nicht nur "Werte von Variablen" lesen will sondern UA-Methoden (mit komplexen Parametern) aufrufen möchte, wird die "abstrahierende Zwischenschicht" gerne zu einem Problem.

Freie Java Bibliotheken für OPC UA gibt es einige, leider können viele "nur" die einfachsten OPC UA Funktionen (lesen/schreiben von Datenpunkten). Das ist für ein ERP System mittelfristig sicher zu wenig. UnifiedAutomation und ProsysOPC bieten (dieselbe) kommerzielle Java Bibliothek an.

Von einer Selbstimplementierung des Stack/Bibliothek würde ich abraten, das kostet dich sicher 1-2 Jahre deines Lebens. Theoretisch ist das möglich anhand der OPC UA Spezigikation Part4 und Part6 (die auch als IEC Norm öffentlich verfügbar sind). Aber glaube mir, du hast schon mit der Implementirng deiner Applikation (unter Verwendung einer Bibliothek) genug zu tun.


----------



## Dust (15 Juli 2019)

Hallo,
ich bin leider noch nicht wieder dazu gekommen mich weiter schlau zu machen, ist mal wieder was dazwischen gekommen.
Mir würden die "einfachen" OPC-UA Funktionen erstmal reichen. Welche freien Libs könntest du empfehlen, wo es auch schon fertige jars gibt. BeiMilo muss man, soweit ich das verstanden habe, sich erst nen eigenen Build erzeugen mit maven, und da müsste ich mich erst einarbeiten...


----------

