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空间大小、配置数据等信息)
- Device(设备)
对象字典(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分别支持 Buffered Mode 和 Mailbox Mode 两种方式的通讯。
Buffered Mode
缓存模式,是SyncManager提供的一种可以同时读取和写入而不相互影响的模式。但是,如果写入速度大于读出速度,则旧数据就会被舍弃。缓存模式也被称为3缓存模式(3-buffer-mode)
此种模式主要用于EtherCAT总线的周期性数据Process Data,简单理解即PDO。

- 当EtherCAT总线每个周期都将最新的数据存储到①号缓存区。当写入完成之后,缓存区①与缓存区②交换数据。
- 每次控制周期伊始,从站会从缓存区③读取数据,当缓存区③数据读取完成,且缓存区①与②完成了数据交换之后。缓存区②与缓存区③之后再交换数据。
Mailbox Mode
邮箱模式,是一种只能允许交替读写缓存的模式。缓存器同一时间只能缓存区进行一次读或者写的操作,只有写入操作完成,才可以进行读取。
邮箱模式,主要用于EtherCAT总线的非周期性数据MailBox,即SDO。

MailBox 通讯协议(封包)
补充说明MailBox通讯的EtherCAT封包格式。

MailBox Datagram Header

| 字段 | 数据类型 | 描述 |
|---|---|---|
| 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 |