首页 > 全部分类 > 技术问答 > 帖子内容

用汇川 SV660N 配合倍福(Beckhoff)TwinCAT3 做多轴插补运动。 伺服走 EtherCAT 总线,模式为 CSP(周期同步位置模式),周期 1ms。 单向匀速运行、或者做平滑的梯

联系人:15628275903425

电话/手机:联系客服

发布时间:2026-07-30 02:34

浏览:89次

用汇川 SV660N 配合倍福(Beckhoff)TwinCAT3 做多轴插补运动。
伺服走 EtherCAT 总线,模式为 CSP(周期同步位置模式),周期 1ms。

单向匀速运行、或者做平滑的梯形加减速时,伺服跟踪非常完美。

故障点: 只要插补轨迹走到正反转交界点(比如正向 100mm/s 减速到 0,然后瞬间反向加速),在转速刚好过 0Hz 的那一毫秒,SV660N 驱动器必报 E200.0(伺服过速度)跳闸!
PLC 主站发出的位置指令波形用 Scope 抓过,平滑无突变。
为什么从正转切到反转的 0 速度瞬间,伺服内部算法会误判自己‘超速’了?是不是汇川在 CSP 模式下的速度前馈(Velocity Feedforward)在过零点有 Bugs?
明扬工控技术客服2026-07-30 02:46:50
答复内容:亲,这个不要先扣“汇川 CSP 速度前馈 Bug”。
我更倾向于:

SV660N 不是在 0Hz 瞬间真的超速了,而是在正反转交界那 1ms,驱动器内部用“位置差分”算出来的瞬时速度出现了尖峰。E200.0 抓到的是这个瞬时速度估算尖峰,不一定是电机持续超速。

SV660N 的 EtherCAT 通讯采用 CiA402 驱动协议,支持 CSP、CSV、CST 等同步模式;CSP 本质就是主站周期性给目标位置,驱动器在内部完成位置/速度/电流环控制。 Beckhoff 对 CSP 的说明也类似:CSP 下通过周期变量 Target position 给定位置,NC 负责生成位置设定值并传给驱动。

一、位置曲线“平滑”,不代表速度/加速度/加加速度平滑

你 Scope 里看到位置指令平滑,这只能说明:

位置 P(t) 连续

但驱动器真正敏感的是:

速度 V = 位置差分
加速度 A = 速度差分
jerk = 加速度差分

正向 100mm/s 减速到 0,然后立刻反向加速,如果没有足够的 S 曲线或零速停顿,位置曲线看起来可能很圆滑,但在过零那一拍:

速度从 +很小
变成 0
再变成 -很小

加速度方向突然翻转
jerk 很大

TwinCAT NC 在轴启动时可以按速度、加速度、减速度、jerk 生成动态曲线,但前提是你的插补/PLC 轨迹确实使用了这些 jerk 限制,而不是自己每 1ms 塞一串“看起来平滑”的位置点。Beckhoff 文档也说明,PTP 轴启动时会基于 acceleration、deceleration、jerk 等参数生成动态 profile。

二、1ms 周期下,一个位置差分尖峰就足够触发“过速度”

CSP 下驱动器通常会根据连续两个周期的目标位置、实际位置来估算速度。
周期是 1ms,也就是:

v[k] = (position[k] - position[k-1]) / 0.001s

所以只要某一拍位置差分异常,就会被放大 1000 倍。

例如:

正常:
1ms 内位置变化 0.1mm
=> 速度 100mm/s

异常:
某一拍位置差分突然变 2mm
=> 速度 2000mm/s

这时候机械轴可能只“抽”了一下,肉眼根本看不出来,但驱动器内部速度监控已经看到一个过速度尖峰。

所以这个故障非常符合:

正反转交界

某一拍位置差分 / 速度估算 / 前馈量异常

SV660N 判断过速度

E200.0
三、第一嫌疑:你的轨迹在过零点不是 S 曲线,而是“加速度硬翻”

单向匀速和平滑梯形加减速都没事,因为它们没有在同一位置附近反复正反切换。

正反转交界最凶的是:

正向减速

速度到 0

反向加速

如果中间没有零速停顿,且加速度从 -A 立刻变成 -A 或从制动段切到反向加速段时发生突变,驱动器内部会看到一个很大的动态冲击。

验证很简单:

在 0 速度处停 20~50ms
再反向加速

如果这样 E200.0 消失,基本就不是 EtherCAT 通讯问题,也不是电机编码器问题,而是过零动态太硬。

四、第二嫌疑:实际 PDO 原始目标位置有一拍跳变,Scope 没抓到

TwinCAT Scope 里看“NC 设定位置”平滑,不等于驱动器实际收到的 0x607A Target position 原始 DINT 一定平滑。

一定要同时抓:

NC SetPosition
NC SetVelocity
NC SetAcceleration

PDO 0x607A Target position 原始值
PDO 0x6064 Actual position 原始值
PDO 0x606C Actual velocity
PDO 0x60F4 Following error
Statusword
Error code
WcState / EtherCAT Working Counter
DC Sync jitter

尤其要注意 0x607A 必须按有符号 32 位 DINT看。

如果 PLC 或中间变量用了 UDINT / UINT,在正负方向、零点、模数边界附近可能出现这种灾难:

真实想发:-10 counts
错误解释:4294967286 counts

在工程单位曲线上可能被你缩放/滤波后看不明显,但驱动器端会认为目标位置瞬间飞走,速度差分直接爆表。

五、第三嫌疑:位置单位太粗,过零点出现 +1、0、-1 计数抖动

如果电子齿轮、TwinCAT scaling、drive scaling 配得不合适,1ms 周期下低速过零时可能出现:

+2 counts
+1 count
0 count
-1 count
-2 counts

这本身正常,但如果速度估算滤波、前馈、插补周期不匹配,就可能在过零点形成锯齿速度。

表现就是:

单向跑没问题
平滑加减速没问题
一过 0 速度就炸

可以临时把轨迹速度、加速度都降到原来的 1/5,看还会不会 E200.0。
如果降低后正常,说明不是 Bug,而是过零点的离散化和动态余量不够。

六、第四嫌疑:速度前馈/加速度前馈在过零点符号或比例不对

你怀疑速度前馈,这个方向可以查,但不一定是汇川 Bug,更可能是配置或映射问题。

重点确认是否映射或写入了这些对象:

0x60FF Target velocity
0x60B1 Velocity offset
0x60B2 Torque offset
厂家扩展速度前馈
厂家扩展转矩前馈

CSP 正常只靠周期目标位置就能跑。如果你同时给了速度前馈、转矩前馈,过零点最容易出事:

位置目标已经在减速到 0
但速度前馈还保持正向
或提前切成反向
或比例单位错了

结果驱动器内部就是:

位置环:让我停住
前馈:让我猛推
速度估算:出现尖峰

E200.0

Beckhoff 的加速度前馈说明里也强调,前馈需要在正负方向、加速/减速时严格对称调整,否则跟随误差会不对称。 你的问题刚好发生在正反方向切换点,所以要先把所有前馈关掉做基准测试。

七、第五嫌疑:EtherCAT DC 同步在过零点被放大

如果 EtherCAT 周期偶发抖动一拍,在匀速段可能只是很小的速度波动;但在正反转交界,速度、加速度都在快速变化,一拍延迟就可能变成明显的差分尖峰。

查这些:

TwinCAT Task jitter
EtherCAT DC Sync0
WcState
Lost frames
Drive PDO update time
NC task cycle = EtherCAT cycle = 1ms 是否一致

Beckhoff CSP 说明里列出的周期支持 250µs、500µs、1ms 等同步周期,关键是主站与从站必须按这个周期稳定交换目标位置。

现场最快破案步骤
1. 先加零速停顿
正向 100mm/s

减速到 0

停 20~50ms

反向加速

判断:

不再 E200.0:
过零动态/jerk/前馈问题

仍然 E200.0:
继续查原始 PDO、实际速度、编码器反馈
2. 关闭所有前馈

临时关闭:

Velocity Feedforward
Acceleration Feedforward
Torque Feedforward
0x60B1 Velocity offset
0x60B2 Torque offset
厂家扩展前馈

只保留 CSP 目标位置。

判断:

关闭前馈后正常:
前馈符号、比例、延时或过零处理有问题

关闭前馈仍报:
目标位置差分、实际反馈速度或同步问题
3. 抓原始 PDO,不要只看工程单位

Scope 里一定要抓:

0x607A Target position 原始 DINT
0x6064 Actual position 原始 DINT
0x606C Actual velocity
0x60F4 Following error
0x6041 Statusword
Drive error code

然后自己算:

TargetDelta[k] = TargetPos[k] - TargetPos[k-1]
ActualDelta[k] = ActualPos[k] - ActualPos[k-1]

如果在报错前一拍,TargetDelta 或 ActualDelta 出现异常大值,过速度就是它触发的。

4. 检查符号类型和模数轴设置

重点查:

Target position 是否 DINT
Actual position 是否 DINT
PLC 中间变量有没有 UDINT / UINT
轴是否被配置成 modulo axis
位置是否在 0 / ±边界附近
TwinCAT scaling 是否和驱动器电子齿轮一致

如果过零点附近存在 正小数 → 负小数,任何无符号转换都会很危险。

5. 把加速度和 jerk 降低 5~10 倍
速度不变
加速度降到 1/5
jerk 降到 1/10

如果立刻正常,说明驱动器不是误判,而是过零处动态太硬。

6. 缩短周期测试

如果主站和驱动器允许,把 CSP 周期从:

1ms

改成:

500µs 或 250µs

更短周期下,每拍位置增量更小,速度差分尖峰会减轻。Beckhoff CSP 支持这些 2ⁿ × 125µs 的周期档位,但实际能不能用,要看驱动器和整套 EtherCAT 负载。

我会优先判断的原因排序
第一:
过零点没有真正 jerk-limited,速度看着平滑,但加速度/jerk 有尖峰。

第二:
0x607A 原始目标位置在正负切换处有一拍跳变,Scope 工程单位没看出来。

第三:
DINT/UDINT 或 modulo 处理错误,零点附近出现符号翻转/回卷。

第四:
Velocity feedforward / torque feedforward 在过零点符号、比例或延时不一致。

第五:
1ms 周期下位置差分太粗,实际速度估算在零速附近产生尖峰。

第六:
EtherCAT DC 同步或任务 jitter 在动态反向瞬间被放大。

一句话:

这不是汇川在 0Hz 误判超速,而是 CSP 在 1ms 周期下靠位置差分推导速度。正反转交界处只要目标位置、实际位置、前馈或同步有一拍不连续,内部速度估算就会瞬间爆表。先加零速停顿、关前馈、抓 0x607A/0x6064/0x606C 原始 PDO,再查 DINT 符号、modulo 和 jerk 限制。
对不起,请登录后再发表评论!

触屏端
扫一扫手机也能发信息
明扬工控商城-工控网-工控自动化真品,一站式专业服务!