问题标题:
【modbusRTU模式的通信问题modbusRTU模式的通信通讯格式要求地址功能码数据CRC校验数据长度1个字节1个字节N个字节2个字节如发送的数据为:0301000010校验高位校验低位我的问题是:1、】
问题描述:

modbusRTU模式的通信问题

modbusRTU模式的通信通讯格式要求

地址功能码数据CRC校验

数据长度1个字节1个字节N个字节2个字节

如发送的数据为:0301000010校验高位校验低位

我的问题是:

1、我理解地址03使用1个字节数据长度表示,是用1个字节表示0,再使用一个字节表示3,但再就使用了两个字节的数据长度了,和通讯要求的格式不符.还有一种理解就是使用1个字节的直接表示03,其而进制码为000000011,如果地址是20,其二进制码为00010100,但这种理解出现个疑问,很多设备同时支持ASCII或RTU两种方式,当发送RTU的地址和ASCII方式的起始符相同时如都为03,接受方怎么判断他是RTU发送的地址,还是ASCII起始符.

2、RTU方式判断帧消息结束时是3.5字符时间,我想知道在物理层如何判断的,如消息发送完后,在物理层485双绞上,其电压持续3.5字符长度+15V即判断消息发送完成或是其电压持续3.5字符长度-15V判断消息发送完成.还是双绞线上为其他状态来判断消息完成.485通讯线上没有通讯时A、B线状态是什么.

杜立群回答:
  1、RTU模式时地址(03,十六进制)长度是1个字节,ASCII模式时地址长度是2个字节(30、33,ASCII码).设备即使支持ASCII、RTU两种方式,但在设备调试时必须选定一种模式,这样设备就根据选定的模式,区分是RTU数据帧还是ASCII数据帧而相应地处理.   2、RTU模式要求帧消息的间隔时间大于等于3.5字符时间,这是在应用层上处理的,物理层上的电平变化只是根据应用层的动作随之变化.我们知道,串口通讯的核心是通用异步接收/发送装置(UART),它需要发/收双方指定相同的波特率/数据位/校验位/停止位等通讯参数,才可以正确解调出一个字节数据.若一个RTU数据帧有很多个字节,UART就是一个一个字节地连续解调并存到缓冲区中.若发送方发送2个数据帧的间隔很短,接收方的UART就可能无法判断而当成一个数据帧,所以要求间隔时间不小于3.5字符时间.
查看更多
其它推荐
热门其它推荐