版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑基于ModbusTCP的OPC服务器设计-设计应用由于目前广泛应用的DCS、FCS、SCADA等传统计算机测控系统使用的智能仪表设备、分布式I/O模块、PLC等设备来自于不同的生产商,而各生产商为了各自的商业利益,没有遵循统一的接口规范,造成了设备之间的通信异常复杂,难以实现现场设备与上层控制软件间的信息交互和各现场设备间的直接互联与互操作,因此限制了计算机测控系统开放性、通用性的提高。
OPC(OLEforProcessControl,用于过程控制的对象链接和嵌入)技术为解决工业客户机与各种设备间通讯而产生的一项工业技术规范和标准。OPC技术规范是OPC基金会制定的,它提供了统一的数据访问软硬件接口,将现场信号按照统一的标准与SCADA(监控与数据采集系统),HMI(人机接口)等软件无缝连接起来,同时将硬件和应用软件有效地分离开。只要硬件开发商提供带有OPC接口的服务器,任何支持OPC接口的客户程序均可采用统一的方式对不同硬件厂商的设备进行存取,无须重复开发驱动程序,因此大大提高了控制系统的互操作性和适应性。
OPC技术
1.OPC基础
COM主要是为了实现软件复用和互操作,并且为基于Windows的应用程序提供统一的、可扩展的、面向对象的通讯标准,DCOM是COM技术在分布式计算领域的扩展,支持在局域网、广域网甚至因特网上不同计算机的对象之间的通讯。
OPC技术是COM在工业领域的一种特殊应用,实质上,OPC规范就是定义了一些用于数据访问、事件报警处理、历史数据访问等的COM对象和接口。
2.OPCDA规范
OPCDA规范是整个OPC协议族中的和基础,所有的其他OPC规范都以OPCDA规范为基础进行扩展而来。对于高敏感度的实时数据,将其从实时数据中分离,提出报警/事件的概念,制定了专门的OPC报警事件(OPCAlarmandEvents)接口规范;对于面向趋势显示、历史分析、报表的数据,OPC制定了历史数据访问(OPCHistoricalDataAccess)接口规范。其他的OPC规范还包括OPC安全处理(OPCSecurity)接口规范、OPC批处理(OPCBatch)接口规范,OPCXML数据访问(OPCXMLDA)规范,OPC数据交换(OPCDataExchange)规范等。
在过程控制系统的架构中,整个系统以OPCDA服务器为中心,OPCAE服务器从OPCDA服务器上得到实时数据,并根据客户的设置进行逻辑分析,产生相应的事件和报警信息发送到客户端;OPCHAD服务器将从OPCDA服务器上获得的实时数据按照客户要求进行保存,便于客户端进行查询和分析数据的变化情况;OPCDX服务器将多个OPCDA服务器的数据组织起来,根据需要进行各个OPCDA服务器之间的数据交换:XMLDA服务器将OPCDA服务器上的数据转换成XML文本,并发布到互联网上,实现数据更大范围内的共享;OPCSecurity服务器则对整个数据层的数据加上了一层安全保护。
实际应用中也主要是以OPCDA规范、OPCAE规范和OPCHDA规范应用为广泛,尤其是OPCDA规范。因此通常提到的OPC服务器和客户端都是指OPCDA服务器和OPCDA客户端。
ModbusTCPOPC服务器的设计与实现
1.总体结构
本文实现的OPC数据访问服务器要完成对Modbus设备的数据采集功能,提供OPC数据存取规定的定制接口,同时通过数据存取区将设备数据与OPC接口联系来。如图1所示的OPC数据存取服务器总体结构,各个功能模块相对独立又相互协作,形成了一个有机整体。
图1:OPC数据存取服务器总体结构。
本文设计的OPC数据存取服务器拥有独立的进程空间,与客户进行数据交换时稳定性高,同时提供了用户友好的人机界面,便于用户的自定义组态操作;硬件设备通讯模块实现了标准的MdbusTCP通讯协议,可以实现与标准的ModbusTCP设备无缝互联通信,简单方便地获取硬件设备的过程数据。
2.OPC接口模块
OPC接口模块包括OPC对象部分和数据存储区部分,基于组件化的设计思想,可以设计成将COM和OPC技术细节隐藏,使得用户将开发OPC数据采集服务器的工作集中在特定的数据采集任务上。
本文采用了OPCMaster的OM_OPCSvr.dllOPC接口动态库工具来实现OPC接口模块部分,OM_OPCSvr.dll完全支持OPC数据存取规范的所有版本,包括的DA3.0版,它通过提供API函数完成OPC接口模块的任务。其结构如图2红色虚线所示。
图2:OPCMasterOPC接口动态库工具结构。
OPC服务器初始化管理:通过调用InitOPCSvr(byte*pSvrCLSID,boolbExeSvr,DWorddwCoInit)来对的OPC服务器的CLSID、程序应用模型和初始化COM库的线程模式进行初始化设置。通过调用SetServerRate(DWorddwServerRate)设置OPC服务器端向客户端快回调速率。通过调用SetVendorInfo(LPCWSTRlpVendorInfo,WORDwMajorVersion,WORDwMinorVersion,WORDwBuildNumber)设置Vendor及OPC服务器版本信息。
通过调用SetServerDelimiter(WCHARcDelimiter)设置服务器标签ID的分隔符,在这里我们设置cDelimiter为".".通过调用SetCaseSensitivity(BOOLbOnOff=FALSE)设置OPC服务器端地址空间是否区分大小写,在这里我们设置bOnOff=True,即区分地址空间大小写。
OPC回调数据通信管理:在这里主要设置三个回调函数,分别是读设备数据回调函数、写设备数据回调函数和客户端连接或断开回调函数。
回调函数声明分别如下:
///从设备读数据tag回调函数
voidReadNotificationHandler(IntPtrhTag,outobjectValue,outUInt16Quality,outSystem.Runtime.InteropServices.ComTypes.FILETIMETimestamp,outInt32DeviceError)
///向设备写数据Tag回调函数
voidWriteNotificationHandler(IntPtrhTag,refobjectValue,refUInt16Quality,refSystem.Runtime.InteropServices.ComTypes.FILETIMETimestamp,outInt32DeviceError)
///客户端连接或断开回调函数
voidClientConnNotificationHandler(UInt32Num,boolbConnect)
声明完回调函数后,需要调用使能回调函数EnableDeviceRead、EnableDeviceWrite和EnableClientConnNotify分别对上述3个回调函数使能,完成回调函数设置。
OPC服务器注册管理:通过调用intRegisterOPCServer(byte[]pSvrCLSID,stringlpProgID,stringlpDescription,stringlpVendor,stringlpFilePath)完成对OPC服务器的注册,以便OPC客户端通过注册表搜索到本机或本网络内的OPC服务器。
通过调用intUnregisterOPCServer(byte[]pSvrCLSID,stringlpProgID)完成OPC服务器的注销功能。
3.通信驱动模块
ModbusTCP是Modbus协议的网络协议,TCP端口号为502.ModbusTCP由协议头MBAP、功能码和数据域组成,协议格式如图3所示。
图3:基于ModbusTCP协议的请求和应答格式。
MBAP(ModbusApplicationProtocol)协议头的主要功能时对Modbus应用数据单元ADU的标识。其详细内容见表1.
表1:MBAP协议头。
功能码主要功能是标识请求什么类型数据,本通讯驱动模块主要使用6种标准的Modbus功能码,其详细内容见表2.
表2:Modbus功能码。
ModbusTCP消息帧通过TCP网络协议进行传输,因此借助DotNet4.0平台的Socket类定义封装了一个TcpSocketTCP通信类,通过此类可以完成TCP连接断开、发送接收数据和发现断开自动重连功能。
本ModbusTCP协议通信驱动模块属于ModbusSlave,需要对设备返回的ModbusTCP消息帧进行MBAP验证、请求数据获取。图4是对设备进行读取数据的流程。
图4:设备通信驱动模块读取设备数据流程。
4.用户界面
OPC服务器的用户界面将数据项用树形结构标识,然后设计数据项和硬件设备的数据绑定设置的界面以及实时显示数据项列表界面,并将数据存储区与硬件通信接口联系起来,实现用户自定义组态功能。在OPC服务器程序关闭时需要将数据项的属性以及硬件设备设置参数作为组态配置文件保存起来,便于下次OPC服务器运行时能自动调入组态配置文件,自动完成初始设置。
主窗口:主窗口是OPC服务器程序的起始点,主要完成OPC服务器的初始化。主窗口是所有界面元素的组织容器,主要包括菜单栏、工具栏、设备树形列表、标签列表、信息列表和状态栏,如图5所示。
图5:用户界面。
添加设备:此处的设备是实际物理设备的一个逻辑引用,通过此逻辑设备设置与实际设备的通信参数及相关属性。点击菜单"添加?添加设备",则打开设备属性设置对话框,如图6所示。用户可以设置相关参数。
图6:设备属性设置对话框。
添加组:组是包容设备中一组同类型数据的容器,只需要设置其名称即可。点击"添加?添加组",则打开设置组属性对话框,如图7所示。用户可以设置组名称。
图7:组属性设置对话框。
添加数据标签:数据标签是实际物理设备中数据的逻辑抽象,且进行了OPC数据封装。点击菜单"添加?添加标签",打开ModbusTCP设备数据标签属性设置对话框,用户根据实际设备情况,设置数据点名称、地址、数据类型、寄存器类型等属性,如图8所示。
图8:Modbus设备数据标签属性设置对话框。
根据实际需要重复"添加设备-添加组-添加数据标签"流程,配置好所需要存取的设备数据点。
组态配置文件:在OPC服务器程序关闭时需要将数据项的属性以及硬件设备设置参数作为组态配置文件保存起来,便于下次OPC服务器运行时能自动调入组态配置文件,自动完成初始设置。本文利用DotNet4.0的序列化和反序列化技术,可以将数据对象序列化到文件中和将文件反序列化到数据对象。
轮询设备线程:经过组态配置好数据点后,运行OPC服务器,开始轮询设备并将实时获取的数据更新到数据缓冲区内,如图9所示。
图9:更新数据详细流程。
本文小结
鉴于Windows在工控领域的成熟度和稳定性,以及DotNetFrameWork的跨平台性,本文基于DotNet4.0平台封装了OPC接口,编程实现了ModbusTCP通信协议以及良好的人机交互界面,通过了功能测试和性能测试,500ms轮询周期可稳定高效地读写千点设备数据,目前国内外SCADA系统中的OPC客户端接口可以利用本OPC轻松实现与北京世纪联信公司MultiBus-RTU等产品的互联通信。
本O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年餐厨垃圾处理项目合作计划书
- 2024年腹部外科手术器械项目发展计划
- 2024年电子银浆合作协议书
- 2024年索道缆车项目发展计划
- 2024劳动合同法内容范本
- 签约挂牌协议书范本
- 墙地砖劳务合同范本
- 2024人员借调合同2
- 清单计价合同范本
- 2024年专科疾病防治服务项目发展计划
- 2024年DRGs相关理论知识考核试题及答案
- 某公司危化品经营应急预案
- (2024年)课堂教学与信息技术融合ppt课件pptx
- 2024建筑工程消防施工质量验收规范
- 动漫基础知识-课件
- 2024年食品安全考试题库及答案
- 中国车联网市场洞察2023 -IDC
- (高清版)DZT 0401-2022 矿山地质工作规范
- 《重大危险源的辨识》课件
- 锅炉水处理人员安全技术操作规程培训
- 辉石矿选采项目社会稳定风险评估报告样本
评论
0/150
提交评论