单片机应用实践篇之RS485通信及MODBUS通信协议——MODBUS通信协议简介_哔哩哔哩_bilibili
RS485基本认识
1:RS485用于工业控制,与我们使用的USART不同,无法直接与单片机的RXD和TXD直接相连,需要使用转化芯片,将TTL电平标准转化为RS485电平标准
2:RS485是半双工,因此只能实现单接收或者单发送,无法同时实现
3:RS485重要内容是modbus协议,控制工业器件或者上位机控制工业器件是需要协议控制的,而协议我们是使用MODBUS协议
4:串口发送的距离存在限制,很短,而RS485抗干扰能力强,并且传输距离远,因为使用差分信号表示数据
5:半双工的模式,是两线的,取决于电平转化芯片,有些电平转化芯片是支持4线的,所以支持全双工模式
RS485与TTL电平表示
由于电平标准不同,因此串口TTL无法直接与RS485直接连接,而是需要借助电平转化芯片,例如MX485
RS485基本电路与分析
将单端信号转换为双端信号(AB),理解单端信号的话其实就是我们传输的数据线明明就是一条,它为什么是AB两条线呢?而且这个AB两条线不是我们串口的RXD和TXD,它是一个差分信号,它是根据两条线的电平状态,知道此时的信号数据是高电平还是低电平
1:上面的图表示需要转化芯片,RO表示RS485输出,因此表示STM32的串口输入-RXD,
DI表示RS485的输入,因此表示STM32的串口输出--TXD
2:A和B提供给外部连接,当stm32连接RS485时,控制TXD输出数据给外部
3:由于RS485是半双工,因此需要具备接收和发送的切换
RS485_DE_nRE为高电平的时候,DE为高电平有效,允许发送数据
RS485_DE_nRE为低电平的时候,RE为低电平有效,允许接收数据4:我们使用串口发送即可,电平会自动转化,因此学习起来跟串口是一样的,只不过需要进行发送和接收的切换而已,多配置一个引脚
MCU与MCU使用RS485进行通信图示
两方都需要使用MAX485芯片转化电平标准
RS485代码演示
代码演示,发送的时候需要专门将RS485芯片切换到发送模式,其他的情况均为接收模式,使用中断接收即可
RS485光耦隔离
光耦隔离,因为RS485使用到工业中,而在工业中,干扰很强的话,会对数据的接收和发送造成一定的影响,因此需要进行隔离
下面的隔离:电源隔离(供电不同)
这里只是简单的简述,当你需要使用的时候自己去看即可
MODUBS协议
主从模式 -- 一主多从模式,至于能支持几个从机,这个取决于你的电平转化芯片,数据手册中会表明
任何通信都是主机发起,主机发信息给从机(比如想要从机的数据(此时从机就会发数据给主机)或者改变从机的一些配置)
主机给从机发数据,主机立马切换到接收模式,等待从机的应答
协议格式介绍
数据断包时间,01与03的时间不能大于1.5个字节,否则认为出错
一个包与另外一个包的时间间隔为3字符时间,假如超过了3字符,则表示下一个数据是新数据,可以通过波特率计算间隔时间
通过时间判断,来断帧
寄存器地址是我们自己设置的,不是实际的地址