# Opc ua c#



## Bastler83 (22 April 2017)

Hallo,
hat hier schon jemand Erfahrungen mit OPC UA und .net C#.
Versuche einen Client zu programmieren. Komme aber nicht vorwärts. Leider fehlen Tutorials im Netz.
Hab diverse Beispiele angeschaut. Folgendes hab ich herausgefunden:
Folgende Verweise sind nötig:

using Opc.Ua.Client;
using Opc.Ua.Client.Controls;
using Opc.Ua.Configuration;

Diese findet man auf:
https://github.com/OPCFoundation/UA-.NET

Gerne hätti ich ein Button für die Verbindung:
        private void button1_Click(object sender, EventArgs e)
        {
           //Verbindung aufbauen zu opc.tcp://192.168.1.53:4840
        }

Zusätzlich einen für einen Wert schreiben und lesen.


Als OPC UA Server benutze ich ein Raspi mit CoDeSys (geile Sache!)

Viellicht hat mir jemand einen "einfachen" Sample Code. beispiele im Netz sind sehr komplex für mein Verständnis.


----------



## malloc (3 Mai 2017)

Moin,

schau dir mal dieses Repo an:
https://github.com/OPCFoundation/UA-.NETStandardLibrary

Unter /SampleApplications findest du Anwendungsbeispiele.

Wenn du dein eigenes Projekt im Netz einsehbar hast, kann ich da mal mit drüber schauen, wenn du möchtest.
Mit dem CoDeSys-Raspi habe ich auch angefangen 

Viele Grüße


----------



## Bastler83 (3 Mai 2017)

Ciao

Ja das hab ich mir schon angeschaut, und vieles anderes  mehr. Aber es ist alles für mich viel zu kompliziert. War bei OPC DA  viel einfacher . 
--> https://infosys.beckhoff.com/index..../1031/tcopcserver/html/sample1_netapi.htm&id=
Die  ganze Zertifizierungssache und Sicherheitssachen sind für mich alle  nebensächlich. Zuerst wäre es schön ein einfaches prgm am Laufen zu  haben.
Codesys kann eh noch keine Zertifikatsachen.... (wird es aber glaubs mal, laut Forum)

Ich denke Verbinden, ein Wert schreiben und einer lesen sollten so ca. 80 Zeilen nicht überschreiten


----------



## ZbynekZ (4 Mai 2017)

If you do not mind using a commercial product, you can do that in basically one statement using QuickOPC: http://www.quickopc.com/products/quickopc/languages-and-tools/csharp .
Trial version is free. 

Disclaimer - this is a self-promotion.


----------



## Jochen Kühner (4 Mai 2017)

schau auf https://github.com/convertersystems/opc-ua-samples


----------



## Jochen Kühner (4 Mai 2017)

Ich denke mit dem https://github.com/convertersystems/opc-ua-samples/blob/master/ConsoleApp/Program.cs kommst du weiter


----------



## Bastler83 (4 Mai 2017)

Vielen Dank Jochen. Ich habe diese Applikation gestartet. Folgendes ist noch anzupassen für den CoDeSys Raspi:
var discoveryUrl = "*opc.tcp://192.168.1.53:4840*"; // Workstation.NodeServer
Jetzt Spuckt die Console folgendes aus:

Step 1 - Describe this app.
Step 2 - Create a certificate store.
Step 3 - Create a session with your server.
  Opened channel with endpoint 'opc.tcp://192.168.1.53:4840'.
  SecurityPolicyUri: 'http://opcfoundation.org/UA/SecurityPolicy#None'.
  SecurityMode: 'None'.
  UserIdentity: 'Workstation.ServiceModel.Ua.AnonymousIdentity'.
Press any key to continue...

Step 4 - Browse the server namespace.
+ Root
  + Views: 0:Views, Object
  + Types: 0:Types, Object
    + DataTypes: 0ataTypes, Object
      + OPC Binary: 0:OPC Binary, Object
    + ReferenceTypes: 0:ReferenceTypes, Object
    + VariableTypes: 0:VariableTypes, Object
    + ObjectTypes: 0:ObjectTypes, Object
      + CtrlTypes: 3:CtrlTypes, Object
  + Objects: 0:Objects, Object
    + DeviceSet: 2eviceSet, Object
      + CODESYS Control for Raspberry Pi SL: 4:CODESYS Control for Raspberry Pi SL, Object
    + Server: 0:Server, Object
      + ServerRedundancy: 0:ServerRedundancy, Object
      + VendorServerInfo: 0:VendorServerInfo, Object
      + ServerDiagnostics: 0:ServerDiagnostics, Object
      + ServerCapabilities: 0:ServerCapabilities, Object
      + Auditing: 0:Auditing, Variable
      + ServiceLevel: 0:ServiceLevel, Variable
      + ServerStatus: 0:ServerStatus, Variable
      + NamespaceArray: 0:NamespaceArray, Variable
      + ServerArray: 0:ServerArray, Variable
Press any key to continue...

Step 5 - Create a subscription.
Step 6 - Add items to the subscription.
Step 7 - Subscribe to PublishResponse stream.
Press any key to delete the subscription...

sub: 3; handle: 12345; value: 04.05.2017 16:56:04; status: 0x00000000; timestamp: 04.05.2017 16:56:04
sub: 3; handle: 12345; value: 04.05.2017 16:56:05; status: 0x00000000; timestamp: 04.05.2017 16:56:05
sub: 3; handle: 12345; value: 04.05.2017 16:56:06; status: 0x00000000; timestamp: 04.05.2017 16:56:06
sub: 3; handle: 12345; value: 04.05.2017 16:56:07; status: 0x00000000; timestamp: 04.05.2017 16:56:07
sub: 3; handle: 12345; value: 04.05.2017 16:56:08; status: 0x00000000; timestamp: 04.05.2017 16:56:08
sub: 3; handle: 12345; value: 04.05.2017 16:56:09; status: 0x00000000; timestamp: 04.05.2017 16:56:09


Jetzt die Node Id in UaExpert wäre wie folgt :
NS4|String||var|CODESYS Control for Raspberry Pi SL.Application.PLC_PRG.iCounter

Wo müsste ich das im Quellcode eigeben, dass die Konsole den Wert ausgibt ?


----------



## malloc (14 Mai 2017)

Schau dir mal die Code-Zeile 118 im Beispiel an. Dort wird die NodeID angegeben.


----------



## thetrock (30 Juli 2019)

Hi Zusammen, 

ich muss auch ein C# Programm erstellen um auf einen OPC-UA Server zu kommen. 

Leider kann ich das Beispiel von oben nicht ausführen, habt ihr andere Beispiele? 


OPC-Server läuft schon. 

Danke Gruß thetrock


----------



## Softing_IA (2 August 2019)

Du könntest es mit unserem .NET Standard SDK probieren. Wir liefern gleich einen Demo Client als Konsolenapplikation mit. Damit schaffst du es schnell auf einen Server zuzugreifen.
Alles weitere findest du hier:
https://data-intelligence.softing.com/products/datafeed-opc-sdks/datafeed-opc-ua-net-standard-sdks/


----------



## thetrock (18 September 2019)

H zusammen, 

das obere erwähnte Beispiel bekomm ich jetzt zum laufen. 

Jetzt stellt sich mir die Frage, wo ich mehrer Imtes anlegen kann fürs auslesen, bzw. beschreiben?

Vielen Dank für den Tipp für die sofitng SDK, ist aber Preislich zu teuer.

Hat hier jemand auch ne gute opensource LIB, die er schon eingesetzt hat?

Gruß thetrock


----------



## malloc (19 September 2019)

Ich benutze in einem Projekt momentan den Stack der OPC Foundation.
https://github.com/OPCFoundation/UA-.NETStandard

Den kannst du auch als NuGet-Paket in dein Projekt einbinden.
Ist etwas mehr Aufwand zur Integration, dafür kostenfrei und open source.

LG Jan


----------



## thetrock (19 September 2019)

Danke Jan, werd ich Mal ausprobieren. Kann ich dich kontaktieren falls ich Probleme/Fragen hab

Gruß Markus


----------

