1、Opc 基金会git地址:OPC Foundation · GitHub
其中:UA-.NETStandard 、UA-.NETStandard-Samples比价有参考价值
2、参数传递方式:ns=2;s=参数名(ns表示命名空间索引,一般为2)
特殊情况可以查看所有命名空间:ns=0;i=2255,也可以用(OpcUaHelper.Tool)工具查看
下载地址:C#opc学习资源代码-其它文档类资源-优快云下载
3、根据opc基金会提供方法整理出调用代码:OPCUAC#控制类库-制造文档类资源-优快云下载
using Opc.Ua;
using Opc.Ua.Client;
using Opc.Ua.Configuration;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace OPCUALink
{
/// <summary>
/// OPC UA Client with examples of basic functionality.
/// </summary>
public class UAClient
{
#region Constructors
public UAClient(bool isdebug = false)
{
if (isdebug)
{
return;
}
ApplicationInstance application = new ApplicationInstance();
application.ApplicationName = SessionName;
application.ApplicationType = ApplicationType.Client;
//加载配置文件
application.LoadApplicationConfiguration(ConfigPath, silent: false).Wait();
// check the application certificate.
//application.CheckApplicationInstanceCertificate(silent: false, minimumKeySize: 0).Wait();
m_validateResponse = ClientBase.ValidateResponse;
m_configuration = application.ApplicationConfiguration;
m_configuration.CertificateValidator.CertificateValidation += CertificateValidation;
ReceiveMsg += Msg;
}
#endregion
#region Public Properties
/// <summary>
/// session.
/// </summary>
public Session Session => m_session;
public static string conStr = "ns=3;s=";
/// <summary>
/// session名称
/// </summary>
public string SessionName { get; set; } = "DefaultSession";
/// <summary>
/// opcua服务地址
/// </summary>
public string ServerUrl { get; set; } = "opc.tcp://192.168.0.1/";
/// <summary>
/// 配置文件
/// </summary>
public string ConfigPath { get; set; } = "ConsoleReferenceClient.Config.xml";
/// <summary>
/// 日志委托
/// </summary>
public Action<string> LogAction { get; set; } = t => { Console.Write(t); };
/// <summary>
/// 订阅委托
/// </summary>
/// <param name="DisplayName"></param>
/// <param name="Value"></param>
public delegate void ShowMonitoredItemNotification(string DisplayName, string Value);
public ShowMonitoredItemNotification ReceiveMsg;
#endregion
#region Public Methods
/// <summary>
/// 连接服务器
/// </summary>
public async Task<bool> ConnectAsync()
{
try
{
//if (m_session != null && m_session.Connected && m_session.SessionId.ToString() == null)
//{
// LogAction?.Invoke("Session already connected!");
//}
//else
//{
// LogAction?.Invoke("Connecting...");
// EndpointDescription endpointDescription = CoreClientUtils.SelectEndpoint(ServerUrl, false);
// EndpointConfiguration endpointConfiguration = EndpointConfiguration.Create(m_configuration);
// Session session = await Session.Create(endpoint: new ConfiguredEndpoint(null, endpointDescription, endpointConfiguration), configuration: m_configuration, updateBeforeConnect: false, checkDomain: false, sessionName: m_configuration.ApplicationName, sessionTimeout: 1800000u, identity: new UserIdentity(), preferredLocales: null);
// if (session?.Connected ?? false)
//

最低0.47元/天 解锁文章
4874

被折叠的 条评论
为什么被折叠?



