OPC批量添加数据并且批量更新到数据库的实现

本文介绍了一种通过C#实现批量从OPC读取数据并更新到数据库的方法,避免了手动导出和整理点位的繁琐步骤。在代码中直接获取所有OPC点位,创建数据库表,并持续更新数据,提高了效率和适应性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下今天刚写完并且运行成功的代码和思路,关于工业协议OPC的数据读写,还有与数据库的交互相关问题,重点是批量,如何批量进行导出导入和更新。

OPC不用讲了,工业协议,做物联网的都知道。。。。= =其实就是个DLL包,没啥东西好说的,用人家的东西就行了。从设备上把数据读出来。

其实上个星期写过一个关于门禁系统的数据交互,大概功能是从某大厦把所有门禁的数据读出来,然后更新到数据库,保留数据,供查询使用,但是上次的思路是:

从OPCExplorer或者OPC Client中连接到OPC服务,然后显示所有的点之后,把所有点位用导出导成一个ini文件

如上图的导出,然后见到是ini文件是这样的:


在完成导出之后,根据ini文件里面的字段,自己手动建立一个mysql数据表,经过相关的整理(行转列),然后形成一张包含了OPC所有item点位信息的数据库表,然后在添加OPCitem的时候,用reader.read()(这个read()的是select from table的时候mysql的read方法,不是OPC的方法,后面提到的read()才是OPC的)来从数据库里添加,然后在用OPC的read去读,这种方法就是不直接从OPC服务端里面拿点位,是先把点位导出之后整理成数据库文件,从数据库文件里把点位添加上去,然后再读点位数据,这样如果点位不匹配的话,read()的时候OPC就会报错,因为人家服务端没有你这个点位,搜不到,也就加不上去,只有你数据库表里的所有点位跟OPC里的实际点位完全重叠,才能用这个方法,如果厂商添加了OPCitem,那就报错。

今天写的新OPC工具,目的就是为了解决OPC点位的问题,因为之前的方法不仅麻烦(从ini中手动把点位放到数据表中有大量重复工作),而且一旦点位变就会报错,还需要重新改数据库。这个OPC工具的思路就是:

全部工作在代码中完成,不需要手动去添加item数据,直接写一个代码把所有item从OPC中读出来,然后放到表中,然后读value再更新到表中,这样每次开启程序,就是先添加一遍所有点位,然后就按照设定的速率一直update数据库,这样就解决了老方法的多个问题。下面开始代码(C#):

OPCServer opcServer = new OPCServer();
            OPCBrowser opcBrowser;
            opcServer.Connect("ICONICS.SimulatorOPCDA.2");
            Console.WriteLine("连接OPC成功!");
            opcBrows
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值