主站 API 结构
EtherCAT 主站的核心接口,负责管理整个 EtherCAT 网络的初始化、状态管理、从站控制和 PDO 通信。
API 结构
所有函数使用 uint16_t master_index(由 Initialize() 返回)标识主站实例。
动态加载模式下,所有函数通过 dll_t 结构体访问:
dll_t dll // DLL 上下文
│
├── 生命周期: Initialize, Dispose, Start, Stop
├── 网络: SetNetwork, GetNetworkInfo, QuickSlaveCount
├── 状态机: SetState, SetStateSequence, SetStateWithTimeout
├── IO: GetIO, WriteSlaveOutput
│
├── 从站属性: GetSlaveVendorId, GetSlaveName, GetSlaveState...
│ ├── PDO 读写: PdoReadInt32, PDOWriteOutputU16, PDOReadDirect...
│ ├── CoE/SDO: dx_sdo_read, dx_sdo_write, GetSlaveSDOList
│ │ ├── CiA 402: CiA402_Enable, CiA402_SetMode, CiA402_ParseState
│ │ └── EMCY: EmcyGetHistory, EmcyClearHistory
│ ├── SoE: dx_soe_read, dx_soe_write, dx_soe_read_name
│ ├── FoE: dx_foe_read, dx_foe_write, dx_foe_read_ex
│ ├── EoE: dx_eoe_set_ip, dx_eoe_send_frame
│ ├── AoE: dx_aoe_send_command, dx_aoe_read_write
│ ├── VoE: dx_voe_send, dx_voe_receive
│ ├── FSoE: dx_fsoe_init_connection, dx_fsoe_get_status
│ ├── DC: SetSyncBySlaveIndex, GetSlaveHasDC
│ └── 启动参数: AddStartupParameter, ClearStartupParameters, ApplyStartupParameters
│
├── 配置: LoadConfigJson, AutoConfigureSM, EcInit, EcClose
├── DC: ConfigureDCAll, EnableDriftCompensation
├── 组管理: SetSlaveGroup, SetGroupCycleDivider
├── 冗余: EnableRedundancy, GetRedundancyStatus
├── 诊断: GetDetailedDiagnostics, GetBreakPoints, GetMasterDiagData
├── 邮箱网关: WriteSlaveRegister, ReadSlaveRegister, SetSlaveWatchdog
│
├── 事件回调:
│ ├── SetLogCallback
│ ├── RegisterPDOCyclicSync
│ ├── RegisterStateChangeSync / RegisterStateChangeAsync
│ ├── RegisterEmergency
│ ├── RegisterDiscoverySync / RegisterDiscoveryAsync
│ ├── RegisterPDOFrameLoss
│ ├── RegisterRedundancyChanged
│ ├── RegisterPreOpReconfig
│ └── SetDCSyncLostCallback