EtherCAT从会到不会——ESI文档、对象字典(4)

本来还想着起什么名字,但是对比起内容,名字什么的一点都不重要。

最近我又想起要写点什么东西防止最后什么都不剩下。那就从EtherCAT开始吧!

ESI(EtherCAT Slave Information)文件

每一个EtherCAT从站都有一份ESI文件。该文件是用于描述从站的信息及功能的。主站也必须通过该ESI文件对从站进行控制。

为了实现主站与从站的通讯,主站所持有的ESI文件一般要与从站内部EEPROM的ESI文件一致。当二者不一致时,则有可能导致EtherCAT通讯建立不起来。

内容结构

ESi文件一般都是以XML格式的文件存在。具体文件内容的格式大致如下

  • EtherCATInfo
    • Vendor(厂商信息)
    • Descriptions(描述)
      • Groups(组,指代ESI文件所描述的设备的类型)
      • Devices(设备组,一个ESI可以包括多组设备)
        • Device(设备)
          • Type(类型,包括产品ID、版本ID、名称)
          • Name(名称)
          • Info(超时信息,包括状态机切换超时、Mailbox通讯超时)
          • GroupType(组类型,如伺服驱动器)
          • Profile(配置文件)
            • ChannelInfo(配置文件版本信息,如Codesys认证过的ESI文件,这个值为402
            • Dictionary(对象字典,描述从站所有支持的OD数据及类型)
          • Fmmu、sm(描述从站的配置信息,要与从站的一致)
          • RxPdo(主站to从站的PDO列表)
          • TxPdo(从站to主站的PDO列表)
          • MailBox(SDO通讯信息,一般为初始化信息,即Codesys设备的启动参数)
          • Dc(从站的同步模式,Free Run、SM Event、Dc Mode)
          • Eeprom(EEPROM空间大小、配置数据等信息)

对象字典(Object Dictionary)

对象字典(Object Dictionary,简称OD)是EtherCAT总线中通用的参数格式。除了部分各个厂家自定部分的数据之外,其他OD定义基本都一样。

分类

Index 组别 描述
0x0000 ~ 0x0FFF 数据格式 ESC配置使用
0x1000 ~ 0x1FFF 通讯 通讯参数
0x2000 ~ 0x2FFF 厂家自定义 一般为厂家自定义参数,如伺服的参数
0x6000 ~ 0x6FFF 通讯对象 CIA 402对象组

通讯方式

周期性数据(Process Data)

由于EtherCAT一般采用COE协议对从站进行周期性数据的交换。所以如不特殊说明,一般讲EtherCAT通讯的周期数据,都是指PDO。主站通过与从站交互PDO数据从而实现对从站设备的实时控制。

非周期性数据(Mailbox)

同理,非周期数据一般就指代SDO

SyncManager

SyncManager用于保证主站与从站之间数据交换的一致性和安全性,并在数据发生改变时,使用中断通知主从站双方。

SyncManager

通讯模式

SyncManager分别支持 Buffered ModeMailbox Mode 两种方式的通讯。

Buffered Mode

缓存模式,是SyncManager提供的一种可以同时读取和写入而不相互影响的模式。但是,如果写入速度大于读出速度,则旧数据就会被舍弃。缓存模式也被称为3缓存模式(3-buffer-mode)

此种模式主要用于EtherCAT总线的周期性数据Process Data,简单理解即PDO。

缓存模式

  • 当EtherCAT总线每个周期都将最新的数据存储到①号缓存区。当写入完成之后,缓存区①与缓存区②交换数据。
  • 每次控制周期伊始,从站会从缓存区③读取数据,当缓存区③数据读取完成,且缓存区①与②完成了数据交换之后。缓存区②与缓存区③之后再交换数据。

Mailbox Mode

邮箱模式,是一种只能允许交替读写缓存的模式。缓存器同一时间只能缓存区进行一次读或者写的操作,只有写入操作完成,才可以进行读取。

邮箱模式,主要用于EtherCAT总线的非周期性数据MailBox,即SDO。

Mailbox

MailBox 通讯协议(封包)

补充说明MailBox通讯的EtherCAT封包格式。

MailBox封包1

MailBox Datagram Header
MailBox封包2

字段 数据类型 描述
Length WORD 该命令的字节数据,不包括Header
Address WORD 从站地址
Channel 6bit 0。保留
Priority 2bit 优先级别:0(最低)~3(最高)
Type 4bit Mailbox类型:
0x0:MailBox Error
0x1: Vendor specific (Beckhoff: AoE – ADS over EtherCAT)
0x2: EoE (Ethernet over EtherCAT)
0x3: CoE (CANopen over EtherCAT)
0x4: FoE (File access over EtherCAT)
0x5: SoE (Servo profile over EtherCAT)
0xF: Vendor specific (VoE)
Ctr. 3bit 用于检测重复帧的序列号,每个新的Mailbox + 1
Reserved 1bit 0

EtherCAT从会到不会——ESI文档、对象字典(4)
https://jacobblog.pages.dev/2026/03/08/EtherCAT-04ESI-OD/
作者
Jacob Chen
发布于
2026年3月8日
许可协议