基于单片机的MODBUS的协议实现

基于单片机的MODBUS的协议实现

ID:40918540

大小:504.90 KB

页数:5页

时间:2019-08-10

基于单片机的MODBUS的协议实现_第1页
基于单片机的MODBUS的协议实现_第2页
基于单片机的MODBUS的协议实现_第3页
基于单片机的MODBUS的协议实现_第4页
基于单片机的MODBUS的协议实现_第5页
资源描述:

《基于单片机的MODBUS的协议实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、云南大学学报(自然科学版),2009,31(S2):120~124CN53-1045/NISSN0258-7971JournalofYunnanUniversityX基于单片机的MODBUS的协议实现线岩团,许江淳,鄢大鹏(昆明理工大学信息工程与自化学院自动化系,云南昆明650051)摘要:在介绍MODBUS协议规范基础上,讨论基于MCS-51系列单片机的MODBUS实现方案.在保证程序实时性的同时,充分考虑程序的可裁剪性、可移植性和可扩展性.关键词:MODBUS;单片机;RTU模式;ASCII模式中图分类号:TP393文献标识码:A文章编号:0258-7971(20

2、09)S2-0120-05控制系统通常以1台PC机作为主站,多台以单片机为核心的智能仪器作为子站.主和子站之间通过串行总线进行连接和通讯.MODBUS作为工业控制领域流行的网络应用协议得到了广泛的应用.可实现基于单片机的MODBUS协议,为开发基于MODBUS协议的控制系统带来极大便利.[1]本文在分析MODBUS协议规范基础上,讨论基于MCS-51系列单片机的MODBUS实现方案.该方案在保证程序实时性的同时,充分考虑了程序的可扩展性和可移植性.并通过仿真手段对程序的正确性及性能进行了分析和验证.1MODBUS通信协议[2]MODBUS是一个主从协议.在同一时刻只能

3、有1个主节点联接在总线上,但允许多个(最多247个)从节点连在串行总线上.每一次MODBUS通信总是由主节点发起.在没有收到请求时从节点从不发送数据.从节点间不进行通信.主节点在同一时间内只能发起1个MODBUS事务.MODBUS帧结构如图1所示.地址域只包含从节点地址,长度为1个字节,可寻址256个不同的地址.其中,0是广播地址,248至255为保留地址,故从节点地址为1~247.功能码用于指示从设备执行什么操作,占1个字节.功能码分为公共功能码和用户自定义功能码2类.数据域用于存放请求参数和响应的数据.校验域存放帧的校验码,在RTU传输模式采用CRC校验,而ASC

4、II模式采用LRC校验.图1MODBUS数据帧Fig11MODBUSframe正常响应时,从设备返回的响应帧中的功能码原样返回;异常响应时,从设备将收到的请求帧中的功能码最高位变为1,用为响应帧的功能码.在RTU(RemoteTerminalUnit)模式中,1个字节由11个比特组成,其中包括1个起始位、8个数据位、1个奇偶校验位和1个停止位.帧与帧之间是通过至少315字节的传输时间来区分的,而帧内的字节之间间隔时间不能超过115个字节的传输时间.在ASCII(AmericanStandardCodeforInformationInterchange)传输模式中,每个

5、字节在发送时将编X收稿日期:2009-04-25基金项目:昆明理工大学青年基金资助(2007-039)作者简介:线岩团(1981-),男,云南人,助教,主要从事嵌入式系统方面的研究.第S2期钱岩团等:基于单片机的MODBUS的协议实现121码为2个ASCII字符.在该模式下,发送时每个字节由1个起始位、7个数据位、1个奇偶校验位和1个停止位组成.在同一波特率下,由于编码方式的不同RTU模式比ASCII码模式能允许更高数据吞吐量.但是RTU模式需要2个定时器的支持,所以实现也更为复杂.2软件设计与实现单片机通常为现场设备,即在MODBUS总线中作为从设备使用,故本文只介

6、绍MODBUS从设备的实现.程序由7个模块构成,如图2所示.功能实现模块(MODBUSFunctionImplementation):包含相应功能码的实现.通常1个函数实现1个MOD-BUS功能码的功能.这些函数需在系统启动时注册到Slave模块中,并由其负责调用.以回调函数的方式实现MODBUS功能,使得系统具有了很好的可扩展性.实现新功能时只需编写新的函数,并将其注册到Slave模块即可实现功能的扩展.回调函数的原型如下:typedefINT8U(*MB_CALLBACK)(MB_FRAME图2系统结构xdata*req,MB_FRAMExdata*rsp);Fi

7、g12Systemframework该函数有2个参数,req是从主设备发来的请求帧,rsp即将生成的响应帧;参数的类型都是MB_FRAME,该类型是1个结构体包含1个数组和数组中数据的长度.回调函数的返回值类型为8位无符号整数,返回0表示无错误,非0表示出错.[3]由于C51本身的特点,2个通用型的指针不能通过寄存器传递.故将该回调函数参数的存类型指定为xdata.从节点模块(MODBUSSlave):通过mbSlaveTransaction函数实现从设备事务处理流程.该模块收到的请求帧后,首先确定是否存在相应功能码的回调函数;若存在,则调用相应回调

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。