Zum Inhalt springen

Tutorial

Erste Schritte

Den ersten Server mit dem OPC UA .NET SDK aufsetzen: Namespace einbinden, Server erzeugen, starten und wieder beenden.

Tutorial

Erste Schritte ​

Voraussetzungen ​

  • Zielframework: .NET oder .NET Framework ab 4.7.2, alle unterstützten unter Zielframeworks
  • NuGet-Paket: Opc.UaFx.Advanced (Downloads)
  • Lizenz: für die Evaluation nicht erforderlich. Ohne Lizenzschlüssel läuft das SDK je Anwendungsstart 30 Minuten uneingeschränkt (Lizenz einrichten)

Server erzeugen ​

1. Einen Verweis auf den Namespace Opc.UaFx.Server (Paket Opc.UaFx.Advanced) hinzufügen. Die meisten weiteren Typen liegen im Namespace Opc.UaFx:

csharp
using Opc.UaFx.Server;
vbnet
Imports Opc.UaFx.Server

2. Eine Instanz der Klasse OpcServer mit der gewünschten Standard-Basis-Adresse erzeugen. Ohne Angabe verwendet der Server die Adresse opc.tcp://localhost:4840:

csharp
var server = new OpcServer("opc.tcp://localhost:4840/");
vbnet
Dim server = New OpcServer("opc.tcp://localhost:4840/")

Server starten ​

3. Server starten und Clients bedienen:

csharp
server.Start();
vbnet
server.Start()

4. Ihr Code, der die Anfragen der Clients bearbeitet:

csharp
// Your code to process client requests.
vbnet
'Your code to process client requests.

Server beenden ​

5. Vor dem Beenden der Anwendung alle Sitzungen beenden und den Server herunterfahren:

csharp
server.Stop();
vbnet
server.Stop()

Server im using-Block ​

6. In einem using-Block sieht das so aus:

csharp
using (var server = new OpcServer("opc.tcp://localhost:4840/")) {
    server.Start();
    // Your code to process client requests.
}
vbnet
Using server As new OpcServer("opc.tcp://localhost:4840/")
    server.Start()
    'Your code to process client requests.
End Using

Server in Tests ​

Ein Server mit Test-Nodes lässt sich im selben Prozess wie ein Client starten, um Client-Logik ohne Anlage automatisiert zu prüfen. Wie das geht, zeigt die Seite Clients testen.

Vollständiges Beispiel ​

Ein eigener Server, der einen Temperatur-Node bereitstellt, dessen Wert zyklisch aktualisiert und Subscriptions von Clients bedient:

csharp
namespace Server
{
    using System.Threading;

    using Opc.UaFx;
    using Opc.UaFx.Server;

    /// <summary>
    /// This sample demonstrates how to setup an OPC UA server that provides a temperature node and
    /// updates its value once per second.
    /// </summary>
    public class Program
    {
        public static void Main()
        {
            var temperatureNode = new OpcDataVariableNode<double>("Temperature", 100.0);

            using (var server = new OpcServer("opc.tcp://localhost:4840/", temperatureNode)) {
                server.Start();

                while (true) {
                    if (temperatureNode.Value == 110)
                        temperatureNode.Value = 100;
                    else
                        temperatureNode.Value++;

                    temperatureNode.ApplyChanges(server.SystemContext);
                    Thread.Sleep(1000);
                }
            }
        }
    }
}
vbnet
Imports System.Threading

Imports Opc.UaFx
Imports Opc.UaFx.Server

Namespace Server
    ''' <summary>
    ''' This sample demonstrates how to setup an OPC UA server that provides a temperature node and
    ''' updates its value once per second.
    ''' </summary>
    Public Class Program
        Public Shared Sub Main()
            Dim temperatureNode = New OpcDataVariableNode(Of Double)("Temperature", 100.0)

            Using server = New OpcServer("opc.tcp://localhost:4840/", temperatureNode)
                server.Start()

                While True
                    If (temperatureNode.Value = 110) Then
                        temperatureNode.Value = 100
                    Else
                        temperatureNode.Value += 1
                    End If

                    temperatureNode.ApplyChanges(server.SystemContext)
                    Thread.Sleep(1000)
                End While
            End Using
        End Sub
    End Class
End Namespace

Der Server stellt den Node Temperature bereit und erhöht dessen Wert einmal je Sekunde von 100 bis 110, danach beginnt er wieder bei 100. Zur Kontrolle eignet sich der Client aus dem vollständigen Beispiel der Client-Entwicklung: Er liest den Wert einmal je Sekunde und gibt ihn aus.

Nächste Schritte ​