1. 为什么EtherCAT在H5U上值得认真折腾汇川H5U这台PLC在中小型自动化项目里出镜率很高本体自带EtherCAT主站口官方定位就是冲着多轴运动控制去的。我最早接触它是因为一个包装机的项目客户要求8个伺服轴做插补跟随之前用脉冲控制方案接线复杂、响应也跟不上换成EtherCAT总线之后一根网线串下去布线量直接砍掉大半轴与轴之间的同步精度也上了一个台阶。EtherCAT的本质是一种实时工业以太网协议它跟普通以太网最大的区别在于“飞读飞写”的处理机制——从站芯片在数据帧经过的瞬间就完成读写不需要整帧接收再处理所以一个通信周期可以压到微秒级。对于伺服控制来说这意味着位置指令和状态反馈的延迟极小多轴之间的同步抖动可以控制在纳秒级别。H5U作为主站通过AutoShop软件组态总线轴把伺服的PDO过程数据对象映射到PLC的软元件上程序里操作这些软元件就等于直接控制伺服的位置、速度、力矩。这套方案适合谁如果你手头有汇川H5U要控制1到16个汇川SV660系列或者IS620系列的EtherCAT伺服做点位、速度、转矩或者简单的多轴插补那这套组合基本是性价比最高的选择。不需要额外买运动控制卡不需要复杂的脉冲接线AutoShop里组态完就能跑。但如果你要做高精度多轴联动比如五轴加工中心那种H5U的插补能力有限得考虑更高阶的控制器。我写这篇东西是想把从硬件接线、AutoShop组态、PDO映射到程序里写位置和速度控制这一整条链路讲透包括我踩过的坑和验证过的参数。网上很多教程只讲了一半组态完了不知道怎么在程序里用或者速度模式切不过去我会把这些细节都补上。2. 硬件选型与接线别在第一步就翻车2.1 PLC与伺服的搭配逻辑H5U本体带一个EtherCAT主站口RJ45支持的标准从站数量取决于固件版本和通信周期。我实测下来1ms周期带8个SV660N伺服很稳再往上加轴或者缩短周期就要看CPU负载了。选伺服的时候注意型号后缀必须是支持EtherCAT的“N”系列比如SV660NS5R5I、IS620NS1R6I这种。如果你手头是脉冲型伺服后缀是P或者没有N那得加一个EtherCAT转脉冲的网关模块不推荐多一层转换就多一层延迟和故障点。伺服驱动器选型还要看电机功率和编码器类型。汇川SV660N配23位绝对值编码器是标配分辨率8388608个脉冲每转对于绝大多数定位场景绰绰有余。如果你的机械结构减速比大、要求定位精度高23位编码器是底线17位的在某些低速场合会有爬行现象。2.2 网口连接与拓扑结构H5U的EtherCAT口在PLC本体正面标着“EtherCAT”的那个RJ45。接线顺序是PLC的EtherCAT口 → 第一个伺服的IN口 → 第一个伺服的OUT口 → 第二个伺服的IN口 → 以此类推。最后一个伺服的OUT口空着就行不需要终端电阻EtherCAT从站芯片内部已经处理了。这里有个容易犯的错误把伺服的IN和OUT接反了。IN口是信号输入OUT口是转发给下一个从站接反了通信直接起不来。汇川伺服的IN口一般在上面OUT口在下面但不同批次可能位置有差异接线前看一眼丝印。线缆用标准的CAT5e屏蔽网线就行但注意两点一是屏蔽层要可靠接地伺服侧和PLC侧都要接好否则通信误码率会上去二是线不要太长从PLC到最后一个从站的总长度控制在100米以内单个从站之间不超过50米。我遇到过客户用了一根劣质网线通信周期1ms的时候偶尔报“从站丢失”换成带屏蔽的工业级网线就再没出过问题。2.3 供电与接地注意事项伺服驱动器的控制电源L1C、L2C和主电源L1、L2、L3要分开供。控制电源用24V直流或者220V交流都行看具体型号但一定要先于主电源上电。如果主电源先上、控制电源后上伺服可能会报“欠压”或者“编码器通信异常”。接地方面所有伺服的PE端子要单独接到接地排上不要串联接地。EtherCAT通信对共模干扰比较敏感接地不良会导致通信周期抖动表现出来就是轴运动时偶尔有顿挫感。我在一个注塑机项目上遇到过这个问题后来把伺服的接地线从串联改成星型接地顿挫感就消失了。3. AutoShop组态全流程从新建工程到PDO映射3.1 新建工程与PLC型号选择打开AutoShop新建工程设备型号选H5U系列具体型号根据你手头的PLC来比如H5U-1614MTD。通信方式选USB或者以太网都行USB更方便插上就能连。连上之后先做一次“PLC信息”读取确认固件版本EtherCAT功能需要固件版本在特定版本以上太老的固件可能不支持某些PDO配置。工程建好之后在左侧项目树里找到“EtherCAT配置”或者“运动控制配置”不同版本的AutoShop菜单名称可能略有差异但核心入口是一样的。双击进入EtherCAT组态界面。3.2 扫描从站与ESI文件导入在EtherCAT组态界面里点击“扫描从站”或者“自动扫描”PLC会通过EtherCAT总线去发现连接的从站设备。如果所有伺服都上电了、网线接对了应该能扫描到对应数量的从站每个从站显示型号和节点地址。如果扫描不到先检查伺服的控制电源是否正常、网线是否插紧、IN/OUT是否接反。还有一个常见原因是ESI文件EtherCAT Slave Information没有导入。ESI文件是描述从站设备PDO、SDO、对象字典的XML文件AutoShop自带了一部分汇川伺服的ESI但如果你用的是新型号或者特殊固件版本可能需要手动导入。ESI文件一般从伺服厂家官网下载或者随伺服附带的CD里找。导入方式是在组态界面里点“导入ESI”或者“设备库管理”选择XML文件导入。扫描到从站之后每个从站会显示在拓扑列表里节点地址从1开始自动分配。你可以手动修改节点地址但一般没必要自动分配的就行。3.3 添加总线轴与基本参数设置扫描完从站接下来要把从站映射成“总线轴”。在AutoShop的运动控制配置里有一个“轴配置”或者“总线轴设置”的界面。每个EtherCAT从站可以映射为一个轴轴的编号从0开始对应PLC内部的轴数据结构。轴的基本参数包括轴类型选“总线轴”或者“EtherCAT轴”不要选“脉冲轴”。节点地址对应从站的EtherCAT节点地址自动填充。编码器分辨率SV660N配23位编码器是8388608这个值要填对否则位置指令和实际位移对不上。软限位根据机械行程设置正负限位防止撞机。最大速度根据电机额定转速和机械减速比计算单位是“单位/秒”或者“转/分”看软件里的单位设置。加减速时间根据负载惯量和机械刚性设置太短会过冲太长影响节拍。这些参数在轴配置界面里填好之后下载到PLC。下载的时候注意EtherCAT配置和轴参数是分开下载的先下载EtherCAT配置再下载轴参数顺序反了可能不生效。3.4 PDO映射把伺服的对象字典挂到PLC软元件上PDO映射是EtherCAT配置里最核心也最容易出错的一步。PDOProcess Data Object是每个通信周期里主站和从站之间交换的数据分为RxPDO主站发给从站比如控制字、目标位置、目标速度和TxPDO从站发给主站比如状态字、实际位置、实际速度。在AutoShop的EtherCAT组态界面里选中一个从站会看到“PDO映射”或者“过程数据”的选项卡。默认情况下AutoShop会自动映射一组标准的PDO包括控制字0x6040、状态字0x6041、目标位置0x607A、实际位置0x6064、目标速度0x60FF、实际速度0x606C等。这些默认映射对大多数应用够用了。但如果你要用到一些特殊功能比如转矩控制模式下的目标转矩0x6071、转矩实际值0x6077或者要读伺服的温度、母线电压等诊断信息就需要手动添加PDO映射。手动添加的方式是在PDO映射界面里从对象字典列表里找到对应的对象拖到映射列表里然后给每个映射项分配PLC的软元件地址。这里有个关键点每个PDO映射项都要分配一个PLC软元件比如D寄存器或者M继电器。分配的时候要注意数据长度位置和速度一般是32位需要占用两个连续的D寄存器。比如目标位置映射到D100那D100和D101一起组成32位数据D100是低16位D101是高16位。这个字节序和字序在汇川的体系里是固定的不用像某些品牌那样纠结大小端。映射完之后下载配置到PLC。下载成功后PLC重启或者重新初始化EtherCAT总线从站进入OP状态Operational这时候PDO数据就开始周期性交换了。4. 程序编写位置模式与速度模式的实操细节4.1 伺服使能与状态机控制伺服上电之后不是立刻就能动的需要走一个状态机从“Switch On Disabled”到“Ready to Switch On”再到“Switched On”最后到“Operation Enabled”。这个过程通过控制字0x6040的位操作来实现。在AutoShop里控制字映射到的软元件比如D200程序里这样写// 伺服使能步骤 // 1. 清除故障控制字写0x0080 D200 : 16#0080; // 等待状态字bit3Fault为0 // 2. 进入Ready to Switch On控制字写0x0006 D200 : 16#0006; // 等待状态字bit0Ready to Switch On为1 // 3. 进入Switched On控制字写0x0007 D200 : 16#0007; // 等待状态字bit1Switched On为1 // 4. 进入Operation Enabled控制字写0x000F D200 : 16#000F; // 等待状态字bit2Operation Enabled为1实际写程序的时候不会这么一步步手动写而是用一个状态机或者顺序控制块来自动完成。AutoShop里有现成的MC_Power功能块直接调用就行输入使能信号功能块内部会自动走完这个状态机。但理解底层状态字和控制字的对应关系还是有必要的出问题的时候能快速定位。状态字0x6041的常见位定义位名称含义0Ready to Switch On伺服准备好1Switched On主回路已接通2Operation Enabled使能状态3Fault故障4Voltage Enabled主电压正常5Quick Stop快速停止6Switch On Disabled使能禁止10Target Reached目标到达11Internal Limit Active内部限位激活4.2 位置模式用MC_MoveAbsolute做精确定位位置模式是伺服最常用的模式PLC发目标位置伺服自己走完剩下的路。在AutoShop里位置模式的核心功能块是MC_MoveAbsolute绝对定位和MC_MoveRelative相对定位。调用MC_MoveAbsolute需要填几个参数Axis轴编号对应之前组态的轴。Execute上升沿触发。Position目标位置单位是“用户单位”跟轴配置里的单位设置有关。Velocity运行速度单位是“单位/秒”。Acceleration加速度。Deceleration减速度。Done定位完成输出。Busy忙标志。Error错误输出。程序里这样写// 绝对定位示例 MC_MoveAbsolute_0( Axis : 0, Execute : bStartMove, Position : 100000.0, Velocity : 50000.0, Acceleration : 100000.0, Deceleration : 100000.0, Done bMoveDone, Busy bMoveBusy, Error bMoveError );这里的位置单位要注意。如果轴配置里设的是“脉冲”或者“编码器单位”那100000.0就是100000个编码器脉冲。如果设的是“毫米”或者“度”那100000.0就是100000毫米或者度。我一般建议在轴配置里设成“毫米”或者“度”程序里写起来直观不用每次换算脉冲数。速度模式切换有时候需要在位置模式和速度模式之间切换比如先快速走到位然后切换到速度模式做压力控制。切换的时候要注意不能直接改控制字要先让轴停下来然后通过SDO或者PDO修改“模式选择”对象0x6060再重新使能。4.3 速度模式用MC_MoveVelocity做连续运转速度模式下PLC发目标速度伺服按这个速度一直转直到收到停止指令或者切换到其他模式。MC_MoveVelocity功能块的参数跟MC_MoveAbsolute类似只是没有目标位置只有速度和加减速。// 速度模式示例 MC_MoveVelocity_0( Axis : 0, Execute : bStartVelocity, Velocity : 30000.0, Acceleration : 50000.0, Deceleration : 50000.0, InVelocity bInVelocity, Busy bVelBusy, Error bVelError );速度模式的一个常见应用是传送带或者卷绕控制。比如卷绕应用里随着卷径变大线速度要保持恒定那角速度就要逐渐降低。这时候可以用PLC读编码器反馈的实际速度然后动态调整目标速度形成一个闭环。速度模式切换到位置模式的时候要注意“速度归零”的问题。如果直接从速度模式切到位置模式伺服可能会因为速度不为零而报“跟随误差过大”。正确的做法是先让速度降到零等InVelocity信号消失再切换到位置模式。4.4 回零与限位处理回零是很多设备开机后必须做的动作。汇川伺服支持多种回零方式通过对象字典0x6098Homing Method来选择。常用的方式有方式17以当前位置为原点不需要找传感器。方式18找负限位开关然后找Z相信号。方式19找正限位开关然后找Z相信号。方式35找原点开关然后找Z相信号。在AutoShop里回零用MC_Home功能块MC_Home_0( Axis : 0, Execute : bStartHome, Position : 0.0, Done bHomeDone, Busy bHomeBusy, Error bHomeError );回零之前要确保限位开关和原点开关接线正确并且极性设置对。我遇到过原点开关是常闭的但程序里按常开来配结果回零的时候直接冲过原点撞到限位。所以调试回零的时候先手动把轴推到原点附近观察原点开关的信号状态确认极性再跑自动回零。限位处理方面除了硬限位开关还要在轴配置里设软限位。软限位是程序层面的保护硬限位是物理层面的保护两者都要有。软限位设得比硬限位稍微窄一点这样正常情况下软限位先起作用硬限位作为最后一道防线。5. 调试与排查那些手册上不会写的问题5.1 通信周期与CPU负载的平衡EtherCAT通信周期设得太短CPU负载会上去可能导致PLC扫描周期变长影响其他逻辑的执行。H5U的EtherCAT周期可以设到250微秒、500微秒、1毫秒、2毫秒等。我一般建议1到4个轴做点位控制1毫秒周期足够。4到8个轴做插补或者同步500微秒到1毫秒。8个轴以上或者要求高动态响应250微秒到500微秒但要监控CPU负载。CPU负载在AutoShop的在线监控里能看到一般不要超过70%。如果超过70%要么加长通信周期要么优化程序逻辑把不紧急的任务放到慢速任务里执行。5.2 常见故障代码与排查思路故障现象可能原因排查方法从站扫描不到网线接反、控制电源未上、ESI未导入检查IN/OUT、量控制电源电压、重新导入ESI通信报“从站丢失”网线屏蔽不良、接地干扰、周期太短换屏蔽网线、检查接地、加长通信周期伺服使能不上控制字序列不对、主电源未上、有故障未清检查控制字、量主电源、读状态字bit3定位偏差大编码器分辨率设错、减速比设错、单位设错核对轴配置参数、用手动模式验证速度模式切不过去模式选择对象没改、使能状态不对通过SDO写0x6060、重新走使能流程回零找不到原点原点开关极性错、回零方式选错手动验证开关信号、核对0x60985.3 实操心得与避坑技巧心得一先手动后自动。第一次调试的时候不要急着跑自动程序。先用AutoShop的“手动调试”功能单独控制每个轴做点动、回零、定位。确认每个轴都能正常动、方向对、限位有效再跑自动逻辑。我见过太多人直接跑自动结果一个轴方向反了直接撞机。心得二PDO映射宁少勿多。默认的PDO映射已经包含了位置、速度、状态字、控制字这些核心数据。不要为了“以后可能用到”就把所有对象都映射上映射越多通信负载越大周期抖动越明显。用到什么映射什么不够再加。心得三保存一份能跑的配置。EtherCAT配置和轴参数调好之后在AutoShop里导出配置文件存一份。下次换PLC或者恢复出厂设置直接导入就行不用重新组态。我吃过这个亏一个项目的配置调了三天结果PLC固件升级后配置丢了又花了两天重新调。心得四注意固件版本兼容性。H5U的固件版本和AutoShop的版本要匹配太老的AutoShop可能不支持新固件的某些功能。升级固件之前先看Release Note确认EtherCAT相关功能有没有变化。我有一次升级固件后PDO映射的字节序变了导致位置数据全是乱的后来回退固件才恢复。心得五用示波器看通信质量。如果通信偶尔报错但找不到原因可以用示波器看EtherCAT差分信号的波形。正常的波形应该是干净的差分方波如果有过冲、振铃或者幅度不够说明线缆或者接地有问题。这个手段一般用不上但遇到疑难杂症的时候很管用。6. 多轴同步与插补的进阶玩法6.1 电子齿轮与电子凸轮H5U支持电子齿轮和电子凸轮功能做多轴同步的时候很有用。电子齿轮是让从轴按一定比例跟随主轴比如主轴转1圈从轴转2圈齿轮比就是2:1。电子凸轮是让从轴按一个预设的曲线跟随主轴可以做非线性的同步关系。在AutoShop里电子齿轮用MC_GearIn功能块电子凸轮用MC_CamIn功能块。配置的时候要注意主轴和从轴的编码器分辨率、减速比确保同步关系计算正确。电子凸轮还需要事先用CamBuilder或者类似工具生成凸轮曲线导入到PLC里。6.2 多轴插补的局限性H5U支持直线插补和圆弧插补但轴数有限一般2到3轴。做插补的时候通信周期要设短一点500微秒或者更短否则插补轨迹会有明显的棱角。插补的速度和加速度也要设合理太快了伺服跟不上会报跟随误差。如果要做更复杂的多轴联动比如五轴或者六轴H5U就不够用了得考虑汇川的AM系列或者AC系列运动控制器。那些控制器支持更复杂的插补算法和更多的轴数但价格也上去了。6.3 实际项目中的轴间同步案例我做过一个枕式包装机的项目用的是H5U加4个SV660N伺服。主轴是送膜轴从轴是切刀轴和两个送料轴。送膜轴和切刀轴之间用电子凸轮同步切刀在膜上的固定位置切断。送料轴用电子齿轮跟随送膜轴保证送料速度和送膜速度匹配。调试的时候主要调凸轮曲线的相位和切刀轴的偏移量。相位不对切刀切的位置就偏偏移量不对切刀会切到膜上的图案。调这个花了半天时间但调好之后运行很稳每分钟120包切口精度在正负0.5毫米以内。这个项目让我体会到EtherCAT总线的同步性能确实比脉冲控制好很多。脉冲控制的时候多轴之间的同步靠PLC的脉冲输出轴数一多脉冲频率上不去同步精度也差。EtherCAT是总线同步所有轴在同一个通信周期里更新数据同步抖动小得多。7. 从H5U到更复杂的EtherCAT生态H5U的EtherCAT主站功能虽然够用但毕竟定位是中小型PLC支持的从站数量和类型有限。如果你要做更复杂的系统比如带视觉、带机器人、带多个远程IO站那可能需要考虑更高阶的控制器。不过H5U作为一个入门EtherCAT的平台性价比很高。学会了H5U上的EtherCAT配置和编程换到其他支持EtherCAT的PLC或者运动控制器上底层逻辑是相通的。PDO映射、状态机、模式切换这些概念在任何一个EtherCAT主站上都是一样的。我个人的建议是如果你刚开始接触EtherCAT手头又有H5U和汇川伺服那就拿这套组合练手。把位置模式、速度模式、回零、多轴同步这几个场景都跑一遍踩一遍坑比看十遍手册都管用。等这套玩熟了再去看更复杂的EtherCAT主站或者从站开发会发现很多东西都是触类旁通的。最后分享一个我常用的调试技巧在程序里加一个“通信状态监控”的定时器每个扫描周期读一下EtherCAT从站的状态字和通信错误计数器如果错误计数器在涨就触发一个报警。这样能在通信问题恶化之前就发现苗头避免生产过程中突然停机。这个监控逻辑很简单但很实用我每个项目都会加。