原创 Modbus通讯协议的学习

2009-7-4 22:01 3302 2 2 分类: 通信

Modbus消息帧(RTU)


        使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址。可以使用的传输字符是十六进制的0...9,A...F。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。一典型的消息帧如下所示:




起始位<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


设备地址


功能代码


数据


CRC校验


结束符


T1-T2-T3-T4


8Bit


8Bit


n8Bit


16Bit


T1-T2-T3-T4


 

有奇偶校验




启始位


1


2


3


4


5


6


7


8


奇偶位


停止位


 

无奇偶校验




启始位


1


2


3


4


5


6


7


8


停止位


 

位序列

 

 


波特率是指通讯口每秒传送(接收或发送)的二进制数的位数(bits), 当波特率为9600时, 每秒传送的二进制数为9600位, 即一位二进制数的传送时间为104.167μs, 在串口通讯方式为1下,传送一个字节所需用的时间为1041.67μs,即1秒可传送960个字节。

 

当接收方接收字节间隔超过1.5个字节的时间,认为接收结束,并通过CRC校验判断接收到数据的正确性。

 

当发送时,必须等待3.5个字节的时间,如果总线上没有其他设备发送数据,那么才可以发送。

 

 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条