0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

技术干货:EtherCAT设备ESI(XML)文件中的CompleteAccess关键字有什么作用

HMS 来源:jf_63150269 2026-05-28 17:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

问题背景

EtherCAT 协议凭借其良好的开源性以及低延时的通信效率,吸引了众多 PLC 厂家纷纷选择对其提供支持。由于各品牌 PLC 所支持的 EtherCAT 主站大部分采用自研方式,在这样的背景下,不同品牌的主站难免会在性能与行为上存在差异,对从站不同特性的支持程度也各不相同(如 PDO 配置、邮箱通信长度调整及 SM 分配等)。

因此,行业内常常会出现一个完全符合 EtherCAT 从站标准的设备,却无法与所有品牌的 PLC 都完美适配的问题。在 EtherCAT 从站设备的 ESI 文件中包含许多关键字,本次我们将直接通过一个具体实例,来谈一谈 CompleteAccess 关键字对通信产生的影响。

最近我司的 Anybus CompactCom 40 系列的 EtherCAT 从站模块在终端用户现场与欧姆龙 PLC 适配多次出现了欧姆龙 NX 系列(NX501、NX701)PLC 诊断信息提示 Anybus CompactCom 40 模块状态由 PRE-OP 切换到 SAFE-OP 切换失败。


图1 EtherCAT状态机
参考倍福《EtherCAT_Device_Protocol_Poster》

出现问题之后我们第一时间通过倍福的 TwinCAT EtherCAT 主站以及欧姆龙的 NJ501 PLC 测试客户手上的 Anybus CompactCom 40 EtherCAT 模块,测试通信完全正常,由于 TwinCAT 的 EtherCAT 主站开发得较为完善,因此我们认为 Anybus CompactCom 40 EtherCAT 模块是没有问题的。

欧姆龙 NJ501 PLC 与模块的通信也是正常的,这不禁让人费解,问题会出在哪里。从 PLC 诊断信息上我们已经获取不到任何帮助了,只能通过分析欧姆龙 PLC 与 Anybus CompactCom 40 EtherCAT 模块之间的通信报文,获取一些线索了。

图2 Anybus CompactCom EtherCAT PCIE/SPI/UART板卡

我们通过 Anybus EtherTAP 1G 网络抓包工具抓取了 EtherCAT 从站模块与欧姆龙 PLC 之间的通信报文。EtherTAP 是通过采样复制流经该模块 A/B 口之间的网络报文电信号并传输到 WireShark 报文分析软件中,不参与也不影响实际的通信网络,可以抓取十分干净原始的报文,方便诊断分析。

图3 Anybus EtherTAP抓包工具


问题分析

通过 PLC 提示的模块是由 PRE-OP 切换到 SAFE-OP 切换失败,基于从站状态机切换所需的工作流程,我们将问题初步定位在 PDO 配置上,大部分的 EtherCAT 主站在与从站建立通信的过程中都会依据从站的 ESI(XML)文件提供的信息在初始化时向从站写入 PDO 配置。

问题分析:由报文可以看出,NX701 PLC 在重启后与 Anybus CompactCom 40 EtherCAT 建立通信的过程中未对 0x1600、0x1601,0x1a00、0x1a01 等 PDO 对象进行初始化写入,仅初始化了 0x1c12、0x1c13(见下图 4),而在另一款欧姆龙 NJ501 PLC 与从站 Anybus CompactCom 40 EtherCAT 建立通信过程中对其 0x1600、0x1601,0x1a00、0x1a01 等 PDO 对象进行了初始化写入(见下图 5)。

图4 NX701与从站异常报文

图5 NJ501与从站正常报文

由于报文中没有发现主站对 PDO 的编辑配置报文,且主站不主动切换从站的状态机,而 ESI 文件中 PDOAssign 与 PDOconfig 关键字都已置 1,这是必须使能的功能,而 CompleteAccess 关键字是有可能影响主站配置从站 PDO 的行为的,CompleteAccess 关键字打开意味着主站会通过一次邮箱通信将 PDO 配置信息全部写入从站,此次从站的每个 PDO 中都包含多个 PDO Entry,CompleteAccess PDO 配置需要较长字节的邮箱通信。但是一般情况下主站可以通过分段下载解决邮箱长度不足的问题,在之前 NX701 和从站通信的报文中也没有看到邮箱通信 Segment download 的关键字,因此 CompleteAccess 关键字使能有可能影响了通信。

图6 邮箱分段通信协议报文示例

为了排除这一可能,通过修改 Anybus CompactCom 40 EtherCAT 模块的 ESI 文件,将 Anybus CompactCom 40 EtherCAT ESI 文件中的 CompleteAccess 置 0,关闭该功能,NX701 PLC 与 Anybus CompactCom 40 EtherCAT 在 EtherCAT 通信恢复正常,问题终于得到解决。报文中可看到,在关闭 CompleteAccess 功能后,NX701 PLC 通过单个对象写入的方式对 Anybus CompactCom 40 EtherCAT 0x1600、0x1601,0x1a00、0x1a01 等 PDO 对象进行了正常的初始化写入操作,见下方部分报文截图(图 7)。

由此可见确实是 CompleteAccess 关键字影响了 PLC 对从站的通信的初始化流程。

到这里问题终于得到了解决,由于问题出现在现场,一时也找不到 NX701 PLC 做测试,一开始仅通过 NJ501 PLC 做测试,却没有发现任何问题,而现场终端的保密策略,更给问题分析带来了不小的阻力,最终通过与终端客户反复沟通,终于得到抓取报文的允许,得到允许后,在现场人员的帮助下,很快就获取了报文,并定位出问题,在此也十分感谢现场的人员配合与帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 关键字
    +关注

    关注

    0

    文章

    38

    浏览量

    7254
  • ethercat
    +关注

    关注

    20

    文章

    1630

    浏览量

    46365
  • 工业通信
    +关注

    关注

    0

    文章

    298

    浏览量

    16214
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关键字搜索文件某个TXT文件

    文件随时创造TXT文件,如何及时选出刚创造的文件?或关键字搜索出需要的TXT文件
    发表于 02-06 15:22

    介绍一下关键字extern的用法

    学单片机C语言一定要熟悉关键字的用法,本文介绍一下关键字extern的用法。1、extern的定义是:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件,提示编译
    发表于 07-15 06:38

    关键字static的作用是什么

    文件的ifndef/define/endif 的作用?1.关键字static的作用是什么1). 在函数体,一个被声明为静态的变量在这一函
    发表于 11-09 07:23

    ROMCODE关键字作用

    ROM,RAM以及code,dataram掉电丢失rom掉电不丢失因为单片机RAM很有限,所以将不变的保存到ROMCODE关键字作用就是告诉编译器把这些内容写到ROM以 AT89
    发表于 12-08 07:51

    在C语言中关键字static的作用是什么

    在C语言中关键字static的作用是什么?用预处理指令#define 声明一个函数,输入天数得到多少秒?
    发表于 12-24 06:53

    在嵌入式定义变量时volatile关键字作用是什么?

    在嵌入式定义变量时volatile关键字作用?
    发表于 10-24 07:50

    XML流上的关键字查询算法

    针对当前XML 流过滤研究存在的问题,使用关键字查询方法作为解决方案。提出最右包含边界的概念,结合一个虚拟栈实现用于在XML 数据流上进行关键字
    发表于 03-21 15:07 14次下载

    混合Chord网络的有效关键字检索

    对基于分布式哈希表的Chord网络进行文件的精确匹配。采用反向索引方法可以实现基于关键字的检索,但难以解决普遍关键字问题。HIKEC是基于IMS的移动P2P文件共享服务网络架构,采
    发表于 04-22 08:49 17次下载

    javastatic关键字作用

    static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后
    发表于 09-27 17:12 0次下载

    C++与C的const关键字何差别?

    C++与C的const关键字何差别?
    的头像 发表于 02-03 14:51 2874次阅读

    C++mutable关键字详解与实战

    mutable关键字详解与实战 在C++mutable关键字是为了突破const关键字的限制,被mutable关键字修饰的成员变量永远处于
    的头像 发表于 09-10 09:23 6304次阅读

    ARM关键字的具体使用

    今天在使用 Keil (主要是 armcc 编译器)编译代码(华大的 MCU 驱动库hc32f46x_interrupts.h / c)的时候遇到了 __weak 关键字的函数不起作用的问题,甚是
    的头像 发表于 02-10 15:06 2514次阅读

    快速掌握C语言关键字

    C语言中的32个关键字你知道多少个呢?根据关键字作用分为四类:数据类型关键字、控制语句关键字、存储类型
    的头像 发表于 07-06 08:04 1609次阅读
    快速掌握C语言<b class='flag-5'>关键字</b>

    ESI文件详解:让EtherCAT网络配置更智能!

    进行通信。在EtherCAT网络,工程师可以使用所有从站的ESI文件去高效地完成系统的配置。借助Acontis的EC-Engineer等工具,可以将
    的头像 发表于 05-09 17:39 2905次阅读
    <b class='flag-5'>ESI</b><b class='flag-5'>文件</b>详解:让<b class='flag-5'>EtherCAT</b>网络配置更智能!

    EtherCAT设备ESI(XML)文件CompleteAccess关键字什么作用

    EtherCAT从站ESI文件CompleteAccess关键字开启后,主站需通过一次邮箱通信
    的头像 发表于 05-20 16:27 236次阅读
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>设备</b><b class='flag-5'>ESI</b>(<b class='flag-5'>XML</b>)<b class='flag-5'>文件</b><b class='flag-5'>中</b>的<b class='flag-5'>CompleteAccess</b><b class='flag-5'>关键字</b><b class='flag-5'>有</b>什么<b class='flag-5'>作用</b>