基于Modbus TCP的OPC服务器设计
由于目前广泛应用的DCS、FCS、SCADA 等传统计算机测控系统使用的智能仪表设备、分布式I/O模块、PLC 等设备来自于不同的生产商,而各生产商为了各自的商业利益,没有遵循统一的接口规范,造成了设备之间的通信异常复杂,难以实现现场设备与上层控制软件间的信息交互和各现场设备间的直接互联与互操作,因此限制了计算机测控系统开放性、通用性的提高。
OPC(OLE for Process Control,用于过程控制的对象链接和嵌入)技术为解决工业客户机与各种设备间通讯而产生的一项工业技术规范和标准。OPC 技术规范是OPC 基金会制定的,它提供了统一的数据访问软硬件接口,将现场信号按照统一的标准与SCADA(监控与数据采集系统),HMI(人机接口)等软件无缝连接起来,同时将硬件和应用软件有效地分离开。只要硬件开发商提供带有OPC接口的服务器,任何支持OPC接口的客户程序均可采用统一的方式对不同硬件厂商的设备进行存取,无须重复开发驱动程序,因此大大提高了控制系统的互操作性和适应性。
OPC技术
1.OPC核心基础
COM主要是为了实现软件复用和互操作,并且为基于Windows的应用程序提供统一的、可扩展的、面向对象的通讯标准,DCOM是COM技术在分布式计算领域的扩展,支持在局域网、广域网甚至因特网上不同计算机的对象之间的通讯。
OPC技术是COM在工业领域的一种特殊应用,实质上,OPC规范就是定义了一些用于数据访问、事件报警处理、历史数据访问等的COM对象和接口。
2.OPC DA规范
OPC DA规范是整个OPC协议族中的核心和基础,所有的其他OPC规范都以OPC DA规范为基础进行扩展而来。对于高敏感度的实时数据,将其从实时数据中分离,提出报警/事件的概念,制定了专门的OPC报警事件(OPC Alarm and Events)接口规范;对于面向趋势显示、历史分析、报表的数据,OPC制定了历史数据访问(OPC Historical Data Access)接口规范。其他的OPC规范还包括OPC安全处理(OPC Security)接口规范、OPC批处理(OPC Batch)接口规范,OPC XML数据访问(OPC XMLDA)规范,OPC数据交换(OPC Data Exchange)规范等。
在过程控制系统的架构中,整个系统以OPC DA服务器为中心,OPC AE服务器从OPC DA服务器上得到实时数据,并根据客户的设置进行逻辑分析,产生相应的事件和报警信息发送到客户端;OPC HAD服务器将从OPC DA服务器上获得的实时数据按照客户要求进行保存,便于客户端进行查询和分析数据的变化情况;OPC DX服务器将多个OPC DA服务器的数据组织起来,根据需要进行各个OPC DA服务器之间的数据交换:XML DA服务器将OPC DA服务器上的数据转换成XML文本,并发布到互联网上,实现数据更大范围内的共享;OPC Security服务器则对整个数据层的数据加上了一层安全保护。
实际应用中也主要是以OPC DA规范、OPC AE规范和OPC HDA规范应用最为广泛,尤其是OPC DA规范。因此通常提到的OPC服务器和客户端都是指OPC DA服务器和OPC DA客户端。
Modbus TCP OPC服务器的设计与实现
1. 总体结构
本文实现的OPC数据访问服务器要完成对Modbus设备的数据采集功能,提供OPC数据存取规定的定制接口,同时通过数据存取区将设备数据与OPC接口联系来。如图1所示的OPC数据存取服务器总体结构,各个功能模块相对独立又相互协作,形成了一个有机整体。
图1:OPC数据存取服务器总体结构。
本文设计的OPC数据存取服务器拥有独立的进程空间,与客户进行数据交换时稳定性高,同时提供了用户友好的人机界面,便于用户的自定义组态操作;硬件设备通讯模块实现了标准的MdbusTCP通讯协议,可以实现与标准的ModbusTCP设备无缝互联通信,简单方便地获取硬件设备的过程数据。
2. OPC接口模块
OPC接口模块包括OPC对象部分和数据存储区部分,基于组件化的设计思想,可以设计成将COM和OPC技术细节隐藏,使得用户将开发OPC数据采集服务器的工作集中在特定的数据采集任务上。
本文采用了OPCMaster的OM_OPCSvr.dll OPC接口动态库工具来实现OPC接口模块部分,OM_OPCSvr.dll完全支持OPC数据存取规范的所有版本,包括最新的DA 3.0版,它通过提供API函数完成OPC接口模块的任务。其结构如图2红色虚线所示。
图2:OPCMaster OPC接口动态库工具结构。
OPC服务器初始化管理:通过调用InitOPCSvr(byte *pSvrCLSID,bool bExeSvr,DWord dwCoInit)来对的OPC服务器的CLSID、程序应用模型和初始化COM库的线程模式进行初始化设置。通过调用SetServerRate(DWord dwServerRate)设置OPC服务器端向客户端最快回调速率。通过调用SetVendorInfo(LPCWSTR lpVendorInfo, WORD wMajo
- 基于ARM Cortex-M3的MODBUS协议实现及其应用(06-24)
- 基于Linux操作系统下的TCP/IP网络通信研究与应用(01-10)
- 巧解无线路由器不正常工作技巧(02-13)
- 排忧解难 让宽带路由更好“服务”自己 (03-05)
- 网站安全课程:DDOS攻击防御全攻略(03-11)
- TCP/IP基础(03-17)