#51单片机#Modbus通信协议的特点及其RTU协议帧数据介绍
2021-10-25 来源:eefocus
Modbus通信协议的特点
Modbus协议是应用于电子控制器上的一种通用语言。 通过此协议,控制器之间,控制器经由网络和其他设备之间可进行通信。不同厂商生产的控制设备可以连成工业网络,进行集中控制,这已成为了一种工业标准。
该协议定义了控制器能够认识和使用的数据结构,描述了控制器请求访问其他设备的过程,回应其他设备的请求的方式,侦测错误记录的方法,同时制定了通信数据的格局和内容的公共格式。
多机通信时,Modbus协议规定每个控制器必须知道自己的设备地址,识别按照地址发来的数据并对其做出反应,包括:决定是否产生动作,产生何种动作,若需回应,反馈消息应按Modbus协议发出。
Modbus协议的整体框架和格式较为复杂庞大。Modbus协议允许在各网络体系结构内进行简单通信,每种设备都能使用该协议来启动远程操作,如下图所示,一些网关允许在集中使用Modbus协议的总线或网络之间的通信。
RTU协议帧数据
Modbus有两种通信传输方式,ASCII模式和RTU模式。ASCII模式的数据字节是7bit数据位,51单片机无法实现,且应用较少,这里只介绍RTU模式。
一条典型的RTU数据帧如下图所示:
数据帧必须作为一个连续的数据流进行传输。RTU模式规定不同数据帧之间的间隔在3.5个字节通信时间以上。可以认为RTU会将3.5个字节通信时间当做一次数据帧。
起始位和结束位:
T1-T2-T3-T4代表的时间间隔3.5个字节通信时间以上。它们的存在是为了分割开不同的数据帧。
设备地址:
每个设备都有自己的设备地址。以便与别的设备通信。当设备收到一帧数据后,程序首先判断地址是否相符。相同,才会继续解析。否则不予理会。(ps:地址0X00,是广播指令,所有设备都要执行。)
功能代码:
详情戳链接Modbus功能码一览
数据:
实现功能的数据,由功能代码赋予实际意义。例:若功能代码为0X03,即读保持寄存器,那么主机发送的数据n的组成就是:2个字节的寄存器起始地址+2个字节的寄存器数量N。
CRC校验:
CRC校验是一种数据算法,用来校验数据对错。16位CRC校验码产生于一种特殊算法,由校验码之前数据帧所有字节一同参与。接收方收到数据帧后,也会根据相同的算法产生16位校验码。若他们相同,则表示数据正常。若数据不正常,这帧数据将被抛弃,发送方收不到回应,将做出相应处理。