Zum Inhalt springen

Referenz

Beispielanwendungen

Vollständig lauffähige Clients und Server mit dem OPC UA .NET SDK in C# und VB.NET, filterbar nach Art und Sprache, mit Links auf GitHub.

Referenz

Beispielanwendungen ​

Die Beispielanwendungen im Repository opcuanet-samples auf GitHub sind vollständige Programme, die Sie klonen, starten und als Ausgangspunkt für eigene Anwendungen verwenden können. Zu den meisten Clients gibt es einen passenden Server im selben Bereich. Starten Sie in diesem Fall zuerst den Server und dann den Client.

So starten Sie ein Beispiel, hier den Client Basic/Client:

sh
git clone https://github.com/Traeger-GmbH/opcuanet-samples.git
cd opcuanet-samples
dotnet run --project cs/Basic/Server -f net8.0
dotnet run --project cs/Basic/Client -f net8.0

Server und Client laufen dabei in zwei getrennten Konsolen. Die Beispiele verwenden das SDK in der Evaluation, also ohne Lizenzschlüssel.

Art
Sprache
68 Beispiele

Grundlagen

  • ClientClient

    Verbindet sich mit einem Server, liest einen Node, schreibt einen neuen Wert und liest ihn erneut.

  • ServerServer

    Stellt mit einem eigenen Node-Manager eine Maschine mit einigen Nodes bereit.

  • ClientClient.AE

    Abonniert die Ereignisse einer Maschine, gefiltert nach Schweregrad, quittiert Alarme und beantwortet Dialoge an der Konsole.

  • ServerServer.AE

    Stellt eine Maschine mit Dialog-Bedingung, Grenzwert-Alarm und Temperatur-Alarm bereit und ändert deren Zustände laufend.

  • ClientClient.Authentication

    Meldet sich mit Benutzername und Passwort am Server an und liest und schreibt einen Node.

  • ServerServer.Authentication

    Lässt nur Benutzer zu, die mit Benutzername und Passwort angemeldet sind, und prüft sie über eine Zugriffsliste.

  • ClientClient.Browsing

    Durchsucht den Adressraum des Servers ab dem ObjectsFolder und gibt die Nodes mit ihren Attributen eingerückt aus.

  • ClientClient.DataTypes

    Liest Nodes mit strukturierten Datentypen des Servers und arbeitet mit ihnen über eigene .NET-Klassen.

  • ServerServer.DataTypes

    Stellt Nodes bereit, deren Werte eigene strukturierte Datentypen und Aufzählungen haben.

  • ServerServer.DataTypes.Complex

    Stellt Nodes mit eigenen strukturierten Datentypen bereit und bildet deren Felder zusätzlich als eigene Kind-Nodes ab.

  • ClientClient.EventTypes

    Abonniert Ereignisse eines eigenen Ereignistyps und liest ihre strukturierten Ereignisdaten über eine eigene Ereignisklasse.

  • ServerServer.EventTypes

    Stellt einen eigenen Ereignistyp aus einem NodeSet bereit; ein Methodenaufruf durch den Client löst Ereignisse mit strukturierten Daten aus.

  • ClientClient.HDA

    Liest die Historie eines Nodes, als Rohdaten, seitenweise und mit den Änderungen an der Historie.

  • ServerServer.HDA

    Stellt Nodes mit Historie bereit, die der Server im Speicher führt.

  • ServerServer.HDA.Sql

    Stellt Nodes mit Historie bereit, die der Server in einer SQLite-Datenbank ablegt, einschließlich der Änderungen an der Historie.

  • ClientClient.Methods

    Ruft Methoden des Servers auf, nacheinander und parallel, und misst die Dauer.

  • ServerServer.Methods

    Stellt Methoden-Nodes bereit, synchron und asynchron ausgeführt, mit Ein- und Ausgabeargumenten.

  • ServerServer.NodeTypes

    Importiert eigene Node-Typen aus einem NodeSet und stellt Instanzen davon über eigene Node-Klassen bereit.

Konfiguration

  • ClientClient.ConfiguredViaCode

    Zeigt verschiedene Wege, einen Client im Code zu konfigurieren, von der Standardkonfiguration bis zu eigenen Einstellungen.

  • ServerServer.ConfiguredViaCode

    Zeigt verschiedene Wege, einen Server im Code zu konfigurieren, von der Standardkonfiguration bis zu eigenen Einstellungen.

  • ClientClient.ConfiguredViaXml

    Lädt die Konfiguration eines Clients aus einer XML-Datei.

  • ServerServer.ConfiguredViaXml

    Lädt die Konfiguration eines Servers aus einer XML-Datei.

Node-Typen

  • ClientClient.AnalogItemNode

    Liest Analogwerte mit Einheit und Messbereich und gibt sie aus.

  • ServerServer.AnalogItemNode

    Stellt Analogwerte mit Einheit, Messbereich und Gerätebereich bereit.

  • ClientClient.DataTypeNode

    Liest einen Node mit eigenem Aufzählungstyp, zeigt die möglichen Werte und schreibt einen neuen Wert.

  • ServerServer.DataTypeNode

    Stellt einen eigenen Aufzählungstyp als Datentyp-Node bereit und verwendet ihn für einen Status-Node.

  • ClientClient.MethodNode

    Findet die Methoden des Servers, zeigt ihre Argumente und ruft eine ausgewählte Methode mit eingegebenen Werten auf.

  • ServerServer.MethodNode

    Stellt Methoden-Nodes auf verschiedene Arten bereit: über Delegaten, Methoden und Befehlsobjekte, mit Ein- und Ausgabeargumenten.

Subscriptions

  • ClientClient.BulkChanges

    Abonniert sehr viele Nodes und verarbeitet ihre Datenänderungen in einem eigenen Thread.

  • ServerServer.BulkChanges

    Ändert die Werte sehr vieler Nodes gleichzeitig in einem festen Intervall.

  • ClientClient.BulkChanges.HiRes

    Empfängt Datenänderungen sehr vieler Nodes mit minimaler Verzögerung, mit PublishingInterval 0 und einem Callback je Datensatz.

  • ServerServer.BulkChanges.HiRes

    Ändert die Werte sehr vieler Nodes im Abstand weniger Millisekunden, mit hoch aufgelöstem Publishing.

  • ClientClient.HandshakeChanges

    Liest einen Datenblock, sobald der Server ihn als verfügbar meldet, und bestätigt die Verarbeitung über einen Handshake-Node.

  • ServerServer.HandshakeChanges

    Stellt Datenblöcke mit Handshake bereit: meldet neue Daten und wartet, bis ein Client deren Verarbeitung bestätigt.

Anwendungsszenarien

  • AnwendungApp.LicenseUsage

    Setzt die Lizenzschlüssel des SDK und schützt sie bei der Obfuskation der Anwendung durch Verschlüsselung der Zeichenketten, hier mit Eazfuscator.NET.

  • ClientClient.Blazor

    Verbindet sich aus einer Blazor-Server-Anwendung mit einem Server und liest Werte von Nodes.

  • ClientClient.ClientAddedNodesWithHistory

    Legt am Server einen Variablen-Node mit Historie an und schreibt Werte, die der Server in die Historie übernimmt.

  • ServerServer.ClientAddedNodesWithHistory

    Erlaubt Clients, Variablen-Nodes mit Historie anzulegen, und zeichnet die geschriebenen Werte als Historie auf.

  • ServerServer.CustomFile

    Stellt über die Schnittstelle IOpcFileInfo eine Datei aus einer eigenen Quelle als Datei-Node bereit, hier von einem FTP-Server.

  • ClientClient.DynamicNamespaces

    Adressiert Nodes über die Namespace-URI statt den Index und erneuert die Subscriptions nach jedem Wiederverbinden, sodass wechselnde Namespaces des Servers keine Rolle spielen.

  • ServerServer.DynamicNamespaces

    Stellt jeden Namespace über einen eigenen Node-Manager bereit und startet den Server mit einer wechselnden Auswahl davon neu.

  • ServerServer.DynamicNodes

    Legt Nodes zur Laufzeit an, gesteuert über Pfade, die an der Konsole eingegeben werden.

  • ClientClient.GenericEvents

    Empfängt Ereignisse eines eigenen Ereignistyps ohne eigene Klasse für dessen Felder und gibt alle ausgewählten Felder über eine generische Ereignisklasse aus.

  • ServerServer.LightweightEvents

    Verwendet einen einzigen Ereignis-Node für Ereignisse verschiedener Quellen, statt je Quelle einen eigenen Ereignis-Node anzulegen.

  • ClientClient.Localization

    Fordert Anzeigenamen und Beschreibungen in bevorzugten Sprachen an und zeigt, wie der Server auf eine Ersatzsprache ausweicht.

  • ServerServer.Localization

    Stellt Anzeigenamen und Beschreibungen in mehreren Sprachen bereit, über die Globalisierungsressourcen des Servers.

  • ServerServer.NodeAccess

    Beschränkt den Zugriff auf Nodes je Benutzer über Zugriffskontrolllisten und liefert über abgeleitete Node-Klassen benutzerabhängige Metadaten.

  • ClientClient.NodeExplorer

    Durchsucht den Adressraum eines Servers und zeigt ihn als Baum in einer Windows-Forms-Anwendung.

  • ServerServer.NodeSet.PackML

    Importiert das NodeSet der PackML-Companion-Spezifikation und implementiert dessen Objekte und Methoden für mehrere Maschinen.

  • ServerServer.NodeSet.Umati.Legacy

    Importiert die NodeSets des früheren umati-Informationsmodells und meldet Alarme einer Werkzeugmaschine.

  • ServerServer.NodeSet.Umati.MachineTool

    Importiert die NodeSets der Companion-Spezifikationen für Werkzeugmaschinen (umati) und meldet Alarme, die ein Client bestätigen kann.

  • ClientClient.PackML

    Ruft eine Methode der PackML-Companion-Spezifikation mit strukturierten Argumenten auf, mit Datentypen, die aus dem PackML-NodeSet erzeugt sind.

  • ServerServer.Playground

    Stellt viele Arten von Nodes bereit, statisch, sich laufend ändernd und als Methoden, um Clients dagegen zu testen.

  • ClientClient.RecursiveSubscription

    Legt Job-Nodes unterhalb eines überwachten Nodes an und empfängt die Ereignisse, die der Server dafür meldet.

  • ServerServer.RecursiveSubscription

    Überwacht von Clients neu angelegte Nodes, verarbeitet sie und meldet Ereignisse dazu.

  • ClientClient.SignalR

    Leitet Datenänderungen von Nodes über einen ASP.NET-Core-SignalR-Hub an den Browser weiter.

  • ServerServer.SignalR

    Stellt Nodes bereit, deren Werte sich laufend ändern; sie sind die Datenquelle für das Beispiel Client.SignalR.

  • ServerServer.SimaticNodes

    Bildet NodeIds im Stil von SIEMENS SIMATIC mit Punkten und Anführungszeichen über eine eigene Factory für NodeIds.

  • ServerServer.SimaticNodeSet

    Importiert das NodeSet einer SIMATIC S7-1500 und tritt wie deren Server auf, etwa um Clients ohne die Hardware zu testen.

  • ClientClient.StateMachine

    Überwacht den aktuellen Zustand eines Zustandsautomaten auf dem Server.

  • ServerServer.StateMachine

    Implementiert einen Zustandsautomaten mit eigenen Zuständen und wechselt dessen Zustand auf Tastendruck.

  • ClientClient.Temperature

    Verbindet sich mit einem Server und liest einmal je Sekunde den Wert eines Temperatur-Nodes.

  • ServerServer.Temperature

    Stellt einen Temperatur-Node bereit und ändert seinen Wert einmal je Sekunde.

  • ClientClient.Umati.Legacy

    Abonniert die Alarme einer Werkzeugmaschine nach dem früheren umati-Informationsmodell und liest ihre spezifischen Felder.

  • ClientClient.Umati.MachineTool

    Empfängt Meldungen einer Werkzeugmaschine nach der OPC-UA-Companion-Spezifikation für Werkzeugmaschinen (umati) und bestätigt sie.

  • ServerServer.UserIdentities

    Implementiert eigene Benutzeridentitäten über Zugriffslisten und abgeleitete Klassen, hier mit Windows-Anmeldung.

Plattformen

  • ClientClient.Uwp

    Verbindet sich in einer UWP-Anwendung mit einem Server und zeigt den Wert eines Temperatur-Nodes an. Das Anwendungszertifikat liegt als Datei in den Assets, weil das SDK es unter UWP nicht automatisch erstellen kann.

  • ClientClient.Wpf

    Abonniert in einer WPF-Anwendung einen Node und zeigt seinen Wert in der Oberfläche an.