同步管理器 (SM) 与 FMMU
新手知识
SM 和 FMMU 是 EtherCAT 从站芯片内部的硬件模块,主站会根据 ESI 文件自动配置,你通常不需要手动设置。了解它们的作用有助于排查问题,但不影响日常开发。简单理解:SM = 数据缓冲区管理,FMMU = 地址映射。
同步管理器 (SyncManager)
SM 保证数据一致性,防止读写冲突:
| SM | 类型 | 方向 | 用途 |
|---|---|---|---|
| SM0 | Mailbox | 主站→从站 | Mailbox 输出 |
| SM1 | Mailbox | 从站→主站 | Mailbox 输入 |
| SM2 | Buffered/PDO | 主站→从站 | 过程数据输出 |
| SM3 | Buffered/PDO | 从站→主站 | 过程数据输入 |
SM 的工作模式
同步管理器支持两种缓冲模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Buffered (三缓冲) | 写入不阻塞读取,始终提供最新数据 | PDO 过程数据(SM2/SM3) |
| Mailbox (握手) | 写入后锁定,读取后释放 | 邮箱通信(SM0/SM1) |
SM 与 PDO 通道的关系
- SM2 管理输出通道(主站→从站),接收 RxPDO 数据
- SM3 管理输入通道(从站→主站),发送 TxPDO 数据
- SM 自动处理数据一致性,应用层读写不会与总线通信冲突
FMMU (现场总线内存管理单元)
FMMU 的作用
FMMU (Fieldbus Memory Management Unit) 实现逻辑地址到物理地址的映射,使主站可以用统一的逻辑地址空间访问所有从站的数据,无需关心每个从站的物理内存地址。
为什么需要 FMMU?
在没有 FMMU 的情况下,主站需要逐个从站发送读写命令(使用物理地址),效率低下。FMMU 将多个从站的数据映射到一个连续的逻辑地址空间,主站只需一次读写操作即可访问所有从站数据。
FMMU 映射参数
每个 FMMU 通道包含以下配置:
| 参数 | 说明 |
|---|---|
| 逻辑起始地址 | 在逻辑地址空间中的起始位置 |
| 数据长度 | 映射的数据大小(字节) |
| 逻辑起始位 | 位级别的起始偏移(0-7) |
| 逻辑结束位 | 位级别的结束偏移(0-7) |
| 物理起始地址 | ESC 内部的物理内存地址 |
| 方向 | 读(输入)或写(输出) |
FMMU 与 SM 的协作
FMMU 和 SM 配合工作,完成从逻辑地址到从站应用层的完整数据通路:
主站发送帧 (逻辑地址 LRW)
↓
FMMU: 逻辑地址 → 物理地址(ESC 内部)
↓
SM: 物理地址 → 缓冲区管理(保证数据一致性)
↓
从站应用层读写数据
自动配置
在大多数情况下,SM 和 FMMU 由主站根据 ESI 文件自动配置,用户无需手动设置。Darra EtherCAT Master 在状态切换到 PREOP → SAFEOP 时会自动完成所有 SM 和 FMMU 的配置。