跳转至

第 1 章 现场总线与选型坐标系

机器人身上同时有几十个执行器与传感器需要读写:关节角度、电流、限位、温度、编码器、IMU。用传统"每根信号线单独拉回主控"的方式,线缆与接插件体积、重量与故障率会迅速失控;用普通以太网又难以约束周期与抖动。现场总线(fieldbus)是为这类"信号多、速率要求不高、环境恶劣、需要确定时序"的场景而生的通信方式。本章给出它的定义边界、机器人选择它的理由,并建立 CAN / Modbus / 实时以太网之间的五轴选型坐标系——后续八章的机制与示例都在这套坐标系上展开。

三个家族与各自的主场:

flowchart LR
    need["机器人需求:多节点、低速率、确定时序"] --> can["CAN / CAN FD<br/>仲裁式多主、总线型"]
    need --> modbus["Modbus RTU / TCP<br/>主从轮询、简单通用"]
    need --> rteth["实时工业以太网<br/>周期最短、拓扑受控"]
    can --> d402["CANopen DS 402<br/>关节驱动器"]
    modbus --> io["I/O 模块 / 电表 / 老设备"]

1. 现场总线的定义与所替代的对象

国际电工委员会 IEC 61158 标准给出的定义:现场总线是用于固定或移动设备之间、现场装置与控制室自动化系统之间的数字、串行、多点、双向链路。拆开这句定义里的四个关键词,可以精确划定"什么算现场总线、什么不算"。

  • 数字:传的是编码后的比特流,不是 4–20 mA 模拟量或继电器通断。
  • 串行:一位一位按时间顺序发;对偶的是并行总线(如早期 ISA/PCI),需要成束数据线同时翻转。
  • 多点(multi-drop):一根物理线挂多台设备共享;对偶的是"点对点"(point-to-point,例如 RS-232 常见用法)。
  • 双向:同一链路上有去有回;对偶的是广播类单向链路(如旧式 GPS 时钟分发线)。

现场总线与两个相邻概念需要划清界限。

1.1 与传统并行接线的分界

传统工业机器人控制柜内常见"一信号一 Cable":每个数字输入、每个编码器 A/B/Z、每个模拟量反馈各自走一对屏蔽线回主控板卡。这种布线有三处硬约束——线束粗、接插件针数多、故障点分散难以定位。现场总线用多点串行链路把这些信号打包成协议帧:一条双绞线可挂 32–127 台设备,信号语义交给协议栈在两端解释。省下的不只是线缆,还有装配工时、调试工时与后期更换设备的兼容成本。

代价是引入了协议栈与时序:信号不再"通电即读",而是要在固定的通信周期里由主站轮询或以太网帧搬运,实时性从"导线传播时延"变成了"协议栈 + 总线仲裁 + 周期"的合成时延。这是本板块从第 3 章开始反复拆解的对象。

1.2 与通用以太网的分界

以太网(IEEE 802.3)与现场总线在物理层可以共用双绞线、都传帧,但设计目标不同:

维度 以太网(IEEE 802.3) 现场总线(IEC 61158 / ISO 11898 等)
设计目标 最大吞吐、突发容忍 周期确定、抖动可控
介质访问 CSMA/CD(半双工)或全双工交换 主从轮询 / 非破坏性仲裁 / 主站循环帧
单帧最大 1500 B 载荷(MTU) 通常远小于此(CAN 经典 8 B、CAN FD 64 B)
拓扑约束 星型交换为主 总线型 / 菊花链 / 线型,末端接终端电阻
电气环境 办公室级 工业级:±15 kV ESD、共模 -2 至 +7 V、-40 至 85 ℃
诊断模型 链路层计数、SNMP 帧级错误计数、节点守护、心跳与看门狗

现场总线不追求带宽,追求同一周期内所有节点都能被服务一次(周期确定性)与任一节点失效不拖垮总线(可用性)。第 8 章的 EtherCAT / PROFINET IRT 把这一倾向推到极致:主站一帧扫过所有从站、单周期 100 μs–1 ms、抖动亚微秒。

2. 机器人选择现场总线的原因

"能不能不用现场总线"——用并行接线或工业以太网交换机(走 TCP/IP 或 UDP)都能实现信号搬运。机器人仍然选择现场总线,是三股力同时作用的结果。

2.1 线缆与接插件的成本

一台 6 自由度机械臂每条关节通常需要:位置反馈、速度反馈、电流反馈、温度、限位、抱闸控制、使能控制,加上驱动器本身的故障复位与参数读写。用点对点接线,每关节至少 8 对信号线;六轴就是 48 对线加两端连接器。改用 CAN 总线,每关节只需一对双绞线(CAN_H / CAN_L)加电源,信号在同一链路上分时复用。整机线束体积、重量与成本(SWaP-C)显著下降,接插件针数减少也让装配一次通过率上升。

2.2 实时性的可预测

机器人控制回路的实时性要求分三档:

  • 软实时:偶尔超时不影响正确性(视觉推理结果 30–60 Hz)。
  • 硬实时:错过截止即失败(力控内环 1 kHz、电流环 10–20 kHz)。
  • 确定实时:不仅不超时,且抖动上限可算出(EtherCAT DC 同步的关节协同)。

现场总线设计的目标是把实时性从"取决于负载与调度"变成"取决于协议参数与拓扑"。CAN 的位仲裁保证高优先级帧的最坏等待时间可算(ID 最小的帧必赢仲裁,其余帧自动退避);EtherCAT 的 on-the-fly 处理让主站一帧扫完全线,从站处理不引入额外 RTT。这些机制是后续章节要逐一拆开的。

2.3 诊断与运维语义

现场总线协议在帧层就内建诊断字段:CAN 的 CRC15、ACK 位、错误帧与错误计数器(TEC/REC);Modbus 的异常码(0x01–0x0B);CANopen 的 NMT 守护与心跳;EtherCAT 的 AL Status 与 DcSync 状态。主站读到"节点 A 心跳丢失 3 个周期"比读到"某根线电压不对"更可操作——运维从万用表量通断升级为协议级定位。

现场总线不止解决通信。协议栈还兼任设备发现、参数下发、故障上报、固件升级的载体:CANopen 的 SDO 可以读写对象字典里任意条目(含制造商自定义区),EtherCAT 的 CoE(CANopen over EtherCAT)profile 直接复用同一套对象字典。总线不通,这些上层运维手段同时失效。

3. 五轴选型坐标系

现场总线家族庞大(IEC 61158 收录了 20 余种类型),选型不能只比"谁更快"。本板块用五个正交轴定位每一条总线,任何两条总线在五轴上都不完全同侧。

  • 速率(bit rate):物理层标称波特率与单帧载荷上限。速率决定"一秒能塞多少数据",但不决定"能不能按时到"。
  • 实时性(determinism):周期上限与抖动上限。由介质访问策略、拓扑与主站循环方式决定;软实时与硬实时之间没有免费的升级路径。
  • 距离(reach):单段最大长度与可中继节点数。距离与速率通常呈反比:CAN 在 1 Mbps 下最大 40 m,降到 125 kbps 可延到 500 m。
  • 节点数(node count):同一物理段可挂的逻辑节点上限。CAN 由 11 位仲裁 ID 与位时序预算共同决定实际可用节点数(通常 30 左右,规范上限 1e7);Modbus RTU 由 1–247 从站地址约束。
  • 成本(cost):含主站硬件、从站硬件、协议授权、集成工时四项。CAN 从站 MCU 可低至几元人民币,Modbus TCP 从站几乎任何语言可写;EtherCAT 从站需要 ESC 芯片(专用硬件),且主站软件多为商业授权。

五个轴不是并列打勾,而是互相约束。举两种典型需求:

  • 一台六轴协作机械臂:关节级力控 1 kHz、抖动 < 100 μs → 实时性轴优先,选 EtherCAT 或 CAN FD;CAN 经典 1 Mbps 下六轴 × 4 变量 @ 1 kHz ≈ 55% 负载率,接近可用上限。
  • 一台 AGV 上的电池 BMS、轮毂电机、急停板:周期 10–100 ms、节点 5–10 个、成本敏感 → 成本与节点数轴优先,选 CAN / CANopen;EtherCAT 反而是过度设计。

判据要写成算式而不是感觉。本板块在第 9 章给出负载率与最坏等待时间的计算模板,任何"我这条总线够用吗"的直觉判断都应在算式前重新核对。

4. 三大主流家族画像

机器人最常打交道的三条总线家族——CAN、Modbus、实时工业以太网——各有清晰的能力边界。本节只建立画像与选型直觉,具体机制分别在第 3–4、6–7、8 章展开。

4.1 CAN 与 CAN FD

CAN(Controller Area Network)由 Bosch 于 1980 年代为汽车电子设计,1991 年成为 ISO 11898 国际标准。物理层用差分双绞线(CAN_H / CAN_L),显性电平 ~0 V 差分、隐性 ~2 V;链路层用非破坏性位仲裁(CSMA/CD+AMP,Carrier Sense Multiple Access with Collision Detection with Arbitration on Message Priorities):多节点同时发送时,仲裁 ID 数值小的帧胜出,胜出帧不受影响继续发送,失败帧自动退避。

  • 速率:经典 CAN 最高 1 Mbps(对应总线长度 ≤ 40 m);CAN FD 仲裁段保持经典速率、数据段可提到 5–8 Mbps。
  • 单帧载荷:经典 0–8 字节;FD 最大 64 字节。
  • 节点数:11 位标准 ID 或 29 位扩展 ID,理论上限极大;受位时序与传播时延约束,实际常用 30 以内。
  • 成本:主站可用 USB-CAN 转换器(数十至数百元),从站集成 CAN 控制器的 MCU 单价低至几元;协议无授权费。
  • 实时性:优先级抢占、无中心,最坏等待时间可按 ID 与位速率算出;适合中低频硬实时。

在机器人领域的定位:关节驱动器的第一选择。CANopen 与 CiA 402 设备 profile(第 5 章)几乎定义了协作机械臂与人形机器人关节通信的事实标准。

4.2 Modbus RTU 与 Modbus TCP

Modbus 由施耐德(Schneider Electric,原 Modicon)1979 年为 PLC 定义,是目前工业界最"平价通用"的协议之一。协议本体极其简单:主站发一条 PDU(Protocol Data Unit),从站回一条 PDU;PDU 由功能码(Function Code)+ 数据组成。传输层可选 RTU(串口,CRC16)、ASCII(串口,LRC)或 TCP(以太网,MBAP 头,无 CRC)。

  • 速率:RTU 常见 9600–115200 bps;TCP 走标准以太网。
  • 单帧载荷:受串口缓冲区与 TCP MTU 约束;读寄存器功能码一帧最多 125 个保持寄存器。
  • 节点数:RTU 从站地址 1–247(0 为广播);TCP 一台服务器可支持并发多客户端。
  • 成本:物理层复用 RS-485(一对双绞),主站可用任意 PC,从站可软件实现。
  • 实时性:主从轮询,无抢占、无事件驱动;周期取决于轮询表长度与波特率,通常在 10–100 ms 量级。

在机器人领域的定位:非关节类"慢变量"设备——电池管理(BMS)、电动夹爪、气动比例阀、温湿度传感器、老旧数控机床数据采集。协议简单、跨平台库丰富(pymodbus / libmodbus),集成成本极低。

Modbus 不支持多主。Modbus 是严格主从模型,从站之间不允许直接对话,从站也不能主动上报告警——所有"事件"必须由主站轮询到。Modbus TCP 允许多个客户端并发访问一台服务器,但从语义上看仍是"多个主站对一个从站",不构成总线级多主仲裁。

4.3 EtherCAT 与实时工业以太网

EtherCAT(Ethernet for Control Automation Technology,Beckhoff 主推、ETG.1000 标准)把以太网帧变成"循环的快递车":主站发出一帧依次穿过所有从站,每个从站在帧经过时读自己该读的字节、写自己该写的字节(on-the-fly),不做存储转发;帧绕回主站时已携带全线的数据。

  • 速率:100 Mbps 物理层;有效数据率取决于从站数与帧长。
  • 周期:典型 100 μs–1 ms,配合分布式时钟(Distributed Clocks,DC)可将所有从站的执行对齐到亚微秒级同步窗口。
  • 节点数:单线最多 65535 从站(工程实践中受拓扑、周期预算约束,一般几百)。
  • 成本:从站需要专用 ESC 芯片(Beckhoff / Microchip / 国产多家),主站软件商业授权或开源(IgH / SOEM);集成门槛与工时高于 CAN。
  • 实时性:硬实时;抖动可到 1 μs 量级(依赖 DC 与网卡硬件时间戳)。

同族邻居:PROFINET IRT(IEC 61158 Type 10,西门子主推)走类似路径但用同步实时通道(IRT 交换机硬件时隙调度);POWERLINK(EPSG DS 301,B&R 主推)用"管理节点轮询 + 固定时隙"模型。三者共同构成"实时以太网家族",机制在本板块第 8 章概览级展开。

在机器人领域的定位:高性能多轴协同——协作机械臂、并联机器人、需要 < 100 μs 同步窗口的力控实验台。关节驱动层两条路线并存:EtherCAT + CoE 用于高精度多轴与多数协作臂,CAN / CAN FD + CANopen 用于成本敏感的小型关节与传感器聚合;实时以太网同时承担控制器与外部设备(视觉触发、多轴运动卡)之间的链路。

5. 现场总线在机器人软件栈中的位置

现场总线不是孤立的一层。它在机器人整机软件栈里的位置决定了与哪些上层模块对接、由谁负责实时循环。

┌────────────────────────────────────────────────────────────┐
│  应用与规划        SLAM / 运动规划 / 感知推理               │  ← ROS2-note 第 7、8、10 章
├────────────────────────────────────────────────────────────┤
│  框架与中间件      ROS 2 节点 / topic / service / action    │  ← ROS2-note 第 1–5 章
├────────────────────────────────────────────────────────────┤
│  控制抽象          ros2_control / hardware_interface /      │  ← ROS2-note 第 6 章
│                    controller_manager(1 kHz 循环)         │
├────────────────────────────────────────────────────────────┤
│  ★ 现场总线驱动    SocketCAN / python-can / EtherCAT master │  ← 本板块
│                    串口 / RS-485 收发与协议栈               │
├────────────────────────────────────────────────────────────┤
│  物理层与硬件      收发器 / 变压器 / 屏蔽双绞 / 终端电阻     │  ← 本板块第 2 章
│                    USB-CAN 适配器 / MCU 上 CAN 控制器        │
└────────────────────────────────────────────────────────────┘

三层分工:

  • 上位(ROS 2 / ros2_control) 关心"给关节下发什么轨迹、上报什么状态",周期 100 Hz–1 kHz;抽象接口是 read() / write()。
  • 本板块覆盖的驱动与物理层 关心"一帧怎么组、错误怎么恢复、总线负载怎么算",周期到单帧级别(CAN 1 Mbps 下一帧 130 μs 量级);抽象接口是 SocketCAN 套接字、python-can.Bus 或 EtherCAT master 的 PDO 域。
  • 仿真对照(mujoco-textbook) 提供无真硬件时的控制回路对照(力矩→姿态的响应曲线);本板块提供协议时序与真硬件行为的准据。二者互补:仿真里调好的控制器仍需上真实总线时序环境检验,总线上可用的驱动器也需在仿真里做整机动控测试。

协作机械臂的一条完整数据链示例:关节电机(CiA 402 profile,operation mode = CSP)经 CAN FD 总线 → USB-CAN 适配器(pcan backend) → SocketCAN 内核栈(can0 接口) → python-can 或厂商 SDK → hardware_interface::SystemInterface::read() → joint_state_broadcaster 发布 /joint_states topic → Nav2 或 MoveIt 消费。这条链路上,本板块覆盖前三段(总线 → SocketCAN → 用户态收发),ROS2-note 第 6 章覆盖后三段(ros2_control → 控制器 → 上层规划)。

6. 路线与状态

本板块按四层自底向上推进,四层分别对应不同选型问题:

层 覆盖章 回答的问题
物理层与布线 第 2 章 接得上、传得稳
数据链路层 第 3–4 章 谁先说、说错怎么办
应用层协议 第 5–7 章 数据怎么解释
实时以太网与选型 第 8–9 章 什么场景选什么、出问题怎么查

写作顺序与阅读顺序一致。跨板块引用规则:正文里"第 N 章「小标题」"指向本板块另一章;引用 ROS2-note 或 mujoco-textbook 时写全名与板块路径,不用 § 号(§ 只留给 IEC / ISO / CiA 等规范的小节记号)。

7. 要点

  • 现场总线是"数字 + 串行 + 多点 + 双向"的现场通信链路,与"并行接线"分界在多点串行,与"通用以太网"分界在目标函数(确定性优先于带宽)。
  • 机器人选现场总线是三股力的合成:SWaP-C 成本、协议内建的确定性实时、诊断语义可运维。任一单独理由都不足以覆盖全部场景。
  • 五轴选型坐标系(速率 / 实时性 / 距离 / 节点数 / 成本)互相约束,不是并列打勾;判断"够不够用"要落到算式(负载率、最坏等待时间、周期预算)。
  • 三大主流家族的能力边界:CAN / CAN FD 覆盖关节级硬实时与设备 profile 生态;Modbus 覆盖慢变量与非关节设备;实时以太网覆盖多轴同步 < 100 μs 的高性能场景。选型不越界。
  • 本板块位于整机软件栈的驱动与物理层之间:上承 ROS 2 / ros2_control 的控制抽象,下接收发器与线材;与 MuJoCo 教科书形成仿真—真机对照。

参考文献与延伸阅读

  • ISO 11898-1. Road Vehicles — Controller Area Network (CAN) — Part 1: Data Link Layer and Physical Signalling. 2024.
  • CAN in Automation (CiA). 规范与文档入口. 文档
  • Linux Kernel. SocketCAN 文档. 文档