OPC Unified Architecture (UA) 是一種用于工業自動化的開放標準,可以實現設備之間的數據通信。在 C# 中,你可以使用 OPC UA 客戶端和服務器庫來實現數據通信。以下是一個簡單的示例,展示了如何使用 OPC UA 進行數據通信:
首先,你需要安裝 OPC UA 客戶端和服務器庫。你可以使用 OPC Foundation 提供的官方庫,或者使用第三方庫,如 OPC UA .NET Standard。
創建一個 OPC UA 服務器,用于接收和發送數據。以下是一個簡單的 OPC UA 服務器示例:
using Opc.Ua;
using Opc.Ua.Server;
using System;
using System.Threading;
namespace OpcUaServer
{
class Program
{
static void Main(string[] args)
{
// 創建一個 ApplicationInstance
ApplicationInstance application = new ApplicationInstance();
// 配置 ApplicationInstance
application.ApplicationName = "My OPC UA Server";
application.ApplicationType = ApplicationType.Server;
application.ConfigSectionName = "Opc.Ua.MyServer";
// 加載應用程序配置
application.LoadApplicationConfiguration("MyServer.config", false).Wait();
// 檢查應用程序證書
application.CheckApplicationInstanceCertificate(false, 0).Wait();
// 創建一個 StandardServer
StandardServer server = new StandardServer();
// 初始化 StandardServer
server.Initialize(application);
// 啟動 StandardServer
server.Start();
Console.WriteLine("Server started. Press any key to stop.");
Console.ReadKey();
// 停止 StandardServer
server.Stop();
}
}
}
using Opc.Ua;
using Opc.Ua.Client;
using System;
namespace OpcUaClient
{
class Program
{
static void Main(string[] args)
{
// 創建一個 ApplicationInstance
ApplicationInstance application = new ApplicationInstance();
// 配置 ApplicationInstance
application.ApplicationName = "My OPC UA Client";
application.ApplicationType = ApplicationType.Client;
application.ConfigSectionName = "Opc.Ua.MyClient";
// 加載應用程序配置
application.LoadApplicationConfiguration("MyClient.config", false).Wait();
// 檢查應用程序證書
application.CheckApplicationInstanceCertificate(false, 0).Wait();
// 創建一個 Session
Session session = null;
try
{
// 創建一個 EndpointDescription
EndpointDescription endpoint = new EndpointDescription();
endpoint.EndpointUrl = "opc.tcp://localhost:4840";
// 創建一個 Session
session = Session.Create(application.ApplicationConfiguration, endpoint, true, "MySession", 60000, new UserIdentity(), null);
// 讀取節點值
NodeId nodeId = new NodeId("ns=2;s=MyNode");
DataValue dataValue = session.ReadValue(nodeId);
Console.WriteLine($"Node value: {dataValue.Value}");
// 寫入節點值
session.WriteValue(new WriteValue() { NodeId = nodeId, Value = new DataValue(123) });
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
finally
{
// 關閉 Session
if (session != null)
{
session.Close();
}
}
}
}
}
這個示例展示了如何使用 C# 和 OPC UA 庫實現數據通信。你可以根據自己的需求修改代碼,以滿足不同的場景和需求。