# OPC UA Verbindung B&R (Server) WinCC Client



## gucky123 (1 Oktober 2018)

Hallo liebe Gemeinde,
ich versuche seit geraumer Zeit eine OPC UA Verbindung zwischen einer B&R Steuerung X20CP3584 (OPC-Server) und WinCC V7.4 SP1 (Client) aufzubauen.
Bisher ohne Erfolg. Auch das Tool OPC-Scout liefert keine Verbindung. Alleine die Freeware Software UA Expert verbindet sich erfolgreich mit der Steuerung.
Für Hilfe wäre ich sehr dankbar.


----------



## inray (1 Oktober 2018)

Hallo!
Scheint an der Namensauflösung zu liegen. Im WinCC auch mal mit der IP Adresse statt mit Rechnernamen versucht?


---------------------------
www.opc-router.de


----------



## gucky123 (2 Oktober 2018)

Vielen Dank für den Hinweis,
ich habe jedoch den Verbindungsaufbau immer über die IP-Adresse vorgenommen.
opc.tcp://192.168.0.100:4840

opc.tcp://br-automation:4840 wurde zurückgemeldet.


----------



## gucky123 (2 Oktober 2018)

Das Problem ist behoben.
Der OPC Scout und WinCC finden jetzt den B&R OPC UA Server. Ich habe Einträge in die Windows Dateien hosts und lmhost.sam vorgenommen.

192.168.01.00 br-automation
bzw.
192.168.0.100 br-automation 'PRE


----------



## Dr. OPC (19 November 2018)

Hallo zusammen,

auch wenn es schon etwas spät ist und das Problem gelöst ist hier nochmal die Erklärung dazu (falls andere das hier lesen).

Der  Verbindungsaufbau bei OPC UA ist mehrstufig. Ein UA Client fragt erst  den Server "GetEndpoints()?" um herauszufinden welche Möglichkeiten es  alles gibt. Der Server antwortet darauf mit "Endpoint-Descriptions" von denen er mehrere haben kann. Dann verwendet der Client eine der zurückgegebenen  "Endpoints"-Descriptions, um sich damit zu verbinden. Die Namensauflösung ist hierbei  insofern kritisch als das viele Client (völlig zurecht) davon ausgehen,  dass sie den returnierten Endpoint einfach so verwenden können, und das  können sie auch wenn es in dem Netwerk eine funktionierende  Namensauflösung (DNS) gibt.

Also man fragt bei einer IP-Adresse nach  "Endpoints" und bekommt vom Server Endpoints geliefert in denen aber  ein "hostname" drin steht. Dann macht der Client einen  Verbindungsaufbauversuch mit den "hostname" und (weil die  Namensauflösung in deinem Netz nicht funktioniert) geht es dann nicht.  Hinweis: der UaExpert funktioniert hier etwas anders denn er "ignoriert"  den zurückgegebenen Hostname und verwendet genau das was bei der "GetEndpoints"-Anfrage bereits funktioniert hatte.

Zur Lösung:
1) in einem OPC UA Netzwerk sollte die Namensauflösung funktionieren (testen mit Ping auf "IP" versus Ping auf "hostname")
->> DNS Server installieren

2)  falls die Namensauflösung (dauerhaft) nicht funktioniert, sollte der Server auch  nur Endpoints zurückgeben in denen wieder die IP Adresse drin steht
->> Server um-konfigurieren

3)  die lokale "etc\hosts" Datei editieren (die Lösung die hier verwendet  wurde), wird sehr mühsam wenn es a) viele PC sind auf denen die Clients  laufen bzw. b) wenn man viele BuR Steuerungen hat.
->> geht, ist aber eine Lösung die schlecht skaliert

Der  Punkt 3 ist auch deshalb schlecht weil (bei sicheren Verbindungen) auch  noch das X509 Zertifikat geprüft wird, wenn auch hier, konsitent zum  Endpoint, der "hostname" im Zertifikat steht, wird die Prüfung des  Zertifikates fehlschlagen (also der Vergleich ob der Inhalt des Zertifikat auch  zum Endpoint und zum Absenders des Zertifikates passt). Diese Prüfung kann  man bei vielen UA Geräten zwar abschalten, aber man schaltet damit auch  eine Sicherheitsprüfung ab. Wenn man also keinen DNS hat, sollte im Server-Endpoint-Description und auch im Server-Zertifikat jeweils die korrekte IP-Addresse drin stehen, damit alles konsistent zusammen passt und die Clients sich nicht "erschrecken".


----------

