简介
1)、MODBUS协议是美国MODICON(莫迪康)公司首先推出的基于RS485总线的通信协议,其物理层为RS232/RS422/RS485接口标准。
2)、MODBUS通信协议是一种主从式串行异步半双工通信协议。采用主从式通信结构,可使一个主站对多个从站进行双向通信(从站之间不能直接通信,从站必须先把数据传给主站,主站把数据经过程序变换再控制从站),主站可单独和从站通信(同一时刻主站只和一个从站通信),也可以广播式和所有从站通信。
数据长度是固定的
ASCII通信方式数据长度为7位,RTU通信方式数据长度为8位。
数据格式
起始码|地址码|功能码|数据区|校验码|停止码
其中只有数据区是可变的
功能码(常用)
常用功能码H03
功能:读出一个或连续多个存储器值
上面是每种码包含十六进制符的个数
地址码:站号。
校验码:ASCII方式2个十六进制符;RTU方式4个十六进制符。
常用功能码H06
功能:写入一个值到存储器中
常用功能码H10
功能:写入多个值到连续存储器中(一定是连续的)
ASCII模式优点允许字符之间的时间间隔长达1s,也不会出现错误。
RTU模式优点是在相同波特率下其传输的字符密度高于ASCII模式,每个信息必须连续传输。
ASCII模式
ASCII模式通信格式约定:
停止位与校验位是配套的,整个位数是10位。
如果数据长度是8位不能选择ASCII模式。
ASCII模式数据格式约定:
LRC算法:从地址码到数据区的所有数据,相邻2个16进制符相加求和。
校验码:取其和的低8位的补码位校验码。
举例:
求和:H01+H03+H21+H02+H00+H02=H29(00101001)
H29的补码:HD7(11010111)
LRC校验码为:HD71
ASCII模式数据传送约定:
在数据格式中每个16进制字符(0-9)、(A-F)都转换成ASCII码发送。这种方式主要优点是字符发送的时间间隔可达1s,而不产生错误。
上面例子转换成ASCII码:
RTU模式
RTU模式通信格式约定:
(与ASCII模式不同点数据长度是8位)
RTU模式数据格式约定:
注意:两帧信息之间3.5个字符以上停止时间;一个字符从起始位到停止位共11位,3.5*11=38.5,如果波特率按照9600来算时间就是38.5/9600秒(约等于0.004秒),即两帧数据间隔时间至少0.004秒。
CRC算法:
…
RTU模式数据传送约定:
按数据格式中16进制字符进行连续发送。如果在发送帧信息期间出现大于1.5个字符的静止时间时,则信息会出现错误。该模式的主要优点是在相同波特率下传输效率高于ASCII模式。
应答和错误检测
错误检测:
举例: