CAN 总线让多个控制单元共用一对双绞线收发消息,靠标识符仲裁决定谁先发。它抗电磁干扰、布线省,在移动机器人的驱动、电池管理和传感器链路上是主力,但带宽有限,不适合传图像。
CAN 总线最初为汽车电子设计,如今在移动机器人、AGV 和工程机械上同样普遍。它的核心特点是多主结构:任何节点都可以主动发消息,冲突时由消息标识符逐位仲裁,优先级高的报文自动胜出,低优先级的节点退让后重发。这意味着紧急停止、故障告警这类报文可以在设计阶段就被赋予确定的抢占权。
物理层用差分信号走一对双绞线,两端各加一个 120 欧姆终端电阻。差分传输让它对电机、变频器产生的电磁干扰不敏感,这也是它在机器人底盘上长盛不衰的原因。相应的代价是带宽:经典 CAN 每帧只有 8 字节数据,1 Mbit/s 时线长限制在 40 米左右。CAN FD 把单帧扩到 64 字节并提高了数据段速率,但需要全链路设备都支持。
上层通常不直接用裸 CAN,而是叠加 CANopen 或 J1939 这类应用层规范,由它们定义对象字典、设备类型和标准报文。电机驱动器、编码器和电池管理系统(BMS)大多按 CANopen 描述自己的参数,集成时靠 EDS 文件完成配置,省去手工定义每一条报文。
调试 CAN 的难点在于总线是共享的:一个节点晶振偏差过大或终端电阻缺失,表现出来的是整条总线间歇性错误,而不是某个设备单独失灵。因此现场排查通常从示波器看波形和统计错误帧计数器开始,而不是先怀疑软件。
某企业为一台移动搬运机器人整合两台轮毂驱动器和一套 BMS,全部挂在同一条 CAN 总线上。团队按 CANopen 分配节点 ID,把急停和欠压告警设为最低标识符以获得最高优先级,并在实车上测出总线负载率约 35%,为后续加装传感器留出余量。
选型时的关键问题是数据量。如果要传的是激光雷达点云或相机图像,CAN 从一开始就不成立;如果传的是转速、电流、温度和状态字,它的确定性和抗干扰能力就很难被以太网方案在同等成本下超越。
实践应用
某企业为移动搬运机器人整合两台轮毂驱动器和一套电池管理系统,全部挂在同一条 CAN 总线上。团队按 CANopen 分配节点 ID,把急停与欠压告警设为最低标识符以取得最高仲裁优先级,并在实车上测得总线负载率约 35%,为后续加装传感器留出余量。
优势
- 差分双绞线传输,对电机和变频器的电磁干扰不敏感
- 标识符仲裁让急停、告警等报文获得确定的抢占优先级
- 多节点共用一对线,整机线束重量和接插件数量明显减少
- CANopen、J1939 等上层规范提供现成的设备描述和配置流程
局限性
- 经典 CAN 每帧仅 8 字节,带宽无法承载图像或点云数据
- 速率与线长互相制约,1 Mbit/s 时可用长度约 40 米
- 总线共享导致故障定位困难,单个节点异常会拖垮整条链路
- 升级到 CAN FD 需要链路上所有设备同时支持
典型应用领域
常见问题
- CAN 总线是什么?
- 一种多主结构的串行总线,多个控制单元共用一对双绞线收发消息,冲突时按报文标识符逐位仲裁,优先级高的先发。
- CAN 总线在实际项目里怎么用?
- 先按 CANopen 或 J1939 规划节点 ID 和报文优先级,装好两端 120 欧姆终端电阻,再在整机上实测总线负载率和错误帧计数,确认留有余量后投入运行。
- 什么情况下应该选 CAN 总线?
- 当要传输的是转速、电流、温度、状态字这类小数据量的实时信号,且现场电磁环境恶劣时,CAN 的性价比很难被替代。传图像或点云则不适用。
- CAN 总线有哪些局限?
- 带宽和线长是硬约束,8 字节帧结构决定了它只能传小数据量。另外总线是共享介质,某个节点的终端电阻缺失或时钟偏差会表现为整条链路间歇性出错,排查需要示波器介入。