先直接回答名字

人形/工业多轴伺服常说的高速实时 Ethernet 总线通常是 EtherCAT;宇树公开的 GO-M8010-6 独立关节电机使用 4 Mbit/s 高速 RS-485;G1 对开发者公开的整机低层接口则是 Ethernet 网络上的 CycloneDDS。三者不能互相替代地称为“G1 的底层总线”。

先定层级列 payload/rate算 serialization加 arbitration/stack delay设计 timestamp/sync定义 timeout
ApplicationROS 2 / DDS
over
NetworkEthernet / UDP
Servo fieldbusEtherCAT / CAN
Physical linkRS-485 wires
Application protocol、fieldbus 和 electrical layer 位于不同层;带宽、同步与故障语义必须逐层说明。

1. 先用分层停止混乱

application       trajectory / WBC / policy
message model      q, dq, Kp, Kd, tau; DDS topics; ROS messages
protocol           proprietary frames / CANopen / CoE / DDS-RTPS
data link          UART framing / CAN / EtherCAT / Ethernet
physical layer     TTL wire / RS-485 pair / CAN pair / 100BASE-TX
connector+cable    pinout, shielding, ground, termination, topology

RS-485 主要定义电气层,并没有规定消息字段;CAN 同时定义物理/链路与仲裁帧,但“角度放哪几个 byte”仍由上层协议决定;EtherCAT 定义实时 Ethernet 数据链路与设备通信;DDS 是数据分发中间件,通常跑在 IP 网络上。

2. UART/TTL 与 RS-485

UART 定义异步串行字符格式和 baud rate。MCU 的 TTL UART 是单端、点对点、短距离;把 UART 数据接入 RS-485 transceiver 后,A/B 双绞线用差分电压传输,抗共模噪声和长距离能力显著提高,并可做多点总线。

  • RS-485 只规定 driver/receiver 的电气行为,协议、寻址、CRC、主从时序由产品定义。
  • 常见半双工总线同一时刻只有一个节点发送,需要 direction control 和避免冲突。
  • 高速/长线时应按电缆差分特性阻抗,在物理总线两端终端;传统值常为 120 Ω。
  • 应采用 trunk/daisy-chain 并缩短 stub;星形随速率和线长上升更容易反射。

宇树实例:GO-M8010-6 官方页面列出 RS-485、4 Mbit/s、最高 6 kHz 通信控制频率和 15-bit 编码器。这是某款独立 actuator 的公开规格,不足以证明 G1 机内每个关节完全使用同一总线。

3. Classical CAN 与 CAN-FD

CAN 也是差分多点总线,但链路层已经提供无损位仲裁、帧校验、ACK、错误计数与 bus-off。多个节点同时发时,数值更小/优先级更高的 identifier 赢得仲裁,失败节点稍后重发,因此没有 Ethernet 碰撞造成的帧损坏。

Classical CANCAN-FD
payload最多 8 byte最多 64 byte
bit rate经典规范上限 1 Mbit/s仲裁段保持 nominal rate,data phase 可切更高 rate
适合小而关键的控制/状态帧更多关节状态、固件更新和较高带宽

CAN 总线通常用约 120 Ω 双绞线,并在物理干线两端各放一个 120 Ω 终端;断电量到约 60 Ω 是常见粗检,但还要排除节点、电源和其他并联路径。CAN 的强项是鲁棒仲裁与错误隔离,不是全网亚微秒同步。

4. EtherCAT 为什么适合很多伺服轴

EtherCAT MainDevice 发出标准 Ethernet frame,帧依次经过 SubDevices;每个设备在帧“飞过”时直接读写属于自己的 process data,而不是逐节点收完整包、重新排队再发送。

  • 100 Mbit/s + on-the-fly:一个 frame 可更新许多轴,延迟可预测。
  • process image:主站周期性读写映射好的输入/输出区域。
  • Distributed Clocks:硬件补偿传播延迟,使多个关节在共同时间基准采样/输出;ETG 给出显著小于 1 μs 的同步抖动。
  • 拓扑:线形、树形和分支灵活,但 SubDevice 需要专用 EtherCAT controller/ASIC 或 FPGA IP。
  • CoE/CiA 402:很多伺服把 CANopen 对象/drive profile 复用到 EtherCAT mailbox 上;这不意味着物理层变成 CAN。

EtherCAT 虽使用 Ethernet frame 和普通主站 NIC,却通常不走 TCP/UDP,不能把普通交换式 Ethernet 的网络行为直接套过来。

5. Ethernet、UDP、DDS 与 ROS 2

普通 Ethernet/IP 提供高带宽和成熟网络生态。DDS 在其上提供 typed publish/subscribe、发现与 QoS;ROS 2 也常以 DDS 为中间件。它适合计算机、相机、状态估计和控制服务,但默认 switched network + general-purpose OS 不保证硬实时。

Unitree SDK2 的公开 G1 例子通过网络接口创建 DDS publisher/subscriber,在 rt/lowcmdrt/lowstate 上传输 29 个电机的 q/dq/Kp/Kd/τ 与状态。这个接口处在整机控制器层;驱动板内部如何换向、机内控制板到各电机使用何种物理链路,是另一个边界。

6. 一张实用比较表

链路核心优势主要约束常见位置
RS-485便宜、差分、可高 baud、多点上层协议自定义,仲裁/同步需自行设计集成关节、编码器、夹爪
CAN仲裁、错误隔离、生态成熟payload/带宽有限,周期随负载变化移动机器人、汽车、低中速关节
CAN-FD64 B payload、更快 data phase布线与 timing 更敏感,仍非全网同采样时钟新型 actuator 和车载网络
EtherCAT高吞吐、确定周期、Distributed Clocks从站硬件/主站栈和集成复杂度工业伺服、人形多轴实时控制
Ethernet + DDS高带宽、pub/sub、跨进程/计算机默认非硬实时,QoS 与 OS/交换机都影响结果整机 SDK、ROS 2、感知/规划

7. Bitrate 不是 control rate

bus load ≈ (payload + headers + CRC + gaps + retries) × update_rate × node_count

4 Mbit/s 只是线上的 bit rate;6 kHz 控制还取决于每条命令/回复长度、半双工 turnaround、节点调度、软件延迟和错误重传。选总线时至少测量:

  • end-to-end latency、99.9% jitter 和丢包/错误率;
  • 所有轴是否在同一采样时刻,还是只在相近到达时刻;
  • 最大总线占用率及故障重试后的裕量;
  • 命令 watchdog、sequence、CRC、时间戳和安全状态;
  • 线长、stub、屏蔽、隔离、地电位差和连接器寿命。

8. 四个 bus 时序手算

例 1:UART serialization

115200 baud、8N1(1 start+8 data+1 stop)发送 20 bytes 需 200 bits,线速时间=200/115200≈1.736 ms,还未算 turnaround 和解析。

例 2:RS-485 multi-axis payload

4 Mbit/s link,每轴 command+feedback 合计 32 bytes,12 轴每周期 payload=32×12×8=3072 bits,纯 serialization≈0.768 ms;若目标 1 kHz,只剩约 0.232 ms 给 framing/turnaround。

例 3:CAN payload 下限

Classical CAN 1 Mbit/s,8-byte payload 本身 64 bits,理想下限 64 μs;加 arbitration、identifier、CRC、stuffing 与 inter-frame 后显著更长,所以不能用 1 Mbit/s ÷ 8 bytes 直接宣称 control rate。

例 4:deadline 与 jitter

1 kHz servo 周期=1 ms。Sensor ready 0.25 ms、controller 0.30 ms、bus p99 0.25 ms、drive apply 0.10 ms,总 p99=0.90 ms,只剩 0.10 ms margin;偶发 0.2 ms jitter 就会 miss deadline。

常见误解:

EtherCAT 不是“更快的 TCP/IP”,RS-485 不是完整消息协议,DDS 也不是电机相线旁的硬实时换向总线。先确定讨论的是哪一层,协议名才有意义。

自测

1. 为什么 RS-485 两根线接通后仍可能无法控制电机?

还需要 baud、帧格式、节点 ID、字节序、CRC、收发方向和命令/回复时序完全一致。

2. EtherCAT 的同步优势只来自 100 Mbit/s 吗?

不是。on-the-fly process data 和硬件 Distributed Clocks/传播延迟补偿同样关键;单纯提高普通 Ethernet 速率不自动获得确定同步。

3. 为什么知道 G1 使用 DDS 仍不能断言关节驱动器使用 EtherCAT?

DDS 是开发者到整机控制服务的消息层;控制板到驱动器的机内链路属于更低且可能未公开的层。

一手资料

Unitree GO-M8010-6 给出高速 RS-485 实例;Unitree G1 Low-level Example 展示 DDS topics 与关节命令;Bosch CAN-FD 定义 64-byte payload 与双速率;EtherCAT Technology Group 解释 on-the-fly 与 Distributed Clocks;TI RS-485 Basics 解释差分总线和终端。