
1. 先搞清 Easy521 带 SV630N 这条链路的三件事汇川 Easy521 配 SV630N 跑 EtherCAT是这两年中小型设备改造里出现频率很高的一套组合。价格不算贵性能够用难点不在硬件本身而在配置链路——主机、软件、ESI 文件、PDO、分布式时钟、伺服参数、PLCopen 指令一环没对上轴就是不动。我在现场见过太多这样的情况程序写得漂漂亮亮扫描也能扫到从站一按使能伺服纹丝不动也没有报警人就在那干瞪眼。这篇内容写给正在用或者准备用 Easy521 带 SV630N 的同行。假设你手上有 PLC、有一台伺服、有 24V 电源和一根像样的网线但不确定从哪一步开始也假设你已经跑通过 Modbus 或者脉冲控制第一次接触 EtherCAT 总线。涉及的型号细节我会标出来参数号我会给但请记住一句话任何参数都以你手上那台设备对应的随机手册为准不同批次、不同固件版本的伺服参数组会有微调我踩过的坑不代表你也一定踩但概率不低。1.1 主站这边Easy521 的两个网口别插错Easy521 是汇川 Easy 系列里的中端机型编程平台是 InoProShop内核基于 CODESYS V3 那一套。机身上一般有两个 RJ45一个是编程/以太网口用来下载程序和走 Modbus TCP另一个是 EtherCAT 主站口专门跑总线。这两个口在物理上分得很清楚但新手最容易犯的错就是把总线线插到编程口上然后在软件里点扫描设备转半天什么也扫不到还以为是 ESI 没装。我一般的习惯是先给两个口贴标签。ECAT 口贴红色编程口贴蓝色。这不是多此一举几个人一起调机的时候谁插错了都不好意思说标签能省掉半小时的互相怀疑。还有一个容易忽略的点是固件版本。Easy521 主站能挂多少从站、单个从站的过程数据能有多长跟固件版本直接相关。我遇到过固件偏老的机器导入新版 SV630N 的 ESI 之后从站是识别出来了但 PDO 配置里多出来的几个对象直接报配置无效从站图标上挂个黄色感叹号。处理办法很简单去官网把 CPU 固件和 InoProShop 都升到同一代ESI 文件也用配套版本。软件版本低于 ESI 里声明的最低要求从站要么挂不上要么挂上了不干活。1.2 从站这边SV630N 后缀的 N 是总线型SV630N 里的 N指的是 EtherCAT 总线型带 P 后缀的是脉冲型。这两种在接线和配置上完全是两个思路买错型号的事我见过不止一次用脉冲型伺服去配 EtherCAT怎么扫都扫不出来最后翻包装箱才发现型号不对。所以拿到货第一件事看铭牌上的完整型号。SV630N 机身上通常有两个网口标着 CN6/CN7 或者 IN/OUT是内部交换机结构天生支持菊花链。标准接法是PLC 的 ECAT 口 → 第一台伺服的 IN第一台伺服的 OUT → 第二台伺服的 IN依次往下串最后一台的 OUT 空着最后一台 OUT 不用外接终端电阻内部已经做了匹配。这和早年那些需要外挂终端电阻的总线不是一回事别照搬老经验去加电阻加了反而可能把通信搞坏。1.3 硬接线不能省STO、限位和急停走总线之后很多信号确实可以走 PDO 软传但安全相关的信号我强烈建议保留硬线。STO 端子如果设备不使用安全转矩关断功能STO 输入端必须按手册要求短接或接入安全回路。不接就上电伺服常常直接报一个和 STO 相关的报警轴根本使能不上。这个报警提示往往不直观新手会以为是总线问题绕一大圈。正负限位 SI/NI可以走总线但建议硬线接一份。原因很简单网线断了、主站死机了硬限位还能兜住。急停回路一定走硬线切断伺服主电源或者触发 STO不要指望程序里写一句停止。控制电源和主电源要分开接。24V 给控制部分主电源按伺服功率走小功率的 SV630N 通常单相 220V 就够大一点的要按铭牌来。控制电和动力电分开走线这一点后面讲通信干扰的时候还会提到。2. ESI 文件与从站地址让 SV630N 出现在设备树里2.1 ESI 文件到底是什么为什么必须装ESIEtherCAT Slave Information本质就是一个 XML 文件里面描述了从站支持哪些 PDO、对象字典里有什么、支持哪种同步模式、厂家 ID 和产品码是多少。主站不认识一个从站多数时候不是通信坏了而是主站手里没有这份说明书。获取途径有两条汇川官网的下载中心按 SV630N 的完整型号和功率段找对应的 XML注意看版本号。InoProShop 安装目录里通常自带一份 EtherCAT 设备描述库版本可能偏旧。导入的操作路径大致是工具 → 设备库 → 安装 → 选择 XML 文件。装完一定要重启软件否则设备库里看不到新条目。有些版本的 InoProShop 还允许直接把 XML 丢到安装目录下的设备描述文件夹里重启后自动加载具体路径各版本不同找不准就用工具菜单里的安装功能最稳。2.2 扫描添加和手动添加第一次一定要用扫描添加从站有两种方式。一是 PLC 上电在线之后右键 EtherCAT 主站节点点扫描设备软件会读实际拓扑把挂在上面的从站按物理顺序列出来。二是离线手动添加从设备库里挑型号一个一个加。EtherCAT 的寻址依赖物理顺序顺序错了控制信号就发到别的轴上了。我见过一次真实事故三条轴程序里绑定顺序和实际顺序错开了一位操作工点1 号轴前进动的是 2 号轴直接撞了工装。所以第一次调试务必用扫描并且扫完之后在设备树里核对每一台的型号和站号。手动添加不是不能用它适合已经跑通、需要离线改程序的情况。但顺序必须和现场一致改完程序下载之前再扫一遍确认。2.3 站号设置固定地址比自动分配更省心SV630N 的 EtherCAT 从站地址通过参数设置一般在通信参数组H0d 组里具体参数号以手册为准常见的是设置从站地址的那一项。设成 0 表示由主站自动分配设成 1、2、3 就是固定地址。我一般建议固定站号。理由很直接扫描顺序虽然反映真实拓扑但只要有人动过网线顺序就变了而固定站号不会。程序里按站号区分轴比按顺序区分更抗折腾。改完站号要断电重启才生效这个细节容易忘改完发现没变化多半是没重启。设置方式优点缺点适用场景站号设 0自动分配省事不用逐台设顺序变了轴就错台数少、单人维护固定站号 1/2/3轴身份稳定抗网线变动需要逐台设置并重启多轴、多人维护按型号和位置双确认最稳调试慢一点首次投产3. PDO 映射与 DC 同步总线跑不起来的九成原因在这里3.1 默认 PDO 里到底有什么SV630N 默认的 RxPDO主站发给从站一般挂在 0x1600典型内容包括控制字 6040h、运行模式 6060h、目标位置 607Ah、目标速度 60FFh、目标转矩 6071h 等。TxPDO从站回给主站一般挂在 0x1A00包含状态字 6041h、模式显示 6061h、实际位置 6064h、实际速度 606Ch、实际转矩 6077h、错误码 603Fh 等。这一套默认配置做位置控制和速度控制基本够用。什么时候需要自己改 PDO当你要读电机温度、母线电压、DI 状态或者要写数字输出 60FE、读数字输入 60FD 的时候就得手动往里加条目。加之前要注意两点对象必须在从站对象字典里标记为可映射RxPDO 总长度不能超过主站支持的过程数据上限Easy521 这边在上限附近会有提示。对象名称方向用途6040h控制字主→从使能、启动、复位、清故障6041h状态字从→主判断当前状态Ready/Switch on/Op enabled6060h运行模式主→从8CSP9CSV10CST6回零6061h模式显示从→主确认模式是否被接受607Ah目标位置主→从CSP 位置指令6064h实际位置从→主位置反馈单位是用户单位606Ch实际速度从→主速度反馈603Fh错误码从→主读伺服当前故障码CSP/C SV/CST 对应的是周期同步位置、速度、转矩三种模式。做定位用 CSP8 这个值在 6060h 里写。3.2 DC 分布式时钟位置控制基本必须开DCDistributed Clocks的作用是让总线上所有从站共享同一个时间基准。对单个轴来说开不开 DC 好像都能动但多轴同步、插补、高速往复的场景下不开 DC 会出现周期抖动时间一长累积误差就出来了。设置路径EtherCAT 主站下的从站节点 → DC 选项卡 → 使能分布式时钟 → 设置 SYNC0 周期等于通信周期。通信周期怎么定我的经验是2 到 4 轴1ms 周期很稳。8 轴以上或者程序里算法比较重建议 2ms 起步。周期越短CPU 中断负载越高超出能力就会出现同步错误报警。提示通信周期、DC 的 SYNC0 周期、任务周期三者要对齐。三个数不一致是轴能动但偶尔抖一下这类玄学问题的常见根源。3.3 通信报警的排查顺序总线出问题别一上来就翻程序。按这个顺序走看灯。从站的 RUN/ERR 灯是什么状态主站口的 LINK/ACT 亮不亮。看扫描。InoProShop 在线后能不能扫到全部从站有没有感叹号。看诊断。主站诊断里看工作计数器和同步错误计数。最后看程序。现象可能原因处理方向从站图标黄色感叹号ESI 版本不匹配、PDO 配置无效换配套 ESI检查 PDO 长度偶发掉线网线未屏蔽、与动力线同槽、接头没做好换屏蔽线分开走线重做接头主站报同步错误DC 周期与通信周期不一致三个周期对齐伺服报总线类报警Er.6xx 系列通信中断、看门狗超时、站号冲突查线、查站号、看伺服报警一览只有一台轴能动站号重复或者轴绑定错位逐台改站号重新绑定轴网线这件事值得单独说。EtherCAT 用的网线建议用带屏蔽层的工业网线屏蔽层在接头处要可靠压接。和伺服动力线、变频器输出线走同一个线槽掉线概率会明显上升。这不是危言耸听是现场反复验证过的。4. 齿轮比与单位换算让程序里写的数字有意义4.1 为什么必须做单位换算PLCopen 指令里的 Position、Velocity 这些参数单位是用户单位不是脉冲。如果不做换算直接往程序里写脉冲数那这台机器换一根不同导程的丝杠程序就得重写换一个减速比又得重算一遍。调机的人每天都在算脉冲出错概率高得离谱。正确做法是在 InoProShop 的轴配置里把齿轮比和进给量填好让 1 个用户单位等于一个直观的长度比如 0.001mm 或者 0.01mm。这样程序里写走到 100mm就写 100000如果单位是 0.001mm谁看都懂。4.2 具体算一遍别怕麻烦假设条件编码器 23 位分辨率 8388608 脉冲每转丝杠导程 10mm电机直连减速比 1:1希望 1 个用户单位等于 0.001mm。电机转一圈走的距离是 10mm也就是 10000 个用户单位。所以对应的关系是电机一圈等于 10000 个用户单位等于 8388608 个编码器脉冲。伺服侧的电子齿轮比对象是 6091h子索引 1 是分子子索引 2 是分母。按上面的关系6091h-01 写 100006091h-02 写 8388608能约分就约分一下10000 和 8388608 的最大公约数是 16约完是 625 和 524288。这里有个很关键的原则不要两头都改。要么全部在主站的轴配置里做单位换算伺服侧 6091h 保持默认要么伺服侧设 6091h主站轴配置按 1:1 处理。两头都设等于换算了两次走出来的距离会是期望值的平方关系怎么调都调不对。我个人的偏好是在主站轴配置里做因为改起来方便而且和程序里的数字是对应的别人接手一看就明白。4.3 伺服参数里必须配套改的几项参数含义建议值说明H02-00控制模式总线模式常见为 9不设成总线模式6060h 写的模式不生效H0d 组通信参数站号、通信相关以手册为准改完重启H05 组增益与速度限制先自整定再手调限制主站指令的上限H05-31原点回归方式与 MC_Home 的 Mode 对齐详见第 5 章H0b 组监视参数H0b-00 实际速度等调机时实时看H02-00 这一项是新手卡点里的经典。控制模式没设成总线模式轴使能之后确实有保持力矩但主站发的位置指令它不认结果是电机嗡鸣但不转。这事我踩过一次查了两个小时最后发现是模式没改。增益部分建议先用伺服的刚性等级自整定跑一遍让驱动器自己摸一遍负载惯量然后在自整定的基础上微调。直接手动从零调增益对新手来说非常痛苦也容易把机械撞坏。4.4 加减速和到位窗口定位类问题的源头MC_MoveAbsolute 的 Acceleration 和 Deceleration单位是用户单位每平方秒Velocity 是用户单位每秒。这些值最终受伺服内部的速度限制和加减速限制约束。主站给的加速度远超伺服能力伺服会限幅表现为指令发了速度上不去严重的时候直接报警。到位窗口 PositionWindow 是另一个高频问题。设得太小比如 0.1 个用户单位而机械本身有 1 到 2 个单位的反向间隙那轴永远到不了位程序里等的 Done 信号一直不来卡死在那里。设得太大又会出现没走到位就报完成。我的经验是先量一下机械的实际停止波动范围把窗口设成波动范围的 1.5 到 2 倍跑顺了再往小收。5. PLCopen 指令实战从使能到定位的完整程序5.1 第一步不是写程序是把轴绑到从站上这一步是很多人卡住的地方。PLCopen 的运动控制功能块操作的是一根轴这根轴必须先和具体的 EtherCAT 从站关联起来。在 InoProShop 的设备树里找到运动控制轴相关的节点右键添加轴轴类型选 EtherCAT 从站轴然后绑定到对应的从站设备。绑错了会怎样MC_Power 使能了Status 也显示为真但伺服没反应或者动的是别的轴。所以绑定完成后我会做一次最朴素的验证手动点一下轴看对应那台伺服的电机动不动确认绑定是对的。轴对象在程序里用 AXIS_REF 类型引用不同软件版本里数据类型的名字可能略有差异比如 AXIS_REF_SM3以实际为准。5.2 使能、状态监控和复位VAR Axis1 : AXIS_REF; // 轴引用绑定到 SV630N 从站 bEnable : BOOL : FALSE; // 使能开关必须常 TRUE bReset : BOOL; // 复位按钮 fbPower : MC_Power; fbReset : MC_Reset; fbStatus : MC_ReadStatus; fbAxisErr : MC_ReadAxisError; stStatus : MC_ReadStatus; nErrID : UDINT; END_VARfbPower( Axis : Axis1, Enable : bEnable, Enable_Positive : TRUE, Enable_Negative : TRUE, Override : 100.0, BufferMode : MC_BUFFER_MODE.Aborting, Status , // 使能成功为 TRUE Busy , Error , ErrorID );MC_Power 有一个必须记住的规则Enable 要一直保持为 TRUE。一旦给 FALSE轴立刻下使能正在跑的运动直接中断伺服可能出现短暂失控。所以它是运行许可不是启动按钮。真正启动运动的是 MC_MoveAbsolute 这类功能块的 Execute。状态监控用 MC_ReadStatus常见的轴状态包括Disabled未使能Standstill已使能但静止DiscreteMotion正在做定位ContinuousMotion速度模式下连续运行Homing回零中SynchronizedMovement同步运动ErrorStop错误停止程序里做联锁的时候用这些状态比用位置是否等于目标值要可靠得多。复位用 MC_ResetExecute 上升沿有效。轴报错之后必须先排掉物理原因比如超程、过载再复位否则复位了马上又报。5.3 回零Mode 和伺服参数必须对齐回零用的是 MC_Home功能块本身很简单难点在 Mode 的含义。总线模式下主站会把回零方式写进伺服的 6098h回零方式和 6099h回零速度伺服按这个方式动作。所以 MC_Home 的 Mode 和伺服侧配置必须对上对不上就会出现按了回零往反方向跑或者回零跑了但不停。Mode含义说明1反向找原点开关加 Z 相常用于原点开关在负方向的场合2正向找原点开关加 Z 相与 1 相反精度更高3反向找原点开关不找 Z 相精度要求不高的场合4正向找原点开关不找 Z 相同上17/18反向/正向仅找 Z 相没有原点开关时用35当前位置即为原点手动对好位之后直接置零fbHome( Axis : Axis1, Execute : bHome, Position : 0.0, // 回零完成后的坐标值 Mode : 2, // 与伺服侧回零方式一致 Done , Busy , Error , ErrorID );注意回零速度和回零过程中的加减速不在 MC_Home 里给要去伺服侧设置对应的回零速度参数。这一点非常反直觉我第一次用的时候翻了好久手册。另外回零之前一般要手动确认原点开关的方向和信号逻辑常开还是常闭。信号逻辑反了回零会往反方向撞。5.4 绝对定位、相对定位和速度模式fbMoveAbs( Axis : Axis1, Execute : bMoveAbs, Position : 100.0, // 用户单位 Velocity : 50.0, // 用户单位每秒 Acceleration : 500.0, Deceleration : 500.0, Jerk : , Direction : MC_DIRECTION.shortest_way, BufferMode : MC_BUFFER_MODE.Aborting, Done , Busy , Active , CommandAborted , Error , ErrorID );几个容易搞错的地方Execute 是上升沿触发。保持为 TRUE 不会重复执行必须复位再置位才会重新触发。BufferMode 选 Aborting表示新指令立刻打断当前运动选 Buffered表示等当前运动完成后接着执行。做多段连续定位的时候Buffered 很实用可以提前把下一段塞进去。Done 为 TRUE 表示定位完成但它只保持一个扫描周期位置正确之后要立刻捕获别指望它一直是 TRUE。相对定位用 MC_MoveRelative逻辑一样只是 Position 是相对量。速度模式用 MC_MoveVelocity配合 InVelocity 信号使用。暂停用 MC_Halt急停用 MC_Stop。5.5 错误读取程序里怎么知道伺服报了什么轴报错的时候MC_ReadAxisError 能读出轴的错误信息。但伺服内部更详细的总线错误码要去从站诊断里看或者直接读 603Fh 这个对象。现场调试时的正确姿势是程序里做一个错误码显示把轴错误和 603Fh 都显示在 HMI 上出了问题是哪一类一目了然不用抱着电脑去现场接网线。6. 现场踩坑记录那些手册上没写的东西6.1 使能之后电机嗡鸣不转第一次配这套系统我遇到过使能成功、状态显示 Operational、但电机只是嗡鸣不转。查的过程是这样的先确认 PDO 里 6040h 和 6060h 都映射了再看伺服 H02-00 是不是总线模式最后发现是 6060h 没有正确写入伺服运行模式还是 0无模式。模式为 0 的时候伺服只保持使能不执行任何运动指令。排查这种问题最快的方法是打开总线监视看主站实际发出去的 6040h、6060h 数值是多少。别猜看数据。6.2 定位完成之后位置缓慢漂移有一台设备单轴定位看着挺好但多轴同时跑的时候停下来的位置过一会儿就漂零点几个单位。原因是 DC 没有开从站用的是自由运行模式主站和从站的时钟各走各的。开了 DC 并把通信周期、SYNC0 周期、任务周期三个数对齐之后漂移就消失了。这个坑的特点是不影响单轴功能测试只在多轴联动和长时间运行的时候暴露所以很容易拖到客户现场才发现。6.3 三台轴里只有一台能动站号冲突。为了省事三台伺服都没改站号全是出厂默认值。结果主站扫描的时候只能认到一台另外两台要么被合并要么根本进不来。逐台设成 1、2、3 并断电重启之后问题解决。从这里我总结出一条设备进厂第一件事就是逐台改站号并贴标签别等到全部装好上电再改那时候拆线都嫌麻烦。6.4 伺服报超程类报警机械限位碰到了或者软限位参数设得比实际行程还小。处理分成两步先手动或者用点动把轴退出限位区再检查软限位参数。超程之后必须先复位再移动硬拖着往反方向走有些驱动器会一直保持报警。6.5 通信偶发掉线一个老现场白天运行正常晚上变频器一开就掉线。最后查出来是伺服通信线和变频器输出线走了同一个线槽屏蔽层在接头处还没压好。换了带屏蔽的工业网线、单独走线槽、重做接头之后连续跑了一个月没再出问题。工控现场里通信稳定性有一半是电工活不是软件活。线走得好能省掉后面很多莫名其妙的故障。6.6 参数改完不生效SV630N 有些参数改完需要断电重启才生效通信参数类的尤其如此。改完发现没变化先别怀疑人生断个电再试。这个习惯能帮你省掉不少自我怀疑的时间。说句实话Easy521 加 SV630N 这套组合配置本身不算复杂真正花时间的都在细节上ESI 版本、PDO 映射、DC 三个周期对齐、控制模式、电子齿轮比这两头只能改一头。这几个点全部对上之后程序层面其实是整个流程里最轻松的部分MC_Power 加几个运动指令轴就跑起来了。我自己的做法是把这套配置流程整理成一张检查表每上一个新机台从硬件接线到轴绑定逐项打钩比凭记忆稳得多。第一次做的时候慢一点没关系跑通一遍之后第二台基本半小时就能上手。