EtherCATMaster
EtherCAT 主站的核心结构体,负责管理整个 EtherCAT 网络的初始化、状态管理、从站控制和 PDO 通信。
类结构
EtherCATMaster // 主站实例 (RAII)
│
├── config() → MasterConfig<'_> // 通信配置
├── diagnostics_info() → MasterDiagnosticsInfo<'_> // 主站诊断
├── master_od() → MasterObjectDictionary<'_> // ETG.1510 主站对象字典
├── mailbox_gateway() → MailboxGatewayService // ETG.8200 邮箱网关
│
├── slave(n) → Slave // 获取从站句柄 (1-based)
├── slaves() → Vec<Slave> // 所有从站句柄列表
│
├── events() → MasterEvents // 事件集合
│ ├── on_pdo_cyclic_async() // PDO 周期回调(异步)
│ ├── on_pdo_cyclic_sync() // PDO 周期回调(同步)
│ ├── on_slave_state_changed() // 从站状态变化
│ ├── on_emergency() // 紧急事件
│ ├── on_slave_offline() / on_slave_online() // 热插拔
│ ├── on_pdo_frame_loss() // PDO 丢帧
│ ├── on_dc_sync_lost() // DC 同步丢失
│ ├── on_redundancy_mode_changed() // 冗余模式变化
│ └── on_input_data_changed() // 输入 PDO 数据变化
│
└── Slave // 从站句柄
├── sdo_read_value::<T>() / sdo_write_value() // 类型化 SDO 读写
├── io() → (out_size, out_ptr, in_size, in_ptr) // IO 映射
├── events() → SlaveEvents // 从站级事件
├── dc() → SlaveDC // DC 同步配置
├── soe() → SoEInstance // Servo over EtherCAT
├── foe() → FoEInstance // File over EtherCAT
├── eoe() → EoEInstance // Ethernet over EtherCAT
├── aoe() → AoEInstance // ADS over EtherCAT
└── voe() → VoEInstance // Vendor over EtherCAT
从站协议实例通过
Slave的方法直接获取。CiA 402 需独立构造CiA402Instance,FSoE 需使用FsoeManager/FsoeMdp。