先直接回答名字
人形/工业多轴伺服常说的高速实时 Ethernet 总线通常是 EtherCAT;宇树公开的 GO-M8010-6 独立关节电机使用 4 Mbit/s 高速 RS-485;G1 对开发者公开的整机低层接口则是 Ethernet 网络上的 CycloneDDS。三者不能互相替代地称为“G1 的底层总线”。
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 CAN | CAN-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/lowcmd 和 rt/lowstate 上传输 29 个电机的 q/dq/Kp/Kd/τ 与状态。这个接口处在整机控制器层;驱动板内部如何换向、机内控制板到各电机使用何种物理链路,是另一个边界。
6. 一张实用比较表
| 链路 | 核心优势 | 主要约束 | 常见位置 |
|---|---|---|---|
| RS-485 | 便宜、差分、可高 baud、多点 | 上层协议自定义,仲裁/同步需自行设计 | 集成关节、编码器、夹爪 |
| CAN | 仲裁、错误隔离、生态成熟 | payload/带宽有限,周期随负载变化 | 移动机器人、汽车、低中速关节 |
| CAN-FD | 64 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_count4 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 解释差分总线和终端。