电控链路怎么搭:总线、驱动器与频率预算
一台 12 自由度的四足,12 个关节电机、1 个 IMU、几个传感器,全挂在一根 CAN 总线上——带宽够不够? 这个问题在画板子之前就该算清楚,而不是等调不通了再回头查。
这篇把「带宽、周期、采样率」放在一张表里算,给一套能直接套用的预算方法。
一、先分清三种速率,它们不是一回事
| 名词 | 单位 | 含义 | 典型值 |
|---|---|---|---|
| 控制环频率 | Hz | 控制器多久算一次输出 | 力控 1 kHz,位置环 200–500 Hz |
| 总线带宽 | bit/s | 总线一秒能传多少位 | 经典 CAN 1 Mbps,CAN FD 5 Mbps |
| 传感器 ODR | Hz | 传感器多久出一帧新数据 | IMU 100–1000 Hz |
三个数要匹配:控制环 1 kHz,意味着每 1 ms 要收齐所有关节的状态、发出所有关节的指令。总线带宽撑不住这个往返,控制环再快也没用。
二、算一笔 CAN 带宽账
以经典 CAN(1 Mbps)为例,一帧大约 100–130 bit(含帧头、CRC、ACK)。12 个关节,每个周期要「读状态 + 写指令」:
每周期帧数 = 12 关节 × 2(读+写)= 24 帧
每帧 ≈ 120 bit
控制环 1 kHz → 每秒 24 × 120 × 1000 = 2.88 Mbit/s2.88 Mbps > 1 Mbps。结论:经典 CAN 在 1 kHz 下挂 12 个关节不够。你有几条出路:
- 降控制环频率:降到 500 Hz → 1.44 Mbps,还是超;降到 200 Hz → 0.58 Mbps,够了
- 换 CAN FD:数据段可到 5 Mbps,1 kHz 下 2.88 Mbps 有余量
- 分多路总线:4 条 CAN 各挂 3 个关节
- 减少每周期帧数:状态打包上报、指令广播
部件库里关节电机的
comm字段标了支持的接口(CAN / CANFD / EtherCAT)。选型时先把这条总线账算了。
三、频率预算表(直接套)
| 你的目标 | 位置环 | 力控环 | 总线建议 |
|---|---|---|---|
| 教学 / 演示 | 100 Hz | — | 单路经典 CAN 够 |
| 平稳行走 | 200 Hz | 500 Hz | CAN FD 或双路 CAN |
| 动态运动(跑跳) | 500 Hz | 1 kHz+ | CAN FD 多路,或 EtherCAT |
力控环和位置环可以分开:高频力控在下位机本地跑,低频轨迹从上位机下发。这样总线只承受低频部分。
四、驱动器:集成还是外置
关节电机分两种形态,直接影响你的电控架构:
- 集成驱动(
driver_integrated: true,如多数关节模组):电机里已有驱动板,总线直接插,省一层 - 电机本体(如 M3508,
driver_integrated: false):要另配电调(如 C620),电调和电机之间是动力线,电调再上总线
集成驱动布线干净、上手快;外置方案灵活、可换驱动器调性能,但多了匹配和布线工作。第一台机器建议用集成方案。
五、最容易踩的三个坑
- IMU 采样率和控制环不同步:IMU 的 ODR 要 ≥ 状态估计环的频率,且尽量触发同步读,别轮询
- 总线终端电阻:CAN 两端各 120 Ω,少一个就莫名丢帧——这是硬件问题,软件查不出来
- 地环路:动力地和信号地混在一起,大电流时 IMU 数据全是毛刺。单点接地