本人第一次接觸OPCUA,如有不對的地方望指正,獲取的是公司的OPCUA服務器的數據
方式一:
測試環境:
window11
vs2022
OPCFoundation.NetStandard.Opc.Ua
.net framework 4.8? ?(2025-06-23? 經過測試,.net8也可以使用這套.net framework的代碼并成功讀取到數據,版本也是選擇1.5.376.213)
測試環境如下:
1? 新建.net framework 4.8的控制臺項目,項目名稱為OPCDemo3
2 在nuget中安裝OPCFoundation.NetStandard.Opc.Ua,版本選擇1.5.376.213,如下圖:
3 編寫代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Opc.Ua;
using Opc.Ua.Client;
using Opc.Ua.Configuration;
namespace OPCDemo3
{internal class Program{static void Main(string[] args){string endpointUrl = "opc.tcp://ip地址:4840";//節點Id,根據實際情況填寫string nodeId = "ns=4;s=|var|CODESYS Control Win V3 x64.Application.Para.PLC_Inf.wHeatBeat";// 創建應用配置var config = new ApplicationConfiguration(){ApplicationName = "OPCDemo2",ApplicationType = ApplicationType.Client,SecurityConfiguration = new SecurityConfiguration{ApplicationCertificate = new CertificateIdentifier(),AutoAcceptUntrustedCertificates = true},TransportConfigurations = new TransportConfigurationCollection(),TransportQuotas = new TransportQuotas { OperationTimeout = 15000 },ClientConfiguration = new ClientConfiguration { DefaultSessionTimeout = 60000 }};config.Validate(ApplicationType.Client);// 創建OPC UA會話var selectedEndpoint = CoreClientUtils.SelectEndpoint(endpointUrl, false);var endpointConfiguration = EndpointConfiguration.Create(config);var endpoint = new ConfiguredEndpoint(null, selectedEndpoint, endpointConfiguration);var session = Session.Create(config, endpoint, false, "OPCDemo2", 60000, null, null).Result;Console.WriteLine("打開成功");// 讀取節點DataValue value = session.ReadValue(nodeId);if (StatusCode.IsGood(value.StatusCode)){ushort wHeatBeat = Convert.ToUInt16(value.Value);Console.WriteLine($"wHeatBeat:{wHeatBeat}");}else{Console.WriteLine("讀取失敗");}Console.ReadLine();}}
}
4 程序運行結果如下:
方式二:
測試環境:
window11
vs2022
SuperPLC.OPCUA
.net 8
測試步驟如下:
1 新建.net 8控制臺項目,名稱為OPCDemo2
2 在Nuget中安裝OpcUaHelper,版本選擇2.2.1,同時安裝SuperPLC.OPCUA,版本選擇:1.1.0
但在安裝SuperPLC.OPCUA時,很奇怪,Nuget程序包管理界面搜不出來,如下圖:
只能通過nuget控制臺安裝,命令如下:
NuGet\Install-Package SuperPLC.OPCUA -Version 1.1.0
3 編輯代碼如下:
// See https://aka.ms/new-console-template for more informationusing SuperPLC.OPCUA;
//節點Id,根據實際情況填寫
string _prefixPLCApp = $@"ns=4;s=|var|CODESYS Control Win V3 x64.Application.";Plc plc = new Plc("ip地址");
bool ret = plc.Open();
if (!ret)
{Console.WriteLine("打開失敗");return;
}
plc.TryRead($"{_prefixPLCApp}Para.PLC_Inf.wHeatBeat", out ushort wHeatBeat);Console.WriteLine($"wHeatBeat:{wHeatBeat}");Console.WriteLine("打開成功");
Console.ReadLine();
4 運行結果如下: