.Net Opc Ua Server and client purchase requried.

.Net日常 / 2023-08-07 / 原文

Package named Opc.UaFx.Advanced is found in https://www.nuget.org/packages/Opc.UaFx.Advanced that used as a Opc Ua Server and Client.

First of all. Install package

dotnet add package Opc.UaFx.Advanced --version 2.31.0

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

// Define the root node of server
var machineNode = new OpcObjectNode("Machine");
// Declear a variable Hello world like very started.
var messageNode = new OpcDataVariableNode<string>("Message", "Hello World!");

// It's a variable set to false.
bool variableValue = false;

// bind the variable to root.
var isRunningNode = new OpcDataVariableNode<bool>(
    machineNode,
    "IsRunning",
    value: variableValue);

// bind another one in case.
var jobNode = new OpcObjectNode(
    machineNode,
    "Job",
    new OpcDataVariableNode<bool>("Cancel", false),
    new OpcDataVariableNode<int>("State", -1));

// New a opc server. Make sure tcp port 4840 haven't been used before
using var server = new OpcServer(
    "opc.tcp://localhost:4840/", machineNode, messageNode);

// Start it
server.Start();

// Wait a second
Thread.Sleep(1000);

// New a client to connect to 4840
using var client = new OpcClient("opc.tcp://localhost:4840/");

// Connect anyway
client.Connect();

// Print the variable value. It should be false here.
Console.WriteLine(client.ReadNode("ns=2;s=Machine/IsRunning"));

// Write some values.
OpcStatusCollection results = client.WriteNodes(
    new OpcWriteNode("ns=2;s=Machine/Job/Cancel", true),
    new OpcWriteNode("ns=2;s=Machine/Job/State", 0));
// Print them.
Console.WriteLine(client.ReadNode("ns=2;s=Machine/Job/Cancel"));
Console.WriteLine(client.ReadNode("ns=2;s=Machine/Job/State"));

Finally, the license is used following.

 

# License Information

Copyright (c) Traeger Industry Components GmbH

## License Model (en)

<https://opcua.traeger.de/en/#licensemodel>

### Single Developer License (en)

* Applies to a single person who is registered by name as a developer
* One single developer is allowed to use the SDK
* Any product / application developed with the SDK may be deployed in unlimited number to your customers and may be used by them (royalty free).
* Unlimited life time of the license
* Perfectly suitable for developing standard products

### Branch License (en)

* Applies to one branch (= a postal address), registered for developing
* Unlimited number of developers is allowed to use the SDK
* Any product / application developed with the SDK may be deployed in unlimited number to your customers and may be used by them (royalty free)
* Unlimited life time of the license
* Perfectly suitable for developing standard products

## License Model (de)

<https://opcua.traeger.de/#licensemodel>

### Single Developer License (de)

* Gilt für eine einzelne Person, die namentlich als Entwickler registriert wird
* Ein einzelner Entwickler darf das SDK verwenden
* Alle mit dem SDK entwickelten Produkte / Applikationen dürfen in unbegrenzter Zahl an Ihre Kunden ausgeliefert und von diesen genutzt werden (royalty free).
* Unbegrenzte Lizenzlaufzeit
* Ideal für Serienprodukte

### Branch License (de)

* Gilt für einen Entwicklungsstandort (eine postalische Adresse an der entwickelt wird)
* Eine unbegrenzte Anzahl von Entwicklern an diesem Standort darf das SDK verwenden
* Alle mit dem SDK entwickelten Produkte / Applikationen dürfen in unbegrenzter Zahl an Ihre Kunden ausgeliefert und von diesen genutzt werden (royalty free).
* Unbegrenzte Lizenzlaufzeit
* Ideal für Serienprodukte