Files
lmxopcua/tools/opcuacli-dotnet

OPC UA CLI Tool (.NET)

Command-line utility for testing OPC UA server functions. Built with the OPC Foundation UA .NET Standard client library and CliFx.

  • Runtime: .NET 10
  • OPC UA Client: OPCFoundation.NetStandard.Opc.Ua.Client

Build & Run

cd tools/opcuacli-dotnet
dotnet build
dotnet run -- <command> [options]

Commands

connect

Test connection to an OPC UA server:

dotnet run -- connect -u opc.tcp://localhost:4840
Flag Description
-u OPC UA server endpoint URL (required)

read

Read a value from a node:

dotnet run -- read -u opc.tcp://localhost:4840 -n "ns=2;s=MyNode"
Flag Description
-u OPC UA server endpoint URL (required)
-n Node ID to read (required)

write

Write a value to a node (auto-detects the data type from the current value):

dotnet run -- write -u opc.tcp://localhost:4840 -n "ns=2;s=MyNode" -v 42
Flag Description
-u OPC UA server endpoint URL (required)
-n Node ID to write to (required)
-v Value to write (required)

subscribe

Monitor a node for value changes:

dotnet run -- subscribe -u opc.tcp://localhost:4840 -n "ns=2;s=MyNode" -i 500
Flag Description
-u OPC UA server endpoint URL (required)
-n Node ID to monitor (required)
-i Polling interval in milliseconds (default: 1000)

browse

Browse the OPC UA address space:

# Browse top-level Objects folder
dotnet run -- browse -u opc.tcp://localhost:4840

# Browse a specific node
dotnet run -- browse -u opc.tcp://localhost:4840 -n "ns=2;s=MyFolder"

# Browse recursively (depth 3)
dotnet run -- browse -u opc.tcp://localhost:4840 -r -d 3
Flag Description
-u OPC UA server endpoint URL (required)
-n Node ID to browse (default: Objects folder)
-d Maximum browse depth (default: 1)
-r Browse recursively using --depth as max depth

Example: Testing the LmxOpcUa Server

cd tools/opcuacli-dotnet

# Connect to the local OPC UA server
dotnet run -- connect -u opc.tcp://localhost:4840

# Browse the address space
dotnet run -- browse -u opc.tcp://localhost:4840 -r -d 3

# Read a tag value
dotnet run -- read -u opc.tcp://localhost:4840 -n "ns=2;s=TestMachine_001.SomeAttribute"

# Subscribe to live updates
dotnet run -- subscribe -u opc.tcp://localhost:4840 -n "ns=2;s=TestMachine_001.SomeAttribute" -i 500

Example: Testing with the OPC PLC Sample Server

# Start the sample server (from another terminal)
cd tools/opcsampleserver/publish
dotnet opcplc.dll --pn=50000 --autoaccept --unsecuretransport

# Browse the sample server
dotnet run -- browse -u opc.tcp://localhost:50000 -r -d 2

# Read a sample node
dotnet run -- read -u opc.tcp://localhost:50000 -n "ns=2;s=SlowUInt1"