KepServer_PLC_OPC_Server_UcAsp.Opc_OPC.DA动态静态库libAPI示范程序代码
UcAsp.Opc
opc for da and ua
注 意:
[OPC.DA 环境下先安装lib文件夹下的:Core Components Redistributable (x64).msi ]
Nuget 安装
Install-Package UcAsp.Opc -Version 1.0.0.5
OPC.DA 读取变量
OpcClient client = new OpcClient(new Uri("opcda://127.0.0.1/Matrikon.OPC.Simulation.1"));
string r = client.Read<string>("Random.String");
OPC.UA 读取变量
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
float r = client.Read<float>("Robot1.Axis1");
var list = client.Read(new string[] { "Robot1.Axis1", "Robot1.Axis2" });
读取和写入
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
client.Write<float>("Robot1.Axis1", 2.0090f);
float r = client.Read<float>("Robot1.Axis1");
var result = client.Write(new string[] { "Robot1.Axis1", "Robot1.Axis2" }, new object[] { 2.0090f, 2.0090f });
分组监听数据变化
public void UAGroup()
{
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
OpcGroup group = client.AddGroup("Test");
client.AddItems("Test", new string[] { "Robot1.Axis1", "Robot1.Axis2" });
group.DataChange += Group_DataChange;
}
private void Group_DataChange(object sender, System.Collections.Generic.List<OpcItemValue> e)
{
foreach (OpcItemValue o in e)
{
Console.WriteLine(o.Value);
}
}
获取节点信息
OpcClient client = new OpcClient(new Uri("opc.tcp://127.0.0.1:26543/Workstation.RobotServer"));
INode root = client.RootNode;
IEnumerable<INode> list = client.ExploreFolder(root.Tag);
IEnumerable<INode> server = client.ExploreFolder(list.ToList()[0].Tag);
IEnumerable<INode> s = client.ExploreFolder(server.ToList()[0].Tag);
下载地址:
https://github.com/servucn/UcAsp.Opc#ucaspopc
欢迎讨论,相互学习。
cdtxw@foxmail.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)