要使用C#和OPC UA實現數據歷史記錄查詢,你需要遵循以下步驟:
安裝OPC UA庫:首先,你需要一個支持OPC UA的庫。有幾個流行的庫可供選擇,例如OPC Foundation的OPC UA .NET Standard庫或者Unified Automation的UaNetStandard庫。在本示例中,我們將使用OPC Foundation的庫。
添加庫引用:在你的C#項目中,通過NuGet包管理器添加對OPC Foundation的OPC UA .NET Standard庫的引用。在Visual Studio中,右鍵單擊項目,然后選擇“Manage NuGet Packages”。搜索并安裝“OPC UA .NET Standard”庫。
創建一個OpcClient實例:為了與OPC UA服務器進行通信,你需要創建一個OpcClient實例。這個實例將負責處理連接、請求和響應。
using Opc.Ua;
using Opc.Ua.Client;
namespace OpcUaHistoricalDataQuery
{
class Program
{
static async Task Main(string[] args)
{
// 創建一個OpcClient實例
OpcClient client = new OpcClient();
// 連接到OPC UA服務器
await client.ConnectAsync("opc.tcp://localhost:4840");
// ...
}
}
}
// 查詢歷史數據
NodeId nodeId = new NodeId("ns=2;s=MyVariable"); // 替換為你的變量節點ID
DateTime startTime = DateTime.UtcNow.AddHours(-1);
DateTime endTime = DateTime.UtcNow;
HistoryReadResult result = await client.ReadHistoryAsync(nodeId, startTime, endTime);
if (result.StatusCode == StatusCodes.Good)
{
foreach (var dataValue in result.HistoryData.DataValues)
{
Console.WriteLine($"Timestamp: {dataValue.SourceTimestamp}, Value: {dataValue.Value}");
}
}
else
{
Console.WriteLine($"Error reading history data: {result.StatusCode}");
}
// 斷開連接
await client.DisconnectAsync();
將上述代碼片段組合在一起,你將得到一個完整的C#程序,用于查詢OPC UA服務器上特定節點的歷史數據。請確保使用正確的OPC UA服務器URL和節點ID。