尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

基于EtherCAT的机器人关节双编码器驱动器方案与调试经验

发布时间:2026/9/25 1:28:02

资讯中心
01
ARTICLE

基于EtherCAT的机器人关节双编码器驱动器方案与调试经验

基于EtherCAT的机器人关节双编码器驱动器方案与调试经验
EtherCAT 这几年在机器人圈子里几乎是绕不开的话题尤其是做关节模组的团队十个里面有八个都在往 EtherCAT 上迁移。我自己从 CANopen 时代一路做过来刚开始对换总线这件事也有点抗拒觉得无非就是把报文换了个封装格式等真正把基于 EtherCAT 的机器人关节双编码器驱动器从原理图做到批量出货才发现事情远没有这么简单。这篇文章就围绕这个项目本身展开把我在方案选型、从站协议栈、双编码器融合、以及现场调试中踩过的坑整理出来给正在做或者准备做类似驱动器的朋友一份能直接抄作业的参考。这个项目到底解决什么问题一句话概括机器人关节的定位精度和动态响应靠单一电机编码器已经顶不上去了。减速器回差、柔轮变形、传动链弹性这些误差电机端的编码器根本感知不到。双编码器驱动器就是在电机轴和关节输出端各装一支编码器配合 EtherCAT 的硬实时同步能力让每一根关节轴都做到“电机侧高速响应、输出侧高精度定位”。如果你是做协作机器人关节、工业机器人本体、仿人机器人或者说直驱转台的这套方案能直接复用到你的项目里。1. 方案拆解为什么关节驱动器要上双编码器总线为什么选 EtherCAT1.1 单编码器方案的天花板在哪先说个我早期做项目时遇到的真实情况。当时用了一体化关节模组电机后端只有一支 17 位磁编码器谐波减速器用的是标准型号。电机端的定位精度看起来没问题位置闭环也能稳住但客户那边装到机械臂末端一测轨迹精度重复定位就差了十几个角秒而且负载方向不同的时候误差还会变。问题就出在电机端编码器只能反馈转子转了多少圈至于这圈转动经过减速器之后柔轮和刚轮之间有没有弹性形变、波动发生器有没有回差、输出法兰有没有扭转变形电机端编码器完全看不到。这就像一个司机只盯着方向盘转了多少度却不看车轮实际转了多少度。方向盘打了半圈前轮可能因为转向机构间隙只转了小半圈你告诉系统“我已经精确转到目标角度了”但实际输出根本不是这么回事。单编码器方案在大部分普通伺服应用里够用因为那些应用负载侧和电机侧的刚性连接靠联轴器或者减速机就能近似认为是一比一对应的但机器人关节这种带大减速比柔性传动的场景电机侧和负载侧的角位置之间有一道说不清道不明的“柔性墙”。到了负载侧增加编码器之后这个墙就不再是盲区了。输出端编码器直接感知法兰实际转角位置闭环就可以基于真实关节角度来做电机端编码器则继续承担高速响应和内环反馈的角色。1.2 双编码器到底“双”在哪常见的双编码器布置形式是电机尾部安装一支高速磁编码器分辨率 17 位以上做电流环和速度环反馈以及位置环的内环反馈减速器输出端安装一支绝对式编码器分辨率 19 位或者更高支持多圈直接测量关节轴输出角度。这里有个容易混淆的概念需要说清楚双编码器不是简单地“两个编码器数据取平均”。两路反馈最终执行的是完全不同的任务。电机端编码器带宽高、响应快但它测的是电机转子位置输出端编码器测的是真实负载角度但受机械传动链影响信号带宽相对低而且有明显滞后。把这两路数据混在一起加权平均往往会适得其反。工程上更靠谱的方式是串联式双环电流环和速度环基于电机端编码器闭环速度环输出经过内部力矩计算后驱动电机位置环则用输出端编码器作为反馈速度环作为位置环的内环。换句话说关节侧编码器负责“指路”电机侧编码器负责“跑腿”。在位置环层面再加一个柔顺补偿量把减速器变形和回差补偿进目标位置里这样既保证响应速度又能修正输出端位置误差。1.3 为什么是 EtherCAT 而不是 CANopen、Profinet 或者 RS485这个问题每次做方案评审都会被问到。我拿三年前用的 CANopen 驱动器和现在的 EtherCAT 驱动器简单对比下核心差距就两个周期时间和同步精度。CANopen 在 1ms 周期下做单轴运动控制没什么问题但多轴协同、关节之间的插补配合就吃力了。尤其很多协同控制场景需要关节指令在同一时刻同时生效CANopen 的事件触发模式存在报文争用和抖动要做到真正的同步一致性难度很大。RS485 更不用说了半双工、主从轮询带个两轴勉强带六轴以上就捉襟见肘。EtherCAT 的分布式时钟DC能做到纳秒级同步误差100us 到 1ms 的总线周期都很稳定而且从站节点数量对周期影响很小。更重要的是 EtherCAT 支持 CSP循环同步位置模式主站和从站之间按固定周期交换目标位置、实际位置、控制字、状态字从站在 Sync0 中断里同步刷新输出这样六轴关节就能做到真正的“同一时刻执行同一批指令”对轨迹插补的连续性来说非常关键。选择总线这件事本质不是选一个通信协议而是选一个能够支撑你机械臂整体控制架构的基础平台。EtherCAT 在机器人运动控制领域已经事实上形成了生态主站兼容性好的有倍福 TwinCAT、Kithara、SOEM从站侧资源丰富选它基本上不需要担心长期维护的问题。2. 核心实现EtherCAT 从站通信与双编码器数据流2.1 EtherCAT 从站是怎么搭起来的搭建 EtherCAT 从站需要三类关键部件从站控制器ESC、从站协议栈代码、微控制器或者带有硬件实时处理能力的芯片。ESC 是 EtherCAT 物理层和数据链路层的核心市面上主流的有倍福的 ET1100、ET1200还有 Microchip 的 LAN9252。做机器人关节驱动器通常选用 ET1100 或者 LAN9252原因是对外接口丰富支持多达 4 个站点输入输出方便级联。ET1100 的优点是稳定性经过多年验证LAN9252 的优势是集成度高、外围电路简单成本上也更有竞争力。从站协议栈代码最常用的是倍福 SSCSlave Stack Code工具生成的。使用 SSC 可以配置 PDO 映射、SMSync Manager通道、DC 同步功能等然后生成 C 语言源代码集成到你的 MCU 工程里。STM32 跑从站协议栈是完全可行的我最早的原型机就是 STM32F407 ET1100 的组合主频 168MHz 跑 1ms 周期毫无压力后续切到更高性能的 MCU 主要是为了扩充 FOC 算法资源和多编码器接口资源。这里要特别提醒的是EtherCAT 从站的实时性不只靠协议栈MCU 的中断响应设计也很关键。DC 同步中断 Sync0 必须用最高优先级在中断里完成 PDO 收发和位置指令更新如果中断被其他任务挤掉总线同步误差就会飙高关节会出现周期性抖动。2.2 CiA402 协议与 CSP 模式EtherCAT 应用层用的还是 CANopen over EtherCAT 的协议框架也就是常说的 CiA402 设备行规。这个行规定义了驱动器的状态机、控制字/状态字、模式切换等标准行为。在机器人关节应用里最常用的运行模式就是 CSP。CSP 模式的工作流程是主站每个周期通过 PDO 下发目标位置、控制字0x6040和模式使能位从站内部的插补器和位置环负责把目标位置平滑过渡到实际位置然后把实际位置、实际速度、状态字0x6041回传给主站。主站的角色是轨迹规划者从站的角色是执行者两者之间通过 EtherCAT 的 DC 同步保持严格的一一对应关系。有一件事必须提前设计好PDO 映射表。主站下发到从站的数据通常包括目标位置32 位、控制字16 位、模式字8 位从站上发到主站的数据通常包括实际位置32 位、实际速度32 位、状态字16 位、错误码16 位。每个 PDO 映射条目都要在从站配置阶段写进 ESC 的 EEPROM 里主站扫描从站时才能正确识别并自动匹配。2.3 双编码器数据流与融合策略双编码器数据的处理是整个驱动器软件架构里最核心的一块。我给出一个我实际用下来效果不错的配置结构数据来源用途关键要求电机端编码器电流环转子位置、速度环速度、位置环内环高带宽、低延迟、抗干扰输出端编码器位置环反馈、关节绝对位置、零点校准高分辨率、绝对式、多圈双编码器差值减速器变形/回差补偿、状态观测需滤波处理不能直接用融合策略上我推荐“输出端位置环 电机端电流/速度环”的双环结构。位置环的误差信号来自输出端编码器目标值与实际值的差速度环的给定信号来自位置环 PID 的输出速度环再输出力矩电流给电流环。在这种结构下电机侧编码器的差分速度信号还可以作为速度环反馈避免直接对输出端编码器位置做微分导致噪声放大。差值补偿这部分一开始我把两个编码器差值直接叠加到目标位置里结果关节在小范围震荡后来加了个低通滤波器并且把补偿量限制在一个可变余量范围内才稳定下来。核心原因是减速器的变形不是线性的与负载方向、力矩大小都有关简单做线性补偿反而会引入扰动。2.4 伺服驱动器三环控制与双编码器的配合伺服驱动器内部三环是电流环、速度环、位置环。电流环最内侧通过 FOC 算法把三相电流解耦成 d/q 轴电流响应带宽最高通常在几百 Hz 到几 kHz速度环居中带宽几十 Hz 到几百 Hz位置环最外带宽最低通常 10~50Hz。双编码器的引入主要影响的是位置环和速度环的反馈来源电流环不受影响它只看电机相电流和转子电气角度。需要注意的是电机高频运动时的情形。如果机械臂做快速摆动或者轨迹中存在高频往复运动位置环带宽不足就会导致输出端跟踪滞后。此时要优先保证电机端编码器的高速测速能力速度环的“速度”必须是准实时信号不能依赖输出端编码器的低速低分辨率数据。很多整机调试经验表明高频段性能主要靠电机端反馈赚出来的输出端编码器更多是保证低频定位精度。3. 实操过程从硬件接线到 TwinCAT 跑通 CSP 全流程3.1 硬件准备与接线双编码器驱动器硬件上比单编码器方案复杂不少最明显的就是编码器接口数量多了一倍。我用的配置是电机端磁编码器走 SPI 接口输出端绝对值编码器走 BiSS-C 接口两个接口的引线都有严格要求。编码器连接线的布线规范CLK/- 和 DATA/- 必须用双绞屏蔽线控制器端的公共端要单点接地避免形成地环路编码器线缆走线要远离驱动器 U/V/W 三相输出线尤其是 PWM 高频大电流线否则编码器数据会受到严重的开关噪声干扰。电机功率线和编码器线在同一个线槽里并行走线是新手最容易犯的错。我经历过一次现场调试输出端编码器数据偶发跳变查了半天发现是编码器线正好绑在 U 相线旁边PWM 一开就有磁场耦合。后来把编码器线移走并且套上金属屏蔽管问题彻底消失。3.2 从站代码配置SSC 工具生成从站配置我用的是倍福 SSC-Studio 生成框架。关键步骤是通过 SSC 配置工具选择目标 ESC 型号ET1100 或 LAN9252。配置从站信息——站地址、厂商 ID、产品号、设备名。配置 PDO 映射表——定义主站到从站和从站到主站的对象集合。启用 DC 功能配置 Sync0 周期和同步偏移使能同步模式。输出源代码添加到 MCU 工程。代码生成后MCU 端需要完成的工作是 ESC 寄存器初始化、PDO 数据读写接口对接、以及 CiA402 状态机实现。这里有个容易忽略的点ESC 的 EEPROM 里不仅要写配置数据还要做 CRC 校验否则主站扫描时可能读不到正确配置。每次改完 PDO 映射务必重新更新 EEPROM 并确认从站上电后能正常识别。3.3 TwinCAT 主站配置主站我用的是倍福 TwinCAT 3虽然商业授权不便宜但调试功能确实是最完整的。配置流程如下打开 TwinCAT 后在“EtherCAT”选项里扫描从站设备。首次扫描时注意把从站供电和控制器的网卡驱动都准备好扫描到设备后会自动识别从站的厂商和型号。此时从站默认处于 Init 状态需要先把系统切换到 PreOp再去配置 PDO 和 DC。DC 同步设置的步骤是在 TwinCAT 的从站参数页里找到“DC”选项勾选“使能 DC”设置 Sync0 周期为 1ms或者根据应用调整为 0.5ms、0.25ms同时设置从站相对于主站的同步偏移量。周期越短总线负载和从站中断压力越大初期调试建议从 1ms 起步先把同步链路调稳定再逐步缩短周期。CSP 模式的启用需要在 TwinCAT NC 轴配置里把控制模式设置为“位置控制”然后在 PLC 程序里周期性写入目标位置端子、控制字 0x004F对应“使能运行”状态读取实际位置端子做闭环监控。第一次联动时我建议用手动给目标位置的方式先把单轴的正反转跑顺再上多轴联动。3.4 双编码器标定与零点设定双编码器系统最容易被忽略的就是零点标定。电机端编码器和输出端编码器在机械装配后不可能天然对齐必须做一次“零点同步”。标定步骤先把关节停在机械零位或者用限位挡块定出一个物理基准点读取电机端编码器值和输出端编码器值记录两组数据并计算出固定偏移量。这个偏移量要保存到驱动器的非易失性 Flash 里保证每次重新上电都能正确恢复关节零位。这里有三个很值得注意的细节第一输出端绝对式编码器如果是多圈编码器要确认电池备份或者多圈数据是否能长期保持否则断电后零点信息会丢失 第二双编码器的偏移标定必须在减速器预紧完成之后做很多项目先标定再装减速器导致标定值全部作废 第三当电机端编码器和输出端编码器的差值出现异常漂移时说明机械传动链有问题比如减速器损坏、联轴器松动这个差值信号实际上可以拿来当“健康监测”信号用。4. 调试实录与问题排查技巧4.1 EtherCAT 掉线是最普遍的噩梦做 EtherCAT 驱动器调试十个问题里至少有五个会碰到掉线。现象是 TwinCAT 主站弹窗提示“从站丢失”从站网口灯变红关节直接停下进入安全状态。我排查这种问题的顺序固定为四步第一步看物理链路网线是否压好水晶头是否松动线缆屏蔽层是否接地链路警告灯是否正常。这一步能解决一半以上的掉线问题尤其车间环境里振动大网线接头时间一长就会松。 第二步看从站供电ESC 供电电压是否稳定电流是否足够。很多自制驱动器用的是同一个 24V 电源带电机和逻辑电电机急加急减时母线电压跌落从站瞬间掉电重启表现就是周期性掉线。 第三步看 PHY 芯片配置EtherCAT 对 PHY 的链路建立时间很敏感如果 PHY 的上电复位时序不对主站扫描时就可能识别不到从站。 第四步查代码中断响应如果 ESC 中断被 MCU 的高优先级任务长时间占用ESC 的看门狗超时后就会自动断开链路。4.2 DC 同步失败的表现与处理DC 同步一旦没做好现象很隐蔽轴不会完全不动但会有 100~200ms 级别的周期性抖动速度波形上有很规律的毛刺整机噪音变大。我遇到过一次是在把总线周期从 1ms 调到 250us 之后出现的。代码里处理 PDO 数据的函数耗时太长Sync0 中断里还没有把上周期数据处理完下一周期就来了导致主站显示同步误差超过 1us 甚至几十 us。解决思路是按优先级做事把所有 EtherCAT 处理代码都放进 Sync0 中断中断里只做 PDO 数据拷贝、目标位置更新、控制字更新其他外围任务全部放到 main loop 或者低优先级中断里。另外要给从站加时间戳补偿校准机制让从站能实时修正 DC 时钟的漂移否则长时间运行后同步误差累积系统还是会抖。4.3 双编码器数据不一致的问题双编码器系统调试中最常见的故障是“数据打架”就是两个编码器读数差在运行时不是稳定值而是无规律跳变。这时候首先检查机械装配电机轴和编码器安装座是否同心联轴器是否存在打滑磁编码器芯片和磁环的轴向间隙是否在规格范围内。其次检查通信参数BiSS-C 接口的时钟速率是否过高、CRC 校验是否被软件正确识别并丢弃坏帧、断线检测是否做了。最后一定是检查干扰路径编码器线扎带和动力线扎带必须分开屏蔽层接地只能选一端。如果输出端编码器数据连续跳动几十个 LSB 而电机端编码器正常优先怀疑干扰而不是怀疑编码器本身坏了。用示波器挂在 DATA 线上抓波形能看到明显的噪声毛刺。4.4 关节高频抖动与增益调节就算 EtherCAT 通了、双编码器数据正常了关节可能还是会抖。这种抖动通常在高增益、低刚度组合下被激发本质是控制系统的谐振问题。我的经验是切换到输出端编码器做位置环反馈后先把速度环增益降下来从很低的值慢慢往上加让关节不失稳。然后位置环的比例增益在时域阶跃响应测试基础上微调积分项先不加稳定之后再一点一点引入。整个过程要在空载和带载两种条件下交替验证因为带载后关节谐振频率会变化此前调好的增益很可能需要重新修正。高频段出现持续嗡鸣声时优先检查速度环的微分项和电流环的前馈这些都是常见的高频噪声源。4.5 常见问题速查表现象可能原因处理办法主站扫描不到从站PHY 配置错误、ESC EEPROM 内容损坏检查 PHY 复位时序重新烧录 EEPROM周期性掉线后恢复供电不稳或中断超时分别验证电源跌落和 Sync0 中断耗时轴频率性抖动DC 同步误差过大、位置环增益过高缩短同步误差降低位置环增益或增加陷波滤波器输出端编码器跳数信号干扰、CRC 校验未生效重新分离动力线加屏蔽管检查 CRC 处理断电后再上电位置丢失多圈计数电池没接接好备份电池或用单圈绝对式编码器配合零点标定双编码器差值漂移减速器故障、联轴器松动检查机械结构重新标定零点5. 一点个人经验分享这套基于 EtherCAT 的双编码器驱动器做完之后我自己最大的感受是真正的难点不在 EtherCAT 协议本身而是双编码器带来的控制架构变化。总线只是把指令和数据的搬运动作做快了真正决定关节性能的还是反馈系统是否闭环得合理。我建议准备做类似项目的朋友先在单轴平台上把输出端位置环的“带宽边界”测出来搞清楚关节侧编码器实际能提供多高频率的有效信号再设计整个控制结构会少走很多弯路。最后分享两个小技巧。第一调试 EtherCAT 从站时无论用哪家主站都建议在第一个离线测试板上把 ESC 的 Link LED 状态作为基本诊断工具这比看任何日志都直观得多。第二双编码器标定数据一定要和整机序列号绑定批量生产时如果每个关节的标定偏移量没有一一对应上后续售后会是一场灾难。先把这个系统的底子打好后面做更复杂的力控、柔顺控制至少不用回头补通信和反馈的账。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。