基于MODBUS RTU协议的数据传输方法技术

技术编号:10408203 阅读:151 留言:0更新日期:2014-09-10 17:38
本发明专利技术公开了一种基于MODBUS RTU协议的数据传输方法,通过对RTU帧的数据结构的分析,弱化对数据帧中间隔时间的控制,通过对帧数据完整性的分析判断,实现数据的发送与接收,这样不易受到距离、晶振精度或者外界等干扰,不仅使得数据传输的可靠性大大提高,且由于数据传输可靠性的增加也减少了中断,使得对两个数据传输设备的硬件配置要求较低。

【技术实现步骤摘要】

【技术保护点】
一种基于MODBUS RTU协议的数据传输方法,其特征在于:包括以下步骤:(1)、设定通信设备的设备地址和功能代码;(2)、在通信设备的缓存或内存中创建一个用于存放485接收数据的数组,该数组用ring[N]表示,其中,N为允许接收的最大一帧数据的字节数;该数组的大小按所允许接收最长一帧数据的大小分配,且485接收的数据按字节顺序循环存储;在缓存或内存中定义三个变量*head、*tail和*pnum,其中,*head表示485接收到一帧的数据时,该帧的头所在数组中的位置;*tail表示所有数据接收完时,数据尾所在的位置;*pnum表示从接收的数据头开始,接收到的数据字节个数;程序初始化时,令*head、*tail的指针指向数组的头ring[0],同时*pnum为0;在接收到一个字节的数据时,*tail后移一位,*pnum加1;若*tail移到最后一位N时,下一字节则从数组的头ring[0]开始;(3)、通信设备的485接收数据;(4)、判断*pnum是否为0,如果*pnum为0,则说明没有接收到数据,返回步骤(3),重新等待接收数据;否则,执行步骤(5);(5)、判断ring[*head]是否等于该通信设备所设定的设备地址,如不等于该设备所设定的设备地址,则令*head=*head+1,*pnum=*pnum‑1,并返回执行步骤(4);否则,执行步骤(6);(6)、判断*pnum的功能代码是否与设定的功能代码吻合,如果功能代码不吻合,则令*head=*head+1,*pnum=*pnum‑1,并返回执行步骤(4);否则,则执行步骤(7);(7)、判断*pnum是否大于等于485接收到数据的长度,如果*pnum小于485接收到数据的长度,则执行步骤(8);否则,则执行步骤(9);(8)、等待一段时间,若一段时间之后,485没有接收到新数据,则抛弃该数据,返回步骤(3),重新等待接收数据;若一段时间之内485接收到新数据,则返回步骤(7);(9)、根据功能代码、后方的数据域,计算出校验码,并将计算得到的校验码与485接收到的校验码做比较,如果校验码不一致,则令*head=*head+1,*pnum=*pnum‑1,并返回执行步骤(4);否则,执行步骤(10);(10)、判断数据传输成功。...

【技术特征摘要】

【专利技术属性】
技术研发人员:郑坚江章跃平王雷
申请(专利权)人:宁波三星电气股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1