1. 串口通信基础:RS232/RS485标准、波特率、数据位、停止位、校验位详解

1.1 先说两句心里话

做SCADA系统这么多年,我调试过最多的通信接口,就是串口。

你别看它老,它可靠。在工业现场,什么以太网断了、WiFi飘了,串口往往还能坚挺地传数据。我个人习惯,凡是关键设备之间的心跳信号,一定走串口——稳。

但话说回来,串口通信也是最容易出幺蛾子的地方。波特率设错了、校验位不匹配、线序接反了……这些坑我全踩过。今天咱们就把串口通信的底裤扒干净,从标准到参数,一个一个说透。

1.2 RS232 与 RS485:两种标准,两种脾气

串口通信的物理层标准,最常见的就是RS232和RS485。它们俩的区别,说白了就是「单挑」和「群殴」。

RS232:点对点,简单粗暴

RS232是早期PC标配的串口标准。它用正负电压表示逻辑电平:-3V到-15V是逻辑1,+3V到+15V是逻辑0。嗯,电压范围挺宽,但抗干扰能力一般。

我在项目中遇到过一件事:一条RS232线拉了15米,数据就开始乱码。后来一查,RS232的极限传输距离也就15米左右。你想想看,工厂里设备动不动隔几十米,RS232根本扛不住。

⚠ 注意: RS232只能接一台设备。想接多台?别想了,换RS485吧。

RS485:差分信号,抗干扰强

RS485用的是差分信号传输。两根线(A和B)之间的电压差来决定逻辑:差值为正就是逻辑1,差值为负就是逻辑0。这种设计天生抗共模干扰,传输距离能到1200米。

而且RS485支持多站通信,一条总线上可以挂32个节点(甚至更多)。我调试过一条RS485总线,挂了18台变频器,跑115200波特率,稳得很。

参数 RS232 RS485
传输方式 单端(非平衡) 差分(平衡)
最大距离 约15米 约1200米
节点数 1对1 最多32节点(标准)
抗干扰 一般
典型应用 短距离、一对一 长距离、多设备

1.3 波特率:通信的「心跳」

波特率,就是每秒传输的符号数。单位是bps(bits per second)。

常见的波特率有:9600、19200、38400、115200。工业现场用得最多的是9600和19200。为什么?因为距离越长,波特率就得越低,否则信号会衰减得厉害。

我曾经调试一条200米长的RS485线,设成115200,数据全错。降到9600,立马正常。你想想看,信号在长线缆上跑,高频分量衰减快,波特率越高,眼图越差。

💡 经验之谈: 我建议你,现场调试时先设9600。通了再慢慢往上提。别一上来就115200,给自己找麻烦。

1.4 数据位:一次传多少比特

数据位,就是每个数据帧里实际承载的数据比特数。常见的有7位和8位。

7位数据位,一般用于传输ASCII字符(0-127)。8位数据位,可以传0-255的完整字节。现在绝大多数设备都用8位数据位。我几乎没见过用7位的,除非是跟老古董设备通信。

1.5 停止位:帧与帧之间的「喘息」

停止位,就是一个数据帧结束后的空闲时间。常见的有1位、1.5位、2位。

停止位越长,接收端越容易同步。但代价是传输效率降低。我个人习惯,大部分场景用1位停止位就够了。如果通信环境特别差(比如强干扰),我会设成2位停止位,给接收端多点时间处理。

1.6 校验位:数据对不对,它说了算

校验位,是用来检测数据传输过程中有没有出错的。常见的有:无校验(None)、奇校验(Odd)、偶校验(Even)。

奇校验:数据位加上校验位,1的总个数为奇数。
偶校验:数据位加上校验位,1的总个数为偶数。

举个例子:数据位是 0100 0001(即字符'A'),有2个1。如果采用奇校验,校验位就得是1,让总1个数变成3(奇数)。如果采用偶校验,校验位就是0,总1个数保持2(偶数)。

🔑 关键点: 发送端和接收端的校验方式必须一致。否则数据能收到,但校验永远通不过。我见过有人调试半天,最后发现是发送端设了偶校验,接收端设了无校验——数据全被当成错误丢弃了。

1.7 避坑指南:串口参数不匹配的典型症状

  • 症状一: 能收到数据,但全是乱码。大概率是波特率不匹配。
  • 症状二: 数据偶尔丢一两个字节。可能是停止位太短,或者干扰太大。
  • 症状三: 数据能收到,但校验总是失败。检查校验位设置是否一致。
  • 症状四: 完全收不到数据。先查线序,再查参数。

我曾经调试一个PLC和变频器的通信,数据时通时断。折腾了两小时,最后发现是RS485的A/B线接反了。嗯,这种低级错误,谁都会犯。但犯过一次,你就记住了。

1.8 小结

串口通信的参数,说白了就是五个东西:标准、波特率、数据位、停止位、校验位。它们必须完全一致,通信才能正常。

我建议你,每次调试串口设备前,先列个表,把两端的参数写出来,逐项核对。别嫌麻烦,这能省你半天时间。

下一章,咱们聊聊串口通信的硬件接线和常见故障排查。到时候我会分享几个我亲手踩过的坑,保证让你少走弯路。