1. 项目缘起与整体方案设计
1.1 为什么选TwinCAT3加SV660N这套组合
做运动控制这行的朋友大概都有体会,选一套控制器和驱动器的组合,往往比写代码本身更让人头疼。我这次要聊的,是一套在中小型自动化设备里非常典型的搭配:倍福TwinCAT3做EtherCAT主站,汇川SV660N系列伺服驱动器带伺服电机做从站,实现两根轴的同步联动控制。这套方案在包装机械、点胶设备、小型龙门平台里出现频率极高,原因很直接——TwinCAT3的软PLC授权成本可控,SV660N的EtherCAT总线版本性价比又比不少进口品牌友好,两者凑一起,性能能打,钱包不疼。
先把这套东西是什么、能干什么说清楚。TwinCAT3是倍福(Beckhoff)推出的基于PC的控制软件,它把一台普通工业PC或者嵌入式控制器变成实时PLC加运动控制器,支持IEC 61131-3标准的编程语言,同时原生支持EtherCAT总线。SV660N是汇川技术的伺服驱动器,带“N”后缀的就是EtherCAT总线型,支持CoE(CANopen over EtherCAT)协议,能跑CSP、CSV、CST这些标准伺服模式。所谓双轴联动,就是让两个伺服轴按照一定的位置关系协同运动,比如XY平台的直线插补、龙门结构的双驱同步、飞剪的追剪动作,都属于这个范畴。
适合谁来参考这篇内容?如果你正在做设备电控方案选型,或者手上已经有一台带TwinCAT3的控制器和几台SV660N,想把它跑起来做双轴同步,那这篇就是写给你的。哪怕你之前只玩过脉冲型伺服,没碰过EtherCAT,跟着思路走也能理清楚。我会把配置逻辑、参数计算、实操步骤和踩过的坑都摊开讲,尽量让你少走弯路。
1.2 双轴联动的三种典型架构与选型逻辑
在动手之前,得先想清楚你的双轴到底要什么样的“联动”。我见过不少人一上来就闷头配参数,结果发现架构选错了,返工重来。常见的双轴联动架构大致分三类,选哪种取决于机械结构和工艺要求。
第一类是主从跟随(Master-Slave Gearing),一根轴做主轴,另一根轴按电子齿轮比跟随。龙门结构的双驱同步就是典型,两侧各一台伺服,机械上刚性连接,必须严格同步,否则会憋劲、报警甚至损坏丝杠。这种架构下,从轴的位置指令直接由主轴位置乘以齿轮比生成,同步精度取决于总线周期和驱动器内部跟随误差。
第二类是插补联动(Interpolation),两根轴各自独立,但由控制器统一规划轨迹,做直线或圆弧插补。XY平台画圆、点胶走异形轨迹都属于这类。这种架构对控制器的运动规划能力要求高,TwinCAT3的NC(Numerical Control)轴功能就是干这个的,两轴在NC任务里做插补运算,再通过EtherCAT把位置指令分发给两个从站。
第三类是凸轮耦合(Cam Coupling),从轴位置是主轴位置的任意函数关系,飞剪、追剪、旋切这些工艺用得多。TwinCAT3支持电子凸轮表,可以导入CAM曲线。
我这次的项目是龙门双驱同步,所以走的是第一类主从跟随架构。选它的理由很实在:机械是刚性连接,两轴必须位置一致,用齿轮耦合最直接,控制器负担也小。如果换成插补架构,反而要额外处理两轴的机械耦合约束,得不偿失。这里给个选型建议表,方便你对号入座。
| 联动架构 | 适用场景 | TwinCAT3实现方式 | 对总线周期要求 |
|---|---|---|---|
| 主从跟随 | 龙门双驱、多轴同步输送 | 电子齿轮MC_GearIn | 1ms以内较稳 |
| 插补联动 | XY平台、轨迹加工 | NC轴+插补组 | 1ms,越高越好 |
| 凸轮耦合 | 飞剪、追剪、旋切 | 电子凸轮MC_CamIn | 500us到1ms |
提示:架构选型一定要在机械方案确定后就定下来,别等电气配完了再改,那时候接线、参数、程序全得推倒重来。
1.3 EtherCAT总线在这套方案里的角色
很多人对EtherCAT的理解停留在“一种很快的现场总线”,但它真正的价值在于**分布式时钟(DC,Distributed 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会提示你从站的ESI(EtherCAT 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的CoE(CANopen 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)、目标速度(60FFh,CSP模式下可选)、模式选择(6060h)。TxPDO是从站发给主站的,至少要有状态字(6041h)、实际位置(6064h)、实际速度(606Ch)、实际扭矩(6077h)。映射的时候注意数据长度,位置一般是32位,速度32位,控制字和状态字16位。
注意:PDO映射改完之后,一定要重新激活配置(Activate Configuration),TwinCAT3会重新计算总线数据帧,不激活的话改动不生效。
还有一个容易忽略的参数是位置单位换算。SV660N的默认位置单位是编码器脉冲,比如17位编码器一圈是131072个脉冲。但TwinCAT3的NC轴一般用毫米或度做单位,中间需要一个换算系数。这个系数在TwinCAT3的轴配置里设,叫Scaling Factor。算错了会导致轴走的位置和指令对不上,比如指令走100mm,实际走了50mm或者200mm。换算逻辑是:电机一圈对应的机械位移除以编码器一圈的脉冲数,得到每个脉冲对应的位移,再取倒数就是Scaling Factor。
3. TwinCAT3双轴联动程序实现
3.1 NC轴配置与Scaling Factor计算
从站配好之后,接下来是在TwinCAT3里建NC轴。在Motion选项卡下,右键NC-Task,Add 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设成mm,Scaling 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.03mm,500us周期下约0.015mm,250us周期下约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的库函数也够用,慢慢啃就行。