RS485及ModBus—RTU协议
1、通信
硬件层:RS485解决的是数据传输问题,也就是说如何将一个“0”或“1”如何传输到另一端
软件层:MODBUS解决的是数据传输的含义或意义
2、通信结构图
如上图所示, 单片机与单片机之间的通信,TXD表示发送数据,RXD表示接收数据,RO和DI端分别为接收器的输出和驱动器的输入端,RE和DE端分别为接收和发送的使能端,单片机通过TTL电平将数据从TXD传输到DI,而逻辑“0”和“1”,我们可以理解成“0”表示电压为0V,“1”表示电压为5V,再通过MAX485转换成差分信号,像图中所示,VB>VA时,输出“0”,VA>VB时,输出“1”,这样做的优势是能大大地增加了信号的传输距离,同时信号传输的抗干扰能力也会增强,然后在通过另一个MAX485将差分信号转换为TTL电平,最后传到另一个单片机。
但是对于两个单片机之间是如何控制哪个单片机发送数据,哪个单片机接收数据,我们还需要用IO口去控制MAX485的RE和DE端。
ModBus—RTU协议
主机与从机之间的通信要遵守ModBus—RTU协议,
注意事项,通信机制:
(1)、系统中只有一个设备是主机:主从通信
(2)、系统中的从机不可以主动的向主机发送数据
(3)、系统上电后所有的主从设备都应该处于监听总线的状态,也就是接收状态;
(4)、如果要发起一次通信,必须由主机主动发起(任何一次的通信或数据交换都必须由主机来发起)
①主机首先切换成发送模式 发送数据包
②立马转成接收模式