精品基于Modbus通信协议的智能仪表OPC服务器的开发毕业论文设计.docx
《精品基于Modbus通信协议的智能仪表OPC服务器的开发毕业论文设计.docx》由会员分享,可在线阅读,更多相关《精品基于Modbus通信协议的智能仪表OPC服务器的开发毕业论文设计.docx(25页珍藏版)》请在冰豆网上搜索。
精品基于Modbus通信协议的智能仪表OPC服务器的开发毕业论文设计
本科生毕业设计
(申请学士学位)
论文题目基于Modbus通信协议的智能仪表OPC服务器的开发
作者姓名程龙
所学专业名称自动化
指导教师汪先兵
2012年5月20日
学生:
(签字)
论文答辩日期:
2012年5月26日
指导教师:
(签字)
目录
摘要1
Abstract1
1绪论2
1.1课题的选题背景及意义2
1.2OPC技术国内外发展现状3
1.3本课题主要研究内容3
2Modbus总线技术4
2.1现场总线技术4
2.2Modbus技术历史4
2.3Modbus通信协议4
2.3.1Modbus数据模型4
2.3.2Modbus地址参数表及通信结构5
2.3.3Modbus兼容分类5
3OPC技术规范6
3.1OPC技术历史6
3.2OPC技术规范6
3.3COM技术7
3.4OPC服务器数据访问方式8
3.4.1同步数据访问8
3.4.2异步数据访问9
4ModbusOPC数据访问服务器的实现9
4.1OPC服务器要求分析9
4.1.1OPC服务器结构框架9
4.1.2OPC服务器需要实现的功能11
4.2OPC服务器开发步骤12
4.3服务器组和项属性实现12
4.4服务器与客户端传送机制13
4.4.1服务器与客户端异步通报方式传送机制13
4.4.2服务器与客户端连接点方式传送机制14
4.5OPC对象和接口15
5OPC服务器的实验测试15
结论18
参考文献18
附录1OPC组件的部分实现代码19
附录2实验设备及运行环境21
致谢22
基于Modbus通信协议的智能仪表OPC服务器的开发
摘要:
OPC(OLEforProcessControl)是过程控制软硬件与基于Windows平台的应用程序之间的通信通道,它已经成为现代工业自动化控制领域的标准,被广大厂商和用户所接受。
Modbus通信协议是监控系统自动化设备的通信标准,可将Modbus报文信息传输于Internet中。
随着Modbus技术和OPC技术的发展,以及它们在工业领域中发挥的作用日益增加,研究基于Modbus的OPC数据访问服务器成为了一个重要课题。
本课题在Modbus协议和OPC规范基础上,详细介绍了基于Modbus通信协议的OPC服务器的原理和开发过程。
具体论述了OPC技术优点;OPC传输的三种方法---同步访问、异步访问、订阅实现过程中的关键技术;以及服务器实现过程中的关键技术。
关键词:
Modbus通信协议;OPC数据服务器;COM;智能仪表
OPCServerDevelopmentofIntelligentInstrumentbasedontheModbusCommunicationProtocol
Abstract:
OPC(OLEforProcessControl)isaprocesscontrolhardwareandsoftwarebasedonWindowsplatformbetweentheapplicationprogramandthecommunicationchannel,ithasbecomeamodernindustrialautomationandcontrolstandards,bythevastnumberofmanufacturersanduserstoaccept.ThecommunicationprotocolofModbusismonitoringsystemautomationequipment,communicationsstandards,theModbuscanbemessagetransmissioninInternet.WiththeModbustechnologyandOPCtechnologydevelopment,aswellasintheindustrialfieldplayanincreasingrole,basedontheModbusOPCdataaccessserverbecomesanimportantproblem.
ThistopicintheModbusagreementandtheOPCstandardfoundation,describedindetailbasedonthecommunicationprotocolofModbusOPCserverprincipleanddevelopmentprocess.DiscussestheadvantagesofOPCtechnology;OPCtransmissionforthreemethods-synchronousaccess,asynchronousaccess,subscribetorealizethekeytechnologyintheprocessofserver;andtherealizationofthekeytechnology.
Keywords:
CommunicationprotocolofModbus;OPCserver;COM;Intelligentinstrument
1绪论
1.1课题的选题背景及意义
计算机在当今工业自动化控制领域中发挥着日益不可替代的作用,工业控制领域中各种智能仪表都提供了和计算机的通信协议[1~3]。
微电子技术和计算机技术的不断发展,引起了仪表结构的根本性变革,以微型计算机(单片机)为主体,将计算机技术和检测技术有机的结合,组成新一代“智能化仪表”,在测量过程自动化、测量数据处理及功能多样化方面与传统仪表的常规测量电路相比较,取得了巨大进展。
智能仪表不仅能解决传统仪表不易或不能解决的问题,还能简化仪表电路,提高仪表的可靠性,更容易实现高精度、高性能、多功能的目的。
随着科学技术的进一步发展,仪表的智能化程度将越来越高。
智能仪表和智能传感器一般是用在现场总线系统中,这种仪表和传感器内部嵌入的有通信模块和控制模块,可以完成数据采集,数据处理和数据通信功能。
使计算机控制系统成为最为方便的自动控制方法。
但是在OPC出现之前,工业领域中用到的很多现场设备都存在上层软件和下层硬件不一致性的问题[4~5],对于不同厂商开发的不同设备都必须开发对应的驱动程序如图1-1,这样造成了极大的资源浪费和设备运用的局限性。
而OPC出现之后的状况则完全改变如图1-2。
OPC采用客户机-服务器结构,基于COM和DCOM技术为软硬件开发商提供了一套标准的接口。
软硬件开发商只用编写一套接口程序就可以满足需要,大大的节约了成本[6~8]。
因此,OPC技术在几年内飞速发展并得到国际自动化领域厂商的广泛支持,各种OPC相关的产品也研发了出来,而设计一款基于Modbus通信协议的OPC服务器这个课题也就应运而生。
图1-1OPC技术出现之前
图1-2OPC技术出现之后
1.2OPC技术国内外发展现状
OPC是OPC基金会组织制定的一套工业控制领域的开放式标准。
它的本质是采用了Microsoft公司的OLE/COM和DCOM技术,它包括自动化应用中使用的有一整套接口、属性和方法的标准[9]。
OPC规范定义了一个工业标准接口,这个标准使得COM技术使用于过程控制和制造自动化等应用领域。
OPC建立在OLE规范之上,它为工业控制领域提供了一种公用的数据访问机制,具有语言无关性、代码重用性和易于集成性等优点[10]。
它使厂商不必再为不同的应用需求开发不同的驱动程序,避免了控制系统中同一设备的不同驱动程序同时访问设备时造成的冲突问题。
OPC规范以OLE/DCOM为基础,而OLE/DCOM支持TCP/IP等网络协议,所以可以将各个子系统分开,分布于网络的不同节点上。
OPC保证了软件对客户的透明性,使得用户完全从低层的开发中脱离出来。
不管过程中采用什么软件或设备,OPC为它们提供了公共的接口和以下多种访问机制:
(1)客户端和服务器位于同一台计算机上;
(2)客户端和服务器位于不同的计算机上;(3)单个客户端和多个服务器通信;(4)多个客户端和单个服务器通信;(5)多个客户端和多个服务器通信[11]。
国外OPC发展迅速,应用也很广泛,众多的厂家研发生产了种类众多的OPC产品,OPC基金会从成立开始会员逐年增加,到目前为止在全球范围内已有300多家公司加入了这个国际标准组织。
同时由控制设备厂商和控制软件供应商提供的OPC产品也日益增加,目前已有600种以上的OPC服务器产品和OPC应用程序产品出现在由OPC基金会发行的OPC产品目录上,促成OPC成为工业控制过程国际标准的地位。
不过在国内OPC产品开发目前几乎还是空白,只有少数自动化软件和大型硬件厂商实现了OPC客户或OPC服务器功能,市场开拓还处于概念宣传阶段。
由于欧美的OPC服务器价格比较昂贵,国内也只有极少数的大型自动化工程购买并应用了OPC产品[12~13]。
由于OPC标准的技术优势和发展前景,国内的众多自动化公司已经开始积极探索OPC技术的应用开发。
1.3本课题主要研究内容
本课题主要研究的是Modbus通信协议和OPC服务器的相关内容。
首先详细论述了Modbus协议的主要内容、历史和现场总线技术,介绍了Modbus数据模型、地址参数表、通信结构及兼容分类。
接着分析了OPC的发展现状、COM技术、接口技术,讨论了OPC服务器的同步数据访问和异步数据访问方式,在此基础上对基于Modbus的OPC服务器的开发进行了深入的研究。
研究重点是基于Modbus的OPC服务器的设计和实现。
各章节主要内容如下:
第一章:
介绍选题背景和意义以及OPC的发展现状;
第二章:
Modbus通信协议的技术历史和基本内容;
第三章:
OPC服务器的技术规范和数据访问方式;
第四章:
详细论述基于Modbus的OPC服务器的设计实现;
第五章:
服务器的实验测试。
2Modbus总线技术
2.1现场总线技术
现场总线技术是用于过程自动化、制造自动化等领域的现场智能设备相互通信的网络,它作为工业数字通信网络基础,沟通了生产过程现场及控制设备之间及其与更高控制管理层次之间的联系。
它不仅是一个基层网络,而且还是一种开放式、新型全分布控制系统。
这项以智能控制、数字通信等技术为主要内容的综合技术,已经受到世界范围的关注,成为自动化技术发展的焦点,并将导致自动化系统结构与设备的深刻变革。
2.2Modbus技术历史
Modbus是由Modicon公司在1978年发明的,它拉开了工业网络的序幕,是一个跨时代、里程碑式的网络协议,他是第一个真正永业工业现场的总线协议,全球有超过800万个安装的节点,可见其普及的程度相当高,已经成为事实上的协议标准。
它有以下三点成功之处:
(1)开放性:
用户可以放心的免费使用Modbus协议,不用缴纳费用,不会构成侵权;
(2)支持多种电气接口:
RS232,RS422、RS485等,可在双绞线、光缆、无线射频等介质上传送;
(3)简单易懂:
其格式帧是最为简单紧凑的协议,厂商开发简单,用户使用也方便。
2.3Modbus通信协议
Modbus是电子控制器应用上的通用语言,通过此协议控制器之间、控制器通过网络和其他控制器之间可以通信。
它主要针对单主站和多从站之间的通信规则作出约定,规定数据传输以帧为单位,将报文作为一帧数据,报文是由发送数据、发送地址、控制信息、校验信息按一定格式组成的数据单元。
主站发送报文后,所有从站都会接收到报文,但只有主站发送的报文中包含寻址的从站才能执行报文操作,接着将操作结果返回给主站,如果主站发送了错误报文,从站会发送错误报告返回给主站。
若主站未收到应答信息或者响应报文,会再次发送报文给从站。
Modbus通信协议有两种模式分别为ASCⅡ和RTU,数据量小的常用ASCⅡ模式,通信数据量大而且是二进制时候用RTU规约。
2.3.1Modbus数据模型
Modbus通信协议中,一般采用面向连接的方法,联网时经过建立连接、通信、释放链接三个步骤。
在Modbus变量中可通过明确的“变成路径”性能获得,这种性能要求双方按照通信协议直到连接终止。
“读写通用寄存器”功能码定义可指定一个32位寄存器地址,用户寄存器起始地址是十进制数表示的1,而不是像很多其他程序一样从0开始。
Modbus的数据模型主要基于以下四个表:
输入开关量单个位,由I/O系统提供……只读;
输出开关量单个位,通过应用程序可变……读写;
输入寄存器16位量,由I/O体统提供……只读;
输出寄存器16位量,通过应用程序可变……读写。
2.3.2Modbus地址参数表及通信结构
Modbus数据模型的基础是一系列区别不同类型参数的地址参数表,主要由以下四个参数表:
Modbus通信结构如图2-1:
图2-1Modbus通信结构图
2.3.3Modbus兼容分类
Modbus采用兼容分类来避免与已有的系统发生冲突,它定义了0级和1级类,表示已经实现的应用的交易模式,达到兼容旧系统的目的。
2级类代表一些特殊的功能应用,此外还通过分类来识别一些已经存在但不易解释实现的交易。
0级是所有服务器和客户端都必须实现的最小功能集。
读多个寄存器(功能03)
写多个寄存器(功能16)
1级是常用的附加功能,这些功能被客户端解释为输入输出的开关量和模拟量。
读线圈(功能01)
读离散量输入(功能02)
读输入寄存器(功能04)
写线圈(功能05)
写单个寄存器(功能06)
读异常状态(功能07)
2级是一组常规应用于人机接口程序和监控程序中的数据传输功能。
写多个线圈(功能15)
读文件记录(功能20)
写文件记录(功能21)
另外,如果过程发生状况,则由从机返回一组例外码,所有例外通过给请求的函数码加0x80来发送信号,就是将最高位置一。
例外响应包括不合法的函数,不合法的数据值,不合法的数据地址,不合法的响应长度,从机设备忙,无用的确认,存储奇偶错误,网关路径难以获得,网关目标设备不能响应等。
Modbus报文格式如图2-2所示。
图2-2Modbus报文格式
3OPC技术规范
3.1OPC技术历史
早期的OPC规范是由5家工业软件制造商组成的OPC小组在1995年开发的,在1996年8月完成了OPC数据访问标准版本1.0。
OPC基金会在1996年9月24日在美国达拉斯举行了第一次理事会,并在同年10月7日芝加哥的第一次全体大会上宣告成立。
现在的OPC基金会的理事会是由Fisher-Rosement,Honeywell,Interllution,Rockwell,Software,NationalInstrument以及欧洲代表的Siemens和远东代表的东芝组成的。
在日本为响应以美国中心的标准活动,于1996年6月开始基金会成立的准备,于1996年10月17日正式成立了日本的OPC基金会。
与此同时欧洲也成立了自己的OPC基金会。
中国也由5家公司作为发起人于2001年12月成立了中国OPC促进会。
3.2OPC技术规范
OPC基金会制定了各种OPC规范,并且不断地进行升级和更新以便于适应日益变化发展的工业自动化领域。
在设计OPC服务器或者相应程序时要按照规范去操作,以保证设备和程序的相互兼容性。
OPC规范包含以下几个方面:
(1)OPC数据存取规范即数据访问标准;
(2)OPC报警与事件规范即报警和事件的标准;
(3)OPC历史数据存取规范即历史数据访问标准;
(4)OPC批处理规范即批处理的标准;
(5)OPC安全规范即安全性的标准;
(6)OPC数据交换规范即服务器间数据交换的标准;
(7)OPC_XML规范即过程数据的XML标准。
3.3COM技术
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是接口的二进制内存结构:
图3-1COM接口二进制内存结构
COM规范用128位全局唯一标识符GUID来标识COM对象和COM接口,标识的COM对象为CLSID,标识的COM接口为IID。
客户程序通过指定的CLSID进行对象的创建和初始化工作,客户程序要使用COM对象的接口,它必须知道该接口的IID和接口成员函数。
3.4OPC服务器数据访问方式
OPC数据访问有两种方式:
同步访问和异步访问,下面分别介绍。
3.4.1同步数据访问
图3-2同步数据访问过程
同步数据访问过程如图3-2所示,OPC服务器按照OPC客户端的要求把得到的数据访问结果作为方法参数返还给OPC客户端,OPC客户端在结果被返还之前必须处于等待状态。
小批量的数据访问使用这个方法比较便捷,对于大批量的数据,就很占用OPC客户端的时间。
在OPC数据存取规范中,同步数据访问方法是用IOPCSyncIO接口来实现,IOPCSyncIO接口有两个函数:
Read和Write。
根据OPC数据访问标准,不同的数据读取方式所需要的数据源有两种:
从服务器数据缓冲区读取;二是从硬件设备直接读取。
Read同步数据读取可以从数据缓冲区读取或者硬件设备直接读取,从数据缓冲区读取数据时受组和项状态的影响,Write同步写操作是直接向设备写数据。
3.4.2异步数据访问
图3-3异步数据访问过程
异步数据访问过程如图3-3所示,OPC服务器接收到OPC客户端要求后,检查了参数中的项的服务器句柄是否有效,然后将方法返回,OPC应用程序进行处理。
当OPC服务器完成数据访问时,触发OPC应用程序异步访问的完成,将数据结果返回给OPC应用程序。
4ModbusOPC数据访问服务器的实现
4.1OPC服务器要求分析
本节主要介绍OPC服务器设计实现的主要功能和设计环境以及总体框架,初步构建起OPC服务器设计的基础。
4.1.1OPC服务器结构框架
对于现代化生产来说,利用计算机监控系统实时监控现场设备的运行状态和数据对提高生产效率有非常大的帮助,上传来的数据可以作为参考来更改现场设备的运行参数也可快速的查找现场设备的故障原因,而OPC服务器就可以办得到这些。
基于Modbus的智能仪表OPC服务器可以实现向下和Modbus从设备的通信,向上可以将实时数据传输到OPC客户端。
其结构如下图4-1所示:
图4-1OPC服务器结构框架
从现场设备读取回来的数据通过Modbus协议工业以太网以数据帧的形式传到OPC服务器,经过服务器的处理再通过OPC接口上传到OPC客户端,这样就完成了远程监控现场设备运作状态的过程。
现在简介一下OPC服务器关键模块管理模块的设计理念。
管理模块主要处理通道的定义、标签组、标签和逻辑设备的定义、物理设备向通道和逻辑设备的映射、物理设备数据点与OPCItem的映射关系等方面的设备和数据点的管理功能。
OPC服务器接口接收到客户端的请求后也必须利用管理模块提供请求的OPCItem对应的物理设备数据点的信息。
其数据点监视功能使通信模块在客户端界面上实现对设备数据点的读写。
如图4-2所示,它包含通道定义、Modbus从设备映射、数据点映射、模拟变量变换和数据点在线监视五个模块。
图4-2管理模块结构
通道定义模块是与远程Modbus服务器的连接属性的设置。
通道由IP地址、IP端口和连接超时值组成。
对于每一个IP地址、IP端口必须定义唯一一个通道,这样连接到网络上的设备就可以利用这些信息连接到确定的唯一的OPC服务器的物理设备。
Modbus从设备映射模块主要功能是将物理设备的信息映射到相应的逻辑设备和通道之中。
数据点映射模块将设备数据点直接映射为管理模块的标签,而标签包含有的信息有:
设备数据点具体的地址、储存区类型、数据类型和读取权限。
OPC项代表了到数据源的连接,相当于一个指针,指向它所对应的标签,通过标签的信息完成连接。
物理设备中的模拟变量是以整数或者浮点数的形式读出的,可是这些值只是存储区内的一个相对量,模拟变量模块可以将它们经过比例变换成为有意义的物理值,还需要定义物理单位、死区、上溢下溢范围等信息。
数据点在线监视模块提供了设备数据点的读取功能,让服务器用户界面可以实现数据点数值的在线读取和写入。
4.1.2OPC服务器需要实现的功能
在OPC规范中可以总结出OPC服务器应该实现的几项基本功能,OPC服务器要与客户端实现连接,数据传输必须要有这些功能。
首先OPC服务器要在客户端需要的时候提供本地连接,以便于客户端需要连接OPC服务器的时候,OPC服务器能够被找到,能够给客户端提供必要的接口。
同时需要OPC服务器支持Modbus通信协议,不需要任何额外的驱动程序,在和Modbus从设备通信的时候不需要为每个通信设备提供不同的驱动程序;然后OPC服务器需要提供IOPCServer、IOPCItemMgt、IOPCCGroupStateMgt、IOPCSyncIO等接口的实现,只有实现了这些接口,客户端才能够通过该接口实现添加删除服务器的组对象,对组对象进行管理。
而且无论是本机还是远程客户端都能访问服务器,支持了远程启动,即使服务器不在运行状态,只要有客户端访问服务器,服务器能够自行启动。
下面是OPC服务器的几个基本概念:
(1)设备:
指连接到OPC服务器的硬件设施(如PLC),对于ModbusOPC服务器来说,设备是