OPCServer opcServer = new OPCServer();
opcServer.Connect("OPC 服務名稱");
OPCGroups grous = opcServer.OPCGroups;
OPCGroup group = grous.Add(null);
group.OPCItems.AddItem("OPC項全名稱", 1);
group.OPCItems.AddItem("OPC項", 2);
//數據刷新時間(毫秒)
group.UpdateRate = 10;
group.IsActive = true;
//開啟訂閱,必須開啟,否則不會觸發數據修改事件!
group.IsSubscribed = true;
group.DataChange += Group_DataChange;
這里注意兩個地方:
1. 一定要開啟訂閱
2. 調用AddItem添加數據時,ClientHandle不要重復,觸發數據修改事件后,需要根據ClientHandle區分數據項
Group_DataChange:
private static void Group_DataChange(int TransactionID, int NumItems, ref Array ClientHandles, ref Array ItemValues, ref Array Qualities, ref Array TimeStamps)
{
}
TransactionID: OPC實物標識符
NumItems: 本次檢測到OPC數據項值改動個數
ClientHandles(int 數組): 檢測到改動數據項ClientHandle數組
ItemValues(object數組): 檢測到改動數據項值數據
Qualities:檢測到改動數據項質量值數據
TimeStamps:檢測到改動數據項時間戳數據