EtherCAT伺服通讯故障排查:从状态机到汇川InoProShop实战

📅 发布时间:2026/9/9 0:08:15
EtherCAT伺服通讯故障排查:从状态机到汇川InoProShop实战 1. 先别急着接线EtherCAT通讯模型和状态机是排查故障的地基我知道很多人拿到汇川H5U、Easy521或者AM系列控制器第一件事就是把SV660F伺服往EtherCAT口上一插打开InoProShop期望界面里马上出现一个长得像驱动器的设备。实际上我第一次接触EtherCAT时也这么干过结果在扫描网络那个按钮上点了十来次永远只扫到一个主站自己的节点底下的从站像没吃饭一样毫无动静。后来我花了一整天把网线换了个遍甚至怀疑过驱动器的编码器线出了问题最后坐在电脑前翻手册才反应过来EtherCAT通讯不是普通网线连上就行它有一套严格的从站状态管理机制理解这个机制比你会用软件按钮重要得多。1.1 主站与从站的问答游戏一轮EtherCAT通讯到底发生了什么EtherCAT本质上是一个主站发送、所有从站依次转发的实时以太网协议。主站在一个通讯周期比如1ms发出一帧数据这一帧会从第一个从站的IN口进、OUT口出依次穿过所有从站最后回到主站。每个从站在帧经过时把发给自己的数据取出来同时把自己要回传的数据写进帧里的对应位置。所以你可以在周期帧里同时看到主站发给所有从站的数据和所有从站返回给主站的数据这是它和Modbus轮询完全不同的地方——效率高一个周期所有站都能通信。这个机制决定了第一个排查原则如果中间某个从站掉线、断电或者网线没插紧它下游的所有从站也会跟着失联因为帧被卡住了。很多人发现第三个从站报错就去查第三个其实问题可能出在第一个和第二个从站之间的网在线。这是EtherCAT菊花链连接跟Profinet星型组网最大的思维差异也是新手排查时最容易走偏的地方。换句话说EtherCAT不是每个站独立通信而是一根绳子上的蚂蚱中间任何一个环节断了后面的全完蛋。1.2 状态机不只是概念Pre-Op、Safe-Op、Op每个状态卡住都对应一类问题EtherCAT从站有四个运行状态Init、Pre-Op、Safe-Op、Op。主站和从站之间的每一次状态切换都需要从站自己确认我准备好了主站不能强行把从站拖进Op状态。这四个状态的分工非常清晰Init只能做寄存器级别的通信比如读从站EEPROM、写站地址。Pre-Op邮箱通信已建立可以读写对象字典、下载PDO映射参数。Safe-Op输入数据从站到主站已经有效从站开始向主站反馈实际状态但输出主站到从站的控制数据被禁止。对伺服来说此时驱动器的使能回路不会动作。Op输入输出全部有效伺服才能被真正控制。明白这个之后你在InoProShop里看到从站状态长时间停在Safe-Op就要知道它其实是陷入了某个安全问题而不是没通讯上。最常见的两个原因一是PDO映射长度超过主站配置的帧数据长度二是看门狗时间配置有问题从站在等待安全数据刷新时超时了。后面我会详细讲这两类情况的处理方式但你心里要先有一个框架状态卡在哪个阶段问题就在哪个阶段对应的配置层而不是盲目去拧网线。2. InoProShop主站配置的完整步骤从新建工程到从站上线把状态机模型装进脑子里以后再回头配置InoProShop思路就顺多了。下面这套流程我基本每次调试都这么走不敢说百分百不出问题但至少能把配置阶段的低级错误全部挡在门外。2.1 新建工程时的三个关键选择设备型号、固件版本、总线周期打开InoProShop新建工程时第一件事是选择PLC实际型号这个别选错比如H5U和H5U-AS、Easy521和AM402虽然都叫InoProShop但固件结构、支持的运动控制指令集不完全一样。选错型号最直接的后果是后面扫描到的EtherCAT主站配置界面都不一样网上很多教程你看着照着做结果界面对不上大概率就是型号选错了。另外H5U这类小型PLC的EtherCAT主站能力和AM系列这类中大型控制器的能力是有差别的比如可带从站数量、周期抖动表现选型时也要心里有数。第二个关键选择是固件版本。如果你手里的PLC是旧固件而InoProShop是新版本连接时软件往往会提示固件需要升级或者工程和实际设备版本不匹配。我的建议是能升固件就升升完再做总线调试否则可能会出现从站明明配置正确但主站就是进不了Op这种玄学问题。汇川固件升级工具在官网能找到操作不复杂但升级过程中不要断电升级完记得重新上电让PLC完全复位。第三个是总线周期。EtherCAT主站的通讯周期通常也叫同步周期InoProShop里默认一般是1ms或2ms对于多数定位、同步应用够用了。如果你追求更高的性能比如伺服电流环周期125us、250us这种再往下压周期。不过我要提醒一点周期设得越小主站CPU负担越大同时对网线质量和现场干扰越敏感。新手初次调试不要一上来就追求小周期先用1ms把通讯捋顺后面再优化。一个稳定的1ms通讯比一个时不时断一下的250us通讯实用得多——稳定压倒一切。2.2 添加从站最容易忽略的一步XML设备描述文件的来源与导入很多人扫描不到从站或者扫描到了但添加不了问题往往出在XML文件上。EtherCAT里每个从站设备都有一个XML描述文件里面描述了设备支持的PDO、对象字典、同步管理器配置、设备名称、版本号等等。主站靠这个文件认识从站。InoProShop自带的从站库里不一定有SV660F的XML或者说就算有版本也不一定跟你的驱动器固件匹配。我的经验是去汇川官网下载对应驱动器型号的XML最好找你手上固件版本对应的版本。SV660F的资料包里通常有一个EtherCAT文件夹里面就是xml和esi文件。下载完之后在InoProShop的从站设备管理界面里导入具体入口一般叫设备描述文件管理或者从站库管理。导入后在添加从站的列表里就能看到SV660F了。这里有一个容易忽略的版本细节同一型号驱动器不同固件版本对应的XML可能不同尤其在PDO默认映射上有差异下载时看清楚固件版本号再选。这里有一个新手最容易踩的坑不导入XML直接在扫描结果里手动添加一个Generic Slave或者通用的EtherCAT从站。结果虽然也能扫描到但PDO映射、同步参数全部要手写而且一旦和实际设备支持的映射不一致从站就会卡在Pre-Op或者Safe-Op。我见过太多人在这一步浪费大半天最后删掉重来。记住EtherCAT通讯这种事一定让厂商的XML文件来告诉你从站长什么样不要自己猜。2.3 从站扫描失败时按物理层到数据链路层的顺序排查扫描是InoProShop里一个带网络图标的按钮点了之后软件会尝试从EtherCAT口往外发广播帧把所有在线的从站找出来。扫描失败的常见情况有两种一个都扫不到或者只扫到部分从站。一个都扫不到优先怀疑物理链路。检查PLC的EtherCAT口通常标着ECAT或者MASTER到第一个从站IN口的网线是不是好的从站与从站之间是不是上一站OUT到下一站IN很多人把IN和OUT接反了导致帧完全传不下去。EtherCAT对网线质量要求比较高最低也要用工业超五类屏蔽网线普通办公室网线在实验室短距离可能能用到了现场强电干扰环境下就各种妖蛾子。建议现场常备一根确认是好的短网线排查时直接替换最靠近主站的那一段能用最小代价判断问题范围。只扫到部分从站那问题几乎可以锁定在最后一个正常从站和第一个异常从站之间。前面说了EtherCAT是串联帧结构断点在哪个站哪个站和它后面的所有站都会消失。另外还有一种隐蔽情况从站地址冲突。EtherCAT从站在断电状态下通过EEPROM保存站地址如果两个从站是同一个厂家默认地址比如都是0或者都是同一个站号扫描时主站会识别混乱。我建议在把驱动器挂到PLC上之前先用伺服调试软件或者驱动器面板把每个从站的站地址设为不同的值比如1、2、3并记录下哪个轴对应哪个站号。3. PDO映射、SM同步与CIA402能扫到站但轴动不了的根源剖析如果从站能扫描到状态也能进Op但电机就是不动那你遇到的就是另一类问题过程数据映射和伺服状态机层面的问题。这一类故障占新手通讯正常但功能异常的绝大比例也是网上资料最少、最讲不清楚的部分。3.1 数据通道的建立RxPDO/TxPDO与对象字典的关系EtherCAT从站的运行数据走的是SM同步管理器通道一般SM2对应主站到从站的数据也就是输出对伺服来说就是控制字、目标位置这些SM3对应从站到主站的数据输入状态字、实际位置这些。每个通道里面跑的是PDO映射。PDO映射可以理解成把对象字典里的若干条目打包成一个数据快递包裹。比如你希望主站能控制伺服的位置那就得把控制字0x6040、操作模式0x6060、目标位置0x607A这些对象打包进RxPDO。如果从站里没这个映射你就算在PLC程序里给目标位置赋值伺服也收不到。同理如果你想监控驱动器当前扭矩就得把0x6077这类扭矩对象加进TxPDO否则就算驱动器在内部憋着一股劲主站这边也看不到数值。汇川SV660F的XML默认PDO映射一般是够用的位置模式、速度模式常用对象都在里面。但如果你用的是别人编辑过的从站配置或者某些特殊功能就需要手动改PDO。手动改的时候注意两点一是每个PDO包含的对象数量不能超过从站SM通道允许的最大长度二是映射里的对象索引、子索引必须和该从站实际支持的一致写错一个从站切到Op时就会报配置错误甚至干脆拒绝进入Op。我自己就吃过一次亏把0x6060写成了0x6061结果状态字里的模式显示一直不对轴动起来的速度跟设定的目标速度完全对不上排查了一个多小时才发现是映射对象写反了。3.2 SM2/SM3同步类型选择0x0001还是0x0002DC时钟到底管什么PDO映射正确了再看同步方式。InoProShop的从站配置参数里通常能看到同步模式或者SM同步类型常见值是0x0001和0x0002。0x0001表示SM同步事件驱动从站收到SM2通道的数据更新事件后就认为这一轮通讯完成。它对主站周期要求宽松但对多个从站之间的同步精度帮助有限。0x0002表示DC分布式时钟同步SYNC0事件从站依靠类似IEEE 1588的时钟同步机制跟主站和上游从站校准时间然后在一个精确的时刻点同时执行控制运算。多轴同步控制、电子凸轮、插补这种应用基本都要用0x0002。我的建议是单轴调试0x0001和0x0002都能跑不必纠结多轴联动或者运动控制精度要求高的场合统一用DC同步并且在InoProShop的EtherCAT主站配置里把DC相关参数打开。改完同步类型后从站需要重新上电或者重新触发状态切换才生效如果你改了同步类型之后发现状态到不了Op先断电重启从站很多时候就好了。另外如果现场有多个品牌的从站混用要注意它们对DC同步的支持程度是否一致一个不支持的从站往往会把整条链路的同步模式拉回SM同步导致其他轴同步精度下降。3.3 伺服使能失败的真正原因CIA402状态机的控制字与状态字逻辑伺服驱动器在EtherCAT总线里遵从CIA402协议使能一个轴本质上就是驱动状态机按顺序走到位。新手最常见的错误是在PLC程序里直接把控制字0x6040写成0x000FEnable Operation结果发现轴没反应。为什么因为0x6040从0直接跳到0x000F大多数驱动器不认这种跳步。正确顺序是先发0x0006Shutdown驱动器进入Ready to Switch On再发0x0007Switch On进入Switched On最后发0x000FEnable Operation进入Operation Enabled。有些驱动器支持快速使能但从不同状态开始一次就跳到0x0F不一定成功。你可以用状态字0x6041来判断当前到底卡在哪状态字的bit0表示Ready to Switch Onbit1表示Switched Onbit2表示Operation Enabled。如果发完0x0F之后bit2一直不置1那么原因多半是驱动器有报警比如急停、正负限位触发、驱动器过温、编码器故障。这时候光在InoProShop里看通讯状态是看不出名堂的要去驱动器面板或者InoDriverShop调试软件里看报警码。另外还有一个隐藏门槛在使能之前要把操作模式0x6060设对。位置控制模式是1速度模式是3原点回归模式是6。如果你用的是MC_Power、MC_MoveAbsolute这类PLCopen运动指令InoProShop的轴配置里通常已经帮你把模式管理了但如果你直接通过PDO写目标位置就得自己先把0x6060写好否则轴就算使能了收到位置指令也不会按位置模式动。我遇到过不少现场PLC程序里状态字已经显示使能成功但一给目标位置电机就原地不动最后查下来全是操作模式没设为位置模式。4. 通讯故障完整排查链路从InoProShop在线诊断到Wireshark抓包通讯故障分两类一类是配置错一类是现场环境导致偶发断线。配置错的问题在上面章节基本都能找到答案偶发断线这类就得靠诊断和抓包了。4.1 InoProShop自带诊断的使用思路错误码和从站状态先看哪个InoProShop在线连接PLC后设备树上的EtherCAT节点和每个从站节点都会显示状态颜色。绿色正常灰色离线黄色或者红色多半就是异常。右键从站节点通常能看到详细信息包括当前状态、请求状态、错误代码。我建议的查看顺序是先看从站停在哪个状态Pre-Op还是Safe-Op再看请求状态是什么一般是Op然后看错误码。状态停在哪里往往比错误码本身更能缩小问题范围。比如停在Pre-Op说明邮箱通信没建立或者对象字典下载失败重点查XML和站号停在Safe-Op说明输入输出通道的看门狗或者PDO映射有问题重点查SM配置如果状态在Op和Safe-Op之间反复跳那就要考虑看门狗超时、网线干扰、供电不稳这些外部因素了。错误码本身也别死记记不住是正常的。把错误码贴到搜索引擎或者汇川技术社区里搜一下比你自己翻半天手册快。有条件的话直接把InoProShop的报警截图带到售后群里比干说我电机不动高效十倍。这里还有一个很多新手不知道的小技巧从站节点右键菜单里通常有清除错误或者重置之类的选项调试过程中清一次错误、重新初始化从站往往能让卡死的状态机重新走一遍省去断电重启的麻烦。4.2 Wireshark抓EtherCAT报文网卡选择、过滤规则与关键帧阅读当问题上升到状态来回跳偶发断线这种级别InoProShop那点诊断信息就不够用了得抓包。很多人一听抓包就以为必须买专用硬件其实EtherCAT抓包用Wireshark加普通有线网卡就能做一大半工作。操作步骤很简单准备一台装了Wireshark的电脑用普通网线把电脑网口接到EtherCAT网络中你想观察的位置。打开Wireshark选择对应的有线网卡开始抓包。在显示过滤器里输入ecat或ethercat过滤出EtherCAT报文。观察周期性数据帧是否存在、数据长度是否稳定、是否有大量错误帧重传。EtherCAT的以太网帧类型是0x88A4Wireshark一般会自动识别协议显示成EtherCAT或者ECAT。如果抓到的是普通IP包而不是EtherCAT说明你接的网口不对或者链路根本不是总线链路。抓包重点看两件事第一个是从站启动瞬间的状态机切换报文能看到主站发的位置信息比如APWR、FPWR命令以及从站是否回应了错误第二个是正常运行时的周期帧如果你把周期设在1ms那理论上每秒应该有接近1000帧周期数据。如果帧数忽多忽少或者频繁出现ECAT错误帧那现场干扰或者网线的嫌疑就非常大了。这里有一个新手容易犯的错用笔记本电脑的无线网卡去抓包那是抓不到的。EtherCAT抓包必须用有线网卡无线网卡收不到这种组播性质的EtherType帧。调试现场最稳妥的做法是让PLC保持运行把电脑插到最后一个从站的OUT口后面相当于临时延长链路不影响原有通讯。另外抓包过程本身会增加一点网络压力如果现场设备正在生产调试尽量选在设备停机或者允许通讯短暂停顿的窗口期内操作。4.3 高频故障对照表断线、站地址冲突、XML不匹配、看门狗超时排查到最后百分之八九十的EtherCAT通讯故障逃不出下面这张表。我把它列出来排查的时候直接对号入座效率高很多。故障现象最常见原因解决动作扫描不到任何从站网线物理不通、IN/OUT接反检查网线质量、换个网口试、确认从站IN/OUT扫描到部分从站断点在上一个正常站和异常站之间检查断点位置的网线和供电从站地址冲突多个从站站号相同用调试软件或面板改站号重新上电从站卡在Pre-OpXML不匹配、对象字典访问失败下载对应固件版本的官方XML重新添加从站卡在Safe-OpPDO映射长度超限、SM同步配置错误检查Rx/TxPDO映射和同步类型必要时恢复默认映射状态在Op和Safe-Op间反复跳看门狗超时、周期设置过短增大看门狗时间、适当调大总线周期、检查干扰使能后立即报警驱动器报警、限位/急停触发查看驱动器报警码排除外部使能条件偶发断线但看不出规律电磁干扰、从站供电不足检查屏蔽层接地、从站电源容量、换高质量工业网线5. 汇川SV660F伺服从站配置实测从驱动器参数到点动验证空讲配置容易飘我拿SV660F举个完整的实测例子。这台驱动器在汇川的伺服产品线里属于总线型EtherCAT是它的主通讯方式配H5U或AM系列很常见也是目前市场上用的最多的一套组合。5.1 驱动器端需要提前确认的参数站地址、控制模式、恢复出厂SV660F上电后先用驱动器面板或者InoDriverShop软件确认三件事第一控制模式必须是总线模式。SV660F虽然主要是总线型但也支持一些本地IO控制、脉冲输入的配置选项。如果你发现驱动器使能了但不动先检查功能码里控制模式是不是设成了类似EtherCAT位置模式的选项。有些新手从别的项目里拿来一台SV660F上家可能把它设成了速度模式或者转矩模式直接挂到EtherCAT上当然不对。第二站地址。也就是CIA402协议里的从站地址面板或者软件里一般叫站号或者Station Address。把它按物理布局设为1、2、3这样的独立值。很多新手在这步省事结果两台驱动器都默认站号0扫描时主站就懵了。这里特别提醒改站号之后一定要重新上电才能生效而且不要在一个从站上电的瞬间去拨拉面板容易写入失败。第三编码器线数和电子齿轮比。EtherCAT总线控制下位置指令的单位通常可以直接设成用户单位。SV660F的对象字典里有齿轮比相关对象默认1:1就能用。如果你希望指令单位和实际机械位移对上比如一个用户单位等于0.01mm那就需要结合丝杠导程、减速比去算齿轮比。这个算错的结果是轴能转但转的距离和设想完全对不上看起来像神经刀。这个配置最好在InoDriverShop里算好写进驱动器然后再去PLC侧做位置单位设置。5.2 PDO映射实操清单位置模式下必须包含的对象在InoProShop里成功添加SV660F从站后默认PDO映射一般已经包含了常用的基本对象。如果你和我一样习惯自己检查一遍位置模式下至少要保证下面这些对象在映射里RxPDO主站到从站控制字0x6040操作模式0x6060目标位置0x607A目标速度0x60FF可选有些场景用TxPDO从站到主站状态字0x6041操作模式显示0x6061实际位置0x6064实际速度0x606C映射对象不在上面列表里也没关系不要照抄以你手上SV660F版本XML里实际支持的为准。关键是逻辑主站得能写控制从站得能回报状态缺少任何一环你后面写的PLC程序再漂亮轴也动不起来。改完之后一定要做一次重新下载配置或者重新触发状态机切换让PDO映射在从站里生效。这一步很多人漏掉结果在软件里看映射是对的从站实际用的还是旧映射排查半天才发现是没下载。另外如果同一台PLC挂了多台伺服要逐台检查映射不要以为第一台配好了后面几台应该也一样。5.3 从通讯正常到轴能转使能、点动、回零的完整验证顺序第一次调试我从不在PLC程序里直接写运动指令而是按顺序手动验证每步都确认无误再往前走在InoDriverShop里用面板点动确认电机本身能转、编码器反馈正常。这一步如果都过不去说明问题在驱动器层面跟EtherCAT还无关先把报警解决掉。在InoProShop在线状态下观察从站状态是否稳定在Op。看从站节点颜色和状态字确认状态没有反复跳。手动写控制字使能。可以临时用一个辅助程序块或者直接用InoProShop的在线监控功能强制写对象字典走一遍0x06、0x07、0x0F的使能流程同时盯着状态字bit2是否变成1。使能后用手动方式给目标位置一个很小的值比如1000个用户单位观察伺服是否转动、实际位置是否跟着变。全都不再动了继续测回零。原点回归模式设6触发回零确认回零速度和方向参数正确。一些现场回零不了的案例多半是原点开关信号没有映射到驱动器输入里或者回零方向设反导致一直撞限位。这个顺序的价值在于每一步都把故障范围压缩到最小。如果第一步就过不去你没必要去折腾总线如果第三步过不去问题在CIA402状态机不在网络如果第四步不动那才轮到PDO映射、目标位置单位转换这些环节。把这些节点一个个验证过去你就知道该把精力花在哪个环节了而不是像无头苍蝇一样到处乱试。6. 新手通讯故障避坑清单这些细节我浪费过一整天最后我把这些年踩过的坑整理成一张清单全是扣细节的东西大部分不在说明书里明说但现场调试十次有九次栽在它们手上。6.1 十个高频故障原因与对应检查动作IN/OUT口接反总线从站都标了IN和OUT从主站出来必须先进上一站的IN再从OUT进下一站的IN。接反了那个站没反应后面的全跟着消失。网线质量不合格实验室用普通网线偶尔能通一到现场电柜里就失灵。EtherCAT建议用工业超五类屏蔽网线水晶头带屏蔽壳尽量自己压线并确认线序。屏蔽层没有可靠接地干扰导致的偶发断线、看门狗超时八成和屏蔽层处理有关。屏蔽层要单端接PE不能两端都接否则可能形成地环路反而引入更多干扰。从站地址重复两个从站都是默认站号扫描结果乱掉。上电前用调试软件把站号改成独立值。固件版本不匹配SV660F固件太老InoProShop新版软件的XML与之不兼容。尽量保持驱动器和PLC固件都升级到较新版本。没有下载PDO映射改完映射没重新下载从站用的还是旧配置。改完一定要触发重新下载并让从站重新初始化。看门狗超时周期数据中断超过设定的看门狗时间从站会主动断开输出。如果现场偶发断线把看门狗时间适当放宽同时排查干扰源。周期设置过小一个1ms周期都跑不稳的现场非要去压到500us。先稳定在1ms再逐步优化。使能顺序跳步控制字直接发0x0F不按0x06、0x07、0x0F走轴就是不使能。按CIA402顺序来慢一点但稳定。XML版本不对用旧XML配新固件驱动器映射对不上。去官网下载和固件匹配的XML。6.2 我自己的调试习惯让现场少走弯路写了这么多其实方法都不难难的是养成习惯。我现在每做一套EtherCAT配置都强制自己走这几步先在纸上画好物理拓扑标清每个从站站号和物理位置再给从站起名字比如X轴伺服Y轴伺服不要留着默认的Slave_1配置完成后把InoProShop工程另存为一个带日期的版本防止后续改参数改坏了没法回退每次到现场接线前先用万用表确认从站电源和PE都正常再插网线。还有一个小技巧是我后来才发现的InoProShop里如果从站配置做过修改下载完程序之后最稳妥的做法是给所有从站断电重新上电再让PLC运行进入Op。这个操作能清掉很多古怪的中间状态。很多下载后莫名报警的案例重启一下从站就好了这不是玄学只是从站内部保存的旧配置残留还没被完全刷新掉。最后再多说一句EtherCAT调试最忌讳的就是一个参数一个参数去试。先把状态机、PDO、同步、使能这几层逻辑理清楚再结合官方XML和一个稳定的1ms周期绝大多数通讯问题根本不会发生。真遇到疑难杂症拿Wireshark抓包配合错误码也比盲猜高效得多。希望这份指南能帮你少走几步弯路把时间花在真正该花的地方——把设备调顺把项目交付。