CN118316989B - 一种基于工业物联网关的跨平台opc da数据采集系统及方法 - Google Patents
一种基于工业物联网关的跨平台opc da数据采集系统及方法 Download PDFInfo
- Publication number
- CN118316989B CN118316989B CN202410741634.6A CN202410741634A CN118316989B CN 118316989 B CN118316989 B CN 118316989B CN 202410741634 A CN202410741634 A CN 202410741634A CN 118316989 B CN118316989 B CN 118316989B
- Authority
- CN
- China
- Prior art keywords
- opc server
- opc
- data item
- module
- connection object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000008030 elimination Effects 0.000 claims description 14
- 238000003379 elimination reaction Methods 0.000 claims description 14
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 238000001914 filtration Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000013480 data collection Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明属于工业自动化领域,涉及一种基于工业物联网关的跨平台OPC DA数据采集系统及方法,包括:桥接模块,用于连通OPC Server服务器与工业物联网关;工业物联网关通过桥接模块与OPC Server服务器建立连接、进行数据读取和写入;桥接模块包括连接模块、缓存模块、读取模块和写入模块。相对于现有技术,使用本发明使得工业物联网关可以实现跨平台、高性能、低延时的采集OPC DA协议的数据。
Description
技术领域
本发明属于工业自动化领域,涉及一种基于工业物联网关的跨平台OPC DA数据采集系统及方法。
背景技术
目前OPC DA技术作为工业自动化领域的重要通信标准,得到了如工业控制、建筑自动化、能源管理、环境监测行业内的厂商和组织的广泛认可和应用。
OPC DA协议是基于微软OLE for Process Control技术,所以只能运行在Windows平台,基于Linux系统的工业网关无法直接进行采集,所以少有支持采集该协议的网关。少数基于Windows平台定制的网关也存在只能支持采集单个OPC Server的数据、采集性能低、使用困难等问题,而且由于Windows平台DCOM(Distributed Component Object Model)的安全性限制,这部分网关也仅仅只支持本地采集,无法支持远程采集。
发明内容
本发明的目的是提供一种基于工业物联网关的跨平台OPC DA数据采集系统及方法。
本发明公开了一种基于工业物联网关的跨平台OPC DA数据采集系统,包括:
桥接模块,用于连通OPC Server服务器与工业物联网关;工业物联网关通过桥接模块与OPC Server服务器建立连接、进行数据读取和写入;
桥接模块包括连接模块、缓存模块、读取模块、写入模块;
连接模块,接收工业物联网关的连接请求,并向OPC Server服务器请求连接,接收OPC Server服务器返回的请求结果,判断OPC Server服务器运行状态,确定是否调用缓存模块更新缓存队列,并向工业物联网关反馈连接结果;
缓存模块用于每次与OPC Server服务器建立连接后缓存OPC Server连接对象,构成缓存队列,当缓存的OPC Server连接对象的数量达到缓存队列数容量上限时,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存;
读取模块,接收工业物联网关的读取请求,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPC Server连接对象,则调用连接模块连接OPCServer服务器,再通过缓存模块缓存OPC Server连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPCServer服务器请求获取数据项句柄(针对那些句柄不存在于缓存好的连接对象中的数据项,向OPC Server服务器请求句柄时,可以通过OPC Server连接对象找到OPC Server服务器而无需重新建立连接,以下同),由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPC Server服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
写入模块,接收工业物联网关发送的待写入OPC Server服务器的数据项的内容,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPCServer连接对象,则调用连接模块连接OPC Server服务器,再通过缓存模块缓存OPCServer连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPCServer服务器请求获取数据项句柄(针对那些句柄不存在于缓存好的连接对象中的数据项,向OPC Server服务器请求句柄时,可以通过OPC Server连接对象找到OPC Server服务器而无需重新建立连接,以下同),由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPC Server服务器中数据项的数据完成。
进一步地,所述的桥接模块运行于Windows平台,而工业物联网关运行于与Windows平台兼容或不兼容的任意系统或终端。
在优选的实施方案中,当已缓存的OPC Server连接对象的数量达到缓存队列数容量上限,而新的OPC Server连接对象待入队,针对所有的已缓存OPC Server连接对象,判断每个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若至少一个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPCServer连接对象从缓存队列剔除,新的OPC Server连接对象入队;当所有的已缓存OPCServer连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队。
其中,针对最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的已缓存OPC Server连接对象,不管缓存队列是否已满都会被剔除,其不是实时去除,而在以下两个时机触发对于超时OPC Server连接对象的检查去除:(1)缓存队列已满,有新的OPC Server连接对象请求入队时,即上一段中的情形;(2)由缓存模块启动定时任务,该定时任务定时扫描所有已缓存OPC Server连接对象,判断最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若超过预设的无操作缓存时间阈值则将对应的OPC Server连接对象清除(扫描间隔为2小时)。本段中的(1)和(2)这两种机制,共同运行于缓存模块,且两者之间相互独立。
优选地,所述的连接模块中,向OPC Server服务器请求连接指:通过指定目标OPCServer的服务器名称、OPC Server所在的主机或域名与相应的OPC Server服务器建立连接信道;接收OPC Server服务器返回的请求结果包括:获取OPC Server服务器运行状态信息和服务器的对象句柄,运行状态信息包括运行正常、运行失败;判断OPC Server服务器运行状态确定是否正常连接,当正常连接时调用缓存模块更新缓存队列,并向工业物联网关反馈连接成功的结果,当运行失败时向工业物联网关反馈连接失败的结果。
数据读取/写入时,操作类型包括同步、异步操作,若为同步请求,则读取模块或写入模块直接从OPC Server服务器获取操作结果,并将操作结果反馈给工业物联网关;若为异步请求则读取模块或写入模块订阅OPC Server服务器的响应回调函数,创建异步任务并设置超时时间,异步获取操作结果,并将操作结果反馈给工业物联网关。
本发明还提供了一种基于工业物联网关的跨平台OPC DA数据采集方法,包括如下步骤:
工业物联网关向桥接模块发出连接请求,桥接模块向OPC Server服务器请求连接,由OPC Server服务器向桥接模块返回请求结果,桥接模块判断OPC Server服务器运行状态,确定是否更新缓存队列,并向工业物联网关反馈连接结果;
每次与OPC Server服务器建立连接后缓存OPC Server连接对象,构成缓存队列,当缓存的OPC Server连接对象的数量达到缓存队列数容量上限时,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存;
当工业物联网关发出读取请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPC Server连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPCServer服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
当工业物联网关发出写入请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPC Server连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPCServer连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPC Server服务器中数据项的数据完成。
OPC Server连接对象的缓存和数据项句柄的缓存之间的关系:数据项句柄以列表形式存储在OPC Server连接对象下。每个OPC Server连接对象个体包含两部分内容:1、连接对象本身;2、该连接对象的数据项句柄集合。
在优选的实施方案中,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存的具体步骤(该具体步骤即为缓存淘汰算法的具体内容)为:
设置缓存队列数容量上限;
若缓存队列的数量未达到缓存队列数容量上限,则将新建立连接的OPC Server连接对象入队;
若缓存队列的数量已满,而新的OPC Server连接对象待入队,针对所有的已缓存OPC Server连接对象,判断每个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若至少一个已缓存OPCServer连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPC Server连接对象从缓存队列剔除,新的OPC Server连接对象入队(无需进行OPC Server连接对象的综合评分的计算即完成入队);当所有的已缓存OPCServer连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内(小于或等于阈值),则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队;
Score = W /F + 1/T (1)
其中:
Score:OPC Server连接对象的综合评分;
W:OPC Server连接对象的权重,每次操作OPC Server连接对象的数据项时进行加权,读取操作的加权系数为c1,写入操作的加权系数为c2,读取操作的加权系数高于写入操作的加权系数,最终OPC Server连接对象的权重的计算子公式为:W = n1* c1+n2*c2,c1+c2=1,其中n1为读取的数据项的长度,c1为读取操作系数,n2为写入的数据项的长度,c2为写入操作系数,读取的数据项的长度指读取的数据项的个数,写入的数据项的长度指写入的数据项的个数;优选地,c1为0.8,c2为0.2。
F:OPC Server连接对象的访问频率:每个OPC Server连接对象缓存入队时由缓存模块记录与相应OPC Server服务器建立连接的初始时间(建立连接的初始时间与缓存入队时间仅仅相差几十毫秒,因为连接建立的时间更容易理解,且易于获取,所以以连接建立时间为准),每次请求读取或写入时由缓存模块记录请求的次数;请求次数/(当前时间-建立连接的初始时间)的结果为访问频率F;
T:最近一次读取/写入操作完成时离当前时间的时间间隔:由缓存模块记录对应每个OPC Server连接对象的最近一次读取/写入的操作完成时间;因为一次请求中,不同数据项的写入/读取时间略有差别,最近一次读取/写入的操作完成时间指的是最后一个数据项完成读取/写入的时间。
缓存队列已满时,当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,根据公式(1)分别计算所有OPC Server连接对象的综合评分,淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队。
进一步地,读取/写入时,过滤OPC Server服务器不存在的数据项指:请求读取/写入的数据项中,OPC Server服务器不存在的数据项直接过滤,不用于构建第一或第二请求参数,且OPC Server服务器不存在的数据项的操作结果直接被赋值为:读取/写入失败。
优选地,数据读取/写入时,操作类型包括同步、异步操作,若为同步请求,则直接获取操作结果,并将操作结果反馈给工业物联网关;若为异步请求则订阅OPC Server服务器的响应回调函数,创建异步任务并设置超时时间,异步获取操作结果,并将操作结果反馈给工业物联网关。
相对于现有技术,使用本发明使得工业物联网关可以实现跨平台、高性能、低延时的采集OPC DA协议的数据。并且整个系统具有占用资源少,适配度高(支持Windows XP、SP3及以上的系统)。
OPC服务交互每次都要持有相关对象的句柄才可进行通信,多次频繁的请求句柄不仅效率低下,而且还可能会由于相关句柄不能及时释放,出现内存泄漏等风险,所以为了提升采集性能本发明充分使用缓存技术,将一段时间内高频使用的OPC Server缓存在桥接模块,方便下次操作快速使用。
附图说明
图1为OPC Server服务器、桥接模块、工业物联网关的通信、连接示意图;
图2为基于工业物联网关的跨平台OPC DA数据采集系统功能图;
图3为基于工业物联网关的跨平台OPC DA数据采集方法中的连接步骤示意图;
图4为基于工业物联网关的跨平台OPC DA数据采集方法中的数据读取步骤示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
本发明公开了一种基于工业物联网关的跨平台OPC DA数据采集系统,包括:
桥接模块,用于连通OPC Server服务器与工业物联网关;工业物联网关通过桥接模块与OPC Server服务器建立连接、进行数据读取和写入;
桥接模块包括连接模块、缓存模块、读取模块、写入模块;
连接模块,接收工业物联网关的连接请求,并向OPC Server服务器请求连接,接收OPC Server服务器返回的请求结果,判断OPC Server服务器运行状态,确定是否调用缓存模块更新缓存队列,并向工业物联网关反馈连接结果;
缓存模块用于每次与OPC Server服务器建立连接后缓存OPC Server连接对象,构成缓存队列,当缓存的OPC Server连接对象的数量达到缓存队列数容量上限时,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存;
读取模块,接收工业物联网关的读取请求,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPC Server连接对象,则调用连接模块连接OPCServer服务器,再通过缓存模块缓存OPC Server连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPCServer服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPC Server服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
写入模块,接收工业物联网关发送的待写入OPC Server服务器的数据项的内容,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPCServer连接对象,则调用连接模块连接OPC Server服务器,再通过缓存模块缓存OPCServer连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPCServer服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPC Server服务器中数据项的数据完成。
所述的桥接模块运行于Windows平台,而工业物联网关运行于与Windows平台兼容或不兼容的任意系统或终端。
当已缓存的OPC Server连接对象的数量达到缓存队列数容量上限,而新的OPCServer连接对象待入队,针对所有的已缓存OPC Server连接对象,判断每个已缓存OPCServer连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若至少一个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPC Server连接对象从缓存队列剔除,新的OPC Server连接对象入队;当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPCServer连接对象,新的OPC Server连接对象入队。
所述的连接模块中,向OPC Server服务器请求连接指:通过指定目标OPC Server的服务器名称、OPC Server所在的主机或域名与相应的OPC Server服务器建立连接信道;接收OPC Server服务器返回的请求结果包括:获取OPC Server服务器运行状态信息和服务器的对象句柄,运行状态信息包括运行正常、运行失败;判断OPC Server服务器运行状态确定是否正常连接,当正常连接时调用缓存模块更新缓存队列(根据服务器的对象句柄缓存OPC Server连接对象),并向工业物联网关反馈连接成功的结果,当运行失败时向工业物联网关反馈连接失败的结果。
数据读取/写入时,操作类型包括同步、异步操作,若为同步请求,则读取模块或写入模块直接从OPC Server服务器获取操作结果,并将操作结果反馈给工业物联网关;若为异步请求则读取模块或写入模块订阅OPC Server服务器的响应回调函数,创建异步任务并设置超时时间,异步获取操作结果,并将操作结果反馈给工业物联网关。
本发明中的桥接模块直接运行在Windows平台,使用HTTP的方式提供一套接口用于和网关(即工业物联网关)进行通信。其主要为:
服务连接:与OPC Server服务器建立连接。
数据读取:读取OPC Server服务器的数据,支持同步、异步两种方式。
数据写入:反向控制OPC Server的数据项,支持同步、异步两种方式。
本发明的桥接模块,不论网关运行的系统和终端,只要按照本发明指定的接口信息去对接即可快速完成对OPC DA协议的采集,这样就辅助网关实现了跨平台采集OPC DA协议的需求。
如图1所示,工业物联网关通过桥接模块连通OPC Server服务器,而工业物联网关则通过以太网与桥接模块通信。
与OPC服务器进行通信:OPC DA标准是由OPC Foundation(OPCF)组织负责的,其根据Microsoft的OLE/COM 的功能要求形成一组标准的 OLE/COM 接口协议,各OPC Server服务厂商遵循该接口协议。同时其为OPC Client端也提供了一套接口,如自动化接口,自定义接口。本发明是基于OPC基金会1999年2月发布的自动化接口OPCDAAuto.dll V2.02实现的(即桥接模块与OPC Server服务器通过该动态链接库进行通信交互)。具体的交互步骤如下:
建立连接:如需与OPC Server进行交互则需首先建立桥接模块与OPC Server连接信道,通过指定目标OPC Server的服务器名称、OPC Server所在的主机或域名建立连接信道。然后,OPC Server服务器向连接模块返回请求结果,请求结果包括运行状态信息(运行正常或运行失败),当运行状态为正常时请求结果还包括该服务器的对象句柄,即如果可以建立连接会返回该服务器的对象句柄和运行状态(运行正常)。根据服务器的运行状态确定服务是否成功连接,如果运行状态为运行正常,则服务成功连接,将该服务的连接对象缓存在桥接模块内存中,具体为:根据返回的对象句柄实现连接对象的缓存,方便下次直接使用,并将连接成功的结果反馈给工业物联网关。如果运行状态为运行失败,则将连接失败的结果反馈给工业物联网关(图3)。
数据操作:接收到读取/写入请求,尝试从缓存模块中获取对应OPC Server连接对象。若缓存模块中不存在OPC Server连接对象则尝试进行连接(通过连接模块连接OPCServer服务器),并更新缓存(将OPC Server服务器连接对象缓存于桥接模块中的缓存模块)。若缓存模块中OPC Server连接对象不存在且连接模块无法连接OPC Server服务器,则直接向工业物联网关反馈操作失败(即无法完成读取/写入操作)。
能够写入的前提是OPC Server存在待写入的数据项(必然存在相应的数据项句柄),如果不存在则直接剔除,这些数据项的操作结果为写入失败。桥接模块不会去创建新的数据项,所有的数据项都是在OPC Server中管控的。
写入/读取操作前均需要先建立连接,在连接建立成功时会尝试将此连接对象缓存。在写入/读取时首先会尝试从缓存队列中查找连接对象,找不到才会进行连接。OPCServer连接对象不重复缓存,但是如果请求操作的数据项中有缓存的OPC Server连接对象的数据项句柄缓存列表中不存在的、且又通过向OPC Server服务器请求后获得数据项句柄的,则会将这些新的数据项句柄添加到缓存的OPC Server连接对象的数据项句柄缓存列表中,以完成更新。
如图4所示,当工业物联网关发出读取请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPCServer连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPCServer服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPC Server服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
当工业物联网关发出写入请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPC Server连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPCServer连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPC Server服务器中数据项的数据完成。
其中向OPC Server服务器请求其句柄,如无法获得对应的句柄则代表该数据项在当前的OPC Server服务器中也不存在,因此过滤掉该不存在的数据项,不存在的数据项会被直接赋值为操作失败(读取/写入失败)。
读取/写入操作中,拿到所有已存在数据项的句柄(直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄),根据请求读取各数据项的操作类型是同步还是异步,构建第一或第二请求参数,即调用不同的命令读取或写入相应数据。若针对某些数据项的读取/写入请求为同步请求,则桥接模块直接从OPC Server服务器获取相应结果(包括操作结果-读取/写入成功/失败,以及读取到的具体数据内容),并将该操作结果和读取到的具体数据内容反馈给工业物联网关;如针对另一些数据项的读取/写入请求为异步请求,则读取/写入需订阅OPC 服务(OPC Server服务器)的响应回调函数,为了防止因服务器阻塞等原因导致本次操作失败,所以需要一个超时机制。异步操作会创建一个Task(异步任务)并设置超时时间,如若这些数据项的读取/写入请求中未指定,默认超时时间为3s。在超时时间内若订阅到回调结果并给Task设置结果后,会自动触发Task结束等待,读取/写入模块从OPC Server服务器获取到了相应结果(包括操作结果-读取成功/写入成功,以及读取到的具体数据内容),并将该操作结果和读取到的具体数据内容反馈给工业物联网关。若限时内未收到结果,则这些数据项的操作结果会以失败来赋值。最终会将本次操作的整体结果返回给调用方。
OPC服务交互每次都要持有相关对象的句柄才可进行通信,多次频繁的请求句柄不仅效率低下,而且还可能由于相关句柄不能及时释放,出现内存泄漏等风险,所以为了提升采集性能本发明充分使用缓存技术,将一段时间内高频使用的OPC Server连接对象缓存在桥接模块(桥接模块相当于一个客户端),方便下次操作快速使用。其中主要包含:
连接对象的缓存:OPC DA的一切交互基础都需要先连接,所以本发明在与OPCServer首次建立连接时就会将其实例对象缓存到内存中(仅缓存OPC Server连接对象,相关数据项句柄不在建立连接时缓存,而在读取/写入请求时才会缓存)。例如,某工业物联网关发出连接请求,连接模块与某OPC Server服务器首次建立连接后,将OPC Server连接对象缓存于缓存模块中,相关数据项句柄不在建立连接时缓存;某工业物联网关发出第一次数据读取/写入请求,读取模块从缓存模块获取到缓存的OPC Server连接对象,但请求的所有数据项的句柄都不存在于缓存的OPC Server连接对象中(此时数据项句柄缓存列表为空,请求的数据项id与OPC Server连接对象的数据项句柄缓存列表均无法对应),此时根据OPC Server连接对象向OPC Server请求相应的数据项句柄,由OPC Server服务器返回存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表(将由OPCServer服务器返回的存在的数据项句柄添加到缓存的OPC Server连接对象的数据项句柄缓存列表中);某工业物联网关发出第二次数据读取/写入请求,读取模块从缓存模块获取到缓存的OPC Server连接对象,部分请求的数据项的句柄在OPC Server连接对象中已存在(请求的数据项id与OPC Server连接对象的数据项句柄缓存列表对应),可直接获取这些数据项句柄,另一部分请求的数据项的句柄在OPC Server连接对象中不存在,此时根据OPCServer连接对象向OPC Server请求相应的数据项句柄,由OPC Server服务器返回存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表(将由OPCServer服务器返回的存在的数据项句柄添加到缓存的OPC Server连接对象的数据项句柄缓存列表中)。
数据读取、写入时根据是否已经建立过连接并缓存了对象,有两种情形:如已建立过连接且未被淘汰算法清除相应OPC Server连接对象,可直接从本地缓存中取得该对象。如未建立过连接,则需先连接OPC Server服务器并缓存OPC Server连接对象。
同时为了避免OPC Server出现异常导致本机持有的对象过期,所以每次重新建立连接后会重新缓存对象,每次重新连接时重新缓存的OPC Server连接对象下的数据项句柄缓存列表也为空。如果无节制的缓存所有OPC Server服务对象,接入服务过多也会出现内存风险,所以本发明还指定了一套缓存淘汰机制用于规避此风险。具体步骤为:
指定缓存队列数容量上限(即缓存队列的最大长度),默认容量上限为10(指缓存模块最多支持缓存的OPC Server连接对象的个数)。同时也可由用户根据安装桥接模块的机器内存空间大小、用户连接的OPC Server个数、读取/写入的总数据项个数等条件综合评判后在程序启动时动态指定缓存队列的最大容量。
若缓存队列的数量未达到上限(缓存队列数容量上限),则将新建立连接的OPCServer连接对象入队。
若缓存队列已满,而新的OPC Server连接对象待入队,针对所有的已缓存OPCServer连接对象,判断每个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值(无操作缓存时间阈值指在无读取/写入操作请求的情况下缓存OPC Server连接对象的最长时间,该阈值可调整,例如该阈值可设置为30天,大于该阈值说明用户平台对该OPC Server服务的数据读取/写入需求少,无需继续缓存该OPC Server连接对象,避免浪费内存空间),若至少一个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPC Server连接对象从缓存队列剔除,新的OPC Server连接对象入队;当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队。
Score = W /F + 1/T (1)
其中:
Score:OPC Server连接对象的综合评分
W:OPC Server连接对象的权重,每次操作数据项时则进行加权,每次根据请求的数据项个数成正比,请求的数据项越多则表示该服务越需要缓存,否则若无缓存由于数据项过多效率必然低下。同时考虑实际操作读取比写入更加频繁并且读取要求的时效性往往比写入更高。所以读取操作的加权系数c1为0.8,写入的加权系数c2为0.2。最终数据权重的计算子公式为:W = n1 * c1+n2*c2,c1+c2=1。其中n1为读取的数据项的长度,c1为读取操作系数,n2为写入的数据项的长度,c2为写入操作系数,读取的数据项的长度指读取的数据项的个数,写入的数据项的长度指写入的数据项的个数;更具体地,当运行淘汰算法以淘汰某个OPC Server连接对象时,前述的n1具体为:单个OPC Server连接对象从缓存于缓存模块开始,到当前运行淘汰算法时所经历的所有读取操作中,成功读取的数据项的总个数;前述的n2具体为:单个OPC Server连接对象从缓存于缓存模块开始,到当前运行淘汰算法时所经历的所有写入操作中,成功写入的数据项的总个数。
F:OPC Server连接对象的访问频率:每个对象缓存入队时缓存模块会记录其建立连接的初始时间(即首次连接的时间,如果后续因增加某些数据项句柄而对该OPC Server连接对象进行了更新,该更新时间不是初始时间),每次请求写入或读取OPC Server服务器时缓存模块都会记录请求的次数+1。总请求次数/(当前时间-连接的初始时间)的结果即为访问频率。当前时间-连接的初始时间所得值的单位为毫秒ms,在计算时只取值而将单位去除。
T:最近一次操作完成时间离当前时间的时间间隔:缓存模块会记录对应每个OPCServer连接对象的最近一次读取/写入操作完成时间。预设的无操作缓存时间阈值(例如30天)之内作为一项约束,访问时间越近分值越高。T的单位为毫秒ms,在计算1/T时只取值而将单位去除。
OPC Server连接对象的综合评分Score,由W /F计算所得的值与1/T计算所得的值相加而成。
如果针对某个OPC Server连接对象,最近一次读取/写入操作完成时间距离当前时间超过30天则直接将该OPC Server连接对象剔除队列,防止某段时间由于访问频率非常大导致其最终计算的分数却是最大的。不管缓存队列是否已满,当某个OPC Server连接对象最近一次读取/写入操作完成时间距离当前时间超过30天,都会被剔除,其不是实时去除,而在以下两个时机均触发对于超时OPC Server连接对象的检查去除:(1)缓存队列已满,有新的OPC Server连接对象请求入队时;(2)由缓存模块启动定时任务,该定时任务定时扫描所有已缓存OPC Server连接对象,判断最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若超过预设的无操作缓存时间阈值则将对应的OPC Server连接对象清除(扫描间隔为2小时)。
缓存队列已满时,当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内(小于或等于30天,即当最近一次读取/写入的操作完成时间距离当前时间正好为30天整,也不会如前段所述被自动清除,而是采用公式(1)计算OPC Server连接对象综合评分),根据公式(1)分别计算所有OPC Server连接对象的综合评分,淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队。
数据项句柄的缓存:
OPC DA的数据采集与读取都需要先拿到数据项的句柄(其为一种数据标识,句柄与OPC Server服务器的各数据项一一对应),所以这部分数据也会缓存到各个服务器的连接对象里,该句柄与请求的数据项的id有一一对应关系。并且跟随连接对象的淘汰算法进行释放。
通过缓存这两部分内容,本发明大幅度提升了采集效率,数千点可以做到50毫秒内采集数千点的数据。
得益于上述对于性能的改进,可以使得本发明可以在低延时的要求下在一个请求内采集多种OPC服务(即通过桥接模块可同时连接多个OPC Server服务器并进行相应的读取/写入操作),操作请求中如果指定多个OPC Server服务器,则多个服务去并行处理,并将最终的结果返回给请求方(网关)。同时本发明还提供了如服务管理,直接使用本发明的桥接模块直接管理OPC Server,无需再接入其他OPC Client,通过OPC DA Auto.dll提供的API可以扫描指定主机的OPC Server列表、并查看服务器的基本信息、查看该服务下的所有数据项、监听指定数据项的数值变化、反向控制某个数据点的数值、点表导出,OPC DA由于其支持的点数大,如果手动配置点表极为麻烦,为了方便用户本发明可以将OPC server数据项信息转换为网关所支持的点表配置。其次对于OPC DA的DCOM配置繁琐,本发明提供了一些辅助功能。如检测windows服务中是否存在OPC Enum或者根据扫描服务的报错信息(OPCDAAuto.dll提供的文档里有异常结果枚举说明)判断是否存在必须的运行依赖,并提示用户下载安装官方提供的依赖包。在本发明内置的帮助手册里提供快捷设置远程数采所必须打开的Windows配置。通过这些措施使得整个系统简单易用(如图2所示)。
以上显示和描述了本发明的基本原理、主要特征和优点。本行业技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或者等效变换的方式获得技术方案的,均落在本发明的保护范围之内。
Claims (10)
1.一种基于工业物联网关的跨平台OPC DA数据采集系统,其特征在于,包括:
桥接模块,用于连通OPC Server服务器与工业物联网关;工业物联网关通过桥接模块与OPC Server服务器建立连接、进行数据读取和写入;
桥接模块包括连接模块、缓存模块、读取模块、写入模块;
连接模块,接收工业物联网关的连接请求,并向OPC Server服务器请求连接,接收OPCServer服务器返回的请求结果,判断OPC Server服务器运行状态,确定是否调用缓存模块更新缓存队列,并向工业物联网关反馈连接结果;
缓存模块用于每次与OPC Server服务器建立连接后缓存OPC Server连接对象,构成缓存队列,当缓存的OPC Server连接对象的数量达到缓存队列数容量上限时,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存;
读取模块,接收工业物联网关的读取请求,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPC Server连接对象,则调用连接模块连接OPCServer服务器,再通过缓存模块缓存OPC Server连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPCServer服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPC Server服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
写入模块,接收工业物联网关发送的待写入OPC Server服务器的数据项的内容,尝试从缓存模块中获取到OPC Server连接对象,当无法从缓存模块获取到缓存的OPC Server连接对象,则调用连接模块连接OPC Server服务器,再通过缓存模块缓存OPC Server连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接从缓存模块中获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,调用缓存模块更新该OPCServer连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接从缓存模块中获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPC Server服务器中数据项的数据完成。
2.根据权利要求1所述的一种基于工业物联网关的跨平台OPC DA数据采集系统,其特征在于,所述的桥接模块运行于Windows平台,而工业物联网关运行于与Windows平台兼容或不兼容的任意系统或终端。
3.根据权利要求1所述的一种基于工业物联网关的跨平台OPC DA数据采集系统,其特征在于,当已缓存的OPC Server连接对象的数量达到缓存队列数容量上限,而新的OPCServer连接对象待入队,针对所有的已缓存OPC Server连接对象,判断每个已缓存OPCServer连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若至少一个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPC Server连接对象从缓存队列剔除,新的OPC Server连接对象入队;当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPCServer连接对象,新的OPC Server连接对象入队;
Score = W /F + 1/T (1);
其中:
Score:OPC Server连接对象的综合评分;
W:OPC Server连接对象的权重,每次操作OPC Server连接对象的数据项时进行加权,读取操作的加权系数为c1,写入操作的加权系数为c2,读取操作的加权系数高于写入操作的加权系数,最终OPC Server连接对象的权重的计算子公式为:W = n1* c1+n2*c2,c1+c2=1,其中n1为读取的数据项的长度,c1为读取操作系数,n2为写入的数据项的长度,c2为写入操作系数,读取的数据项的长度指读取的数据项的个数,写入的数据项的长度指写入的数据项的个数;
F:OPC Server连接对象的访问频率:每个OPC Server连接对象缓存入队时由缓存模块记录与相应OPC Server服务器建立连接的初始时间,每次请求读取或写入时由缓存模块记录请求的次数;请求次数/(当前时间-建立连接的初始时间)的结果为访问频率F;
T:最近一次读取/写入操作完成时离当前时间的时间间隔:由缓存模块记录对应每个OPC Server连接对象的最近一次读取/写入的操作完成时间。
4.根据权利要求1所述的一种基于工业物联网关的跨平台OPC DA数据采集系统,其特征在于,所述的连接模块中,向OPC Server服务器请求连接指:通过指定目标OPC Server的服务器名称、OPC Server所在的主机或域名与相应的OPC Server服务器建立连接信道;接收OPC Server服务器返回的请求结果包括:获取OPC Server服务器运行状态信息、服务器的对象句柄,运行状态信息包括运行正常、运行失败;判断OPC Server服务器运行状态确定是否正常连接,当正常连接时调用缓存模块更新缓存队列,并向工业物联网关反馈连接成功的结果,当运行失败时向工业物联网关反馈连接失败的结果。
5.根据权利要求1所述的一种基于工业物联网关的跨平台OPC DA数据采集系统,其特征在于,数据读取/写入时,操作类型包括同步、异步操作,若为同步请求,则读取模块或写入模块直接从OPC Server服务器获取操作结果,并将操作结果反馈给工业物联网关;若为异步请求则读取模块或写入模块订阅OPC Server服务器的响应回调函数,创建异步任务并设置超时时间,异步获取操作结果,并将操作结果反馈给工业物联网关。
6.一种基于工业物联网关的跨平台OPC DA数据采集方法,其特征在于,包括如下步骤:
工业物联网关向桥接模块发出连接请求,桥接模块向OPC Server服务器请求连接,由OPC Server服务器向桥接模块返回请求结果,桥接模块判断OPC Server服务器运行状态,确定是否更新缓存队列,并向工业物联网关反馈连接结果;
每次与OPC Server服务器建立连接后缓存OPC Server连接对象,构成缓存队列,当缓存的OPC Server连接对象的数量达到缓存队列数容量上限时,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存;
当工业物联网关发出读取请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPC Server连接对象;当请求的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当请求的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第一请求参数,请求读取OPC Server服务器相应的数据项,接收OPC Server服务器反馈的操作结果,并将操作结果反馈给工业物联网关;
当工业物联网关发出写入请求,尝试获取到缓存的OPC Server连接对象,当无法获取到缓存的OPC Server连接对象,则连接OPC Server服务器,再缓存OPC Server连接对象;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中已存在,直接获取相应的数据项句柄;当待写入OPC Server服务器的数据项的句柄在缓存的OPC Server连接对象中不存在,根据OPC Server连接对象向OPC Server服务器请求获取数据项句柄,由OPC Server服务器反馈存在的数据项句柄,更新该OPC Server连接对象的数据项句柄缓存列表;过滤OPC Server服务器不存在的数据项;根据操作类型、直接获取到的数据项句柄和由OPC Server服务器反馈的存在的数据项句柄构建第二请求参数,写入通过覆盖更新OPCServer服务器中数据项的数据完成。
7.根据权利要求6所述的一种基于工业物联网关的跨平台OPC DA数据采集方法,其特征在于,根据缓存淘汰算法淘汰至少一个OPC Server连接对象并完成新的OPC Server连接对象的缓存的具体步骤为:
设置缓存队列数容量上限;
若缓存队列的数量未达到缓存队列数容量上限,则将新建立连接的OPC Server连接对象入队;
若缓存队列的数量已满,而新的OPC Server连接对象待入队,针对所有的已缓存OPCServer连接对象,判断每个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间是否超过预设的无操作缓存时间阈值,若至少一个已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值,将最近一次读取/写入的操作完成时间距离当前时间超过预设的无操作缓存时间阈值的所有已缓存OPC Server连接对象从缓存队列剔除,新的OPC Server连接对象入队;当所有的已缓存OPC Server连接对象的最近一次读取/写入的操作完成时间均距离当前时间在预设的无操作缓存时间阈值之内,则根据最近最少使用算法和权重组成的公式(1)淘汰综合评分Score最低的已缓存OPC Server连接对象,新的OPC Server连接对象入队;
Score = W /F + 1/T (1);
其中:
Score:OPC Server连接对象的综合评分;
W:OPC Server连接对象的权重,每次操作OPC Server连接对象的数据项时进行加权,读取操作的加权系数为c1,写入操作的加权系数为c2,读取操作的加权系数高于写入操作的加权系数,最终OPC Server连接对象的权重的计算子公式为:W = n1* c1+n2*c2,c1+c2=1,其中n1为读取的数据项的长度,c1为读取操作系数,n2为写入的数据项的长度,c2为写入操作系数,读取的数据项的长度指读取的数据项的个数,写入的数据项的长度指写入的数据项的个数;
F:OPC Server连接对象的访问频率:每个OPC Server连接对象缓存入队时由缓存模块记录与相应OPC Server服务器建立连接的初始时间,每次请求读取或写入时由缓存模块记录请求的次数;请求次数/(当前时间-建立连接的初始时间)的结果为访问频率F;
T:最近一次读取/写入操作完成时离当前时间的时间间隔:由缓存模块记录对应每个OPC Server连接对象的最近一次读取/写入的操作完成时间。
8.根据权利要求6所述的一种基于工业物联网关的跨平台OPC DA数据采集方法,其特征在于,读取/写入时,过滤OPC Server服务器不存在的数据项指:请求读取/写入的数据项中,OPC Server服务器不存在的数据项直接过滤,不用于构建第一或第二请求参数,且OPCServer服务器不存在的数据项的操作结果直接被赋值为:读取/写入失败。
9.根据权利要求6所述的一种基于工业物联网关的跨平台OPC DA数据采集方法,其特征在于,数据读取/写入时,操作类型包括同步、异步操作,若为同步请求,则直接获取操作结果,并将操作结果反馈给工业物联网关;若为异步请求则订阅OPC Server服务器的响应回调函数,创建异步任务并设置超时时间,异步获取操作结果,并将操作结果反馈给工业物联网关。
10.根据权利要求7所述的一种基于工业物联网关的跨平台OPC DA数据采集方法,其特征在于,c1为0.8,c2为0.2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410741634.6A CN118316989B (zh) | 2024-06-11 | 2024-06-11 | 一种基于工业物联网关的跨平台opc da数据采集系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410741634.6A CN118316989B (zh) | 2024-06-11 | 2024-06-11 | 一种基于工业物联网关的跨平台opc da数据采集系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118316989A CN118316989A (zh) | 2024-07-09 |
CN118316989B true CN118316989B (zh) | 2024-08-16 |
Family
ID=91728707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410741634.6A Active CN118316989B (zh) | 2024-06-11 | 2024-06-11 | 一种基于工业物联网关的跨平台opc da数据采集系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118316989B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807618A (zh) * | 2017-09-25 | 2018-03-16 | 宁夏共享模具有限公司 | 一种数字化铸造工厂工控系统底层集成架构 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356540B2 (en) * | 2002-07-03 | 2008-04-08 | Smith David E A | Data storage and retrieval system |
EP2206041A4 (en) * | 2007-10-01 | 2011-02-16 | Iconics Inc | VISUALIZATION OF PROCESS CONTROL DATA |
-
2024
- 2024-06-11 CN CN202410741634.6A patent/CN118316989B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107807618A (zh) * | 2017-09-25 | 2018-03-16 | 宁夏共享模具有限公司 | 一种数字化铸造工厂工控系统底层集成架构 |
Also Published As
Publication number | Publication date |
---|---|
CN118316989A (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8161138B2 (en) | Replication system having the capability to accept commands at a standby-system site before completion of updating thereof | |
CN101325561B (zh) | 一种处理电子邮件的方法、装置及系统 | |
US6256634B1 (en) | Method and system for purging tombstones for deleted data items in a replicated database | |
US7054925B2 (en) | Efficient method for determining record based I/O on top of streaming protocols | |
US9197695B2 (en) | Redundant data requests with cancellation | |
CN109739810B (zh) | 文件同步方法、服务器、客户端及具有存储功能的装置 | |
KR100343823B1 (ko) | 클라이언트와 적응형 동기화 및 변환 서버를 위한 방법, 장치 및 프로그램 저장 장치 | |
US8458127B1 (en) | Application data synchronization | |
US9185174B2 (en) | Maintaining mobile device operations | |
WO2003023656A1 (en) | Database interface architecture with time-based load balancing in a real-time environment | |
US20050235019A1 (en) | Method and system for transmitting data for data synchronization between server and client when data synchronization session was abnormally terminated | |
WO2011027654A1 (ja) | データ同期システムおよびデータ同期方法 | |
US9792307B2 (en) | Enterprise-based searching of new and updated data | |
JP2010525740A (ja) | ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュする装置および方法 | |
JPH06162086A (ja) | 遠隔データベースの制御方法及び装置 | |
US9462077B2 (en) | System, method, and circuit for servicing a client data service request | |
CN112615793A (zh) | 一种数据限流方法及装置 | |
US7548989B2 (en) | Method and system for maintaining consistency during multi-threaded processing of LDIF data | |
US8326913B2 (en) | Method and system for service contract discovery | |
EP2674868A1 (en) | Database update notification method | |
JPH07152668A (ja) | 情報処理装置及び通信方法 | |
US7603423B2 (en) | Communication system with primary device and standby device to prevent suspension of service of the system | |
CN118316989B (zh) | 一种基于工业物联网关的跨平台opc da数据采集系统及方法 | |
US20040105445A1 (en) | Internet protocol for resource-constrained devices | |
JP3780913B2 (ja) | レスポンス計測における計測モジュールを配布するアクセス管理システム、及びアクセス管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |