第1章:工业串口通信概述
大家好,我是老张。做嵌入式这些年,我打交道最多的就是串口。说实话,串口通信看起来简单,但里面的门道真不少。今天咱们就从最基础的东西聊起。
1.1 RS232/RS485/RS422标准对比
这三种标准,说白了就是工业设备之间「说话」的规矩。我刚开始做项目时,就吃过接口不匹配的亏——明明线接对了,数据就是读不出来。后来才明白,不同标准有各自的脾气。
| 特性 | RS232 | RS485 | RS422 |
|---|---|---|---|
| 传输方式 | 单端(不平衡) | 差分(平衡) | 差分(平衡) |
| 最大距离 | 约15米 | 约1200米 | 约1200米 |
| 最大节点数 | 1对1 | 最多256个 | 1发10收 |
| 信号线数 | TX、RX、GND | A、B两根线 | 4根线(T+、T-、R+、R-) |
| 典型应用 | 调试口、短距设备 | 工业总线、PLC网络 | 长距点对多点 |
我个人习惯这样选型:
- RS232:调试用,或者设备就在手边。比如我调试单片机时,串口线不超过2米,232完全够用。
- RS485:工厂里最常用。我在一个自动化产线项目中,用485挂了32个传感器,跑115200波特率,稳得很。
- RS422:需要全双工且距离远时用。比如控制云台摄像头,既要发指令又要收数据,422就比485方便。
1.2 波特率/数据位/校验位/停止位详解
这些参数,就是串口通信的「握手协议」。两边必须一模一样,否则数据就是乱码。我遇到过最坑的事:客户说设备没反应,我过去一看,波特率设成了9600,设备实际是19200——差了整整一倍。
波特率
说白了就是每秒传多少位。常见的有:
- 9600:老设备最爱,稳定但慢
- 115200:现在的主流,速度够用
- 921600:高速场景,但线长超过1米就容易丢包
你想想看,波特率越高,对线缆和干扰越敏感。我建议:能用115200就别用更高的,除非你确定线缆质量好、距离短。
数据位
通常是8位,因为一个字节就是8位。老设备可能用7位(比如传ASCII码)。我基本只用8位,省心。
校验位
- 无校验(N):最简单,不检查错误
- 奇校验(O):1的个数为奇数
- 偶校验(E):1的个数为偶数
嗯,这里要注意:校验位只能检测奇数个错误。如果两个位同时出错,校验就失效了。所以工业上更常用CRC校验,但那是协议层的事,串口参数里只管奇偶校验。
停止位
通常是1位。老设备可能用2位,给接收端更多时间处理。我一般用1位,除非遇到兼容性问题。
1.3 PDA串口硬件接口介绍
PDA上的串口,跟电脑上的不太一样。电脑通常是DB9公头,PDA则五花八门。我见过最奇葩的是用耳机接口改的串口——三根线塞进一个3.5mm插孔里。
常见的PDA串口类型:
- DB9母头:工业PDA常用,结实耐用
- RJ45接口:有些PDA用网口做串口,需要转接线
- USB转串口:现在最普遍,但要注意驱动兼容性
- 蓝牙串口:无线方便,但延迟和稳定性不如有线
我个人的习惯是:能用有线就不用无线。蓝牙串口在实验室里挺好,一到工厂车间,干扰多、距离远,经常断连。有一次在产线上调试,蓝牙串口每隔10分钟断一次,气得我直接换了根USB线。
关键点:无论什么接口,最终都要确认三件事:
- 引脚定义(哪根是TX,哪根是RX)
- 电平标准(232还是485?)
- 波特率等参数
这三样对了,通信就成功了一半。
好了,第一章就聊到这儿。下一章咱们会讲Python怎么操作串口,到时候我会拿一个真实的扫码枪案例来演示。记得准备好你的PDA和串口线,咱们动手干起来。