1 理论
1.1 基本概念
一直有一个误区,以为uart和rs232是一回事。今天才看到原来并不是。UART是通信协议,Universal Asynchronous Receiver/Transmitter,而rs232是电气信号标准Recommended Standard 232。TTL和rs232都是电气信号标准。
TTL就是一般连接单片机最常用的接口,Transistor-Transistor Logic。高电平3p3或者5表示1,0v表示0,但是这样很容易收干扰。于是rs232就是高电平转换成-12,低电平转成12。这样大大提高了抗干扰的能力。将ttl不到1米的传输距离提升到15米。要将ttl转成rs232,一般要外挂一个转换芯片,比如MAX232等。
rs485则是加强版的rs232,依然使用两根线,但是使用的差分信号,这样导致就只能半双工了。同时支持总线结构,这样可以挂载多个设备。同时将传输距离从15米提升到了1200米。在一般的工业场景倒是足够了。
最后再说说Modbus。Modbus其实有单独的一篇,但是已经很久都是TODO了,实在是没时间。Modbus RTU其实就是基于UART+rs485/rs232。
大概就是这种关系。
层级 | 协议/接口 | 说明 |
---|---|---|
🟩 应用层 | Modbus RTU 协议 | 定义寄存器读写、功能码、从站地址、校验等内容,是数据“说什么”的部分。 |
🟦 传输层 | UART 协议 | 把 Modbus 数据包按字节发送和接收(起始位、停止位、波特率、无校验等)。 |
🟥 物理层 | RS-485 电气标准 | 多设备差分通信标准,定义电压、距离、阻抗等,是数据“怎么传”的部分。 |
1.2 RS-485
RS-485 是一种差分信号的串行通信物理层标准,可实现多个设备在一条总线上的双向通信。
其实就是上面说的,将信号改成了差分信号,很大程度提高了抗干扰能力。副作用就是两个线只能实现半双工了,所以需要更上层的协议来规范通信。
2 实践
(TODO)
参考: