首页 基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文

基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文

举报
开通vip

基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文 本 科 生 毕 业 设 计 ,申请学士学位, 论文题目基于Modbus通信协议的智能仪表OPC服务器的开发 2012年5月20日 目 录 摘要 ..............................................................................................................................................1 Abst...

基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文
基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文 本 科 生 毕 业 设 计 ,申请学士学位, 论文题目基于Modbus通信协议的智能仪表OPC服务器的开发 2012年5月20日 目 录 摘要 ..............................................................................................................................................1 Abstract .........................................................................................................................................1 1 绪论 ..........................................................................................................................................2 1.1 课题的选题背景及意义.....................................................................................................2 1.2 OPC技术国内外发展现状.................................................................................................3 1.3 本课题主要研究内容 ........................................................................................................3 2 Modbus总线技术 .......................................................................................................................4 2.1 现场总线技术...................................................................................................................4 2.2 Modbus技术历史 .............................................................................................................4 2.3 Modbus通信协议 .............................................................................................................4 2.3.1 Modbus数据模型 ....................................................................................................4 2.3.2 Modbus地址参数表及通信结构...............................................................................5 2.3.3 Modbus 兼容分类 ...................................................................................................5 3 OPC技术 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 ............................................................................................................................6 3.1 OPC技术历史 ..................................................................................................................6 3.2 OPC技术规范 ..................................................................................................................6 3.3 COM技术 ........................................................................................................................7 3.4 OPC服务器数据访问方式.................................................................................................8 3.4.1 同步数据访问 .........................................................................................................8 3.4.2 异步数据访问 .........................................................................................................9 4 Modbus OPC数据访问服务器的实现 ..........................................................................................9 4.1 OPC服务器要求分析........................................................................................................9 4.1.1 OPC服务器结构框架 ..............................................................................................9 4.1.2 OPC服务器需要实现的功能 ................................................................................. 11 4.2 OPC服务器开发步骤...................................................................................................... 12 4.3 服务器组和项属性实现................................................................................................... 12 4.4 服务器与客户端传送机制 ............................................................................................... 13 4.4.1 服务器与客户端异步通报方式传送机制................................................................. 13 4.4.2 服务器与客户端连接点方式传送机制 .................................................................... 14 4.5 OPC对象和接口............................................................................................................. 15 5 OPC服务器的实验测试............................................................................................................ 15 结论 ............................................................................................................................................ 18 参考文献 ..................................................................................................................................... 18 附录1 OPC组件的部分实现代码 ................................................................................................. 19 附录2 实验设备及运行环境 ........................................................................................................ 21 致谢 ............................................................................................................................................ 22 滁州学院本科毕业设计 基于Modbus通信协议的智能仪表OPC服务器的开发 摘要: OPC(OLE for Process Control)是过程控制软硬件与基于Windows平台的应用程序之间的通 通道,它已经成为现代工业自动化控制领域的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,被广大厂商和用户所接受。Modbus通信协议信 是监控系统自动化设备的通信标准,可将Modbus报文信息传输于Internet中。随着Modbus技术和 OPC技术的发展,以及它们在工业领域中发挥的作用日益增加,研究基于Modbus的OPC数据访问 服务器成为了一个重要课题。 本课题在Modbus协议和OPC规范基础上,详细介绍了基于Modbus通信协议的OPC服务器的 原理和开发过程。具体论述了OPC技术优点;OPC传输的三种 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ---同步访问、异步访问、订阅 实现过程中的关键技术;以及服务器实现过程中的关键技术。 关键词:Modbus通信协议;OPC数据服务器;COM;智能仪表 OPC Server Development of Intelligent Instrument based on the Modbus Communication Protocol Abstract: OPC (OLE for Process Control) is a process control hardware and software based on Windows platform between the application program and the communication channel, it has become a modern industrial automation and control standards, by the vast number of manufacturers and users to accept. The communication protocol of Modbus is monitoring system automation equipment, communications standards, the Modbus can be message transmission in Internet. With the Modbus technology and OPC technology development, as well as in the industrial field play an increasing role, based on the Modbus OPC data access server becomes an important problem. This topic in the Modbus agreement and the OPC standard foundation, described in detail based on the communication protocol of Modbus OPC server principle and development process. Discusses the advantages of OPC technology; OPC transmission for three methods - synchronous access, asynchronous access, subscribe to realize the key technology in the process of server; and the realization of the key technology. Key words: Communication protocol of Modbus; OPC server; COM; Intelligent instrument 1 滁州学院本科毕业设计 1 绪论 1.1 课题的选题背景及意义 计算机在当今工业自动化控制领域中发挥着日益不可替代的作用,工业控制领域中各种智能仪 [1~3]表都提供了和计算机的通信协议。微电子技术和计算机技术的不断发展,引起了仪表结构的根本性变革,以微型计算机(单片机)为主体,将计算机技术和检测技术有机的结合,组成新一代“智能化仪表”,在测量过程自动化、测量数据处理及功能多样化方面与传统仪表的常规测量电路相比较,取得了巨大进展。智能仪表不仅能解决传统仪表不易或不能解决的问题,还能简化仪表电路,提高仪表的可靠性,更容易实现高精度、高性能、多功能的目的。随着科学技术的进一步发展,仪表的智能化程度将越来越高。智能仪表和智能传感器一般是用在现场总线系统中,这种仪表和传感器内部嵌入的有通信模块和控制模块,可以完成数据采集,数据处理和数据通信功能。使计算机控制系统成为最为方便的自动控制方法。但是在OPC出现之前,工业领域中用到的很多现场设备都存在上 [4~5]层软件和下层硬件不一致性的问题,对于不同厂商开发的不同设备都必须开发对应的驱动程序如图1-1,这样造成了极大的资源浪费和设备运用的局限性。而OPC出现之后的状况则完全改变如图1-2。OPC采用客户机-服务器结构,基于COM和DCOM技术为软硬件开发商提供了一套标准的接 [6~8]口。软硬件开发商只用编写一套接口程序就可以满足需要,大大的节约了成本。因此,OPC技术在几年内飞速发展并得到国际自动化领域厂商的广泛支持,各种OPC相关的产品也研发了出来,而设计一款基于Modbus通信协议的OPC服务器这个课题也就应运而生。 应用程序A 应用程序B 驱动器A 驱动器B 驱动器C 设备A 设备B 设备C 图1-1 OPC技术出现之前 应用程序A 应用程序B OPC客户端 OPC客户端 OPC服务器 OPC服务器 OPC服务器 设备A 设备B 设备C 图1-2 OPC技术出现之后 2 滁州学院本科毕业设计 1.2 OPC技术国内外发展现状 OPC是OPC基金会组织制定的一套工业控制领域的开放式标准。它的本质是采用了Microsoft公 [9]司的OLE/COM和DCOM技术,它包括自动化应用中使用的有一整套接口、属性和方法的标准。OPC规范定义了一个工业标准接口,这个标准使得COM技术使用于过程控制和制造自动化等应用领域。OPC建立在OLE规范之上,它为工业控制领域提供了一种公用的数据访问机制,具有语言无关 [10]性、代码重用性和易于集成性等优点。它使厂商不必再为不同的应用需求开发不同的驱动程序,避免了控制系统中同一设备的不同驱动程序同时访问设备时造成的冲突问题。OPC规范以OLE/DCOM为基础,而OLE/DCOM支持TCP/IP等网络协议,所以可以将各个子系统分开,分布于网络的不同节点上。OPC保证了软件对客户的透明性,使得用户完全从低层的开发中脱离出来。不管过程中采用什么软件或设备,OPC为它们提供了公共的接口和以下多种访问机制:(1)客户端和服务器位于同一台计算机上;(2)客户端和服务器位于不同的计算机上;(3)单个客户端和多个服务 [11]器通信;(4)多个客户端和单个服务器通信;(5)多个客户端和多个服务器通信。 国外OPC发展迅速,应用也很广泛,众多的厂家研发生产了种类众多的OPC产品,OPC基金会从成立开始会员逐年增加,到目前为止在全球范围内已有300多家公司加入了这个国际标准组织。同时由控制设备厂商和控制软件供应商提供的OPC产品也日益增加,目前已有600种以上的OPC服务器产品和OPC应用程序产品出现在由OPC基金会发行的OPC产品 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 上,促成OPC成为工业控制过程国际标准的地位。不过在国内OPC产品开发目前几乎还是空白,只有少数自动化软件和大型硬件厂商实现了OPC客户或OPC服务器功能,市场开拓还处于概念宣传阶段。由于欧美的OPC服务器价格 [12~13]比较昂贵,国内也只有极少数的大型自动化工程购买并应用了OPC产品。由于OPC标准的技术优势和发展前景,国内的众多自动化公司已经开始积极探索OPC技术的应用开发。 1.3 本课题主要研究内容 本课题主要研究的是Modbus通信协议和OPC服务器的相关内容。首先详细论述了Modbus协议的主要内容、历史和现场总线技术,介绍了Modbus数据模型、地址参数表、通信结构及兼容分类。接着分析了OPC的发展现状、COM技术、接口技术,讨论了OPC服务器的同步数据访问和异步数据访问方式,在此基础上对基于Modbus的OPC服务器的开发进行了深入的研究。研究重点是基于Modbus的OPC服务器的设计和实现。 各章节主要内容如下: 第一章:介绍选题背景和意义以及OPC的发展现状; 第二章:Modbus通信协议的技术历史和基本内容; 第三章:OPC服务器的技术规范和数据访问方式; 第四章:详细论述基于Modbus的OPC服务器的设计实现; 第五章:服务器的实验测试。 3 滁州学院本科毕业设计 2 Modbus总线技术 2.1 现场总线技术 现场总线技术是用于过程自动化、制造自动化等领域的现场智能设备相互通信的网络,它作为工业数字通信网络基础,沟通了生产过程现场及控制设备之间及其与更高控制管理层次之间的联系。它不仅是一个基层网络,而且还是一种开放式、新型全分布控制系统。这项以智能控制、数字通信等技术为主要内容的综合技术,已经受到世界范围的关注,成为自动化技术发展的焦点,并将导致自动化系统结构与设备的深刻变革。 2.2 Modbus技术历史 Modbus是由Modicon公司在1978年发明的,它拉开了工业网络的序幕,是一个跨时代、里程碑式的网络协议,他是第一个真正永业工业现场的总线协议,全球有超过800万个安装的节点,可见其普及的程度相当高,已经成为事实上的协议标准。它有以下三点成功之处: (1)开放性:用户可以放心的免费使用Modbus协议,不用缴纳费用,不会构成侵权; (2)支持多种电气接口:RS232,RS422、RS485等,可在双绞线、光缆、无线射频等介质上传送; (3)简单易懂:其格式帧是最为简单紧凑的协议,厂商开发简单,用户使用也方便。 2.3 Modbus通信协议 Modbus是电子控制器应用上的通用语言,通过此协议控制器之间、控制器通过网络和其他控制器之间可以通信。它主要针对单主站和多从站之间的通信规则作出约定,规定数据传输以帧为单位,将报文作为一帧数据,报文是由发送数据、发送地址、控制信息、校验信息按一定格式组成的数据单元。主站发送报文后,所有从站都会接收到报文,但只有主站发送的报文中包含寻址的从站才能执行报文操作,接着将操作结果返回给主站,如果主站发送了错误报文,从站会发送错误报告返回给主站。若主站未收到应答信息或者响应报文,会再次发送报文给从站。Modbus通信协议有两种模式分别为ASC?和RTU,数据量小的常用ASC?模式,通信数据量大而且是二进制时候用RTU规约。 2.3.1 Modbus数据模型 Modbus通信协议中,一般采用面向连接的方法,联网时经过建立连接、通信、释放链接三个步骤。在Modbus变量中可通过明确的“变成路径”性能获得,这种性能要求双方按照通信协议直到连接终止。“读写通用寄存器”功能码定义可指定一个32位寄存器地址,用户寄存器起始地址是十进制数表示的1,而不是像很多其他程序一样从0开始。 Modbus的数据模型主要基于以下四个表: 输入开关量 单个位,由I/O系统提供„„只读; 输出开关量 单个位,通过应用程序可变„„读写; 输入寄存器 16位量,由I/O体统提供„„只读; 输出寄存器 16位量,通过应用程序可变„„读写。 4 滁州学院本科毕业设计 2.3.2 Modbus地址参数表及通信结构 Modbus数据模型的基础是一系列区别不同类型参数的地址参数表,主要由以下四个参数表: 开关量型输入:来自I/O系统的只读型1位布尔型数据,地址范围10001-1FFFF; 开关量型输出:应用程序控制变化的可读可写型布尔型数据,地址范围00001-0FFFF; 输入寄存器:来自I/O系统的只读型16位数据,地址范围30001-3FFFF; 输出寄存器:由应用程序控制变化的可读可写型16位数据,地址范围40001-4FFFF。 Modbus通信结构如图2-1: Modbus 客户机串 行链路 ModbusModbus客户机客户机客户机TCP网关 TCP TCP Modbus TCP ModbusModbus客户机Modbus客Modbus客服务器服务器户机串行TCP网关 户机串行TCP TCP 链路 链路 Modbus串行链路 图2-1 Modbus通信结构图 2.3.3 Modbus兼容分类 Modbus采用兼容分类来避免与已有的系统发生冲突,它定义了0级和1级类,表示已经实现的 应用的交易模式,达到兼容旧系统的目的。2级类代表一些特殊的功能应用,此外还通过分类来识 别一些已经存在但不易解释实现的交易。 0级是所有服务器和客户端都必须实现的最小功能集。 读多个寄存器(功能03) 写多个寄存器(功能16) 1级是常用的附加功能,这些功能被客户端解释为输入输出的开关量和模拟量。 读线圈(功能01) 读离散量输入(功能02) 读输入寄存器(功能04) 写线圈(功能05) 5 滁州学院本科毕业设计 写单个寄存器(功能06) 读异常状态(功能07) 2级是一组常规应用于人机接口程序和监控程序中的数据传输功能。 写多个线圈(功能15) ) 读文件记录(功能20 写文件记录(功能21) 另外,如果过程发生状况,则由从机返回一组例外码,所有例外通过给请求的 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 码加0x80来发送信号,就是将最高位置一。例外响应包括不合法的函数,不合法的数据值,不合法的数据地址,不合法的响应长度,从机设备忙,无用的确认,存储奇偶错误,网关路径难以获得,网关目标设备不能响应等。 Modbus报文格式如图2-2所示。 Modbus TCP应用数据单元 MBAP报文头 功能码 数据 协议数据单元 图2-2 Modbus报文格式 3 OPC技术规范 3.1 OPC技术历史 早期的OPC规范是由5家工业软件制造商组成的OPC小组在1995年开发的,在1996年8月完成了OPC数据访问标准版本1.0。OPC基金会在1996年9月24日在美国达拉斯举行了第一次理事会,并在同年10月7日芝加哥的第一次全体大会上宣告成立。现在的OPC基金会的理事会是由Fisher-Rosement,Honeywell,Interllution,Rockwell,Software,National Instrument以及欧洲代表的Siemens和远东代表的东芝组成的。在日本为响应以美国中心的标准活动,于1996年6月开始基金会成立的准备,于1996年10月17日正式成立了日本的OPC基金会。与此同时欧洲也成立了自己的OPC基金会。中国也由5家公司作为发起人于2001年12月成立了中国OPC促进会。 3.2 OPC技术规范 OPC基金会制定了各种OPC规范,并且不断地进行升级和更新以便于适应日益变化发展的工业自动化领域。在设计OPC服务器或者相应程序时要按照规范去操作,以保证设备和程序的相互兼容性。 OPC规范包含以下几个方面: 6 滁州学院本科毕业设计 (1)OPC数据存取规范即数据访问标准; (2)OPC报警与事件规范即报警和事件的标准; (3)OPC历史数据存取规范即历史数据访问标准; (4)OPC批处理规范即批处理的标准; PC安全规范即安全性的标准; (5)O (6)OPC数据交换规范即服务器间数据交换的标准; (7)OPC_XML规范即过程数据的XML标准。 3.3 COM技术 COM是微软公司倡导的一个制定软件的方法,在COM的构架下可以开发出各式各样的功能专一的组件,然后按照需要将他们结合起来,构成复杂的应用系统。它可以随时为系统升级,只需将原系统中的组件用新的更换掉。一个组件也可以在多个应用系统中重复利用,还可以很方便的将应用系统至于网络之中。 COM的体系结构有COM的核心、统一数据传输、智能命名和持久存储。其中COM核心包括服务控制管理员、接口基、接口代理和COM库。其定义了COM对象与客户如何通过二进制标准接口进行交互的标准。COM本身预定义了一套通用接口,用来建立基于客户服务器结构的COM应用。接口是用于部件对象间作用的二进制标准,每个接口都包含了一系列函数,这些函数规定实现接口的对象和用户使用这些对象所遵循的协议,包含接口名、函数名、参数名及其类型。 下面简单介绍一下COM组件、COM对象和COM接口。COM组件在windows平台上可以是DLL文件或者EXE文件,组件为COM对象提供了活动空间,一个组件程序可以包含多个COM对象,COM对象用接口的方式提供服务,一个COM对象可以拥有多个COM接口。 COM支持的是面向对象的组件模型,COM组件提供给客户端的是以对象形式封闭起来的实体。客户端和COM组件程序交换数据的实体是COM对象,它无需在乎组件模块的名称和位置,但要知道和自己交互的COM对象是哪个,客户程序通过一个COM对象的全局标识符来创建和初始化对象,并不直接访问COM组件。 COM接口都是从IUnknown接口派生的,COM接口实现了二进制的内存结构。客户程序用指向接口数据结构的指针来调用接口函数,接口指针又指向另一个指针,这个指针指向虚函数表,虚函数表里面一项由4个字节长的函数指针组成,每一个接口的vtable是确定的,COM接口vtable的前三个指针是QueryInterface、AddRef、Release函数实现的地址,函数指针和对象的具体实现连接。客户只要获得了指针就可以调用到对象的实际功能。图3-1是接口的二进制内存结构: 7 滁州学院本科毕业设计 pVtable 虚函数表vtable 对象实现 指针接口pIX 指针 Queryinterface Queryinterface Addref Addref Release Release Fx Fx 图3-1 COM接口二进制内存结构 COM规范用128位全局唯一标识符GUID来标识COM对象和COM接口,标识的COM对象 为CLSID,标识的COM接口为IID。客户程序通过指定的CLSID进行对象的创建和初始化工作, 客户程序要使用COM对象的接口,它必须知道该接口的IID和接口成员函数。 3.4 OPC服务器数据访问方式 OPC数据访问有两种方式:同步访问和异步访问,下面分别介绍。 3.4.1 同步数据访问 方法调用开始 方法调用结束 OPC应用程序 时间 等待处理 空闲 调用处理 空闲 OPC服务器 时间 图3-2 同步数据访问过程 同步数据访问过程如图3-2所示,OPC服务器按照OPC客户端的要求把得到的数据访问结果作为方法参数返还给OPC客户端,OPC客户端在结果被返还之前必须处于等待状态。小批量的数据访问使用这个方法比较便捷,对于大批量的数据,就很占用OPC客户端的时间。在OPC数据存取规范中,同步数据访问方法是用IOPCSyncIO接口来实现,IOPCSyncIO接口有两个函数:Read和Write。根据OPC数据访问标准,不同的数据读取方式所需要的数据源有两种:从服务器数据缓冲区读取;二是从硬件设备直接读取。Read同步数据读取可以从数据缓冲区读取或者硬件设备直接读取,从数据缓冲区读取数据时受组和项状态的影响,Write同步写操作是直接向设备写数据。 8 滁州学院本科毕业设计 3.4.2 异步数据访问 方法调用结束 方法调用开始 事件发生 事件处理结果 时间 OPC应用程序 等待状通信 态 异步访问完调用异步访问处理调 空闲 成事件 空闲 方法 用 时间 OPC服务器 图3-3 异步数据访问过程 异步数据访问过程如图3-3所示,OPC服务器接收到OPC客户端要求后,检查了参数中的项的服务器句柄是否有效,然后将方法返回,OPC应用程序进行处理。当OPC服务器完成数据访问时,触发OPC应用程序异步访问的完成,将数据结果返回给OPC应用程序。 4 Modbus OPC数据访问服务器的实现 4.1 OPC服务器要求分析 本节主要介绍OPC服务器设计实现的主要功能和设计环境以及总体框架,初步构建起OPC服务器设计的基础。 4.1.1 OPC服务器结构框架 对于现代化生产来说,利用计算机监控系统实时监控现场设备的运行状态和数据对提高生产效率有非常大的帮助,上传来的数据可以作为参考来更改现场设备的运行参数也可快速的查找现场设备的故障原因,而OPC服务器就可以办得到这些。 基于Modbus的智能仪表OPC服务器可以实现向下和Modbus从设备的通信,向上可以将实时数据传输到OPC客户端。其结构如下图4-1所示: 9 滁州学院本科毕业设计 监控程序和其他上客 层应用程序 户 端 OPC客户端(接口) 服务器对象 Modbus OPC服务组对象 器 项对象 Modbus从设备 现场设备 PLC 图4-1 OPC服务器结构框架 从现场设备读取回来的数据通过Modbus协议工业以太网以数据帧的形式传到OPC服务器,经过服务器的处理再通过OPC接口上传到OPC客户端,这样就完成了远程监控现场设备运作状态的过程。 现在简介一下OPC服务器关键模块管理模块的设计理念。管理模块主要处理通道的定义、标签组、标签和逻辑设备的定义、物理设备向通道和逻辑设备的映射、物理设备数据点与OPC Item的映射关系等方面的设备和数据点的管理功能。OPC服务器接口接收到客户端的请求后也必须利用管理模块提供请求的OPC Item对应的物理设备数据点的信息。其数据点监视功能使通信模块在客户端界面上实现对设备数据点的读写。 如图4-2所示,它包含通道定义、Modbus从设备映射、数据点映射、模拟变量变换和数据点在线监视五个模块。 10 滁州学院本科毕业设计 管理模块 数Mo模据dbu数通拟点s从据道变设在点定量备线映义变监映射模换射视模块 模模模块 块 块 块 图4-2 管理模块结构 通道定义模块是与远程Modbus服务器的连接属性的设置。通道由IP地址、IP端口和连接超时值组成。对于每一个IP地址、IP端口必须定义唯一一个通道,这样连接到网络上的设备就可以利用这些信息连接到确定的唯一的OPC服务器的物理设备。 Modbus从设备映射模块主要功能是将物理设备的信息映射到相应的逻辑设备和通道之中。 数据点映射模块将设备数据点直接映射为管理模块的标签,而标签包含有的信息有:设备数据点具体的地址、储存区类型、数据类型和读取权限。OPC项代表了到数据源的连接,相当于一个指针,指向它所对应的标签,通过标签的信息完成连接。 物理设备中的模拟变量是以整数或者浮点数的形式读出的,可是这些值只是存储区内的一个相对量,模拟变量模块可以将它们经过比例变换成为有意义的物理值,还需要定义物理单位、死区、上溢下溢范围等信息。 数据点在线监视模块提供了设备数据点的读取功能,让服务器用户界面可以实现数据点数值的在线读取和写入。 4.1.2 OPC服务器需要实现的功能 在OPC规范中可以总结出OPC服务器应该实现的几项基本功能,OPC服务器要与客户端实现连接,数据传输必须要有这些功能。首先OPC服务器要在客户端需要的时候提供本地连接,以便于客户端需要连接OPC服务器的时候,OPC服务器能够被找到,能够给客户端提供必要的接口。同时需要OPC服务器支持Modbus通信协议,不需要任何额外的驱动程序,在和Modbus从设备通信的时候不需要为每个通信设备提供不同的驱动程序;然后OPC服务器需要提供IOPCServer、IOPCItemMgt、IOPCCGroupStateMgt、IOPCSyncIO等接口的实现,只有实现了这些接口,客户端才能够通过该接口实现添加删除服务器的组对象,对组对象进行管理。而且无论是本机还是远程客户端都能访问服务器,支持了远程启动,即使服务器不在运行状态,只要有客户端访问服务器,服务器能够自行启动。 11 滁州学院本科毕业设计 下面是OPC服务器的几个基本概念: (1)设备:指连接到OPC服务器的硬件设施(如PLC),对于Modbus OPC服务器来说,设 备是指Modicon或者其他第三方Modbus兼容硬件。设备包含事务处理超时时间、连接类型等 信息; (2)通道:通道为OPC服务器提供连接到硬件设备的物理连接的信息; (3)标签组:提供一种将标签成组的方法,用于生成地址空间的。标签组可以让浏览标签的 客户端分层次的仔细查看标签; (4)标签:标签用于在OPC服务器中映射目标硬件数据点。它的名称可以取代PLC的以数字 表示的寄存器。 4.2 OPC服务器开发步骤 (1)定义OPC数据服务器的名称和类标识,然后根据规范对各个接口ID进行定义; (2)实现OPC数据服务器类厂对象,创建OPC服务器对象; (3)设计OPC对象。首先通过继承IUnknown类派生出OPCServer,OPCGroup和OPCItem 3个类,分别对应OPC服务器对象,组对象和项对象,并重载IUnknown类中的接口查询和引用计数函数。然后将OPC基金会网站上提供的相应的头文件添加到工程中,通过继承这些接口派生出新的接口类实现每个接口的成员函数。在OPCServer和OPCGroup类中增加指向相应接口类的指针成员变量,接着修改接口查询函数。当客户程序查询某一接口时,实例化接口类,并返回接口指针变量, 客户程序再通过该接口指针进一步调用接口成员函数; (4)数据存储区的设计。由于OPC服务器要对底层硬件进行读写操作,又要通过OPC接口与客户程序进行交互,所以对数据存储区的操作需要采用多线程模型,以保证数据存取的效率。为避免不同线程同时对数据区中的数据进行操作,须考虑对临界区的互斥控制; (5)界面设计。可以设计类似Windows中资源管理器的用户界面,将各数据项用树型结构表示然后设计数据项和硬件的设置界面,并与数据存储区和硬件接口联系起来,实现相应的组态功能。在OPC服务器程序关闭时,需要将数据项的属性以及硬件设置参数作为组态文件保存起来,而在程序运行时能自动调入组态文件完成初始设置; (6)根据硬件的种类和特性,自行开发驱动程序,或者调用硬件厂商提供的I/ODLL实现对现场设备进行设置以及数据存取的功能; (7)获取OPC标准组件并在服务器上注册,然后利用OPC客户端程序连接OPC服务器进行测试。 4.3 服务器组和项属性实现 每个组有两个I/O接口:同步和异步接口。每个接口有读、写两种函数。同步函数在执行I/O操作时,会阻塞当前进程。同步读函数可以指定是读缓存还是读设备,过程如下:读缓存用于服务器立即得到最近的数据,而不执行一个较慢的I/O操作。如果项是不活动的,则返回一个坏的品质。读设备强迫服务器从所连的设备读取数据。因为这种方法较慢,它通常作诊断用。 12 滁州学院本科毕业设计 同步写函数总是把数据写到设备上,返回完成状态给OPC客户。同步读写函数独立于数据连接通知。异步函数包括读、写、刷新和取消。像同步读写函数一样,异步读写函数也可以操作多个项不同的是异步函数请求动作,并且立即返回。一个独立的线程按照先后顺序处理这些操作,操作结果按请求登记顺序通过连接点通知OPC客户。读函数引起所有的请求数据返回,这个函数是独立于变化驱动通知的。异步写函数通过连接点返回给OPC客户的是I/O函数操作完后的状态。异步刷新函数仅仅影响变化驱动通知,刷新函数本质上强行更新指定项,而不管最近的改变是否通知了OPC客户。返回给OPC客户的是最近的值。品质是OPC数据必要的选项,服务器用品质来表示数据不可靠或坏的。 句柄是组和项的一个属性。组和项都有客户句柄和服务器句柄,客户句柄被OPC客户分配与一个对象关联,服务器在相关操作中返回这个句柄,通过句柄来识别这个对象。例如,当数据返回时,组的句柄在结构的头部,项的句柄与数据相关。OPC客户通过这种风格来分配句柄使自己工作更有效率。句柄是一个普通的数据结构、一个索引或偏移量,服务器通过句柄来联系项。OPC客户在任何操作中,通过传送句柄来向服务器表示项。服务器也采用 OPC客户一样的方法来分配句柄。 4.4 服务器与客户端传送机制 OPC规范发展到目前为止,针对服务器与客户端的数据传送共提出了两种方法,分别是异步数据通报和连接点方式。其中异步数据通报方式应用于符合OPC规范1.0版本要求的服务器中,连接点方式用于符合OPC规范2.0版本要求的服务器中。OPC服务器与客户端数据传送机制是整个OPC服务器开发过程中的关键技术,下面对这两种数据传递方式分别进行讨论。 4.4.1 服务器与客户端异步通报方式传送机制 通过异步通报方式传送数据时,客户端需要实现IAdviseSink接口,服务器端需要实现IDataObject接口。IAdviseSink接口和IDataObject接口都由COM库定义。 IAdviseSink接口用于接收异步通报。异步报有3种类型:复合文档、数据变化和视区变化IAdviseSink的实现者可以根据实际需要让IAdvieSink接收一种或多种类型的异步通报,IAdvieSink的每一种方法是对应于一种特定通报的回函数。当触发异步通报发送的条件满足后,发送报的程序调用合适的IAdviseSink方法。IDataObject接口它用于处理数据变化通报,因而只实现了IDataObject的DAdvise方法和DUnadvise方法。DAdvise函数用于建立双向通信机制,客户程序调用此函数,以便在客户程序的通报接收器和对象之间建立一个通报连接,以后当对象中的据发生变化时,它可以通知客户程序的接收器DUnadvise函数用于取消通报连接。 下面简单介绍下一步操作流程:在OPC中,数据传输是以组为单位进行的在实现异步操作前,客户和服务器之间必须以组为单位建立连接,这个连接是由客户调用服务器的IDataObject接口中的 DAdvise函数建立的。建立好后,在服务器方将保存客户的IAdviseSink接口当需要传输数据时,就使用客户方的IAdviseSin接口向客户传输数据。具体的连接流程: (1)OPC客户调用CoCreateInstance函数创建服务器对象,获得其接口指针,客户就可以利用该指针直接调用接口成员函数。在服务器端为客户生成一个OPCServer对象; 13 滁州学院本科毕业设计 (2)用户调用服务器实现的IOPCServer::Ad2dGroup()函数添加组; (3)客户调用服务器实现的IOPCSeEver::Ad2dltem()函数添加项; (4)客户生成一个IAdviseSink对象; (5)客户调用服务器端实现的DAdvise函数,与服务器建立连接。服务器在OPCGroup对象中 保存客户的IAdviseSink对象和数据格式; (6)客户调用服务器IOPCASyncIO发出读/写操作,服务器给相应组和项做异步读/写标记; (7)服务器向通道发送命令,等待命令返回; (8)服务器接收通道的读/写结果,给与通道对应的OPC项置读/写完成标记; (9)服务器中建有定时器,该定时器定时扫描OPC项的异步操作标记当发现标记为完成时,调用IOPCDataObject中保存的客户的IAdviseSink对象的OnDataChange函数,把项的数据传输给客户,然后给项的标记复位客户在OnDataChange 函数中,按照约定的数据格式,获得异步操作的结果。 4.4.2 服务器与客户端连接点方式传送机制 一般情况下,服务器组件提供的接口都是入接口,即组件处于被动状态,等待客户的请求、然后做出相应的反应。这样的结构常常不能满足实际的要求,组件对象也要主动的与客户进行通信,所以这就要求对象能够提供出接口。如果一个COM对象支持一个或者多个出接口,我们就称这样的对象为可连接对象。可连接对象管理所有的出接口。对应每一个出接口,可连接对象管理了一个称为连接点的对象,客户通过连接点对象建立接收器与可连接对象的连接。图4-3就是连接点机制的具体描述: IUnknown 客户端把接收器的 客户 接口指针传给对象 可连接对象 接收器(客户) 可连接对象调用接 收器的接口成员 图4-3 连接点机制结构描述 如果客户要使用连接点,接收器对象中就必须实现IUnknown接口和服务器的输出接口。客户程序开始运行后,通过可连接对象接口查询自己的接口指针,若OPC服务器提供了该接口的实现,那么客户就调用该接口的Advise方法,把在接收器中实现的IUnknown接口指针传送给服务器。服务器接着获得输出接口的指针。所以服务器需要向客户端发送数据的时候就可以调用输出接口的方法。 14 滁州学院本科毕业设计 4.5 OPC对象和接口 OPC对象是OPC服务器程序与客户程序进行交互的部分,需要与数据存储区和硬件驱动部分相联系,以便获取数据区中的数据或直接访问硬件设备。实施步骤分为以下几个部分: (1)继承OPC规范中定义的OPCServer类OPCGroup类和OPCItem类,实现其接口成员函数。首先从OPC基金会定义的组对象接口派生出新的接口类并实现其成员函数的功能,然后增加指针成员变量指向这些接口类。最后在组对象的接口查询函数中增加实例化接口类的代码。OPC项表示了与数据源的连接,数据源可以是程序数据区中的数据项,也可以是某个硬件设备中的数据。OPC项没有自己的接口,无需实现任何接口功能,只需增加相应的功能函数(如根据OPC项的名称与数据源进行连接、读/写数据源等)。OPC客户程序将通过OPC组对象的接口函数来间接调用OPC项的这些成员函数; (2)定义OPC数据服务器的名称和类标识。由于服务器对象是一个由客户程序调用的COM对象,因此需要定义一个类标识。类标识可用VC程序自动产生,这样能够保证生成的类标识是唯一的。然后根据规范对各个接口ID进行定义; (3)实现OPC数据服务器类厂对象。在COM规范中,客户程序是通过类厂创建COM对象并返回其接口指针的,因此需要为CMyServer类设计相应的类厂。具体实现时先从IClassFactory基类 然后重载Create2Instance()成员函数,通过该函数创建CMyServer派生出MyOPCClassFactory类, 服务器对象; (4)将OPC对象设计的头文件和实现文件添加到工程中。接着在应用程序类的初始化函数中完成COM库初始化、类厂注册等功能。当客户程序建立连接时,通过类厂注册服务器程序并实例化一个服务器对象传递给客户程序。 5 OPC服务器的实验测试 (1)同步实例界面,实现了启动、停止服务器,同步读写操作,并回复操作结果,如图5-1所示。 15 滁州学院本科毕业设计 图5-1 同步实例界面 (2)服务器界面,主窗口是OPC服务器程序的起点,主要完成OPC服务器的初始化。主窗口是所有界面元素的组织容器,主要包含设备地址、设备树形列表、标签列表。测试中成功将数据转换为模拟量TAG_I0-TAG_I9,它们分别对应了不同的数值但拥有相同的质量如图5-2所示。 图5-2 服务器界面 (3)设备属性,可以设置具体到一台设备的相关参数,如IP地址、端口号、设备号、网关设备、超时时间、消息周期等等,如图5-3所示。 16 滁州学院本科毕业设计 图5-3 设备属性 (4)添加组,在图5-4所示的指定的服务器里面添加分组并将其命名的操作。 图5-4 添加组 (5)标签属性,在图5-5所示设定指定标签的名称、描述、地址、寄存器及数据类型等相关操作。 图5-5 标签属性 17 滁州学院本科毕业设计 结论 本文所开发的OPC服务器,实现了与客户端的连接,并且可以实现添加或者删除组和项的操作,经过测试基本拥有了OPC服务器作为工业通用数据访问服务器的功能,实现了OPC规范中所规定的访问机制和Modbus/TCP标准规范中的功能。但测试中发现以下几个问题: (1)频繁的启动停止服务器时,偶尔出现不能打开的情况; (2)在数据量过大时候转换不出模拟量; (3)时间戳部分偶尔出现时间错误。 由于现场设备和本人水平有限,对于以上几点缺陷没有进行有效的开发,有待以后的研究。通过本次毕业设计,我感到自己应用基础知识及专业知识解决问题的能力有了很大的提高,并且这次毕业设计的选题,是一个很实际的课题,因此,在我即将工作之前,它是一次重要演练。我想,通过这次毕业设计,到了工作单位后,我将能够更快的适应工作岗位和工作要求。我对自己充满信心。 参考文献 [1] 蒋近, 毛六平, 戴瑜兴. 基于Modbus协议的OPC服务器的YF发与研究[J]. 湖南工程学院学报, 2005, 6(1): 56-58. [2] 马增良, 兰斌. OPC 数据访问服务器实现机制研究[J]. 计算机工程与应用, 2003, 39(21): 65-67. [3] 李勤, 党选举, 向荣. 基于COM的OPC技术的研究和实现[J]. 微计算机信息, 2002, 22(16): 18-22. [4] 林跃. OPC数据服务器开发工具研究与实现[J]. 自动化仪表, 2001, 22(9): 7-13. [5] 郭红晓, 莫德举. OPC技术及其软件的开发[J]. 北京化工大学学报(自然科学版), 2002, 29(3): 72- 73, 78. [6] 冯波, 陈子明, 王伟杰, 等. OPC技术及其在工业过程控制中的作用[J]. 中山大学学报, 2002, 22(3): 169-171. [7] 殷卫兵, 等. OPC数据服务器分析及程序开发[J]. 化工自动化及仪表, 2003, 30(5): 41-45. [8] 潘洪跃. 基于Modbus协议通信的设计与实现[J]. 计量技术, 2002, 33(4): 35-36. [9] Vincent. Interface between OPC server and OPC application program [J]. Industrial automation, 2005, 14(7): 21-26. [10] Martin. The role of OPC in industrial automation[J]. Intelligent control, 2001, 8(7): 11-13. [11] 马龙华, 段建民. OPC数据存取规范的研究和应用[J]. 化工自动化及仪表, 2002, 29(1): 43-45. [12] 傅春霞, 段建民. OPC服务器的研究及在CAN总线系统中的实现[J]. 微计算机信息(测控自动化), 2003, 19(11): 8-10. [13] 张国忠, 等. 电力监控模块OPC驱动程序的实现[J]. 武汉大学学报, 2002, 35(2) :54-58. 18 滁州学院本科毕业设计 附录1 OPC组件的部分实现代码 //声明工具包的函数 extern HMODULE hLibrary; extern CREATESERVER CreateServer; extern FREESERVER FreeServer; extern SETSERVERSTATE SetServerState; extern SETVERSIONINFO SetVersionInfo; extern ACTIVECODE ActiveCode; extern SHUTDOWN shutDown; extern REGSERVER RegServer; extern UNREGSERVER UnregServer; extern REGTAG RegTag; extern REGTAGEX RegTagEx; extern UNREGTAG UnregTag; extern SETTAGQUALIFIER SetTagQualifier; extern ADDTAGPROPERTY AddTagProperty; extern ADDTAGPROPERTYEX AddTagPropertyEx; extern SETTAGPROPERTY SetTagProperty; extern UPDATETAGWITHTIMESTAMP UpdateTagWithTimeStamp; extern UPDATETAG UpdateTag; extern SETWRITECALLBACK SetWriteCallback; extern SETWRITECALLBACKEX SetWriteCallbackEx; extern SETREADCALLBACK SetReadCallback; extern SETREADCALLBACKEX SetReadCallbackEx; extern SETSERVERNOTIFY SetServerNotify; extern SETGROUPNOTIFY SetGroupNotify; extern SETITEMNOTIFY SetItemNotify; extern SETTAGNOTIFY SetTagNotify; extern SETLOGNOTIFY SetLogNotify; //读写回调函数类型的声明 extern void __stdcall ReadCallback(DWORD handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError); extern void __stdcall WriteCallback(DWORD handle,VARIANT pNewValue,DWORD* pDeviceError); //初始化和反初始化设置函数声明 extern BOOL InitOPCDef(); extern BOOL FreeOPCDef(); 服务器通知函数声明 extern void __stdcall ServerNotify(DWORD handle, WORD wOperate); 19 滁州学院本科毕业设计 //对OPC服务器的描述进行定义。 (const LPCSTR OPCClsID ="{6E751971-72F1-439F-A6BE-0586D0F86860}";//定义类标识 const LPCSTR OPCProgID="OPC.ASVCDEMO.1";//定义OPC服务器的名称 const LPCSTR OPCDescr =" Agilewill co.ltd"; extern CWnd* m_WND;) 在程序文件DASVR.cpp中,添加代码定义如下函数:读写回调函数 void __stdcall ReadCallback(DWORD handle,VARIANT* pNewValue,WORD* Quality, FILETIME* ft, DWORD* pDeviceError) { long I; *pDeviceError=-1; for(I=0;I<=TagCount;I++) { if(TagList[I].hHWND==handle) { *pNewValue= TagList[I].vValue; *Quality= TagList[I].lQuality; *ft=TagList[I].ft; *pDeviceError=0; break; } } } void __stdcall WriteCallback(DWORD handle,VARIANT pNewValue,DWORD* pDeviceError) { long I; FILETIME ft; *pDeviceError=-1; GetSystemTimeAsFileTime(&ft); for(I=0;I<=TagCount;I++) { if(TagList[I].hHWND==handle) { TagList[I].vValue=pNewValue; TagList[I].lQuality=186; TagList[I].ft= ft; UpdateTagWithTimeStamp(TagList[I].hHWND,TagList[I].vValue,TagList[I].lQuality,TagList[I].ft); m_WND->SendMessage(1088); *pDeviceError=0; 20 滁州学院本科毕业设计 break; } } } 反初始化设置函数 BOOL FreeOPCDef() { if(!hLibrary) { return FreeLibrary(hLibrary); } else return true; } 服务器通知函数 void __stdcall ServerNotify(DWORD Handle, WORD wOperate) { if(wOperate==0) { ServerCount++; } else ServerCount--; if (ServerCount==0) { m_WND->CloseWindow(); m_WND->DestroyWindow(); } } 附录2 实验设备及运行环境 序号 名称 数量 型号/版号 电脑 一台 华硕S81 1 操作系统 一套 2 Windows XP 应用软件 一套 3 Visual C++6.0 三相智能电压表 一台 MMC系列 4 21 滁州学院本科毕业设计 致 谢 在论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感谢我的论文指导老师汪先兵老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。同时也要感谢机电学院S512实验室的实验员老师,尽最大的努力为我们的实验提供了必要器材。在此向帮助和指导过我的各位老师表示最衷心的感谢。 感谢这篇论文所涉及到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。 感谢我的同学和朋友,在我写论文的过程中给予我了很多理论素材,还在论文的撰写和排版的过程中提供热情的帮助。 由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正~ 22
本文档为【基于Modbus通信协议的智能仪表OPC服务器的开发_毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_591137
暂无简介~
格式:doc
大小:138KB
软件:Word
页数:0
分类:工学
上传时间:2017-10-11
浏览量:33