画圆成椭圆,别先拧增益,先看几根轴是不是同一瞬间读数, 汇川 IS620N + 多摩川 TS5700N8501 17 位反馈,三轴采样差 200µs

首发于公众号「如是有为」 · 查看原文

画圆成椭圆,别先拧增益,先看几根轴是不是同一瞬间读数, 汇川 IS620N + 多摩川 TS5700N8501 17 位反馈,三轴采样差 200µs

倍福 TwinCAT 3 控汇川 IS620N + 多摩川 TS5700N8501 17 位反馈,如果三轴采样差 200µs,会导致龙门 50mm 圆插补拉出 0.02mm 椭圆

画圆成椭圆,别先拧增益,先看几根轴是不是同一瞬间读数

5 月底,一个朋友把雷尼绍 QC20-W 球杆仪报告发到我手机上。现场是一台新搭的三轴龙门,主站跑倍福 TwinCAT 3,三根轴用汇川 IS620N 驱动走 EtherCAT,电机端编码器是多摩川 TS5700N8501,17 位单圈串行反馈。半径 50 mm 的整圆,进给给到 100 mm/s,测出来不是正圆,而是一条长短轴差约 0.02 mm 的椭圆。

他第一句话就问我:是不是哪根轴增益没调好?

我当时人在意大利帕尔马,刚从 SPS Italia 2026 展馆出来。我盯着那张椭圆图,脑子里先冒出来的不是 AI,也不是增益,而是一个更土的问题:X、Y、Z 几根轴读位置的时候,是不是根本没在同一瞬间?

这件事最容易误判。X、Y、Z 三轴各自回零正常,单轴定位正常,单轴正弦往复的跟踪误差也正常。单看每根轴,它们都像好学生;一合起来画圆,圆就歪了。后来我把问题换成一句更朴素的话:是不是几根轴拍照的时间不一样?

画圆不是一根轴的事。X 轴在某一刻给出一个位置,Y 轴也必须在同一刻给出一个位置,控制器把这两个数拼起来,才是圆上的同一个点。如果 X 轴拍的是 t0 的照片,Y 轴拍的是 t0+200 µs 的照片,主站拿到的就不是同一瞬间的坐标,而是两张错开时间的照片。照片都清楚,拼在一起还是会变形。

第一层:200 微秒,已经够把圆拉成椭圆

这个量级不用玄学。半径 50 mm,进给 100 mm/s,圆周角速度 Ω = v/R = 2 rad/s。两轴采样差 200 µs,相位差就是 φ = ΩΔt = 0.0004 rad。小相位差造成的长短半轴差,近似就是 Rφ,也就是 vΔt:

100 mm/s × 200 µs = 0.02 mm。

这正好落在球杆仪能看见的圆度误差量级里。低速时 v 小,椭圆不明显;进给一快,v×Δt 跟着变大,圆就开始被拉扁。这里的关键不是“200 µs 听起来大不大”,而是“多轴联动时,时间差会直接变成空间误差”。

症状也要分开看。如果椭圆方向固定,优先怀疑固定采样相位差;如果轨迹上是随机毛刺,优先怀疑采样抖动;如果圆心随圈慢慢漂移,那通常不是一个简单常数 Δt,可能叠了时间戳漂移、热漂、几何误差,或者球杆仪拟合中心被周期性误差带着走。先把这三种分开,后面才不会乱补螺距、乱调增益。

第二层:DC 对齐了时钟,不等于对齐了采样

很多人看到 EtherCAT DC 开了,就以为这事结束了。其实 DC 先解决的是“大家手表对齐”。Beckhoff 文档里说,Distributed Clocks 让支持 DC 的 EtherCAT 从站在同一个参考时钟下同步,文档示例中提到同步容差可以到小于 100 ns;ESC 里的 DC 单元还可以生成 SYNC0、SYNC1 这类按时间触发的事件。

但画圆要的是下一步:每个轴到底有没有在同一个系统时刻锁存自己的位置。

这中间差了一层执行链路。ESC 可以产生 SYNC0 脉冲,SYNC0 的起始时间、周期、激活方式都有对应寄存器和配置逻辑,比如系统时间 0x0910、循环运行起始时间 0x0990、SYNC0 周期 0x09A0 等,这些能说明“同步脉冲怎么来”,但不能自动证明“编码器反馈已经在这个沿上被锁存”。Beckhoff 的同步模式文档也把 Free Run、SM Event、SYNC event 等模式分开描述,并指出 0x1C32、0x1C33 可用于判断输出侧、输入侧同步方式。

驱动侧还要继续看。0x1C32 对应输出同步,0x1C33 对应输入同步,也就是反馈这一侧。通用语义上,如果输入真正按 DC Sync0 锁存,反馈就应该对应 SYNC0 这个系统时刻。但放到 IS620N 这种具体驱动上,要小心:对象字典里看到 0x1C33:01 是某个值,不等于你已经证明编码器采样点跟 SYNC0 沿完全同拍;有些对象还是 RO,只能报告状态,不能让你随手写成另一个同步模式。

所以这篇不能写成“把 0x1C33:01 改成 Sync0 就好了”。更稳的现场说法是:后来朋友逐轴核查时发现,其中一个参与圆插补的轴,反馈没有真正按同一个 DC 系统时刻锁存。它虽然挂在同一条 EtherCAT 网络上,主站也能周期性读到位置,但反馈采样仍落在驱动内部节拍上。

这就是那句最重要的话:DC 对齐了“时钟”,不等于对齐了“采样”。

展会上讲的 Digital Twin 再漂亮,也要先喂进去同一时刻的数据。否则仿真模型再聪明,现场那几根轴还是各看各的表。

第三层:编码器自己还有一个采样年龄

就算 SYNC0 到了驱动,编码器那边也未必是“此刻角度”。不同接口、不同芯片,对“什么时候把角度锁住”这件事定义不一样。

BiSS-C、部分 iC-Haus 器件会定义明确的 latch point,比如在帧开始或片选后的某个有效时钟沿锁存绝对位置,这类接口比较适合用同步边沿钉住采样时刻。EnDat、Tamagawa T-format 也有主从命令和时钟时序,但具体采样锁存点、处理延迟和补偿方式,要看编码器与驱动实现,不能只看接口名字就说“请求即采”。

磁编码器还要看内部传播延迟。以 ams OSRAM AS5047P 为例,数据手册里给出的 SPI 读角度系统传播延迟是 90–110 µs;ABI/UVW 经 DAEC 动态角度误差补偿后,残余传播延迟为 1.5–1.9 µs;手册还说明 PWM 角度不经过 DAEC 补偿。

我把这件事叫“采样年龄”:主站此刻读到的位置,究竟对应几微秒前的机械位置。单轴看,这个年龄可能只是相位滞后;多轴一拼,它就变成几根轴之间的时间差。

这也是很多多轴问题难查的地方。单轴调试时,你看到的是跟踪误差、速度环、位置环、摩擦、共振;多轴插补时,你看到的是几条时间链路被拼成一个几何图形。只要其中一条链路晚了几十微秒、上百微秒,单轴曲线可能还很漂亮,圆已经悄悄变成椭圆了。

最后只查三件事

第一,查主站时刻。TwinCAT 的 DC 配置有没有真的让参与圆插补的从站进入同一个系统时间基准。不要只看配置页上有没有勾 DC,要看 Reference Clock、从站 DC 状态、同步误差,以及多 EtherCAT 段或多主站场景下有没有引入新的参考时钟问题。

第二,查驱动锁存。不要只看 0x1C33:01 名义值,尤其像 IS620N 这类具体设备,要结合启动参数、驱动内部同步状态和示波器。一路抓 SYNC0,一路抓驱动发给编码器的时钟或锁存相关信号,量两者相差多少、抖多少。现场真正要回答的不是“对象字典看起来像 Sync0”,而是“反馈值到底在什么物理时刻被锁住”。

第三,查编码器年龄。BiSS-C 看 latch point,EnDat 和 T-format 看具体实现,SPI 磁编码器看传播延迟、补偿路径和读出的寄存器。最笨但有效的方法,是让电机匀速转,连续读 N 帧,把读出角度和已知角速度对齐,估出这条链路的固定 age。这个 age 不是玄学,它就是角度滞后除以角速度。

提高采样率不解决这个问题。把单轴从 1 kHz 提到 8 kHz,单轴曲线会更密,但只要几根轴的时间原点没对齐,v×Δt 还在。对齐是“同一时刻”的问题,不是“多读几次”的问题。

硬件改不动时,还有一条软路:主站读 DC system time,也就是 ESC 0x0910 那组系统时间,给每帧位置打采样时间戳,再按统一时基把各轴插值到同一时刻。代价是一点算量和一拍延迟,但至少你知道自己在补什么,不是在盲目把增益越拧越乱。

回到那台龙门。朋友后来没有继续拧增益,而是把参与圆插补的轴逐个核到同一个 DC 系统时刻:主站时间、驱动锁存、编码器采样年龄,一层一层对齐。那张 0.02 mm 的椭圆,真正暴露的不是某根轴“不准”,而是几根轴没有在同一瞬间回答同一个问题。

所以这类椭圆,别第一时间去拧增益。先拿示波器同抓 SYNC0 和编码器时钟,再把主站时间、驱动锁存、编码器采样年龄逐层摊开。

圆画不圆,有时不是哪根轴不准,而是几根轴各看各的表。对多轴系统来说,同步不是配置页上的一个勾,而是每一个位置值背后的真实采样时刻。

画圆成椭圆,别先拧增益,先看几根轴是不是同一瞬间读数, 汇川 IS620N + 多摩川 TS5700N8501 17 位反馈,三轴采样差 200µs

应作如是观
公众号「如是有为」二维码

关注公众号「如是有为」

微信扫一扫,新文章先在公众号发出。