using System;
using System.Runtime.InteropServices;
using OPCAutomation;
class Program
{
static void Main(string[] args)
{
// 创建OPC服务器对象
OPCServer opcServer = new OPCServer();
try
{
// 连接到OPC服务器
opcServer.Connect("OPC.SimaticNET", "localhost");
// 获取组集合
OPCGroups opcGroups = opcServer.OPCGroups;
OPCGroup opcGroup = opcGroups.Add("MyGroup");
// 设置组属性
opcGroup.UpdateRate = 1000; // 更新频率为1秒
// 添加项到组中
OPCItems opcItems = opcGroup.OPCItems;
object[] itemIDs = { "Channel1.Device1.Tag1", "Channel1.Device1.Tag2" };
OPCItem[] opcItemDetails = opcItems.AddItem(itemIDs, null);
// 订阅数据变化事件
opcGroup.AsyncIOChanged += OpcGroup_AsyncIOChanged;
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
// 清理资源
opcGroup.Remove();
opcServer.Disconnect();
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
private static void OpcGroup_AsyncIOChanged(object sender, AsyncIOChangedEventArgs e)
{
foreach (object value in e.Value)
{
Console.WriteLine($"Value changed: {value}");
}
}
}
System.Runtime.InteropServices
和 OPCAutomation
命名空间,以便与 OPC DA 服务器进行交互。OPCServer
类创建一个 OPC 服务器实例。Connect
方法连接到指定的 OPC 服务器(例如 "OPC.SimaticNET")。OPCGroups
获取组集合,并添加一个新的组(例如 "MyGroup")。设置组的更新频率等属性。OPCItems
添加要监控的项(例如 "Channel1.Device1.Tag1")。AsyncIOChanged
事件来处理数据变化,并在控制台输出变化的值。这个示例展示了如何使用 C# 进行 OPC DA 通信的基本流程。请确保你已经安装了相应的 OPC 客户端库(如 OPCAutomation.dll)。
上一篇:c# eventhandler
下一篇:c# default
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站