做项目这几年,凡是涉及汇川PLC走EtherCAT通讯的,几乎每周都能在技术群里看到新手问同样的问题:明明照着视频配了,从站就是掉线;伺服使能报错,通讯状态一直红;或者干脆设备一上电就报警。说实话,这类问题90%以上不是硬件坏了,而是InoProShop里总线配置那几个关键点没搞透。
这篇东西我拖了很久才写,因为EtherCAT配置这东西,说起来就是“建工程、加从站、映射参数、下载运行”四步,但每一步里都藏着一堆只会在现场踩出来的坑。我尽量用一篇能直接照着操作的篇幅,把从零配置汇川InoProShop EtherCAT总线的完整流程讲明白,同时把新手最容易卡住的通讯故障点全部拆开揉碎。
这篇内容适合刚接触汇川中小型PLC的电气工程师、做非标设备的调试人员,以及准备从脉冲控制转总线控制的朋友。看完不说能成专家,至少能让你在一台全新的设备上,用最短时间把EtherCAT总线跑起来,并且出了故障知道从哪里下手查。
1. EtherCAT方案选型与整体思路
1.1 为什么选EtherCAT而不选脉冲/模拟量
很多新手上来就问“用脉冲控制伺服不行吗,为什么要折腾总线”。确实,在轴数少、距离短、精度要求不高的场合,脉冲控制简单直接,一台PLC带两三台伺服完全够用。但当轴数超过4个,或者设备有高速运动、多轴同步插补需求时,脉冲方案就会出现几个明显短板:接线量大、抗干扰能力弱、脉冲频率受PLC输出端口限制、故障诊断困难。
EtherCAT的核心理念是“实时以太网”,它的数据帧在从站之间像接力棒一样传递,一个帧经过每个从站时,从站只花纳秒级的时间读取属于自己的数据并插入反馈数据,然后立刻转发给下一个从站。这种机制带来的直接好处是同步精度高、刷新速度快,100个轴以内的系统,典型周期可以做到1ms甚至0.5ms以下,而且全部设备只用一根网线串联。
用生活化的类比来讲,脉冲控制像是快递员每送一个包裹都要返回总部拿下一个,而EtherCAT像是一条流水线,快递车沿着产线开一圈,所有包裹顺便就分拣完了。效率差距就是这么拉开的。
汇川的InoProShop软件就是为了这类总线控制而生的集成开发环境,它基于CODESYS内核,支持IEC 61131-3标准的五种编程语言,并且把EtherCAT主站配置直接集成在工程里,不需要单独的第三方配置工具。这意味着从总线拓扑搭建、从站参数配置到运动控制编程,可以在同一个软件里全部完成。
1.2 InoProShop与汇川硬件选型搭配
用InoProShop做EtherCAT主站的汇川PLC,常见的有这么几类:
小型整体式PLC里,H5U系列和EASY系列(如EASY521、EASY522)是比较典型的选择。H5U定位在中小型运动控制,本体自带EtherCAT主站口,支持最多32个从站,适合8轴以内的设备;EASY521则是更经济的选择,同样支持EtherCAT总线,适合轴数少、对成本敏感的项目。
中大型模块式PLC则主要是AM系列,比如AM401、AM402、AM600系列,它们基于CODESYS平台,InoProShop的对应版本也能直接管理它们的EtherCAT配置。AM系列的算力更强,支持轴数更多,适合几十个轴的大型产线或复杂运动控制项目。
从站设备方面,汇川自家的SV660N系列伺服驱动器是最常见的搭配对象,还有MD800系列变频器也支持EtherCAT通讯,以及各类EtherCAT远程IO模块、编码器、阀岛等等。
新手选型时最容易犯的错误是“PLC和驱动器都买了,结果发现版本不匹配”。比如H5U的固件版本太老,而InoProShop软件版本太新,会导致从站XML文件扫描异常。这个细节我在后面实操部分会专门讲。
1.3 配置工作总体流程
整个EtherCAT配置工作在InoProShop里可以拆成六个阶段,这六个阶段我建议无论项目大小都按顺序走:
- 硬件安装与网络拓扑规划:确认主站PLC型号、从站设备数量、网线走向。
- 从站设备初始化设置:给每个伺服驱动器和IO模块设置站号。
- InoProShop新建工程并添加主站:创建项目,选择正确的PLC型号和固件版本。
- 添加从站设备并加载XML描述文件:手动或自动扫描添加从站,完成设备描述加载。
- 配置PDO映射与过程数据:把伺服的控制字、状态字、目标速度、实际位置等参数映射到PLC的IO映射区。
- 程序编写、编译下载与在线调试:写运动控制逻辑,下载程序,监控总线状态。
这篇文章的核心实操部分就围绕这六个阶段展开,每个阶段最关键的注意事项我都会标注出来。接下来从硬件准备讲起,因为很多通讯故障的根源其实在接线和站号设置阶段就已经埋下了。
2. 硬件组网与前期准备
2.1 网线、接线与拓扑要求
EtherCAT对网线的要求比普通以太网严格得多,这一点新手特别容易忽略。普通办公网络用的网线,哪怕线序不对,只要距离近也能凑合用,但EtherCAT不行。总线通讯对信号完整性和时序要求极高,网线质量差、线序错乱、屏蔽层接地不良,都会导致通讯时断时续、丢帧甚至从站掉线。
我个人的习惯是,EtherCAT网线一律用cat5e或cat6级别的工业以太网线,最好是带屏蔽层的SFTP或STP线缆,RJ45接头用带金属屏蔽壳的工业级接头,而且必须保证水晶头压接质量过硬。网线长度方面,EtherCAT标准规定两个从站之间的线缆最大长度为100米,但实际项目中我建议控制在50米以内,留出足够的信号余量。
拓扑结构上,EtherCAT支持线型、树型、星型三种方式,其中线型拓扑最常用,也最好排查故障。主站PLC的EtherCAT网口出来第一根线接到第一个从站的IN口,第一个从站的OUT口再接第二个从站的IN口,以此类推。注意很多伺服驱动器上IN和OUT是两个网口,方向绝对不能接反,否则从站无法被主站扫描到。
树型和星型拓扑需要额外的EtherCAT分支器或交换模块才能实现,在汇川方案里用得不多。如果设备确实需要星型扩展,我建议优先考虑在软件里规划多个从站组,而不是依赖网络设备。
2.2 从站设备初始化设置
从站设备上电后,主站要能识别到它,首要条件是每个从站都有一个唯一的站号(Station Address,也叫从站地址)。这个站号在EtherCAT协议里用于主站寻址,类似于每家每户的门牌号。如果两个从站设置了相同的站号,主站扫描时会报“重复站号”错误,直接导致通讯失败。
汇川SV660N伺服驱动器的站号设置方式,通常是通过驱动器面板上的按键操作完成。不同系列驱动器的菜单结构略有差异,一般在“H0C”或“通讯”相关参数组里会有“从站地址”、“站号”或“Station Address”这一项,有的型号用“dF”开头的参数。设置范围通常从1到127,具体上限取决于主站支持的从站数量。
设置时有一个细节值得注意:所有从站的站号最好按物理位置顺序编排,比如第一个伺服设1,第二个设2,第三个设3。这样可以让你在调试时通过站号快速定位物理设备,也方便与图纸对应。不要随意跳号,除非你有特殊规划。
EtherCAT远程IO模块的站号设置方式各不相同,有的是拨码开关,有的也是软件设置。拨码开关方式比较直观,一般模块上会标有类似于“1 2 4 8”的拨码位,通过组合拨动得到不同地址。拨码设置时要注意有些模块是二进制编码,有些是BCD编码,搞混了会导致地址和预期不符。
2.3 软件版本与XML文件准备
这一节要讲的可能是新手最容易忽略但坑最深的地方。EtherCAT从站设备都有一个电子数据描述文件,通常称为XML文件或者ESI文件(EtherCAT Slave Information)。这个文件描述了从站支持哪些对象字典、哪些PDO参数、哪些同步模式,是主站配置从站时最重要的依据。
InoProShop添加从站时,本质上是读取该从站的XML文件,把它加载进工程里,然后才能进行后续的参数映射配置。如果XML文件版本不对,或者和从站固件版本不匹配,就会出现类似“对象字典读取失败”、“无法找到0x60FF对象”、“从站状态无法进入OP”等各种奇怪问题。
我的建议是,每次拿到新的伺服驱动器或IO模块,第一时间去汇川官网或设备说明书里找对应型号和硬件版本号的XML文件,保存到一个固定文件夹里,命名规则统一为“型号_固件版本_日期”。这样即使过半年再维护这个项目,也能快速找到匹配的配置文件。
另外还要注意InoProShop软件本身和PLC固件的匹配关系。比如工程里选择的PLC固件版本必须和实际PLC固件版本一致或兼容,否则下载程序时可能出现通讯异常甚至固件不匹配的报警。
3. InoProShop完整配置操作步骤
3.1 新建工程与主站配置
打开InoProShop,第一步是新建工程。工具栏点“新建工程”,弹出对话框需要选择PLC型号和固件版本。这里注意,如果PLC型号选错,后面所有配置都白搭。以H5U为例,新建工程时选择“H5U”系列,然后选择对应的CPU型号(比如H5U-1614MTD),固件版本建议选用实际设备升级后的版本,或者默认版本。
工程创建成功后,左侧是工程树。我们需要找到“EtherCAT”相关的节点。不同版本的InoProShop界面稍微有差异,但一般在工程树的“轴”或“总线”分组下能找到“EtherCAT”或者“EtherCAT主站”条目。双击进入主站配置界面。
主站配置界面里首先要设置通讯周期,也叫同步周期或EtherCAT Cycle Time。这个参数决定了总线数据刷新的快慢,直接关系到运动控制的性能。H5U和EASY系列默认周期通常是1ms或2ms,SV660N伺服驱动器建议的同步周期在0.5ms到4ms之间。
对于8轴以内的设备,我通常选择1ms周期。为什么不是越小越好?因为周期越短,主站和从站对处理能力的要求越高,对网线和布线质量的要求也越苛刻。如果设备里既有伺服又有普通IO模块,过短的周期反而可能因为某个从站处理不过来导致丢帧。1ms是性能与稳定性的平衡点。
主站配置界面还需要设置“看门狗时间”。看门狗的作用是监控通讯是否中断,如果某个从站在设定时间内没有应答,主站就判定通讯故障并进入安全状态。默认看门狗时间一般是100ms,如果设备启停频繁或者有较强电磁干扰,可以适当加长到200ms,但不建议太长,否则从站掉线后PLC反应太慢,设备安全性下降。
3.2 添加从站与XML导入
主站配置好后,接下来就是把从站设备添加到总线上。InoProShop提供两种方式:自动扫描和手动添加。
自动扫描的前提是硬件已经全部接好线,从站都已上电,且InoProShop处于在线状态。在EtherCAT主站配置界面,找到“扫描”或“扫描从站”按钮,点下去之后软件会通过网线自动识别总线上所有从站设备,并尝试加载对应的XML文件。如果InoProShop自带的设备库里有匹配的XML,就会直接添加成功;如果库里没有,会提示你手动指定XML文件。
在线扫描的优势是快,但也有一旦总线协议栈崩溃或某个从站站号冲突,整个扫描可能失败。这时建议断电重启所有从站,然后重新扫描。
手动添加则是在离线状态下,从设备库或本地XML文件夹中一个一个添加从站。具体操作是右键点击EtherCAT主站节点,选择“添加设备”或“从站”,然后在弹出的对话框里选择设备类型,或者点击“从文件导入”浏览找到对应的XML文件导入。
这里要特别强调一个细节:导入XML文件后,建议检查一下从站设备的“地址分配”。主站会为每个从站分配一个总线地址,通常是1、2、3...这样的顺序。你必须确保软件分配的地址和从站面板上设置的站号一一对应。如果不一致,立刻修改从站面板站号或软件地址,否则在线后主站会报“从站无响应”或“设备不匹配”。
我用实际项目举个例子:一条小型装配线上用了SV660N伺服3台、EtherCAT IO模块1个,从站站号分别设置为1、2、3、4,扫描后软件识别出4个从站,地址顺序恰好也是1到4,映射正确,通讯正常。但如果我在给第2台伺服设置站号时误设成了1,就会和第一台冲突,扫描结果就会出现重复地址报警,并且第2台伺服从站无法进入OP状态。
3.3 轴配置与PDO映射
从站添加完毕后,表面上看工程树里已经可以看到伺服从站节点了,但这个时候还不能编写运动控制指令控制伺服。你需要在从站节点下建立“轴”对象,并把PDO(Process Data Object,过程数据对象)数据正确映射到主站的IO地址区。
什么叫PDO映射?简化理解就是,你告诉软件“主站发送给伺服的数据包里,第几个字节对应伺服的启动停止命令,第几个字节对应目标速度”,以及“伺服返回给主站的数据包里,第几个字节对应当前位置,第几个字节对应当前转速”。映射关系正确后,PLC才能通过总线读取和写入这些数据。
SV660N伺服驱动器通过EtherCAT控制时,标准控制方式是使用CiA402协议。对应的几个核心对象映射如下:
控制字(Controlword,索引60FDh):用于驱动伺服的状态机切换,比如shutdown、switch on、enable operation等。一般情况下,控制字值等于0x0006时,驱动器进入ready to switch on状态;等于0x0007时,进入switch on状态;等于0x000F时,进入operation enabled状态,也就是正式使能。此外0x007F用于快速停止,0x000B是“启停”切换等,具体可以查手册。
状态字(Statusword,索引6041h):驱动器反馈其当前状态的字,比如0x0233表示ready to switch on,0x0237表示switched on,0x023F表示operation enabled。程序里需要根据这个状态字做伺服状态判断,比如在使能前先等待状态字为0x0233。
目标速度(Target Velocity,索引60FF):在速度模式下,主站写入这里设定目标转速,单位通常是转每分钟或者编码器单位每秒,取决于你选的单位模式。
实际速度(Actual Velocity,索引606Ch):驱动器反馈当前实际速度。
目标位置(Target Position,索引607Ah):在位置模式下使用,写入目标位置。
实际位置(Actual Position,索引6064h):驱动器反馈当前实际位置。
以上这些参数不是直接能在PLC程序里读写的,需要通过PDO映射把它们挂到主站的IO映射区。在InoProShop里,双击伺服从站节点,打开“PDO分配”或“过程数据”界面。界面左侧会列出该设备支持的所有RxPDO(主站发送给伺服的报文,也叫输出数据)和TxPDO(伺服反馈给主站的报文,也叫输入数据)。你需要在RxPDO里勾选控制字、目标速度等,在TxPDO里勾选状态字、实际速度、实际位置等。
勾选完成后,软件会自动为每一项分配一个具体的IO地址,通常是类似“%Q*”或“%I*”的格式,Q代表输出,I代表输入。这些地址就是你在PLC程序里直接读写的总线数据地址。
3.4 程序编写与下载调试
PDO映射完成后,回到程序编辑界面,就可以编写控制代码了。以最简单的伺服点动测试为例,程序段可以分三步:
第一步,等待伺服状态字为就绪状态(如0x0233),表示驱动器已经准备完毕。这一步通常通过读取状态字IO地址,和0x0233做比较来实现。
第二步,把控制字写成0x0006,等待一小段时间(如10ms),然后再写入0x0007,再等10ms,最后写入0x000F。这三步是为了让伺服状态机按顺序切换,不能直接从0x0006跳0x000F,否则驱动器可能不响应。
原因在于CiA402状态机规定了状态转换路径,从Ready to switch on到Operation enabled必须经过Switched on状态。你可以把状态机想象成电梯,必须一层一层停,不能从1楼直接跳到5楼。
第三步,写入目标速度,比如往目标速度地址里写入3000(表示每分钟3000转)。伺服如果正常,电机会开始旋转,状态字会显示运行中,实际速度值会跟进。
程序写好后,点击“编译”,软件会检查语法错误。编译通过后,点击“下载”把程序下载到PLC。如果PLC和电脑通过网线连接正常,InoProShop会自动搜索并连接PLC。
下载完成后,先把PLC切换到运行模式(RUN),然后在“在线”状态下打开“通讯诊断”或“从站信息”窗口,查看每个从站的状态。正常情况下,从站状态应该显示为“OP”(Operational),表示已进入运行状态,通讯正常。如果显示“INIT”、“PREOP”或“SAFEOP”,说明通讯还没建立完成,需要结合下一章排查。
4. 常见通讯故障排查与避坑实录
4.1 通讯故障速查表
我在微信技术群、工控论坛和现场调试中收集整理了EtherCAT通讯故障中最常见的几种现象和对应原因,整理成一张速查表,方便现场快速定位:
| 故障现象 | 可能原因 | 排查方向 |
|---|---|---|
| 主站扫描不到从站 | 网线接错方向、从站未上电、站号冲突、网线质量差、水晶头松动 | 检查IN/OUT接线,确认从站供电,核对站号设置,更换网线 |
| 从站状态一直在INIT/PREOP | 从站XML文件版本不匹配、周期设置过短、看门狗时间太短 | 更换XML文件,调整周期,增加看门狗时间 |
| 从站状态在SAFEOP不进OP | PDO映射配置错误、对象字典不完整、从站急停信号未接通 | 检查PDO映射,确认伺服急停和使能信号,查看从站故障码 |
| 通讯时断时续、偶发掉线 | 网线质量差、屏蔽层接地不良、电磁干扰、水晶头压接不良 | 更换工业级屏蔽网线,检查接地,让总线远离动力线 |
| 伺服使能后报故障 | 控制字状态机切换错误、安全功能触发、驱动器参数错误 | 检查状态字序列,查看驱动器报警代码,核对驱动器参数 |
| 目标速度写入但不转动 | 使能未生效、伺服处于位置模式、方向信号未设置、速度限制参数不到位 | 确认真实使能状态,切换速度和位置模式,检查方向和限速参数 |
这张表基本覆盖了90%的现场问题。接下来的内容,我会挑几个典型场景展开讲。
4.2 典型案例排查过程
案例一:扫描不到从站
有一次在某包装设备现场,H5U通过EtherCAT连接3台SV660N,上电后怎么扫描都只有2台。我花了半个小时排查,最后发现第二台和第三台之间的网线被工人换了一根旧的直通网线,而且是交叉线序,信号不通。这个案例的教训是:EtherCAT工程中最容易被忽视的就是物理层,但物理层恰恰是通讯稳定的根基。建议在配置总线之前,先用测线仪测一遍所有网线的线序和连通性,别舍不得那几分钟。
案例二:从站一直处于PREOP状态
一个学员的EASY521连接SV660N,扫描正常,但从站状态始终卡在PREOP,进不了OP。远程看了他的工程配置后发现,他在主站配置里把通讯周期设成了0.1ms,SV660N处理器处理不过来,导致同步失败。我把周期改成1ms后,从站立刻进入OP状态。这里也提醒大家,周期设置必须同时考虑主站和从站的能力,不是越小越先进。
案例三:伺服使能报错,电机抖动一下报警A.510
SV660N报警代码中,A.410、A.510这类和通讯、使能相关的报警很常见。有一次调试中,伺服使能瞬间电机抖了一下就报A.510。查看驱动器手册发现,A.510是编码器相关故障,后来发现是电机编码器线插头松了。这也说明一个问题:通讯配置正常,不代表伺服就能正常转,外围接线同样要逐一确认。
案例四:PDO映射导致写入地址越界
有个做关节模组的项目,用EASY521控制关节模组,配置完PDO后程序里写地址,编译一直报“变量地址越界”。原因是PDO里勾选的对象超出了主站为该从站分配的IO区大小。解决办法是减少PDO里勾选的参数项,比如只保留控制字、状态字、目标速度、实际速度、实际位置这几项,把不必要的对象从PDO里去掉。
4.3 独家避坑经验
最后分享几条我在多个项目里踩出来的经验,每一条都是拿真金白银换来的。
第一,现场调试时永远不要直接相信XML文件的文件名版本,要看文件内部的版本号。曾经有客户发给我一个命名为SV660N_V1.0.xml的文件,打开发现里面其实是从官网下载的V2.1版本。如果按文件名去匹配固件版本,会浪费很多排查时间。用文本编辑器打开XML文件,查看“EtherCATInfo”节点下的版本属性,才是准确做法。
第二,当多个从站同时出现通讯问题,优先怀疑主站侧配置,而不是逐个检查从站。很多时候是主站周期设置不当、XML加载错误、总线地址重复导致的,不该在单个从站的硬件上死磕。
第三,编写伺服使能程序时,状态字判断不能省。有些新手直接用定时器延时,给控制字写0x0006、0x0007、0x000F三步,中间不检查状态字。这在实际运行中可能没问题,但如果驱动器上电自检较慢、或者中途有报警,固定延时就可能不满足状态机转换条件,表现为偶发性通讯故障或使能失败。最稳妥的方式是每一步都读取状态字,确认到位后再进入下一步。
第四,通讯周期和运动控制插补周期要匹配。在InoProShop里,如果你用了运动控制指令比如MC_MoveAbsolute,那么插补周期(Motion Task周期)建议和EtherCAT周期一致或成整数倍关系。否则会出现运动指令参数变化不平滑,表现为电机运行抖动或跟随时有丢步的感觉。
第五,调试EtherCAT时养成看从站状态和错误计数器的习惯。InoProShop的从站信息界面一般会显示CRC错误计数、无效帧计数等统计信息。如果CRC错误计数持续增长,就算当前通讯还正常,也要尽快排查物理层问题,否则设备运行到一半掉线,损失更大。这个我一般会定期记录下来,作为设备健康状态的一个参考指标。
在实际操作中,我还经常提醒自己一件事:EtherCAT配置不是一次性的,设备固件升级、更换驱动器型号、增加从站数量,都可能需要重新调整配置。所以每个项目的工程文件、XML文件、版本说明,尽量保留一份完整的归档,现场即使过了半年一年再翻出来,也能快速定位问题。
这组配置流程和排查思路,我前后在不同项目上验证过很多次,从几台伺服的简单系统,到带几十个从站的中型设备,基本都是靠这些方法解决通讯问题。踩过的坑多了,自然就总结出了这套相对稳定的做法。希望你照着做完之后,也能少走一些弯路。