RS485和RS232是两种广泛使用的串行通信协议,它们在电气特性、拓扑结构、应用场景等方面有显著差异。以下是针对两者的详细解析,包括协议特点、硬件连接、软件读写操作及常见问题。
一、RS232 协议
1. 协议特点
- 点对点通信:仅支持单设备对单设备的连接。
- 电压电平:采用负逻辑(-3V~-15V 表示逻辑1,+3V~+15V 表示逻辑0)。
- 传输距离:理论最长约15米(实际受干扰影响可能更短)。
- 数据速率:通常为9600 bps ~ 115200 bps。
- 接口形式:常见DB9或DB25连接器(如计算机串口)。
2. 硬件连接
- 典型引脚(以DB9为例):
- TX (Pin 3):数据发送端。
- RX (Pin 2):数据接收端。
- GND (Pin 5):信号地。
- 其他引脚(如RTS/CTS)用于硬件流控,但现代应用中较少使用。
3. 软件配置
- 参数设置:
- 波特率(Baud Rate):双方设备需一致。
- 数据位(Data Bits):5/6/7/8 bits。
- 停止位(Stop Bits):1/1.5/2 bits。
- 校验位(Parity):None/Odd/Even。
- 流控:可选硬件(RTS/CTS)或软件(XON/XOFF)。
4. 读写数据示例(Python)
python
import serial # 配置串口 ser = serial.Serial( port='COM1', # 端口号(Windows)或 /dev/ttyS0(Linux) baudrate=9600, bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1 # 读取超时时间(秒) ) # 发送数据 ser.write(b'Hello RS232!') # 接收数据 data = ser.read(10) # 读取10字节 print(f"Received: {data}") ser.close()
5. 常见问题
- 电平不匹配:需使用MAX232等芯片转换TTL电平。
- 传输距离限制:避免超过15米,或使用信号中继器。
- 干扰问题:建议使用屏蔽线缆,远离电源线。
二、RS485 协议
1. 协议特点
- 多点通信:支持多设备(总线上可挂接32~256个设备)。
- 差分信号:使用A(+)和B(-)双绞线传输,抗干扰能力强。
- 传输距离:最长可达1200米(速率≤100kbps时)。
- 半双工:同一时间只能发送或接收(需方向控制)。
2. 硬件连接
- 典型引脚:
- A (Pin 8):差分信号正端。
- B (Pin 9):差分信号负端。
- GND:参考地(可选,但建议连接)。
- 终端电阻:在总线两端各接120Ω电阻,消除信号反射。
3. 软件配置
- 参数设置与RS232类似,但需额外控制收发方向:
- 发送时启用发送器(DE引脚高电平)。
- 接收时禁用发送器(DE引脚低电平)。
4. 读写数据示例(Python + GPIO控制方向)
python
import serial import RPi.GPIO as GPIO # 配置RS485方向控制引脚(如GPIO17) DE_PIN = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(DE_PIN, GPIO.OUT) ser = serial.Serial( port='/dev/ttyUSB0', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, timeout=1 ) # 发送数据(启用发送器) GPIO.output(DE_PIN, GPIO.HIGH) ser.write(b'Hello RS485!') GPIO.output(DE_PIN, GPIO.LOW) # 切回接收模式 # 接收数据 data = ser.read(10) print(f"Received: {data}") ser.close() GPIO.cleanup()
5. 常见问题
- 方向控制延迟:发送完成后需等待再切换方向。
- 总线冲突:需实现软件协议(如Modbus)管理设备寻址。
- 终端电阻缺失:导致信号反射,通信不稳定。
三、RS232与RS485对比
特性 | RS232 | RS485 |
---|---|---|
拓扑结构 | 点对点 | 多点总线 |
信号类型 | 单端信号 | 差分信号 |
传输距离 | ≤15米 | ≤1200米 |
抗干扰能力 | 弱 | 强 |
最大设备数 | 2 | 32~256 |
双工模式 | 全双工 | 半双工/全双工 |
四、应用场景
- RS232:计算机与打印机、调试终端、短距离设备通信。
- RS485:工业自动化(PLC、传感器)、楼宇控制、长距离多设备网络。
五、注意事项
- 电气隔离:工业环境中建议使用隔离型RS485/232转换器。
- 接地处理:避免形成地环路,导致共模干扰。
- 协议设计:RS485需自定义或使用标准协议(如Modbus)管理多设备通信。