在介绍Modbus协议之前,我们要先了解下RS485协议,因为Modbus协议是在RS485这个硬件层协议上搭建的软件层协议。
RS485特性
半双工。
用缆线两端的电压差值来表示传递信号。
RS485 的特点包括
1.S485 的电气特性:
逻辑“1”以两线间的电压差为+(2~6)V 表示;
逻辑“0”以两线间的电压差为-(2~6)V 表示
2, 传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在 1200m 时,传输速度可达 100Kbps。
3, 抗干扰能力强。RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。
4, 传输距离远,支持节点多。RS485 总线最长可以传输 1200m 左右,更远的距离则需要中继传输设备支持但这时(速率≤100Kbps)才能稳定传输,一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到 128 个或者 256 个节点,最大的可以支持到 400 个节点。
RS485的控制方法

可以到RE和DE通过跳线帽并连起来,RE引脚接受触发器(低电平有效),DE引脚是发送触发器(高电平有效)。
平常将设备处于接受状态,需要发送的时候再置为发送状态,发送完毕,再置回接受状态。
Modbus协议
在RS485协议上规定的软件协议。
通信机制
主机轮询,从机应答的机制
1.系统中只有一个设备是从机:主从通信
2.系统中的从机不可以主动的向从机发送数据
3.系统上电后所有的主从设备都应该处于监听总线的状态,也就是接受状态
4.如果要发送一次,必须由主机主动发送(任何一次的通信或数据交换都必须由主机发起)
数据包格式
发送格式:

常用功能码:

发送字节的间隔时间:每个字节发送的时间差不能超过3个字符时间。
即如果以波特9600来发送,一个字符包含一个起始位,一个停止位,8个数据位。
一共10bit,那么3个字符时间大概是3*10/9600=3.125ms.
一般软件写的断帧时间为10ms