- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ModbusOPC服务器设计及其在组态软件中应用
基于ModbusOPC服务器设计及其在组态软件中应用
摘要:本文主要在介绍Modbus协议规范和OPC服务器工作原理以及组成框架的基础上,进行服务器设计,通过设计,将服务器应用到DSC组态软件中,具有一定的现实意义。
关键词:Modbus;OPC;组态
中图分类号:TP393.09 文献标识码:A 文章编号:1007-9599 (2012) 18-0000-02
1 Modbus总线规范
目前,Modbus协议规范主要应用在自动控制领域,目的是实现工业生产中控制器之间的数据通信。同时,还能够通过网络协议实现控制器和其他硬件设备的通信,因此,通过该协议能够让不同厂家的设备构成控制网络,进行集中监控。因此,Modbus协议已经成为了一种通用工业标准。Modbus协议在控制过程中,已经定义了控制器能够识别了消息结构,所以,当控制器发出控制指令后,接收设备就能够回应指令请求,同时侦测指令是否正确,这样,就能够实现不同网络之间的控制。
Modbus协议在通信过程中,在总线上只能有一台主设备,每次通信指令都由主设备发出,在其余的从设备都分配指定地址后,就能够接受主设备的指令。在主设备和从设备进行通信时,如果主设备只和其中一台从设备通信,从设备则返回一个消息回应,如果主设备需要和所有从设备通信,从设备则不能作出回应。Modbus通信有两种模式:ASII和RTU模式。并且,这两种模式不能同时使用,只能选择其中一种模式进行通信。
2 OPC服务器的设计
2.1 服务器对象与接口模块
OPC服务器对象的名称通常为XXX(代表硬件名称)Server,其主要功能就是在启动服务器后获取服务器,得到服务器对象的起始地址,再返回OPC对象。XXXServer派生自IUnknown类,实现了OPC自定义接口,其中最关键的两个接口是IOPC-Server和IOPCBrowseServerAddressSpace。其中,IOPCServer接口类首先派生出IXXXServer类,然后通过指针变量指向IXXXServer类,同时,将接口指针返回客户,客户收到接口指针命令后,可以通过调用相关函数完成相应操作,比如,能够实现对组对象的管理、浏览、创建、删除等操作。并且,还可以通过操作服务器接口了解服务器相关信息。IOPCBrowseServerAddressSpace接口提供浏览服务器地址空间和获取项对象的属性。
OPC Server组对象名称通常为XXXGroup,主要完成存储项对象的信息,通过OPC服务器组对象接口,以OPC组为单位,采用同步和异步方式进行传输,以实现组对象功能。XXXGroup中IXXXSIO接口实现同步传输,程序可以按照规定调用接口进行数据同步存取。如果采用异步方式传输,则通过IOPCAsyncIO与IDadaObject接口派生出IXXXSIO和IXXXDO接口。然后,程序则通过IXXXASIO进行数据异步存取操作。
OPC Server中有一个OPC项XXXItem,由于没有自带接口,所以,不是真正的COM对象,只是表示数据连接。因此,项对象能够对于实际数据项,即服务器中的唯一标识,客户通过数据项建立与数据源的连接。其中,标识包括值、品质、时间戳三个属性。
2.2 数据存储区模块
数据存储区模块就是服务器上包含的可供客户访问的资源的集合,它描述了服务器中含有哪些项,以及这些项是按照什么形式进行组织的,我们可以采用链表结构来实现,在链表结构中,通过一个含有自身结构的指针,实现OPC数据项的遍历。这样。OPC客户就可以通过服务器对象的
IOPCServerBrowseServerAddressSpace接口来浏览数据区的数据项,然后通过OPC组对象创建OPC项。并将OPC项与相应的数据项联系起来。
2.3 Modbus设备驱动模块
Modbus设备驱动模块的实现关键是需要建立符合Modbus协议的数据帧。在本程序中,采用的是RTU模式。无奇偶校验,有2个停止位。
具体步骤,第一步,打开串口,并设置串口参数,比如,波特率、缓冲区等的设置。第二步,将数据量、起始地址、功能码、冗余校验等参数依次填入内存中的缓冲区,建立一帧Modbus。第三步,打开新接收线程,用于监视串口工作状态,当串口收到数据时,线程则会通知客户程序,并将Modbus数据帧发送给设备。如果设备收到数据,则会马上应答,同时发送回应答包文。在回应答过程中,需要判断通信是否超时,串口接收的数据是否符合Modbus协议标准,串口是否能够继续使用。如果通信不超时,串口则继续使用,并且,串口数据符合协议标准,那么就可以在内存中建立接收缓冲区,接收Modbus数据,当整个发送和接收过程结束后,
原创力文档


文档评论(0)