先说清一句话,免得这个标题被当成口号:关节控制不是非 FPGA 不可。桌面级机械臂、低速协作机器人,用 MCU 加专用驱动芯片就能做得很稳。真正"绕不开"的,是一组具体指标——电流环跑到 20kHz、六轴共用一个控制周期、同步抖动要求压在 1μs 以内。到了这一档,MCU 的定时器和中断响应开始成为瓶颈。

这篇拆的就是这一档:一块 ZYNQ 上,实时闭环的每一段分别落在 PS 还是 PL,50μs 的控制周期里各段各占多少时间,抖动从哪里来、又怎么被压下去。

顺带说明一句:同一块 ZYNQ 平台,前面聊工业相机那篇算的是带宽账(几路相机、多少像素、DDR 够不够),这篇算的是时序账(周期、抖动、相位对齐)。同一块板子,两种完全不同的算法。

一、先把"绕不开"限定在指标上

一句话结论:判断需不需要 FPGA,看的是控制周期和抖动预算,不是看关节有几个。

不同档位的关节控制,对实时性的要求差异很大:

应用档位电流环频率控制周期抖动预算常见平台
桌面级、教学机械臂5~10kHz100~200μs10μs 级MCU + 集成驱动
协作机器人、轻载10~16kHz60~100μs2~5μs高性能 MCU / MCU+DSP
六轴工业臂、力控20kHz50μs1μs 以内FPGA 或 SoC 的 PL 侧
高动态、双编码器、拖动示教20kHz 以上50μs 以内亚微秒FPGA + 硬实时总线

差别不在"算得多快",而在"每一次都必须在同一时刻算完"。MCU 的平均性能往往够,问题出在最坏情况:中断被更高优先级任务插队、Cache 未命中、DMA 抢总线,任何一次延迟超标,都会在 PWM 上留下一个畸变的周期。

所以判断标准可以写得很具体:如果电流环周期是 50μs、允许的周期偏差不超过 1μs,也就是 2%,那就该把这一段放进逻辑里做,而不是靠调度去赌。

二、四层闭环,分别落在谁身上

一句话结论:关节控制不是一个环,是四个时间尺度差两个数量级的环,必须分层落位。

控制环典型频率周期执行位置关键约束
电流环20kHz50μsPL(逻辑)与 PWM 中心对齐采样
速度环1~2kHz500~1000μsPL 或 PS用电流环的输出做内环
位置环500Hz~1kHz1~2msPS受编码器时延影响
轨迹规划100~500Hz2~10msPS与上位机、示教器通信

分层的原因是时间尺度:电流环要处理的是毫秒以下的电磁动态,位置环处理的是机械动态,两者混在一个循环里,要么电流环被拖慢,要么位置环被切得太碎。

工程上常见的错误是把四层都塞进一个 1ms 的任务里,看起来"统一调度很简洁",实际结果是电流环的有效频率只有 1kHz,力矩纹波明显,关节低速爬行时能听出抖动。

还有一个常被混用的概念要拆开:控制频率和闭环带宽不是一回事。20kHz 的控制频率,对应的电流环闭环带宽通常在 1~2kHz,大致是 PWM 频率的 1/10 到 1/20。带宽决定力矩响应有多快,控制频率只决定"多久算一次"。想把带宽提上去,靠的是提高 PWM 频率、压缩采样与计算的延迟,而不是把循环跑得更密——这一点在调机阶段特别容易被搞反。

三、50μs 里到底要干多少活

一句话结论:算力不是瓶颈,时间预算和并行度才是,先把 50μs 拆开看。

以六轴、每轴三相电流采样、20kHz 电流环为例,一个周期内的动作大致是:

环节耗时(单轴)可否并行说明
三相电流 ADC 采样与转换1~2μs六轴可并行采样点须在 PWM 中心
Clarke / Park 变换0.2~0.5μs是用 DSP 切片流水实现
电流 PI 调节(d/q 双轴)0.3~0.8μs是含抗积分饱和与解耦
反变换 + SVPWM 计算0.3~0.6μs是含死区补偿
编码器协议解码2~3μs与上面并行见第五节
保护判决(过流/过压)<0.2μs是与 PWM 同步
与上位机/总线交换数据不定后台不能占用周期内时间

单轴串行做下来大约 3~5μs,六轴串行就是 20~30μs,占掉 50μs 的一半以上,余量很薄。改成六轴完全并行后,逻辑资源按六份复制,周期内占用可以压到 5μs 以内,剩下 90% 的时间是余量。

这就是 PL 的第一个价值:并行是空间换时间,不是靠更快的时钟。六路电流环同时跑,天然比一个循环轮流跑更确定。

顺便算一笔很多人误判的账:六轴 × 三相 × 16bit × 20kHz,数据量是 5.76Mbps,也就是约 0.72MB/s。这个量级对任何总线都算不上压力。所以关节控制的主要矛盾从来不是带宽,而是时序——这也正是它和相机、采集类应用的差别所在。

四、抖动:平均延迟可以补,抖动补不了

一句话结论:控制系统的死敌不是延迟,是延迟的不确定性。

平均延迟是可以通过前馈、相位补偿、延时观测器去修的。抖动不行,因为下一次抖多少、往哪抖,事先不知道。

几个量级的对比:

  • 通用操作系统下的中断响应,抖动在几十微秒量级;
  • 实时操作系统(RTOS)下,可以压到几微秒;
  • 逻辑电路里,路径延迟是确定的,抖动通常是几个时钟周期,100MHz 时钟下就是几十纳秒。

50μs 的周期里,5μs 的抖动意味着 10% 的周期偏差。这个偏差会直接变成 PWM 占空比的误差,进而变成力矩纹波。表现出来就是:低速时关节爬行、静止时有轻微嗡鸣、力控时接触力不稳。

所以讨论"要不要 FPGA",更准确的说法是讨论"能不能接受这种抖动"。接受不了,就只能把时间敏感的部分下放到逻辑里。

五、编码器反馈:时延藏在协议里

一句话结论:编码器不是"读一个数",它的时延、分辨率、协议解码方式都会进控制环。

工业关节常用绝对式编码器,接口以 BiSS-C、EnDat 2.2、多摩川为主。以 BiSS-C 为例,常见时钟 10MHz、单圈 23 位:一帧包括起始位、ACK、23 位数据和 6 位 CRC,合计 33 位左右,传输时间约 3.3μs;如果还带 12 位多圈信息,数据位变成 35 位,一帧约 4.6μs。

这个三四微秒不是小事:

  • 它意味着位置数据天然滞后于采样时刻,位置环设计时必须把这个滞后算进去;
  • 如果多轴共用一条编码器总线轮流读,时延会累积,六轴就是十几微秒;
  • 解码放在 PL 里,可以多路并行,每轴独立时钟,时延固定可预测。

双编码器(电机端 + 关节端)是另一个话题:两个编码器的差值能观测出减速器的柔度与回差,用于力矩前馈和振动抑制。但它要求两路数据在同一时刻对齐,这对采样触发和时戳的要求又高一层。

工程上有个容易被忽略的点:解码出来的位置值要带时间戳,控制算法用的是"这个值是什么时候的",不是"什么时候读到的"。没有时戳,补偿就无从谈起。

六、多轴同步:EtherCAT 的 125μs 与相位对齐

一句话结论:多轴同步的关键不是通信速率,是所有轴在同一条时间基准上采样和执行。

工业机器人常用 EtherCAT 做关节伺服总线,典型周期 125μs,六轴加 IO 从站在一个周期内完成数据交换。100Mbps 的物理层,一帧几百字节,传输本身只占几十微秒,剩下的都是处理与转发。

真正决定同步质量的是分布式时钟(DC):

  • 从站的本地时钟与主站基准对齐,偏差控制在亚微秒级;
  • 采样时刻按 DC 基准对齐,而不是"收到帧就采样";
  • 控制周期的起点、采样点、PWM 更新点,三者在同一条时间轴上。

如果这三者不对齐,会出现一种很难查的故障:单轴看指标正常,六轴联动时轨迹有微小畸变。原因是各轴的动作在时间上错开了几微秒,叠加到末端就是毫米级偏差。

这也是 PL 侧的第二个价值:它能提供一条确定的时间轴,让采样、计算、输出都挂在这条轴上,而不是挂在"任务什么时候被调度到"上。

七、保护:毫秒级的软件保护挡不住短路

一句话结论:过流、编码器断线这类故障,必须在逻辑里用微秒级响应切断,不能等软件巡检。

功率器件短路时,电流上升速度可以用 di/dt = U/L 估:以 400V 母线、0.5~1mH 的伺服电机电感算,大约是每微秒 0.4~0.8A;低电感的盘式或空心杯电机能把这一项抬到每微秒数安甚至十几安。而功率器件的短路耐受时间通常只有 10μs 量级——软件巡检周期如果是 1ms,等它发现,已经晚了两个数量级。

逻辑里的保护通常是这样的:

故障类型检测方式响应时间动作
相电流过流比较器 + 逻辑判决<1μs封锁 PWM 输出
母线过压分压采样 + 阈值几微秒封锁 + 泄放
编码器断线/CRC 错协议层校验一个帧周期停机并上报
过温传感器采样毫秒级降额或停机

要注意的是,硬件保护和安全功能(如 STO 安全转矩关断)是两层不同的东西:前者是保护设备,后者是保护人,后者需要独立的安全链路和认证,不能拿普通逻辑的保护当安全功能用。

八、分工:整机厂定什么,板卡方定什么

一句话结论:整机厂定关节指标与控制策略,板卡方定时序实现与硬件边界。

事项整机厂定死板卡/核心板方来定
关节指标额定与峰值力矩、转速、带宽、过载倍数电流采样方案、PWM 频率上限、驱动接口
控制结构四层闭环的频率分配、是否要力控逻辑流水划分、时序约束、资源分配
反馈方案编码器类型、分辨率、是否双编码器协议解码实现、多路并行、时戳机制
总线EtherCAT/其他、周期、从站数量接口实现、DC 同步、周期内时序
安全安全等级、STO 是否必需保护判决逻辑、故障上报路径

这张表里最容易扯皮的是"控制结构"那一行。整机厂通常只给"电流环 20kHz",不说四层怎么分;板卡方按自己的经验分了,最后发现和整机厂的轨迹规划节奏对不上,返工。

九、落到平台:ZYNQ 上怎么切

一句话结论:ZYNQ 的价值在于把"确定的时间"和"灵活的逻辑"放在一颗芯片里,PS 管规划、PL 管时序。

以 ZYNQ 的典型切分为例:

  • PL 侧:三相电流采样触发、Clarke/Park 变换、电流 PI、SVPWM、死区补偿、编码器协议解码、过流保护、PWM 输出。这些都必须挂在同一条时钟与同一条时间轴上。
  • PS 侧:轨迹插补、状态机、故障处理策略、EtherCAT 协议栈或主站、参数管理与上位机通信。

这样切的好处是故障域清楚:PL 挂了,PWM 立刻封锁;PS 挂了,PL 还能维持最后一拍的安全状态。

资源上,六轴 FOC 加上编码器解码和保护逻辑,在 7Z020 这一档(资源量级约为 8.5 万逻辑单元、220 个 DSP,具体以所用器件手册为准)上是可以放下的,前提是流水设计合理、不做过度并行。如果还要叠力控、视觉或更复杂的振动抑制,就得往上走一档平台。

笃远电子的 ZYNQ 核心板方案是 PBC7Z020G,采用 JFM7Z020,管脚兼容原 XC7Z020,工业温域设计。对做关节控制器的团队来说,这类核心板解决的是供电、DDR、时钟树和接口电平这些基础问题,省下来的时间可以放在时序约束和闭环调试上——而后者恰恰是这类项目真正花时间的地方。

需要说清的是:核心板保证"平台能承载",保证不了"闭环调得稳"。电流环的带宽、抖动的抑制、编码器时延的补偿,这些都要在整机上一点点调出来。

十、几个常被问到的问题

问:六轴关节控制需要多大的逻辑资源?

按 20kHz 电流环、每轴独立流水来算,六轴 FOC 加编码器解码和保护逻辑,7Z020 这一档能放下。资源紧张的是并行度——想要每轴完全独立、不留共享,就要按六份复制 DSP 与乘法器。

问:能不能用高性能 MCU 直接做 20kHz 电流环?

能做,但要接受抖动。MCU 在无中断干扰、代码与数据都放 TCM、DMA 不抢总线的前提下,周期偏差可以做到几微秒;一旦叠加通信、文件系统或其他中断,最坏情况就不可控。要求 1μs 以内,通常要上逻辑。

问:EtherCAT 主站放在 PS 还是 PL?

看周期。125μs 周期、六从站,PS 上的协议栈配合专用 MAC 通常够用;如果要压到 62.5μs 或更短,且要求抖动极小,主站的收发与调度放进 PL 更稳。

问:双编码器是必须的吗?

不是必须,但它是解决"减速器柔度导致的位置误差"和"末端振动"的有效手段。单编码器方案要靠模型补偿,参数随温度、磨损变化;双编码器直接测出差值,补偿更直接。

问:为什么工业相机那篇讲带宽,这篇讲抖动?

因为瓶颈不同。相机是多路数据涌入,算的是 DDR 与接口带宽;关节控制是每一次都要准时,算的是周期与抖动。同一块 ZYNQ,PL 在前者做预处理,在后者做硬实时,两者的设计重点几乎没有重叠。

十一、收尾

回到标题那句话:关节控制"绕不开"的不是 FPGA 这个器件,而是"确定性"这件事。

当电流环要跑到 20kHz、六轴要在同一条时间轴上动作、抖动要压进 1μs,确定性就只能从逻辑里拿。ZYNQ 这类平台之所以常用,是因为它把 PS 的灵活和 PL 的确定放在一起,规划归规划,时序归时序。

判断一个方案行不行,问三个问题就够:电流环周期多少、最坏抖动多少、六轴采样是否同一时刻。三个数答得出来,方案就是可信的;答不出来,后面调机时一定会补上这一课。

相关平台规格与资料,可以在笃远电子官网查阅。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐