ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CiA-402前馈控制实战:0x60B1与0x60B2参数整定与避坑指南

CiA-402前馈控制实战:0x60B1与0x60B2参数整定与避坑指南 1. 从一次轨迹抖动排查说起为什么前馈控制值得单独拿出来讲去年帮一个做半导体封装设备的客户调一台三轴贴装机用的是某国产伺服驱动器总线走的是 EtherCAT协议栈是标准的 CiA-402。设备在点位运动时表现很好定位精度能稳定在 ±1 个编码器单位以内但一切换到 CSP 模式做连续插补问题就来了轨迹在圆弧段出现肉眼可见的抖动跟随误差在加减速切换点会突然跳一下速度环的指令电流波形上能看到明显的尖峰。客户一开始怀疑是机械刚性不够换了联轴器、加了减速机折腾了两周没解决。后来我把驱动器的 0x60B1 和 0x60B2 两个对象翻出来把速度前馈和转矩前馈的增益重新整定了一遍抖动基本消失跟随误差峰值降了将近 60%。这件事让我意识到很多做运控的工程师对 CiA-402 的理解停留在“把 PDO 映射配好、模式设对、能跑起来就行”的层面对 0x60B1Velocity offset和 0x60B2Torque offset这两个前馈对象的使用非常粗糙甚至有人根本不知道它们是干什么的。而恰恰是这两个对象决定了 CSP、CSV、CST 三种周期同步模式下的运动精度和响应速度上限。这篇内容就是围绕这个实战场景展开的。我会把 CiA-402 前馈控制的原理、0x60B1/0x60B2 的用法、参数整定的具体步骤、以及我在实际调试中踩过的坑尽可能完整地讲清楚。适合已经能跑通 CiA-402 基本通信、但想进一步提升运动性能的运控工程师也适合刚接触周期同步模式、想搞明白前馈到底怎么加的新手。读完之后你应该能独立完成一套前馈参数的整定并且知道出问题时该往哪个方向排查。2. CiA-402 周期同步模式与前馈控制的核心逻辑2.1 CSP、CSV、CST 三种模式到底差在哪CiA-402 协议里定义了多种运动模式其中周期同步类模式是做连续轨迹控制的主力。这三种模式的本质区别在于主站每个周期下发给从站的目标值类型不同。CSPCyclic Synchronous Position模式下主站每个周期发送目标位置 0x607A从站内部的位置环、速度环、电流环全部闭合从站根据目标位置和实际位置的差值自己生成速度指令和转矩指令。这种模式对从站的要求最高因为插补运算和环路调节都在从站内部完成。CSVCyclic Synchronous Velocity模式下主站发送的是目标速度 0x60FF从站内部闭合速度环和电流环位置环由主站负责。这种模式适合主站运算能力强、需要做复杂速度规划的场合。CSTCyclic Synchronous Torque模式下主站直接发送目标转矩 0x6071从站只闭合电流环速度和位置都由主站控制。这种模式响应最快但对主站的控制能力要求也最高。三种模式的共同点是主站和从站之间通过 PDO 进行周期性的数据交换周期时间通常在 1ms 到 4ms 之间具体取决于总线带宽和从站的处理能力。在这个周期性的数据流中0x60B1 和 0x60B2 作为可选的 PDO 映射对象允许主站在每个周期额外叠加一个速度前馈量和转矩前馈量。2.2 前馈控制在运控系统里解决的是什么问题要理解前馈的作用得先明白反馈控制的固有缺陷。一个典型的位置控制系统位置环根据位置误差生成速度指令速度环根据速度误差生成转矩指令转矩指令再驱动电机。这个链条里每一环都是“先有误差再有修正”也就是说系统必须等到误差出现了才开始动作。对于静态或低速场合这种滞后无所谓。但在高速、高加速度的轨迹跟踪中滞后就会导致跟随误差。加速度越大需要的转矩越大而反馈控制要等到位置误差积累到一定程度才能输出足够的转矩这中间的时间差就是跟随误差的来源。前馈控制的思路很直接既然我知道下一时刻要加速那我提前把加速需要的转矩加上去不用等误差出现。速度前馈是把规划的速度直接叠加到速度环的输入上转矩前馈是把规划的加速度乘以惯量直接叠加到转矩环的输入上。这样反馈环只需要负责修正模型误差和外部扰动负担大大减轻跟随误差自然就小了。用生活化的类比来说反馈控制像是开车时盯着后视镜调整方向前馈控制像是看着前方路况提前打方向盘。两者结合车才能开得又稳又快。2.3 0x60B1 和 0x60B2 在对象字典里的位置在 CiA-402 的对象字典中0x60B1 的定义是“Velocity offset”数据类型通常是 INTEGER32单位是用户自定义的速度单位一般与 0x60FF 的单位一致。0x60B2 的定义是“Torque offset”数据类型通常是 INTEGER16单位是额定转矩的千分比。这两个对象的关键特性是它们都是可选的 PDO 映射对象也就是说你可以在 PDO 配置阶段决定是否把它们映射进 RPDO。如果映射了主站每个周期都会发送新的值如果没有映射从站会使用它们在上一次 SDO 写入时的值或者默认值 0。这里有一个容易被忽略的细节0x60B1 和 0x60B2 的作用是“叠加”不是“替代”。从站内部会把前馈值和反馈环的输出相加得到最终的速度或转矩指令。这意味着前馈量的符号和幅值必须与反馈环的输出方向一致否则会互相抵消甚至引起振荡。3. 前馈参数整定的完整实操流程3.1 整定前的准备工作在动前馈参数之前有几件事必须先确认否则整定过程会变成盲人摸象。第一确认反馈环本身已经调好。位置环增益、速度环增益、速度环积分时间这些参数如果没调好前馈加上去只会让问题更复杂。我的习惯是先把前馈全部置零用阶跃响应或者正弦扫频的方式把反馈环调到临界稳定再退一点确保系统有足够的稳定裕度。第二确认 PDO 映射里包含了 0x60B1 和 0x60B2。不同品牌的驱动器对这两个对象的 PDO 映射支持程度不一样有些默认不映射需要手动配置。配置的时候要注意 RPDO 的映射条目数量和总长度不能超过从站支持的上限。第三准备好数据采集工具。整定前馈参数不能靠肉眼观察必须能同时采集目标位置、实际位置、目标速度、实际速度、目标转矩、实际转矩这几路信号。我一般用驱动器自带的示波器功能或者用主站侧的 Trace 工具采样周期至少要比总线周期快 10 倍。第四确认机械系统已经紧固。前馈控制会显著提高系统的动态响应如果机械连接有间隙或者松动前馈量加上去之后会激发机械谐振反而让系统不稳定。3.2 速度前馈 0x60B1 的整定方法速度前馈的整定相对简单因为它直接叠加在速度环的输入上物理意义明确。整定的第一步是让系统跑一段典型的运动轨迹比如一个来回的 S 曲线或者一个圆弧。先不加前馈采集实际速度和目标速度的波形。如果反馈环调得好实际速度应该能跟上目标速度但会有一定的相位滞后和幅值衰减。第二步是计算速度前馈的初始值。理论上如果速度环的闭环传递函数在低频段接近 1那么速度前馈的增益应该接近 1。但实际系统中速度环的带宽有限高频段会有衰减所以前馈增益需要略大于 1 来补偿。我的经验是从 0.8 开始逐步往上加。第三步是观察跟随误差的变化。速度前馈增益增加时速度跟随误差会减小但超过某个值之后系统会出现过冲或者振荡。这个临界点就是速度前馈的上限。实际使用中我会取临界值的 70% 到 80% 作为最终值留出稳定裕度。这里有一个实操技巧速度前馈对匀速段的跟随误差改善最明显对加减速段的改善有限。如果你发现匀速段误差已经很小但加减速段误差还是很大那说明问题主要在转矩前馈上速度前馈已经到位了。3.3 转矩前馈 0x60B2 的整定方法转矩前馈的整定要复杂一些因为它涉及到惯量匹配的问题。转矩前馈的理论值等于加速度乘以系统总惯量。系统总惯量包括电机转子惯量、联轴器惯量、负载惯量。电机转子惯量可以从手册查到联轴器和负载惯量需要估算或者测量。很多驱动器支持惯量辨识功能可以自动测出负载惯量与电机惯量的比值这个功能一定要用上。假设辨识出来的惯量比是 5电机额定转矩是 2 N·m那么负载惯量折算到电机侧大约是电机转子惯量的 5 倍。如果规划的最大加速度是 1000 rad/s²电机转子惯量是 0.5 kg·cm²那么加速需要的转矩大约是 (15) × 0.5 × 10⁻⁴ × 1000 ≈ 0.3 N·m占额定转矩的 15%。换算成 0x60B2 的值就是 150千分比。实际整定时我会先把这个理论值写进去然后观察转矩波形。如果实际转矩和理论转矩在加减速段吻合得很好说明惯量辨识准确前馈量合适。如果实际转矩偏大说明前馈量不够如果实际转矩出现反向尖峰说明前馈量过大。转矩前馈的整定还有一个关键点它和速度前馈是耦合的。速度前馈增加会减少速度环的负担从而减少速度环输出的转矩指令这时候转矩前馈的需求也会变化。所以正确的顺序是先整定速度前馈再整定转矩前馈整定完转矩前馈之后回头检查速度前馈是否需要微调。3.4 两种前馈的联合调试与验证单独整定完两个前馈之后需要做联合调试。联合调试的目标是让跟随误差在整个轨迹上尽可能均匀而不是某一段特别好、另一段特别差。我常用的验证轨迹是一条包含匀速段、加速段、减速段、圆弧段的复合轨迹。采集跟随误差曲线观察它的峰值和形状。理想情况下跟随误差应该是一个幅值很小、变化平缓的曲线。如果误差在加减速切换点出现尖峰说明转矩前馈的相位不对可能需要调整前馈的滤波时间常数。如果误差在匀速段有稳态偏差说明速度前馈的增益不够。验证的时候还要注意不同速度下的表现。有些系统在低速时前馈效果很好高速时反而变差这通常是因为速度环的带宽不够高频段衰减严重。这种情况下单纯增加前馈增益会导致振荡需要先提高速度环带宽或者降低运动轨迹的高频分量。4. 不同模式下的前馈策略差异与参数对照4.1 CSP 模式下的前馈配置要点CSP 模式下从站内部同时闭合位置环、速度环、电流环前馈的注入点有两个速度前馈注入到速度环输入转矩前馈注入到转矩环输入。这种模式下前馈的作用是减轻从站内部反馈环的负担。因为从站的位置环带宽通常有限如果只靠反馈高速运动时跟随误差会比较大。加上前馈之后从站的位置环只需要修正模型误差输出会小很多。CSP 模式下配置前馈时要注意 0x60B1 的单位。有些驱动器把 0x60B1 的单位定义为与 0x60FF 一致有些则定义为与内部速度单位一致。如果单位搞错了前馈量会差几个数量级系统直接飞车。我的做法是先用一个很小的值测试观察速度指令的变化确认单位正确后再正式整定。另外CSP 模式下从站的位置环增益对前馈效果有影响。位置环增益越高反馈环的响应越快前馈的补偿效果越明显。但位置环增益太高会引起振荡需要在稳定性和响应速度之间取平衡。4.2 CSV 模式下的前馈配置要点CSV 模式下主站负责位置环从站只闭合速度环和电流环。这时候 0x60B1 的作用是直接叠加到速度指令上0x60B2 叠加到转矩指令上。CSV 模式的一个特点是主站可以获取从站的实际位置和实际速度因此可以在主站侧计算前馈量。这意味着前馈的算法可以更灵活比如加入摩擦补偿、重力补偿等非线性前馈。但 CSV 模式也有一个隐患主站和从站之间的通信延迟会直接影响前馈的效果。如果总线周期是 1ms通信延迟是 0.5ms那么前馈量实际上是在补偿 0.5ms 之前的状态相位滞后会导致补偿效果打折扣。这种情况下可以在主站侧对前馈量做超前补偿或者提高总线通信的实时性。4.3 CST 模式下的前馈配置要点CST 模式下从站只闭合电流环速度和位置都由主站控制。这时候 0x60B1 的作用有限因为从站内部没有速度环速度前馈无处可加。0x60B2 则直接叠加到转矩指令上是主要的前馈手段。CST 模式对主站的要求最高因为主站需要完成位置环和速度环的全部运算。前馈量也在主站侧计算通过 0x60B2 发送给从站。这种模式下前馈的精度直接取决于主站模型的准确性包括惯量、摩擦、重力等参数的辨识精度。我在 CST 模式下调试时通常会先用 CST 模式做系统辨识测出惯量和摩擦参数然后在主站侧实现完整的前馈控制算法。这种方式的灵活性最高但开发工作量也最大。4.4 三种模式的前馈参数对照表对比项CSP 模式CSV 模式CST 模式位置环位置从站内部主站主站速度环位置从站内部从站内部主站电流环位置从站内部从站内部从站内部0x60B1 注入点速度环输入速度环输入不适用0x60B2 注入点转矩环输入转矩环输入转矩环输入前馈计算位置主站或从站主站主站对主站要求低中高前馈效果上限中高最高调试难度低中高这张表是我根据实际项目经验整理的不同品牌的驱动器实现可能有差异但总体逻辑是一致的。选哪种模式取决于主站的运算能力、总线周期、以及运动轨迹的复杂程度。如果主站性能足够CST 模式能发挥前馈的最大效果如果主站性能有限CSP 模式是更稳妥的选择。5. 常见问题排查与避坑经验实录5.1 前馈加上去之后系统反而振荡了这是最常见的问题原因通常有三个。第一个原因是前馈增益过大。前馈量超过了实际需要的补偿量导致系统过补偿反馈环为了修正过补偿又反向调节形成振荡。解决办法是降低前馈增益从理论值的 50% 开始重新整定。第二个原因是前馈的符号搞反了。0x60B1 和 0x60B2 是有符号数如果符号与反馈环输出方向相反前馈会变成负反馈系统必然振荡。排查方法是单独加一个很小的前馈量观察速度或转矩指令的变化方向是否与预期一致。第三个原因是机械谐振。前馈控制提高了系统的动态响应如果机械系统存在谐振频率前馈量中的高频分量会激发谐振。解决办法是在前馈通道上加低通滤波器滤掉谐振频率附近的分量。滤波时间常数的选择需要根据谐振频率来定一般取谐振频率的 1/3 到 1/5 作为截止频率。5.2 前馈效果在不同速度下差异很大这个问题通常与速度环的带宽有关。速度环带宽有限时低频段增益接近 1高频段增益下降。速度前馈在低频段补偿效果好高频段补偿效果差所以高速运动时前馈效果会变差。解决办法有两个一是提高速度环带宽但这受限于机械谐振和采样频率二是对前馈量做幅频补偿在高速段适当增加前馈增益。后者需要根据速度环的频响特性来设计补偿曲线实现起来复杂一些但效果更好。还有一个可能的原因是前馈量的单位不统一。有些驱动器的 0x60B1 单位是 rpm有些是用户自定义单位如果主站发送的前馈量单位与从站期望的不一致不同速度下的表现就会很奇怪。排查方法是查看驱动器的对象字典说明确认单位定义。5.3 跟随误差在加减速切换点出现尖峰这个问题的根源通常是转矩前馈的相位滞后。加减速切换时加速度发生突变转矩前馈需要快速响应。如果前馈通道有滤波或者通信延迟前馈量跟不上加速度的变化就会在切换点出现误差尖峰。解决办法是减小前馈通道的滤波时间常数或者在前馈计算时加入加速度的微分项做超前补偿。另外如果总线周期较长可以考虑提高总线通信速率减少通信延迟。我在一个项目里遇到过类似问题最后发现是驱动器的转矩前馈通道内部有一个固定的 1ms 滤波而总线周期是 2ms两者叠加导致相位滞后严重。后来把总线周期改成 1ms问题就解决了。这个经验说明前馈效果不仅取决于参数还取决于整个控制链路的时序。5.4 常见问题速查表现象可能原因排查方向解决措施系统振荡前馈增益过大降低增益观察从理论值 50% 重新整定系统振荡前馈符号反了检查符号方向修正符号系统振荡机械谐振采集电流波形看频谱加低通滤波器高速时效果差速度环带宽不足测速度环频响提高带宽或做幅频补偿高速时效果差前馈单位不统一查对象字典统一单位切换点误差尖峰前馈相位滞后检查滤波和通信延迟减小滤波或提高总线速率匀速段有稳态误差速度前馈不足观察速度跟随误差增加速度前馈增益加减速段误差大转矩前馈不足观察转矩波形增加转矩前馈增益前馈无效果PDO 未映射检查 PDO 配置映射 0x60B1/0x60B2前馈无效果从站不支持查驱动器手册确认对象是否可选这张表里的每一条都是我或者同事在实际项目中遇到过的有些问题花了好几天才定位到。希望这张表能帮你少走一些弯路。5.5 几个容易被忽略的实操细节第一个细节是前馈量的更新时机。在周期同步模式下前馈量应该与目标位置或目标速度在同一个周期内更新否则会出现时序错位。有些主站实现里前馈量的计算和 PDO 发送是分开的如果计算耗时较长可能导致前馈量滞后一个周期。这个问题在高速运动时影响很大需要在主站侧做好任务调度。第二个细节是前馈量的限幅。0x60B1 和 0x60B2 都是有符号数但实际系统中前馈量不应该超过物理极限。比如转矩前馈不应该超过电机的峰值转矩速度前馈不应该超过电机的最大速度。如果前馈量超限从站可能会报错或者进入保护状态。建议在主站侧对前馈量做限幅处理。第三个细节是不同品牌驱动器的兼容性。CiA-402 是标准协议但不同厂商对 0x60B1 和 0x60B2 的实现细节可能有差异。比如有些驱动器把这两个对象放在不同的索引下有些驱动器的单位定义不同有些驱动器对前馈量的内部处理方式不同。换品牌的时候这些细节一定要重新确认不能想当然。第四个细节是前馈参数的保存。0x60B1 和 0x60B2 如果是通过 SDO 写入的需要确认驱动器是否支持掉电保存。如果不支持每次上电都需要重新写入。如果是通过 PDO 映射的则不需要保存因为主站每个周期都会发送新值。6. 从参数整定到系统级优化的延伸思考前馈控制做到参数整定这一步基本能解决大部分跟随误差问题。但如果想进一步压榨系统性能还需要从系统级的角度做优化。一个方向是摩擦补偿。实际的机械系统都存在摩擦摩擦是非线性的在低速和换向时表现尤为明显。前馈控制如果只考虑惯量换向时的摩擦会导致误差尖峰。解决办法是在前馈通道里加入摩擦模型根据速度方向补偿摩擦转矩。摩擦模型的参数可以通过实验辨识常用的有库仑摩擦加粘滞摩擦模型。另一个方向是重力补偿。对于垂直轴或者有重力负载的轴重力转矩是恒定的但方向始终向下。前馈控制如果不补偿重力垂直轴在静止时会有稳态误差运动时也会有额外的转矩负担。重力补偿的方法很简单就是在转矩前馈上叠加一个与重力方向相反的恒定分量。这个分量的大小等于重力转矩可以通过实验测量。还有一个方向是自适应前馈。系统的惯量和摩擦会随着负载变化、温度变化、磨损而变化固定的前馈参数无法始终保证最优。自适应前馈的思路是根据实时的跟随误差调整前馈增益让系统自动适应参数变化。实现方式有基于模型参考自适应的方法也有基于迭代学习控制的方法。后者特别适合重复性轨迹通过多次迭代逐步修正前馈量最终实现零跟随误差。我在一个重复性很高的点胶设备项目里用过迭代学习控制效果非常好。设备做的是同样的轨迹每次迭代都把上一次的跟随误差叠加到前馈量上迭代十几次之后跟随误差降到了原来的十分之一。这种方法的局限是只适合重复轨迹对于随机轨迹不适用。最后再分享一个小技巧前馈参数的整定不是一劳永逸的设备运行一段时间后机械磨损、润滑状态变化都会影响前馈效果。建议在设备维护计划里加入前馈参数的检查项定期采集跟随误差数据发现异常及时重新整定。这个习惯能帮你避免很多突发的精度问题。
返回列表