Modbus定义了ASCII(美国信息交换标准代码)模式和RTU(远程终端单元)模式两种串行传输模式。在Modbus串行链路上,所有设备的传输模式及串行口参数必须相同,默认设置为RTU模式,所有设备必须实现RTU模式。若要使用ASCII模式,需要按照使用指南进行设置。在Modbus串行链路设备实现等级的基本等级中只要求实现RTU模式,常规等级要求实现RTU模式和ASCII模式。
(一)ASCII模式
使用ASCII模式时,消息以冒号(:)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH、0AH)。
其他域使用的传输字符是十六进制的0,1,…,9,A,B,…,F ASCII码。网络上的设备不断侦测冒号字符,当接收到一个冒号字符时,每个设备都解码下一个域(地址域)来判断是否是发给自己的。
消息中字符间发送的时间间隔最长不能超过1 s,否则接收设备将认为是传输错误。典型的ASCII消息帧结构如表1-4-1所示。
表1-4-1 典型的ASCII消息帧结构
例如,向1号从站的2000H寄存器写入12H数据的ASCII消息帧格式,如表1-4-2所示。
表1-4-2 ASCII消息帧格式
(www.xing528.com)
续表
完整的ASCII消息帧为3AH 30H 31H 30H 36H 32H 30H 30H 30H 30H 30H 31H 32H 43H 37H 0DH 0AH。
(二)RTU模式
使用RTU模式时,消息发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个域是设备地址,可以使用的传输字符是十六进制的0,1,…,9,A,B,…,F。网络设备不断侦测网络总线,包括停顿间隔时间,当第一个域(地址域)被接收到时,每个设备都进行解码以判断是否是发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
整个消息帧必须作为一个连续的流传输。如果在帧完成之前有超过3.5个字符时间的停顿间隔,接收设备将刷新不完整的消息,并假定下一个字节是一个新消息的地址域。同样,如果一个新消息在小于3.5个字符时间内接着前一个消息开始,接收设备将认为它是前一个消息的延续。这将导致一个错误,因为最后的CRC域的值不可能是正确的。典型的RTU消息帧结构如表1-4-3所示。
表1-4-3 RTU消息帧结构
例如,从1号站的2000H寄存器写入12H数据的RTU消息帧格式,如表1-4-4所示。
完整的RTU消息帧为01H 06H 20H 00H 00H 12H 02H 01H。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。