MODBUS协议详解:ASCII与RTU模式对比分析.pdfVIP

  • 0
  • 0
  • 约6.23千字
  • 约 12页
  • 2026-01-29 发布于北京
  • 举报

MODBUS协议详解:ASCII与RTU模式对比分析.pdf

*蓝想电子

MODBUS协议详细介绍

MODBUS分为两种传输模式,ASCII方式、RTU方式。这两种模式的

区别在于:

1、起始符,与结束符不一样;

ASCII模式,起始符是一个冒号“:”ASCII码为3AHH是十六

进制表示

结束符是“回车换行符”ASCII码为0DH0AH

*RTU模式,起始符与结束符都是至少3.5倍字符传输时间的停顿

间隔时间标定

3.5倍字符的传输时间的计算方法,根据“通讯格式、传输方式

及MODBUS协议简介”中介绍的一个字符的传输时间的计算方法,

很容易计算出来。

2、校验和计算不一样;

ASCII模式,是LRC校验

*RTU模式,是CRC校验

3、发送格式不一样;

ASCII模式,在消息中的每个字节都作为两个ASCII字符发送

*RTU模式,在消息中的每个字节包含两个4Bit的十六进制字

符。

*蓝想电子

ASCII模式与RTU模式比较:

1、ASCII有明确的起始符与结束符,所以每个字符之间的传输间

隔时间可以很大(但是不能大于一秒),RTU则必须过1.5倍字

符传输时间

“整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过

1.5倍字符时间的停顿时间,接收设备将刷新的消息并假定下

一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5

倍字符时间内接着前个消息开始,接收的设备将认为它是前一消息的

延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的”

这段话绕糊涂很多朋友,实际很好理解,两个字符传输的间隔时

间大于1.5倍字符的传输时间,您就可以认为一组信息已经传输结束,

*开始处理接收到的信息。而在此后,如果时间小于3.5倍字符传输时

间内又接收到字符,则舍弃不处理,只有间隔了3.5倍字符传输时间

接收到的信息才是真正的下一组信息。也可以这样理解:“超过

1.5倍字符到3.5倍字符这段时间的接收都是异常的”

2、ASCII的LRC校验和计算程序比较好编写,RTU的CRC校验和

计算程序比较。

*蓝想电子

LRC校验和计算方法:

比如03码读寄存器0到寄存器4这五个寄存器的数值,发送的信息

*:010310000005E70D0A

E7就是LRC校验的结果参预校验和计算的字节是,除去起始符

到校验和之间的信息,即:010310000005

每次取出一个字节(比如01),将其转换为十进制,然后相加

**1(01)+3(03)+16(10)+0(00)+0(00)+5(05)

****=25如果这个和大于255,则除以256取余数258/

256取2

用256减去得到的和(25或是2)

256-25231

*将计算值转换为十六进制E7

如果转换的值大于一个字节,则取后两位

CRC校验和的计算方法比较,这里不可能讲全面,我大致说

一下:

还是以03码读五个寄存器的数值为例,发送的是:

0103100000058109

*8109就是CRC校验的结果参预校验和计算的字节是,除去起

始符到校验和之间的信息,即:010310000005

*蓝想电子

*先设一个CRC寄存器,这个寄存器存放的初始值为65535

每次取了一个字节(比如01),将其转换为十进制,然后与CRC

*寄存器存放的数值进行异或。异或得到的数值再存放于CRC寄存器

***CRC寄存器=1异或CRC寄存器

***比如1XOR65535

文档评论(0)

1亿VIP精品文档

相关文档