基于订阅机制的OPC客户端通讯

本文深入探讨基于订阅机制的OPC客户端通讯,阐述如何使用高级API减少代码量并提升通讯速度。介绍了WTclient.dll组件在开发中的应用,包括同步读取、订阅模式接口及回调函数的实现,揭示了OPC通讯在稳定性、通讯量和速度方面的优势。

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


一、前言

这篇文章将是OPC通讯的终结篇。
这篇文章奠定了OPC通讯从实验室走向现场、从小规模数据交互到大数据传输存储、从只能控制慢对象到实时控制的基础
基于订阅机制的OPC客户端开发,可以实现代码量减少一半,但是,通讯速度速度增加约一百倍

二、订阅机制

OPC本质上是一个客户端服务器模式,数据的传送首先由客户端发起,读取的方式有同步和异步。同步方式下,OPC客户端发出请求并进入等待,直到服务器端返回数据。这是我们非常熟悉的客户端服务器数据交互的一般方式。在这个方式下,每次读取数据大部分的时间都消耗在了等待上。当数据量十分巨大的时候,把所有数据点轮询一遍所用时间太长。因此这种方法适合于强制的读取某一个数据点。对于大数据来说就不太适合了。此时订阅模式就显得尤为重要了。
在订阅的方式下,OPC客户端首先告诉服务器,订阅了哪些数据,订阅完之后,客户端不再等待,而是去执行其他的任务。当服务器中发现这些订阅的数据点发生改变时,就会立即采用回调机制将数据传送到客户端,在这种方式下,客户端不需要对服务器进行轮询。

三、基于高级API的OPC客户端开发

3.1使用组件介绍

我们使用的是WTclient.dll这个快速开发工具,这个组件的使用使得OPC客户端开发周期大大减少,但是这个组件也有一些十分大的陷阱,这些陷阱在现场调试的过程中给我造成了无比大的伤害。首先,我们一般获取到的这个组件是美国一家开发公司免费提供的,但是,他在里面封装了一个定时器,这个定时器使得我们使用这个组件有时间限制,最多使用两个小时就会强制暂停服务。如果想不受限制的使用就只能购买他的序列码,900多美金。让我花钱,这怎么可能,然后我想尽方法,破解了它的定时器。哈哈哈。有需要的可以私信我。其次,阅读他的资料真是一件十分痛苦的事情,全英文,且晦涩,为了使用订阅模式,这个英文的资料读到我想吐,最后还是一半猜测一半想象,反正是终于实现了。

3.1实现同步读取的接口

从服务器读取数值,其实有很多种方法,这里给出三个基本方法,亲测有效
首先连接服务器,返回一个连接句柄,最后一个参数设为true

_declspec(dllexport) HANDLE  WINAPI ConnectOPC(LPCSTR MachineName, LPCSTR ServerName, BOOL EnableDLLBuffering); 

其次,添加组

_declspec(dllexport) HANDLE  WINAPI AddOPCGroup (HANDLE hConnect, LPCSTR Name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值