ARTICLE DETAIL

资讯详情

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

TwinCAT3与SV660N实现EtherCAT双轴联动控制实战指南

TwinCAT3与SV660N实现EtherCAT双轴联动控制实战指南 1. 项目缘起与整体方案设计1.1 为什么选TwinCAT3加SV660N这套组合做运动控制这行的朋友大概都有体会选一套控制器和驱动器的组合往往比写代码本身更让人头疼。我这次要聊的是一套在中小型自动化设备里非常典型的搭配倍福TwinCAT3做EtherCAT主站汇川SV660N系列伺服驱动器带伺服电机做从站实现两根轴的同步联动控制。这套方案在包装机械、点胶设备、小型龙门平台里出现频率极高原因很直接——TwinCAT3的软PLC授权成本可控SV660N的EtherCAT总线版本性价比又比不少进口品牌友好两者凑一起性能能打钱包不疼。先把这套东西是什么、能干什么说清楚。TwinCAT3是倍福Beckhoff推出的基于PC的控制软件它把一台普通工业PC或者嵌入式控制器变成实时PLC加运动控制器支持IEC 61131-3标准的编程语言同时原生支持EtherCAT总线。SV660N是汇川技术的伺服驱动器带“N”后缀的就是EtherCAT总线型支持CoECANopen over EtherCAT协议能跑CSP、CSV、CST这些标准伺服模式。所谓双轴联动就是让两个伺服轴按照一定的位置关系协同运动比如XY平台的直线插补、龙门结构的双驱同步、飞剪的追剪动作都属于这个范畴。适合谁来参考这篇内容如果你正在做设备电控方案选型或者手上已经有一台带TwinCAT3的控制器和几台SV660N想把它跑起来做双轴同步那这篇就是写给你的。哪怕你之前只玩过脉冲型伺服没碰过EtherCAT跟着思路走也能理清楚。我会把配置逻辑、参数计算、实操步骤和踩过的坑都摊开讲尽量让你少走弯路。1.2 双轴联动的三种典型架构与选型逻辑在动手之前得先想清楚你的双轴到底要什么样的“联动”。我见过不少人一上来就闷头配参数结果发现架构选错了返工重来。常见的双轴联动架构大致分三类选哪种取决于机械结构和工艺要求。第一类是主从跟随Master-Slave Gearing一根轴做主轴另一根轴按电子齿轮比跟随。龙门结构的双驱同步就是典型两侧各一台伺服机械上刚性连接必须严格同步否则会憋劲、报警甚至损坏丝杠。这种架构下从轴的位置指令直接由主轴位置乘以齿轮比生成同步精度取决于总线周期和驱动器内部跟随误差。第二类是插补联动Interpolation两根轴各自独立但由控制器统一规划轨迹做直线或圆弧插补。XY平台画圆、点胶走异形轨迹都属于这类。这种架构对控制器的运动规划能力要求高TwinCAT3的NCNumerical Control轴功能就是干这个的两轴在NC任务里做插补运算再通过EtherCAT把位置指令分发给两个从站。第三类是凸轮耦合Cam Coupling从轴位置是主轴位置的任意函数关系飞剪、追剪、旋切这些工艺用得多。TwinCAT3支持电子凸轮表可以导入CAM曲线。我这次的项目是龙门双驱同步所以走的是第一类主从跟随架构。选它的理由很实在机械是刚性连接两轴必须位置一致用齿轮耦合最直接控制器负担也小。如果换成插补架构反而要额外处理两轴的机械耦合约束得不偿失。这里给个选型建议表方便你对号入座。联动架构适用场景TwinCAT3实现方式对总线周期要求主从跟随龙门双驱、多轴同步输送电子齿轮MC_GearIn1ms以内较稳插补联动XY平台、轨迹加工NC轴插补组1ms越高越好凸轮耦合飞剪、追剪、旋切电子凸轮MC_CamIn500us到1ms提示架构选型一定要在机械方案确定后就定下来别等电气配完了再改那时候接线、参数、程序全得推倒重来。1.3 EtherCAT总线在这套方案里的角色很多人对EtherCAT的理解停留在“一种很快的现场总线”但它真正的价值在于**分布式时钟DCDistributed Clocks**机制。双轴联动最怕的就是两个轴的时间基准不一致一个轴以为自己在t时刻到了位置A另一个轴以为t时刻到了位置B同步就崩了。EtherCAT的DC机制让所有从站的时钟跟主站对齐抖动可以压到微秒级这是脉冲控制根本做不到的。在这套方案里TwinCAT3作为EtherCAT主站SV660N作为从站。主站每个总线周期发一次过程数据里面包含给每个从站的位置指令、控制字从站回传实际位置、状态字、扭矩等。SV660N支持CSP模式周期同步位置模式意思是主站每个周期给它一个目标位置驱动器内部做位置环和速度环电机跟着走。这个模式最适合双轴联动因为位置指令由主站统一规划两轴的协调性由主站保证。总线周期设多少合适这是新手最容易拍脑袋的地方。周期越短同步精度越高但对控制器性能和总线负载要求也越高。我实测下来龙门双驱用1ms周期配合SV660N的默认参数同步误差能控制在几个脉冲以内对大多数场合够用了。如果做高速飞剪建议压到500us甚至250us但这时候要算一下总线带宽和CPU占用别硬上。2. 硬件接线与从站配置细节2.1 硬件清单与接线要点先把硬件摆清楚。这套方案需要的核心硬件包括一台装了TwinCAT3的工业PC或嵌入式控制器我用的是带Intel网卡的工控机网卡必须是TwinCAT3支持的型号这点后面细说、两台汇川SV660N伺服驱动器、两台配套伺服电机、EtherCAT线缆若干、24V开关电源。如果电机带绝对值编码器还要注意电池盒的接线。接线这块EtherCAT的物理层是标准的百兆以太网用RJ45网线就行但强烈建议用带屏蔽的工业级网线普通办公网线在电磁环境复杂的机柜里容易丢包。接线顺序是主站网口出来进第一台SV660N的IN口从第一台的OUT口出来进第二台的IN口第二台的OUT口可以空着或者接下一个从站。这就是典型的菊花链拓扑。SV660N的EtherCAT接口在驱动器正面标着ECAT IN和ECAT OUT别插错。IN口是从上一级来的OUT口是往下一级去的。我第一次接的时候把IN和OUT搞反了结果主站扫不到从站查了半天才发现。另外驱动器的24V控制电源和电机动力线要分开走线动力线最好用屏蔽线并且屏蔽层单端接地不然编码器反馈容易被干扰表现为位置偶尔跳变。绝对值编码器的电池盒接线也容易出问题。SV660N带绝对值编码器时电池盒一般接在编码器线缆的特定引脚上具体看汇川的接线手册。电池电压低了会报编码器电池报警这时候要么换电池要么在驱动器里清多圈数据重新使能。我建议在调试阶段就把电池盒接好别等装到设备上再补空间小的时候特别难操作。2.2 TwinCAT3扫描EtherCAT从站的完整流程硬件接好、上电之后打开TwinCAT3进入XAE开发环境。第一步是确认你的网卡被TwinCAT3识别为实时以太网适配器。在Solution Explorer里展开SYSTEM找到Real-Time看网卡列表里有没有你的EtherCAT网口。如果没有可能是网卡型号不支持或者驱动没装对。TwinCAT3对Intel的I210、I211这些网卡支持很好Realtek的很多型号不支持这是新手常踩的坑。确认网卡后右键Device选择Scan Devices。这时候TwinCAT3会扫描EtherCAT总线上挂的从站。正常情况下你会看到两个SV660N从站出现在列表里前面有个小图标。如果扫不到先检查网线、IN/OUT口、驱动器供电再看驱动器面板有没有显示EtherCAT通信状态。SV660N面板上如果有“ECAT”相关的指示灯绿灯常亮说明通信正常。扫到从站后TwinCAT3会提示你从站的ESIEtherCAT Slave Information文件是否已安装。SV660N的ESI文件一般随驱动器或者从汇川官网下载是个XML文件。把它放到TwinCAT3的EtherCAT配置目录下通常是\TwinCAT\3.1\Config\Io\EtherCAT然后重新扫描。ESI文件里定义了从站支持的对象字典、PDO映射、同步管理器配置没有它TwinCAT3没法正确配置从站。扫描完成后从站会出现在Device下面的Box列表里。双击每个Box能看到它的Slots和PDO配置。SV660N默认的PDO映射一般包含控制字、状态字、目标位置、实际位置、目标速度、实际速度、扭矩等。做双轴联动至少需要控制字、状态字、目标位置、实际位置这几个其他的按需勾选。PDO映射不是越多越好每个PDO都占总线带宽够用就行。2.3 SV660N的EtherCAT参数配置与PDO映射从站扫到之后真正决定能不能跑起来的是参数配置。SV660N的EtherCAT相关参数主要在对象字典里通过TwinCAT3的CoECANopen over EtherCAT在线配置界面可以读写。几个关键参数必须设对。首先是工作模式对应对象字典索引6060h。双轴联动用CSP模式值设为8。这个参数决定了驱动器怎么理解主站发来的指令。CSP模式下主站每个周期发目标位置驱动器内部做位置环。如果设成CSV周期同步速度值9主站发的是速度指令位置由驱动器积分得到同步精度会差一些。CST周期同步扭矩值10一般不用在位置联动场合。其次是同步模式对应索引1C32h和1C33h。SV660N支持DC同步建议把同步模式设为DC模式这样从站时钟跟主站对齐双轴同步才有保障。如果设成自由运行模式两个从站的采样时刻可能错开同步误差会明显变大。然后是PDO映射。在TwinCAT3的Box配置里找到Process Data选项卡可以看到RxPDO和TxPDO。RxPDO是主站发给从站的数据至少要有控制字6040h、目标位置607Ah、目标速度60FFhCSP模式下可选、模式选择6060h。TxPDO是从站发给主站的至少要有状态字6041h、实际位置6064h、实际速度606Ch、实际扭矩6077h。映射的时候注意数据长度位置一般是32位速度32位控制字和状态字16位。注意PDO映射改完之后一定要重新激活配置Activate ConfigurationTwinCAT3会重新计算总线数据帧不激活的话改动不生效。还有一个容易忽略的参数是位置单位换算。SV660N的默认位置单位是编码器脉冲比如17位编码器一圈是131072个脉冲。但TwinCAT3的NC轴一般用毫米或度做单位中间需要一个换算系数。这个系数在TwinCAT3的轴配置里设叫Scaling Factor。算错了会导致轴走的位置和指令对不上比如指令走100mm实际走了50mm或者200mm。换算逻辑是电机一圈对应的机械位移除以编码器一圈的脉冲数得到每个脉冲对应的位移再取倒数就是Scaling Factor。3. TwinCAT3双轴联动程序实现3.1 NC轴配置与Scaling Factor计算从站配好之后接下来是在TwinCAT3里建NC轴。在Motion选项卡下右键NC-TaskAdd New Axis建两根轴分别对应两个SV660N从站。每根轴要绑定到对应的从站Box在Axis的Settings里把Encoder和Drive都指向那个Box的Process Data。轴建好后第一件事是配Scaling Factor。这个参数决定了NC轴的位置单位。假设你的机械是丝杠传动丝杠导程10mm电机转一圈丝杠走10mm编码器是17位一圈131072脉冲。那么每个脉冲对应的位移是10mm除以131072约等于0.0000763mm。Scaling Factor就是脉冲数除以位移即131072除以10等于13107.2 pulses/mm。在TwinCAT3的轴配置里Position Unit设成mmScaling Factor填13107.2。如果是旋转轴比如转台一圈360度编码器一圈131072脉冲那Scaling Factor就是131072除以360约等于364.09 pulses/度。这个计算不难但一定要算对算错了后面所有位置都是错的。我建议在配置完之后手动点动一下轴让电机转一圈看NC轴显示的位置是不是等于丝杠导程或者360度验证一下换算对不对。轴的速度限制和加速度限制也要设。速度限制根据机械能承受的最大速度来一般设成额定速度的80%左右留余量。加速度限制要考虑机械惯量和电机扭矩设太大电机会过流报警设太小节拍上不去。我一般先设一个保守值跑起来之后再逐步往上调观察电机电流和跟随误差。3.2 电子齿轮耦合的PLC程序编写NC轴配好就可以写联动程序了。龙门双驱用电子齿轮耦合TwinCAT3提供了MC_GearIn功能块。程序逻辑是主轴Master和从轴Slave都使能然后调用MC_GearIn把从轴按齿轮比耦合到主轴。齿轮比由主轴和从轴的机械关系决定龙门双驱一般是一比一即RatioNumerator和RatioDenominator都设1。程序用ST语言写大致结构是这样先声明两个轴变量类型是AXIS_REF分别绑定到NC轴。然后声明MC_Power、MC_GearIn这些功能块实例。上电后先给两个轴使能等两个轴都使能成功Status为TRUE再触发MC_GearIn。MC_GearIn的Master和Slave分别填两个轴RatioNumerator和RatioDenominator填齿轮比Execute给一个上升沿触发。PROGRAM MAIN VAR AxisMaster : AXIS_REF; AxisSlave : AXIS_REF; PowerMaster : MC_Power; PowerSlave : MC_Power; GearIn : MC_GearIn; bEnable : BOOL : TRUE; bGearStart : BOOL; bGearDone : BOOL; END_VAR PowerMaster(Axis:AxisMaster, Enable:bEnable, bRegulatorOn:TRUE, bDriveStart:TRUE); PowerSlave(Axis:AxisSlave, Enable:bEnable, bRegulatorOn:TRUE, bDriveStart:TRUE); IF PowerMaster.Status AND PowerSlave.Status THEN bGearStart : TRUE; END_IF GearIn(Master:AxisMaster, Slave:AxisSlave, Execute:bGearStart, RatioNumerator:1, RatioDenominator:1, Acceleration:1000, Deceleration:1000, Jerk:0); bGearDone : GearIn.InGear;这段程序里Acceleration和Deceleration是耦合过程中的加减速度单位是用户单位每秒平方。Jerk是加加速度设0表示不做S曲线规划。耦合建立后主轴动从轴就跟着动位置关系由齿轮比锁定。提示MC_GearIn触发前两个轴必须都已经使能并且没有错误。如果从轴有跟随误差报警耦合会失败。建议在耦合前先复位两个轴确保状态干净。3.3 双轴同步误差的监控与补偿耦合建立不代表就万事大吉了实际运行中两轴之间会有跟随误差。TwinCAT3里可以读每个轴的实际位置和指令位置两者之差就是跟随误差。龙门双驱最怕的是两轴跟随误差方向相反一个超前一个滞后机械上就会憋劲。所以除了看单轴的跟随误差还要看两轴的同步误差即主轴实际位置减从轴实际位置考虑齿轮比之后。监控同步误差的方法是在PLC里周期性地读两个轴的实际位置做差然后跟一个阈值比较。超过阈值就报警停机。阈值设多少取决于机械精度要求。一般龙门双驱同步误差控制在0.05mm以内比较安全高精度场合要压到0.01mm。这个值跟总线周期、驱动器增益、机械刚性都有关系需要现场调。如果同步误差偏大可以从几个方向调。一是提高驱动器位置环增益让电机跟随更快但增益太高会振荡。二是缩短总线周期让指令更新更快。三是检查机械连接有没有间隙或者松动。四是看两个驱动器的参数是否一致有时候一台调好了另一台没调同步自然差。我遇到过一台驱动器增益比另一台低不少结果从轴总是滞后把两台参数对齐后就好了。TwinCAT3还支持位置补偿功能可以在从轴的位置指令上叠加一个补偿量用来修正机械安装误差或者丝杠螺距误差。补偿量可以是一个常数也可以是一条曲线。龙门双驱如果机械装配有微小偏差两轴绝对位置对不齐可以用补偿把偏差抹掉。但补偿是治标机械问题还是得从机械上解决。4. 调试排障与实战经验4.1 常见报警与排查速查表调试阶段报警是家常便饭关键是要能快速定位。我把这套方案里最常遇到的几个问题整理成表方便你对照排查。现象可能原因排查方向解决方法主站扫不到从站网线/接口/供电检查IN/OUT口、网线、24V换线、对调IN/OUT、确认供电从站报通信超时总线周期太短/网卡不支持看CPU占用、网卡型号放长周期、换支持网卡轴使能报错驱动器报警/参数不对看驱动器面板报警码清报警、核对6060h模式位置走不准Scaling Factor错点动一圈看位置重算换算系数双轴同步误差大增益不一致/机械间隙对比两轴参数、查机械对齐参数、紧固机械电机过流报警加速度太大/负载重看电流曲线降加速度、查机械卡滞编码器电池报警电池电压低测电池电压换电池、清多圈数据这张表里的每一条我基本都亲身踩过。印象最深的是“从站报通信超时”当时总线周期设了250us结果CPU占用飙到80%多偶尔就超时。后来把周期放到1ms问题消失。所以周期不是越短越好要跟控制器性能匹配。4.2 总线周期与同步精度的取舍经验总线周期这个参数值得单独拿出来说。理论上周期越短主站刷新位置指令越快从站跟随越及时同步精度越高。但实际上周期受限于三个因素控制器CPU性能、EtherCAT总线带宽、驱动器的最小循环时间。SV660N支持的最小EtherCAT循环时间查手册是125us但那是理想情况。实际用的时候1ms是个比较稳妥的起点。我做过对比测试同一套龙门1ms周期下同步误差约0.03mm500us周期下约0.015mm250us周期下约0.01mm但CPU占用从15%涨到45%再涨到75%。如果你的控制器性能够强可以往短了压如果只是普通工控机1ms就挺好。还有一个细节是DC同步的偏移补偿。EtherCAT的DC机制允许设置一个偏移时间让从站的采样时刻相对主站有个固定延迟。这个偏移设得好可以补偿从站的处理延迟让同步更准。TwinCAT3里在从站的DC配置里可以调一般默认值就行特殊场合才需要微调。注意改总线周期或者DC参数后一定要重新激活配置并重启从站不然参数不生效。我吃过这个亏改完以为生效了结果跑起来还是老样子白折腾半天。4.3 从脉冲伺服转EtherCAT的思维转变如果你之前玩的是脉冲型伺服转到EtherCAT会有几个思维上的坎。脉冲控制是主站发脉冲驱动器数脉冲位置闭环在驱动器里主站其实不知道电机实际在哪。EtherCAT不一样主站每个周期都能拿到从站的实际位置位置闭环的规划在主站驱动器只是执行。这意味着主站要承担更多的运动规划责任程序逻辑要相应调整。另一个坎是参数配置的复杂度。脉冲伺服一般设几个拨码或者参数就能跑EtherCAT伺服要配PDO映射、同步模式、对象字典环节多得多。但换来的是更强的诊断能力和更灵活的联动功能。比如脉冲控制做双轴同步得靠主站发两路脉冲同步性受脉冲输出精度限制EtherCAT做双轴同步两轴在同一个总线周期里更新同步性由DC机制保证高下立判。我个人的体会是从脉冲转EtherCAT前期学习成本确实高但一旦跑通一套后面再做类似项目就快了。因为配置逻辑是相通的换个品牌的驱动器无非是ESI文件和对象字典索引不同整体框架不变。4.4 长时间运行稳定性验证设备调试完别急着交付得做长时间运行验证。双轴联动最怕的是跑几个小时之后同步误差慢慢变大或者偶尔丢一帧导致位置跳变。验证方法是让设备连续跑一个完整的工艺循环比如龙门来回走几千次同时用TwinCAT3的Scope功能记录两轴的实际位置和同步误差。Scope是TwinCAT3自带的示波器工具可以实时采集变量曲线。把两个轴的实际位置、指令位置、同步误差都加进去采样率设成跟总线周期一致。跑一段时间后看曲线如果同步误差稳定在一个范围内波动没有趋势性增大说明系统稳定。如果误差慢慢变大可能是驱动器温漂或者机械热变形得进一步查。我还遇到过一次偶发的同步报警跑几个小时才出一次很难复现。后来用Scope长时间记录发现是某个特定位置机械阻力突然增大导致从轴瞬间滞后。把那个位置的机械问题解决后报警就没了。所以长时间验证不只是看电气机械的隐患也会暴露出来。5. 项目扩展与后续优化方向5.1 从双轴到多轴的扩展思路双轴跑通之后扩展到三轴、四轴其实不难框架是一样的。每增加一个轴就在EtherCAT总线上加一个从站在TwinCAT3里加一根NC轴然后按需配置耦合关系。比如XY平台加一个Z轴做上下料Z轴可以独立控制也可以跟XY做插补。龙门双驱加一个横梁升降轴就是三轴系统。扩展时要注意总线负载。每增加一个从站过程数据量就增加总线周期可能得放长或者换性能更强的控制器。我一般会在扩展前算一下总线利用率TwinCAT3的实时监控里能看到。利用率超过70%就要警惕了留点余量给突发情况。多轴联动的耦合关系也更复杂。三轴插补、多轴凸轮、轴组同步这些TwinCAT3都支持但配置和调试的工作量成倍增加。建议先把两轴做扎实再逐步加轴别一上来就搞一大套出了问题不好定位。5.2 精度提升的几个实用手段如果双轴同步精度要求特别高除了前面说的缩短周期、调增益还有几个手段可以试。一是用前馈控制在位置指令上叠加速度和加速度前馈减少跟随误差。TwinCAT3的NC轴支持前馈配置调好了能明显改善动态跟随。二是用双编码器反馈电机端编码器做速度环负载端加一个光栅尺做位置环直接测负载实际位置消除传动间隙的影响。三是优化机械刚性有时候电气调到头不如把联轴器换成刚性更好的或者把丝杠预紧调好。前馈控制我试过效果确实有但参数得慢慢调。前馈给多了会过冲给少了没效果。一般先调速度前馈再调加速度前馈边调边看跟随误差曲线。双编码器反馈成本高一些但精度提升立竿见影高精度龙门值得上。5.3 这套方案的适用边界最后说说这套方案的边界免得你期望过高。TwinCAT3加SV660N做双轴联动适合中小型设备轴数不多、精度要求中高的场合。如果是几十个轴的大型产线或者微米级超高精度这套可能就不够看了得考虑更高端的控制器和驱动器。另外TwinCAT3的授权是按性能等级分的轴数多了授权成本也上去了选型时要算进去。SV660N本身是通用型伺服性价比高但在极高速或者极低速场合性能不如专用型号。比如飞剪这种高速追剪SV660N的带宽可能吃紧得选更高响应频率的驱动器。所以方案选型一定要结合具体工艺别一套方案打天下。我个人在实际操作中的体会是这套组合最大的价值在于“够用且好上手”。它不会让你在授权和硬件上花太多冤枉钱配置逻辑也清晰适合作为EtherCAT运动控制的入门和进阶平台。把双轴联动吃透再去看更复杂的系统心里就有底了。后续如果要做更复杂的凸轮或者插补TwinCAT3的库函数也够用慢慢啃就行。
返回列表