EtherCATMaster
EtherCAT 主站的核心类,负责管理整个 EtherCAT 网络的初始化、状态管理、从站控制和 PDO 通信。
类结构
EtherCATMaster // 主站实例
│
├── GetConfig() → MasterConfig& // 通信配置
├── GetDiagnostics() → Diagnostics& // 主站诊断
│
├── GetSlave(n) → Slave& // 从站列表
│ │
│ ├── GetCoE() → CoE& // CANopen over EtherCAT
│ ├── GetSoE() → SoE& // Servo over EtherCAT
│ ├── GetFoE() → FoE& // File over EtherCAT
│ ├── GetEoE() → EoE& // Ethernet over EtherCAT
│ ├── GetAoE() → AoE& // ADS over EtherCAT
│ ├── GetVoE() → VoE& // Vendor over EtherCAT
│ ├── GetFSoE() → FSoE& // 功能安全协议
│ ├── GetCiA402() → CiA402& // 伺服驱动协议
│ └── GetMDP() → MDP* // 模块化设备 (可空)
│
└── Events() → MasterEvents& // 事件集合 (用 On*()/SetPDOCallback*() 注册)
├── SetPDOCallbackSync // PDO 周期回调 (同步, 供 FSoE 等实时控制)
├── OnStateChanged // 主站状态变化
├── OnSlaveStateChanged // 从站状态变化
├── OnSlaveLost / OnSlaveDiscovered // 热插拔 (离线/上线)
├── OnPDOFrameLoss // PDO 丢帧
├── OnDCSyncLost // DC 同步丢失
├── OnRedundancyModeChanged // 冗余模式变化
└── OnSlaveIdentityMismatch / OnSlavePortLinkChanged // 身份不符 / 端口链路
协议实例(CoE、SoE 等)按从站实际能力创建,不支持的协议抛出异常或返回空对象。 事件全部是多订阅者
std::vector<std::function>,必须用On*()/SetPDOCallback*()注册,不能=赋值。详见 事件。