3. 物理层与链路层选型:RS485、CAN总线、以太网在售货机场景下的优劣对比
好,咱们进入正题。这一章聊的是物理层和链路层的选型。说白了,就是决定售货机里的各个模块之间,到底用什么线来“说话”。
我做了这么多年轨道交通售货机,发现很多新手工程师上来就选以太网,觉得“快就是好”。但实际落地时,问题一大堆。你想想看,地铁车厢里那环境,震动、电磁干扰、长距离走线……选错了物理层,后面调试能让你怀疑人生。
今天我就把RS485、CAN总线、以太网这三兄弟,在售货机场景下的底裤都扒干净。咱们不聊虚的,直接上干货。
3.1 RS485:老当益壮的“多机通信老兵”
RS485,这玩意儿在工业界用了三四十年了。我最早接触它是在做自动售货机硬币器通信的时候。嗯,到现在很多老机型还在用。
优点很明显:
- 距离远: 1200米没问题。一节地铁车厢也就20多米,绰绰有余。
- 多节点: 一条总线上挂32个设备很轻松。售货机里的主控板、货道驱动板、制冷板、显示屏,全挂上去都够用。
- 成本低: 一对双绞线就搞定。芯片也便宜,几毛钱一片。
- 差分信号: 抗共模干扰能力强。地铁里的电机启停、变频器干扰,RS485基本能扛住。
但缺点也让人头疼:
- 半双工: 同一时间只能一个人说话。主站问一句,从站答一句。效率低。
- 没有冲突检测: 两个设备同时发数据,数据就撞车了。全靠软件协议来避免。
- 没有标准应用层: RS485只规定了电气特性。数据怎么打包、怎么寻址,你得自己定。我见过太多团队因为自定义协议不规范,导致不同批次设备不兼容。
- 主从架构: 必须有一个主节点轮询所有从节点。从节点不能主动上报故障。这在售货机场景下很要命——货道卡住了,你得等主控轮询到它才知道。
我的经验: RS485最适合做售货机内部的“低速控制总线”。比如控制货道电机、读取温度传感器、设置制冷参数。这些数据量小,实时性要求不高,用RS485性价比极高。
避坑指南: 我曾经在一个项目中,RS485总线长度超过了50米,终端电阻没加,结果数据经常丢包。后来老老实实加了120欧姆终端电阻,问题解决。记住:长距离通信,终端电阻不是摆设。
3.2 CAN总线:为“实时响应”而生的硬汉
CAN总线,最早是德国博世为汽车设计的。你想想,汽车里刹车信号、油门信号,那都是人命关天的事,必须实时响应。售货机虽然没那么夸张,但有些场景确实需要CAN这种“急性子”。
CAN的优势:
- 多主架构: 任何节点都可以主动发数据。货道卡住了,从节点能立刻上报,不用等主控轮询。
- 实时性高: 优先级高的报文,最多等几个微秒就能发出去。这对售货机的硬币识别、纸币器响应非常关键。
- 错误处理机制完善: CAN有CRC校验、错误帧、自动重发。数据可靠性比RS485高一个量级。
- 差分信号: 和RS485一样,抗干扰能力强。
CAN的短板:
- 速率上限: 一般用250kbps或500kbps。比以太网慢得多。但售货机那点数据量,其实够用。
- 节点数有限: 标准CAN最多110个节点。售货机内部一般不超过20个节点,够用。
- 成本略高: CAN控制器和收发器比RS485贵一些。但批量采购差价不大。
- 学习曲线: CAN协议比RS485复杂。你得理解ID仲裁、位填充、同步段这些概念。新手容易懵。
我的建议: 如果你的售货机需要“实时响应”或“主动上报”,比如硬币器、纸币器、找零模块,用CAN总线。我做过一个项目,纸币器用RS485通信,投币后要等200ms才能收到确认。换成CAN后,延迟降到5ms以内。用户体验完全不一样。
注意: CAN总线的终端电阻必须加!而且必须是120欧姆,不能多不能少。我见过有人偷懒没加,结果总线反射严重,数据全乱套。还有,CAN的线缆要用双绞屏蔽线,别省那几块钱。
3.3 以太网:大胃王的“数据高速公路”
以太网,现在谁不知道?速度快、生态好、调试方便。但用在售货机上,有点“杀鸡用牛刀”的感觉。
以太网的优势:
- 速度快: 100Mbps起步。传个日志、升级固件、传输高清图片,分分钟搞定。
- 生态丰富: TCP/IP协议栈现成的。HTTP、MQTT、WebSocket随便用。远程监控、云端管理很方便。
- 调试方便: 一根网线插电脑上,Wireshark抓包,什么问题都看得清清楚楚。
- 全双工: 可以同时收发数据。效率高。
以太网的硬伤:
- 距离限制: 不加交换机,网线最长100米。地铁车厢里走线,有时候从车头到车尾就超过100米了。
- 成本高: 需要MAC+PHY芯片,还需要变压器、RJ45座子。一套下来比RS485贵好几倍。
- 功耗大: 以太网PHY芯片功耗几百毫瓦。电池供电的售货机根本扛不住。
- 抗干扰能力弱: 以太网用的是差分信号,但变压器隔离后,共模抑制能力不如RS485和CAN。地铁里的强电磁干扰,可能导致网口丢包甚至断开。
- 协议栈复杂: 嵌入式设备跑TCP/IP协议栈,对MCU资源要求高。8位单片机基本跑不动。
我的看法: 以太网最适合做“上位机通信”或“远程管理”。比如售货机通过以太网连接到车站的监控系统,上传销售数据、接收远程指令。但内部模块之间的通信,用以太网就太浪费了。
一个小技巧: 如果你非要在售货机内部用以太网,记得选工业级PHY芯片,比如TI的DP83848。普通消费级芯片在地铁环境里容易“掉线”。我吃过这个亏,后来全换成工业级了。
3.4 一张表看懂怎么选
说了这么多,咱们直接上对比表。你照着选就行。
| 对比项 | RS485 | CAN总线 | 以太网 |
|---|---|---|---|
| 通信距离 | 1200米 | 40米@1Mbps | 100米 |
| 通信速率 | 10Mbps(短距离) | 1Mbps(典型250k) | 100Mbps~1Gbps |
| 节点数 | 32~256个 | 110个 | 理论上无限(靠交换机) |
| 通信模式 | 半双工,主从 | 半双工,多主 | 全双工,对等 |
| 实时性 | 低(靠轮询) | 高(事件触发) | 中(靠协议) |
| 抗干扰 | 强 | 很强 | 中 |
| 成本 | 低 | 中 | 高 |
| 功耗 | 低 | 低 | 高 |
| 协议复杂度 | 低(需自定义) | 中(标准协议) | 高(TCP/IP栈) |
| 适用场景 | 货道控制、温度采集 | 硬币器、纸币器、找零 | 远程监控、固件升级 |
3.5 我的推荐方案
做了这么多年轨道交通售货机,我总结了一套“混搭”方案,你可以参考:
- 内部低速控制总线: 用RS485。连接主控板、货道驱动板、制冷板、照明板。数据量小,成本低,稳定可靠。
- 实时响应设备: 用CAN总线。连接硬币器、纸币器、找零模块、门锁传感器。这些设备需要主动上报,延迟要低。
- 远程通信: 用以太网。连接车站的监控系统或云端服务器。上传销售数据、接收远程指令、升级固件。
这样搭配,既控制了成本,又保证了实时性,还兼顾了远程管理能力。说白了,就是“好钢用在刀刃上”。
最后提醒一句: 不管选哪种总线,线缆质量一定要过关。地铁环境里,劣质线缆是最大的隐患。我见过一个项目,为了省几毛钱一米,用了普通屏蔽线,结果CAN总线在列车启动时频繁报错。后来换成进口双绞屏蔽线,问题全没了。嗯,该花的钱不能省。
好了,物理层和链路层的选型就聊到这儿。下一章咱们聊聊应用层协议怎么设计,那才是真正体现功力的地方。