# opc client in java



## tch (9 Januar 2009)

Hi
Meine erfahrung mit opc beschraenkt sich bisher auf ein projekt, das ich
uebernommen habe und dort nur die Konfiguration des OPC Servers
anpassen musste. Bis auf ein uebles Problem, was aber komischerweise nur
am verwendeten PC lag, lief dann alles ohne Probleme.

Im moment sitzte ich an einer graphischen oberflaeche (java), mit der eine
Anlage ueberwacht und bedient wird, die von einem Siemens PLC gesteuert
wird. 

Bisher haben wir die kommunikation mit einem "einfachen" TCP
datenaustausch realisiert. Der Nachteil ist, dass es sehr umstaendlich ist,
Aenderungen vorzunehmen und laut Kollegen auch nur bis zu einer
bestimmten Groesse der Datenmenge ueberhaupt moeglich ist (die Anlage
wird schrittweise ausgebaut bis zu ca 5000 variablen, die zu ueberwachen
bzw zu schreiben sind). 
Nach langem suchen, habe ich eine Loesung gefunden, die ich
wahrscheinlich ohne grossen Aufwand in meine bestehende
Java-Anwendung einfuegen kann (jopc-client von novotek). 
nun aber zu meiner tatsaechlichen frage:
Wenn ich es richtig verstanden habe, ist ein Vorteil von OPC, dass fuer eine
gegebene Anlage der OPC-Server und der OPC-Client sich nur ueber eine
Liste von items einigen muessen. Wenn jetzt zum Beispiel an der Anlage
irgendwelche Kabel umgesteckt werden (warum auch immer) dann macht
man die entsprechenden Aenderungen nur in der Konfiguration des
OPC-Servers, so dass sich fuer den Client nichts aendert. 
Was mich im moment etwas verwirrt, ist das es fuer meine java application
ja nicht ausreicht, den Server zu fragen, welche items zur Verfuegung
stehen, die zu monitoren und den user die werte aendern lassen. Sondern
ich muss ja wissen, dass zb das item "valve_xy" immer das selbe ventil
meint. Und irgendwo in meinem program muessen ja dann die namen der
items festgelegt werden (hardcoded)....seh ich es also richtig, dass ich
zuallererst mit den Kollegen, die den PLC programmieren (die sitzen in
Frankreich, sonst wuerde ich die bloeden Fragen denen stellen) mich auf
eine Liste von items einigen sollte, damit die Ein/Ausgaenge vom Client
eindeutig ueber ihren Namen zugeordnet werden koennen ...?


...sry fuer viel text und keine wirklich konkrete frage, aber ich waere fuer jede antwort dankbar.


----------



## Gnu0815 (10 Januar 2009)

Hallo,

du hast die prinzipiellen Ablauf ja schon richtig erkannt.

Wie du schon geschildert hast registrierst du im Client vordefinierte items die einer bestimmten Aufgabe/Funktion zugeordnet sind. Wenn sich nun die Werte auf den OPC server ändern bekommt deine client Applikation dies über Events mitgeteilt. Das Schreiben auf items (z.B ein Ventil) funktioniert auch so. Du schreibst den Wert auf ein bestimmtes vordefiniertes item welches wiederum eine bestimmte Prozesszurodnung besitzt (Ventil). Wie du schon gesagt hast, musst du dich mit dem Kunden auf eine Interfaceliste (items) einigen. Viele OPC Server bieten die Möglichkeit einer Physikalischen oder Logischen itemstruktur. Bei einer physikalischen Struktur werden die einzelnen ein + ausgänge jeder PLC in Untergruppen zugeordnet. Bei einer logischen Struktur kann man einen abstrakten Prozess abbilden der z.B. über mehrere PLCs aufgeteilt ist von denen du aber nichts siehst. Beide Darstellungsmethoden haben ihre Vor- und Nachteile.

Soweit die Theorie, ...
Praktisch musst du einige Sachen beachten. Zunächst musst du klären ob ihr auf Basis von OPC DA,AE,XML,(UA) arbeiten möchtet. Diese Frage lässt sich nur klären, wenn der genutzte OPC Server bekannt ist. Nicht alle client Implementierungen unterstützen alle Techniken. Auch die Konfiguration von DCOM und der Sicherheitsrichtlinien hat sicher schon jeden Einsteiger in die Verzweiflung getrieben J .

Ich empfehle dir ein Testsystem mit einem OPC Server mit einer separaten Cliententwicklung aufzubauen.

 Gnu


----------



## seeba (15 Januar 2009)

Einen guten OPC Server für Simulationen gibt es hier:
http://www.matrikonopc.com/downloads/178/index.aspx


----------



## Samber (10 Juni 2017)

*OPC UA and JAVA*

Hello all
I am working on a project.
We have one landfill site in germany and from there we have to measure the methane gas concentration and the data is collected by s7 300 plc.
I have to take data from S7 300 PLC and transfer this data to OPC UA server which support java, can you please tell me which OPC UA SERVER will be best to use for this above application and also cheap in cost.
And how can i communicate S7 300 PLC with OPC UA SERVER.
Then i have to programmed the OPC UA CLIENT IN JAVA so please if you have the code of java OPC UA client , please share with me
with best regards
Saurabh


----------



## zeroc8 (8 September 2017)

https://github.com/OPCFoundation/UA-Java


----------

