您的位置 首页 产品

根据Modbus TCP的OPC服务器规划

由于目前广泛应用的DCS、FCS、SCADA 等传统计算机测控系统使用的智能仪表设备、分布式I/O模块、PLC 等设备来自于不同的生产商,而各生产商为了各自的商业利益,没有遵循统一的接口规范,造成了设

因为现在广泛运用的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 wMajorVersion, WORD wMinorVersion, WORD wBuildNumber)设置Vendor及OPC服务器版别信息。

通过调用SetServerDelimiter(WCHAR cDelimiter)设置服务器标签ID的分隔符,在这里咱们设置cDelimiter为”.”。 通过调用SetCaseSensitivity(BOOL bOnOff = FALSE)设置OPC服务器端地址空间是否区别大小写,在这里咱们设置bOnOff=True,即区别地址空间大小写。

OPC回调数据通讯办理:在这里首要设置三个回调函数,别离是读设备数据回调函数、写设备数据回调函数和客户端衔接或断开回调函数。

回调函数声明别离如下:

/// 从设备读数据tag回调函数

void ReadNotificationHandler(IntPtr hTag, out object Value, out UInt16 Quality, out System.Runtime.InteropServices.ComTypes.FILETIME Timestamp, out Int32 DeviceError)

/// 向设备写数据Tag回调函数

void WriteNotificationHandler(IntPtr hTag, ref object Value, ref UInt16 Quality, ref System.Runtime.InteropServices.ComTypes.FILETIME Timestamp, out Int32 DeviceError)

/// 客户端衔接或断开回调函数

void ClientConnNotificationHandler(UInt32 Num, bool bConnect)

声明完回调函数后,需求调用使能回调函数EnableDeviceRead、EnableDeviceWrite和EnableClientConnNotify别离对上述3个回调函数使能,完结回调函数设置。

OPC服务器注册办理:通过调用int RegisterOPCServer(byte[] pSvrCLSID, string lpProgID, string lpDescription, string lpVendor, string lpFilePath)完结对OPC服务器的注册,以便OPC客户端通过注册表查找到本机或本网络内的OPC服务器。

通过调用int UnregisterOPCServer(byte[] pSvrCLSID, string lpProgID)完结OPC服务器的刊出功用。

3. 通讯驱动模块

ModbusTCP是Modbus协议的网络协议,TCP端口号为502。ModbusTCP由协议头MBAP、功用码和数据域组成,协议格局如图3所示。


图3:依据ModbusTCP协议的恳求和应对格局。

MBAP(Modbus Application Protocol)协议头的首要功用时对Modbus运用数据单元ADU的标识。其具体内容见表1。


表1:MBAP协议头。

功用码首要功用是标识恳求什么类型数据,本通讯驱动模块首要运用6种规范的Modbus功用码,其具体内容见表2。


表2:Modbus功用码。

Modbus TCP音讯帧通过TCP网络协议进行传输,因而凭借Dot Net 4.0渠道的Socket类界说封装了一个TcpSocket TCP通讯类,通过此类能够完结TCP衔接断开、发送接纳数据和发现断开主动重连功用。

本Modbus TCP协议通讯驱动模块归于Modbus Slave,需求对设备回来的Modbus TCP音讯帧进行MBAP验证、恳求数据获取。图4是对设备进行读取数据的流程。


图4:设备通讯驱动模块读取设备数据流程。

4. 用户界面

OPC服务器的用户界面将数据项用树形结构标识,然后规划数据项和硬件设备的数据绑定设置的界面以及实时显现数据项列表界面,并将数据存储区与硬件通讯接口联络起来,完结用户自界说组态功用。在OPC服务器程序封闭时需求将数据项的特色以及硬件设备设置参数作为组态装备文件保存起来,便于下次OPC服务器运转时能主动调入组态装备文件,主动完结初始设置。

主窗口:主窗口是OPC服务器程序的起始点,首要完结OPC服务器的初始化。主窗口是一切界面元素的安排容器,首要包含菜单栏、东西栏 、设备树形列表 、标签列表、信息列表和状态栏,如图5所示。


图5:用户界面。

增加设备:此处的设备是实践物理设备的一个逻辑引证,通过此逻辑设备设置与实践设备的通讯参数及相关特色。点击菜单“增加?增加设备”,则翻开设备特色设置对话框,如图6所示。用户能够设置相关参数。


图6:设备特色设置对话框。

增加组:组是容纳设备中一组同类型数据的容器,只需求设置其称号即可。点击“增加?增加组”,则翻开设置组特色对话框,如图7所示。用户能够设置组称号。


图7:组特色设置对话框。

增加数据标签:数据标签是实践物理设备中数据的逻辑笼统,且进行了OPC数据封装。点击菜单“增加?增加标签”,翻开Modbus TCP设备数据标签特色设置对话框,用户依据实践设备状况,设置数据点称号、地址、数据类型、寄存器类型等特色,如图8所示。


图8:Modbus设备数据标签特色设置对话框。

依据实践需求重复“增加设备-增加组-增加数据标签”流程,装备好所需求存取的设备数据点。

组态装备文件:在OPC服务器程序封闭时需求将数据项的特色以及硬件设备设置参数作为组态装备文件保存起来,便于下次OPC服务器运转时能主动调入组态装备文件,主动完结初始设置。本文使用DotNet 4.0的序列化和反序列化技能,能够将数据目标序列化到文件中和将文件反序列化到数据目标。

轮询设备线程:通过组态装备好数据点后,运转OPC服务器,开端轮询设备并将实时获取的数据更新到数据缓冲区内,如图9所示。


图9:更新数据具体流程。

本文小结

鉴于Windows在工控范畴的成熟度和安稳性,以及Dot Net FrameWork的跨渠道性,本文依据Dot Net4.0渠道封装了OPC接口,编程完结了ModbusTCP通讯协议以及杰出的人机交互界面,通过了功用测验和功能测验,500ms轮询周期可安稳高效地读写千点设备数据,现在国内外SCADA体系中的OPC客户端接口能够使用本OPC轻松完结与北京世纪联信公司MultiBus-RTU等产品的互联通讯。

本OPC数据存取服务器现在完结的首要功用和特色包含:支撑OPC 数据存取规范1.0、2.0和3.0;友爱的人机交互界面;自界说组态及保存组态装备;支撑规范的ModbusTCP通讯协议;依据Dot Net4.0渠道,能够跨渠道运转;易与干流的SCADA软件渠道互连通讯。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/186615.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部