ARTICLE DETAIL

资讯详情

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

松下A6BF伺服全闭环配置与TwinCAT3调试实战指南

松下A6BF伺服全闭环配置与TwinCAT3调试实战指南 1. 为什么全闭环不是接上光栅尺就完事很多人第一次接触松下A6BF伺服加TwinCAT3做全闭环脑子里想的都是驱动器接电机编码器做半闭环再把光栅尺接到驱动器第二编码器口不就全闭环了吗。我当初也是这么想的结果第一次上电就给我上了一课——轴一动就报位置偏差过大停下来之后位置又慢慢漂回去折腾了整整两天才把问题定位清楚。全闭环这件事本质上不是多接一根线的问题而是控制环路的归属权问题。半闭环的时候位置环在驱动器内部编码器反馈的是电机转子角度中间经过减速机、丝杠、联轴器所有的背隙、弹性变形、热伸长都被藏在电机后面驱动器根本看不见。全闭环就是把位置反馈点从电机端挪到了负载端光栅尺这时候位置环看到的误差是真实的末端误差但同时也把机械环节的所有非线性因素全部暴露给了控制器。松下A6BF在这件事上有个很关键的特性它支持全闭环控制模式但前提是你要正确设置Pr0.01控制模式和Pr0.02全闭环/半闭环切换并且光栅尺的分辨率、方向、原点都要和驱动器内部参数严格对齐。TwinCAT3这边则要通过NC轴配置把编码器反馈源指向驱动器的第二编码器也就是光栅尺那一路而不是默认的电机编码器。我踩的第一个坑就是以为TwinCAT3会自动识别全闭环。实际上TwinCAT3的NC轴默认读的是驱动器的位置实际值PDO而松下A6BF在EtherCAT通信里位置实际值到底映射的是电机编码器还是光栅尺取决于驱动器内部Pr0.02和Pr5.xx这一组参数的设置。如果驱动器本身还在半闭环模式TwinCAT3读到的永远是电机端位置光栅尺接了也白接。提示全闭环调试前先用松下Panaterm软件确认驱动器当前是半闭环还是全闭环状态不要直接上TwinCAT3盲调。2. 松下A6BF全闭环参数到底改哪几个松下A6BF的参数体系分两大类一类是功能选择参数Pr0.xx一类是增益与滤波参数Pr1.xx~Pr3.xx。全闭环配置的核心改动集中在Pr0.xx和Pr5.xx这两组下面这张表是我实际调试后整理出来的关键参数清单。参数号名称半闭环默认值全闭环设置值说明Pr0.01控制模式0位置控制0全闭环仍在位置模式下Pr0.02全闭环切换0半闭环1全闭环核心开关Pr0.03实时自动增益11建议保持开启Pr0.08电机一圈脉冲数1000010000与光栅尺无关Pr5.01第二编码器分频—根据光栅尺光栅尺信号分频比Pr5.02第二编码器方向00或1方向反了就改这个Pr5.03第二编码器原点—根据实际光栅尺Z相偏移Pr5.04全闭环位置偏差—根据计算超差报警阈值这里重点说三个最容易出问题的参数。Pr0.02是全闭环的总开关。设成1之后驱动器内部的位置环反馈源就从电机编码器切换到了第二编码器光栅尺。但注意这个参数改完之后必须断电重启才生效松下A6BF不会热切换。我第一次改完没重启以为没生效又改回去来回折腾了好几次。Pr5.02是光栅尺方向。光栅尺的A/B相如果和电机编码器方向相反全闭环一上电就会飞车或者报偏差过大。判断方法很简单手动盘车看Panaterm里电机编码器计数和光栅尺计数是不是同增同减。如果一个增一个减就把Pr5.02从0改成1。Pr5.04是全闭环位置偏差报警阈值。这个值设太小正常加减速都会报警设太大真出问题了又不报。我的经验是先设一个比较大的值比如电机一圈脉冲数的10%跑起来之后再根据实际跟随误差慢慢收紧。2.1 光栅尺分辨率与电子齿轮比的匹配计算这是全闭环里最容易算错的地方。松下A6BF的电子齿轮比Pr0.08电机一圈脉冲数和Pr0.09/Pr0.10电子齿轮比分子分母决定了上位机发多少个脉冲电机转一圈。但全闭环之后位置反馈变成了光栅尺光栅尺的分辨率和电机一圈脉冲数之间必须建立一个明确的对应关系否则TwinCAT3里显示的位置和实际位置对不上。假设你用的光栅尺分辨率是0.1μm也就是每毫米10000个计数丝杠导程是10mm电机和丝杠之间是直连减速比1:1。那么丝杠转一圈负载移动10mm光栅尺对应计数 10mm × 10000计数/mm 100000计数电机转一圈直连 丝杠转一圈 100000计数如果电机一圈脉冲数Pr0.08设的是10000那么电子齿轮比就是电子齿轮比 光栅尺一圈计数 / 电机一圈脉冲数 100000 / 10000 10 / 1也就是Pr0.09 10Pr0.10 1。但这里有个坑松下A6BF的电子齿轮比范围是1/1000到1000/110/1完全没问题。可如果你用的是高分辨率光栅尺比如0.01μm一圈计数可能到1000000电子齿轮比就变成100/1虽然还在范围内但TwinCAT3那边的NC轴缩放因子要同步改否则位置显示会差100倍。我建议的做法是先在Panaterm里把电子齿轮比设好让电机一圈脉冲数×电子齿轮比 光栅尺一圈计数然后再去TwinCAT3里配置NC轴的Scaling Factor。TwinCAT3的NC轴缩放因子计算方式是Scaling Factor 光栅尺一圈计数 / 电机一圈脉冲数 / 电子齿轮比如果前面都设对了这个值应该是1。如果不是1说明驱动器参数和TwinCAT3配置没对齐。2.2 光栅尺原点与TwinCAT3回零的配合全闭环之后回零方式也要跟着变。半闭环的时候回零通常靠电机编码器的Z相或者驱动器内部的原点开关。全闭环之后位置反馈是光栅尺回零必须用光栅尺的Z相否则回零之后位置会漂。松下A6BF支持第二编码器Z相回零但需要在Pr5.03里设置Z相偏移。TwinCAT3这边则要把NC轴的回零模式改成Reference on external latch或者Reference on encoder zero pulse具体用哪个取决于你的光栅尺有没有Z相输出。我的做法是先用Panaterm手动回零一次记录下光栅尺Z相出现时电机的位置值把这个值填到Pr5.03里。然后在TwinCAT3里把回零模式设成Encoder Zero Pulse回零速度设成额定速度的10%左右太快了容易冲过Z相。注意光栅尺的Z相和电机编码器的Z相不是一回事千万不要混用。全闭环回零必须用光栅尺Z相。3. TwinCAT3这边NC轴配置的隐藏细节驱动器参数改完只是第一步TwinCAT3这边的NC轴配置才是真正决定全闭环能不能跑起来的关键。很多人驱动器参数都对但TwinCAT3里轴就是不动或者一动就报错问题基本都出在NC轴的几个隐藏配置项上。3.1 编码器反馈源到底选哪个TwinCAT3的NC轴配置里Encoder选项卡下有一个Feedback Source默认是Motor Encoder。全闭环必须改成Load Encoder或者Second Encoder具体名称取决于你的EtherCAT从站描述文件ESI版本。松下A6BF的ESI文件里第二编码器的PDO映射通常是0x2601或者0x2602具体要看你的驱动器固件版本。我遇到过ESI文件版本太老第二编码器PDO根本没映射出来的情况这时候要么更新ESI文件要么手动在Process Data里把第二编码器的实际位置PDO加进去。手动加PDO的步骤在TwinCAT3的I/O树下找到松下A6BF从站双击进入Process Data选项卡在Sync Manager里找到SM3通常是输入同步管理器勾选Second Encoder Position Actual Value索引通常是0x2601:01重新激活配置这一步做完之后NC轴的Feedback Source里才会出现第二编码器的选项。3.2 NC轴缩放因子与位置显示对齐TwinCAT3的NC轴位置显示单位是mm或者度而驱动器反馈回来的是count。中间的换算靠的就是Scaling Factor。全闭环之后这个缩放因子必须基于光栅尺的计数来算而不是电机编码器。假设光栅尺分辨率0.1μm丝杠导程10mm直连那么光栅尺一圈计数 100000负载移动一圈 10mm所以每mm对应计数 100000 / 10 10000 count/mmScaling Factor 1 / 10000 0.0001 mm/count在TwinCAT3的NC轴Scaling选项卡里Scaling Factor填0.0001Unit选mm。这样NC轴显示的位置就是实际负载位置和光栅尺读数一致。如果这里填错了比如填成了电机编码器的缩放因子NC轴显示的位置会和实际位置差一个减速比或者丝杠导程的倍数。我见过有人填错之后NC轴显示走了10mm实际负载只动了1mm找了半天以为是机械问题其实是缩放因子算错了。3.3 位置偏差监控与报警阈值TwinCAT3的NC轴有一个Position Lag Monitoring功能可以监控指令位置和实际位置的偏差。全闭环之后这个偏差反映的是真实的机械跟随误差包括背隙、弹性变形、摩擦等。默认的偏差阈值通常设得比较小全闭环一跑就报警。我的建议是先设一个比较大的值比如1mm让轴能跑起来观察实际跟随误差的最大值把阈值设成最大跟随误差的1.5倍左右在TwinCAT3里这个阈值在NC轴的Monitoring选项卡下叫Position Lag Monitoring单位是mm。同时驱动器的Pr5.04也要设一个合理的值两个阈值要配合使用TwinCAT3的阈值通常比驱动器的稍大一点这样先由TwinCAT3报警给操作员一个缓冲。4. 调试过程中最容易被忽略的五个坑全闭环调试这件事参数表网上一搜一大把但真正让你卡住的往往不是参数本身而是一些没人告诉你的细节。下面这五个坑是我和身边同行实际踩过的每一个都值得单独拿出来说。4.1 光栅尺信号干扰导致位置跳变全闭环最怕的就是光栅尺信号被干扰。光栅尺的输出通常是差分信号RS422但如果屏蔽线没接好或者走线离伺服动力线太近位置反馈就会偶尔跳变。表现是轴停下来的时候位置显示正常一动起来位置就乱跳或者偶尔报偏差过大。解决办法光栅尺信号线必须用双绞屏蔽线屏蔽层单端接地接驱动器侧信号线远离伺服动力线至少保持20cm以上距离如果光栅尺是TTL输出考虑加一个信号转换器转成差分在驱动器侧加磁环抑制高频干扰我遇到过一次光栅尺信号线和伺服动力线捆在一起走线结果电机一加速光栅尺就丢计数。分开走线之后问题立刻消失。4.2 全闭环切换后增益需要重新整定半闭环的时候驱动器内部的位置环增益、速度环增益、滤波参数都是针对电机编码器反馈整定的。切到全闭环之后反馈源变了机械环节的惯量比、共振频率都变了原来的增益参数很可能不适用。表现是全闭环之后轴一动就啸叫或者定位时振荡。这时候不能直接沿用半闭环的增益必须重新整定。我的做法是先把增益降到半闭环时的50%用Panaterm的实时自动增益功能让驱动器自己辨识手动微调速度环增益和位置环增益直到定位时没有超调如果机械共振明显开启陷波滤波器松下A6BF的实时自动增益Pr0.031在全闭环下依然有效但辨识时间会比半闭环长因为光栅尺反馈的噪声比电机编码器大。4.3 TwinCAT3的NC轴任务周期与驱动器同步TwinCAT3的NC轴任务周期NC Task Cycle Time必须和EtherCAT的分布式时钟DC同步否则位置指令和反馈会有相位差全闭环下这个相位差会被放大。默认的NC任务周期是1msEtherCAT的DC周期也是1ms。但如果你的TwinCAT3工程里NC任务周期设成了2ms而DC还是1ms就会出现指令和反馈不同步的问题。检查方法在TwinCAT3的System→Real-Time里看NC任务的实际周期在I/O→EtherCAT→DC里看分布式时钟周期两者必须一致或者NC任务周期是DC周期的整数倍我建议全闭环下NC任务周期不要超过1ms周期太长会导致跟随误差变大尤其是高速运动时。4.4 光栅尺安装精度直接影响全闭环效果全闭环的效果很大程度上取决于光栅尺的安装精度。如果光栅尺和导轨不平行或者读数头和尺身之间的间隙不均匀反馈信号就会周期性波动表现为位置误差随负载位置变化。安装要求光栅尺尺身和导轨的平行度误差小于0.1mm/1000mm读数头和尺身的间隙按厂家要求通常是0.1~0.15mm读数头安装支架要有足够刚性不能有振动我见过一台设备光栅尺安装时没打表平行度差了0.5mm结果全闭环跑起来位置误差随行程周期性变化最大到了0.05mm。重新打表安装之后误差降到0.005mm以内。4.5 全闭环与半闭环的切换逻辑有些设备需要全闭环和半闭环之间切换比如调试阶段用半闭环正常生产用全闭环。这时候要注意切换必须在轴停止时进行而且切换后要重新回零。松下A6BF的Pr0.02不支持运行时切换必须断电重启。TwinCAT3这边也要在轴停止后重新激活配置。如果带电切换驱动器可能报错甚至损坏第二编码器接口。我的做法是在TwinCAT3的PLC程序里加一个切换逻辑切换前先让轴停止、下使能然后通过ADS写驱动器参数再重启驱动器。整个过程大概需要10秒左右不能频繁切换。5. 光栅尺参数计算的完整实例前面讲了原理和坑这一节用一个完整的实例把光栅尺参数计算从头到尾走一遍。假设你的设备参数如下松下A6BF伺服驱动器配松下MSMF系列电机电机编码器分辨率23bit8388608脉冲/圈光栅尺海德汉LC185分辨率0.1μm丝杠导程20mm减速比2:1电机转2圈丝杠转1圈TwinCAT3 NC轴单位mm5.1 第一步计算光栅尺一圈计数光栅尺分辨率0.1μm 0.0001mm每mm对应10000个计数。丝杠转一圈负载移动20mm光栅尺计数 20 × 10000 200000计数。电机转2圈丝杠转1圈所以电机转一圈对应光栅尺计数 200000 / 2 100000计数。5.2 第二步设置驱动器电子齿轮比松下A6BF的Pr0.08是电机一圈脉冲数通常设10000。电子齿轮比 光栅尺一圈计数 / 电机一圈脉冲数 100000 / 10000 10/1。所以Pr0.09 10Pr0.10 1。但注意松下A6BF的电子齿轮比是分子/分母的形式Pr0.09是分子Pr0.10是分母。10/1完全在范围内。5.3 第三步计算TwinCAT3 NC轴缩放因子TwinCAT3 NC轴的缩放因子 负载移动1mm对应的光栅尺计数 10000 count/mm。所以Scaling Factor 1 / 10000 0.0001 mm/count。在TwinCAT3的NC轴Scaling选项卡里Scaling Factor0.0001UnitmmPosition Bias0除非有偏移5.4 第四步设置位置偏差报警阈值假设你的机械系统背隙是0.01mm弹性变形在最大扭矩下是0.02mm那么最大跟随误差大概是0.03mm。TwinCAT3的Position Lag Monitoring设成0.05mm1.5倍驱动器的Pr5.04设成0.04mm对应的计数 0.04 × 10000 400计数这样正常运行时不会报警真出问题了先由TwinCAT3报警。5.5 第五步验证与微调配置完成后手动盘车验证方向然后低速跑一遍全行程观察以下内容NC轴显示位置和光栅尺读数是否一致跟随误差是否在阈值内有没有异常噪声或振荡回零是否准确如果方向反了改Pr5.02如果位置显示不对检查缩放因子如果振荡降增益。6. 几个实际调试中的经验补充全闭环调试这件事参数和步骤都是死的但现场情况千变万化。最后分享几个我在实际项目中总结的经验不一定适用于所有场景但至少能帮你少走点弯路。第一先半闭环跑通再切全闭环。很多人一上来就全闭环结果轴不动分不清是驱动器问题、TwinCAT3问题还是光栅尺问题。正确的顺序是先半闭环把轴跑起来确认TwinCAT3配置、EtherCAT通信、电机方向都没问题再切全闭环。这样出问题的时候变量少一个排查起来快很多。第二Panaterm和TwinCAT3要配合看。Panaterm能看到驱动器内部的位置偏差、光栅尺计数、电机编码器计数TwinCAT3能看到NC轴的指令位置和实际位置。两边对照着看很容易定位问题出在哪个环节。比如Panaterm里光栅尺计数正常但TwinCAT3里位置不动那就是PDO映射或者缩放因子的问题。第三光栅尺的Z相不是必须的。有些光栅尺没有Z相输出这时候回零可以用驱动器内部的原点开关或者用TwinCAT3的Touch Probe功能。不一定非要光栅尺Z相但如果有尽量用回零精度会高很多。第四全闭环的定位精度不等于光栅尺精度。光栅尺分辨率0.1μm不代表定位精度就是0.1μm。实际定位精度受机械背隙、弹性变形、热伸长、伺服刚性等多方面影响。全闭环能消除的是电机到负载之间的传动误差但消除不了机械本身的变形。我见过有人以为上了全闭环就能达到光栅尺精度结果实测下来还是0.01mm级别因为机械背隙就有0.01mm。第五调试记录要留好。全闭环调试涉及驱动器参数、TwinCAT3配置、光栅尺安装参数任何一个改了都要记录。我习惯用Excel做一个参数对照表每次调试完把最终参数存一份下次换设备或者出问题了直接对照省得重新算。提示松下A6BF的Pr5.xx参数在断电后不会丢失但TwinCAT3的NC轴配置是存在工程文件里的换电脑或者重装系统之前记得备份工程。全闭环这件事说难不难说简单也不简单。核心就是三件事驱动器参数设对、TwinCAT3配置对齐、光栅尺信号干净。这三件事都做到了全闭环跑起来比半闭环还稳因为位置反馈直接来自负载中间环节的误差都被闭环修正了。但任何一件事没做到位就会各种报警、振荡、位置漂移让人怀疑人生。希望这篇内容能帮你把这三件事都做对少走点我当年走过的弯路。
返回列表