[发明专利]MODBUS-RTU通信波特率自动匹配在审
| 申请号: | 201410289938.X | 申请日: | 2014-06-26 | 
| 公开(公告)号: | CN104052579A | 公开(公告)日: | 2014-09-17 | 
| 发明(设计)人: | 周晓峰;邓君 | 申请(专利权)人: | 湖南先步信息股份有限公司 | 
| 主分类号: | H04L1/00 | 分类号: | H04L1/00;H04L12/40 | 
| 代理公司: | 广州市红荔专利代理有限公司 44214 | 代理人: | 张文 | 
| 地址: | 410000 湖南省*** | 国省代码: | 湖南;43 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | modbus rtu 通信 波特率 自动 匹配 | ||
技术领域
本发明涉及工业自动控制领域,特别是MODBUS-RTU通信波特率自动匹配。
背景技术
MODBUS-RTU协议是一个公开的、被广泛应用的串行通信协议,最初由Modicon公司为其可编程控制器和工业自动化系统而制定,广泛用于控制设备间传输数字和模拟的I/O及寄存器数据时使用,此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式,在RS-485总线上,大部分采用主从通信方式,一台主机,连接多从站。主机与从站通信主要依靠从站ID号来标识,使主站与相应的从站进行数据交换。而主站与从站通信的前提是,主站与从站通信的波特率要一致,现有的技术主要采用拨码开关来设置每台从站的波特率或通过软件来设置从站的波特率,在使用时只要主站的波特发生更改,就要通过拨码开关或软件对通信总线上设备就要每台设置波特率,使用起来很不方便,特别在整个系统运行起来以后通信不稳定,需要改变总线的波特率时,所需要的时间较长严重的影响系统的使用。
RS-485总线通信,连接在同一总线上的设备通信波特率必须一致,现有RS-485通信的设波特率设置都是通过拨码开发、软件或其他方式单台进行设置,需要更改总线通信的波特率必须对总线上的每台设备进行设置,在一条总线上可能有几十台设备,每台设备相距几十米到几百米,有可能上千米,整个系统运行起来以后如果通信不稳定,需要降低通信波特率来增强通信的稳定性的时候,就需要将停止整个总线设备运行,通过拨码开发、软件或其他方式人工单台进行设置,设置完以后重新运行整个总线上的设备,这个过程需要几十分钟到几个小时,1、增加整个系统的维护人工成本;2、停止整个总线设备运行几十分钟到几个小时会给整个系统带来严重后果。
发明内容
本发明的目的是为了克服现有技术的缺点和不足,提供一种不需要更改总线通信与设置总线上的每台设备的,实现主从站波特率的自动匹配的MODBUS-RTU通信波特率自动匹配。
本发明是通过以下技术方案予以实现的:
MODBUS-RTU通信波特率自动匹配的实现过程如下:
1、 从站上电时设置串口的波特率为默认的波特率,等待接收总线上的串口报文,如果连续5次接收到的报文为错误报文就重新设置串口波特率为主从站越好的下一个波特率,直到正确接收到串口报文时,就以这波特率与主站通信;
2、 在正常通信的情况下,主站更改了波特率,从站会实时检测接收到的总线上的报文是否正确,如果连续5次接收到错误报文,重复波特率匹配过程,直到接收正确报文。从站接收到的报文是否正确判断依据MODBUS通信协议的数据格式进行校验,主要校验CRC校验码,整个报文长度。
本发明的有益效果是,主从站约定了几种波特率(9600、19000、38400、57600、93750、1115200、187500、250000、300000、500000、1000000、2000000、2500000bit/s),可根据需要而改变,主站可根据约定而改变整个总线上的通信波特率,主站更改波特率时,从站自动与主站波特率进行匹配,从而实现主从正确通信。
附图说明
图1为从站与主站波特率自动匹配流程示意图。
具体实施方式
下面结合附图和具体实施例,对本发明作进一步的描述。
如图1所示的从站与主站波特率自动匹配,如下代码基于STM32F103芯片,调用了STM32F103的库,具体描述如下:
/*
从站通信波特率组合定义
*/
#define UART_RXBUF_DMA_LEN 300
const unsigned int ASC_Baudrate_Const[15]=
{
9600,19000,38400,57600,93750,1115200,187500,250000,300000,500000,1000000,2000000,
2500000
};
Unsigned char ASCRevBuf[300];
Unsigned char BaudrateInde=0;
Unsggned char ASCRevErroNum=0;
uint32_t AscDMA_Ptr=0;
/*
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南先步信息股份有限公司,未经湖南先步信息股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410289938.X/2.html,转载请声明来源钻瓜专利网。





