跳到主要内容

Slave 属性与方法

Slave 类代表 EtherCAT 网络中的单个从站设备。

提示
  • PDO 输入输出(结构体映射、字节数组、索引访问等)请参见 PDO 输入输出 页面。
  • 从站事件请参见 事件 页面。
  • 从站诊断请参见 从站诊断 页面。

属性

类别属性类型读写说明
基本标识SlaveNumushort只读从站编号(1-based)
Indexint只读从站索引(SlaveNum 别名)
Namestring只读设备名称(从 EEPROM group_name 读取)
DriveNamestring只读驱动/设备名称(从 SDO 0x1008 读取)
设备信息VendorIduint只读制造商 ID(从 SII EEPROM 读取)
VendorNamestring?只读制造商名称(从 ESI 文件读取)
ProductIduint只读产品 ID
RevIduint只读修订版本号
SerialNumberuint只读序列号(从 SII EEPROM 读取)
DtypeEcDeviceType只读设备类型标识
HasMDPbool只读是否支持模块化设备配置文件(ETG.5001)
BlockLRWbool只读LRW 逻辑读写操作阻止标志
地址ConfigAddrushort只读物理配置地址
AliasAddressushort只读别名地址
状态StateEcState只读从站当前状态
ErrorCodeEcALState只读错误码
IsLostbool只读从站是否丢失(断开连接)
拓扑Topologybyte只读拓扑类型 (0=无链接, 1=端点, 2=中间, 3=分支, 4=交叉)
ParentStationushort只读父从站的站地址
ParentPortbyte只读父端口号
EntryPortbyte只读入口端口号
ActivePortsbyte只读激活端口位掩码
PhysicalTypebyte只读物理端口类型
ChildCountint只读子模块数量
PDO 数据Ibits / Obitsushort只读输入/输出数据位数
Ibytes / Obytesuint只读输入/输出数据字节数
Ioffset / Ooffsetuint只读输入/输出在 IOmap 中的偏移
Istartbit / Ostartbitbyte只读输入/输出起始位
ESI/配置HasEsibool只读是否已加载 ESI 文件
Esinamestring?只读ESI 文件名
EsiVersionstring只读ESI 版本号
ConfigByEsidynamic?只读从 ESI 文件获取的设备配置
EEPROMEep8ByteAddressingbool只读EEPROM 寻址模式(true=8字节, false=4字节)
EepPDIbyte只读物理设备接口(PDI)类型
EbusCurrentshort只读E-bus 电流消耗(mA)
SIIindexushort只读SII EEPROM 配置索引
邮箱MbxProtoMailboxType只读支持的邮箱协议类型(位掩码)
MbxLengthushort只读邮箱发送缓冲区大小
MbxReadLengthushort只读邮箱接收缓冲区大小
MbxReadOffset / MbxWriteOffsetushort只读邮箱读/写偏移
MbxCountbyte只读邮箱协议计数器
协议详情CoEdetailsEcCoEDetails只读CoE 协议功能标志(SDO/PDO Assign/Complete Access 等)
EoEdetailsEcEoEDetails只读EoE 协议功能标志(发送帧/接收帧/IP 参数等)
FoEdetailsbyte只读FoE 协议详情(来自 SII EEPROM)
SoEdetailsbyte只读SoE 协议详情(来自 SII EEPROM)
FMMUFMMU0Functionbyte只读FMMU0 功能类型(bit 0=输出, bit 1=输入)
FMMU1Functionbyte只读FMMU1 功能类型
FMMU2Functionbyte只读FMMU2 功能类型
FMMU3Functionbyte只读FMMU3 功能类型
DCHasDCbool只读是否支持 DC,详见 DC 同步
DCActive / DCCycle0 / DCCycle1 / DCShift只读DC 只读状态,详见 DC 同步
PropagationDelayint只读帧从主站到达此从站的传播延迟(纳秒),详见 DC 同步
其他Groupbyte读写从站分组号(0-7,0=默认组,必须在 SAFE_OP 前设置),详见 从站分组
EcDeviceType 枚举值
public enum EcDeviceType : ushort
{
Undefined = 0, // 未定义
Static = 1, // 静态设备,无IO映射,如EK1100耦合器
InputNoMailbox = 2, // 输入设备(无邮箱)
OutputNoMailbox = 3, // 输出设备(无邮箱)
InputWithMailbox = 4, // 输入设备(有邮箱)
OutputWithMailbox = 5, // 输出设备(有邮箱)
IONoMailbox = 6, // 输入输出设备(无邮箱)
IOWithMailbox = 7 // 输入输出设备(有邮箱)
}
EcTopologyType / EcPortType 枚举值
public enum EcTopologyType : byte
{
NoLink = 0, // 无链接
EndPoint = 1, // 端点
Line = 2, // 中间节点(线性拓扑)
Fork = 3, // 分支点
Cross = 4 // 交叉点
}

public enum EcPortType : byte
{
NotUsed = 0, // 未使用
MII = 1, // MII
EBUS = 2, // EBUS
EBUSEnhanced = 3 // EBUS 增强型
}
MailboxType 枚举值
public enum MailboxType : ushort
{
ErrorMailbox = 0x00, // 错误邮箱
ADSOverEtherCAT = 0x01, // AoE
EthernetOverEtherCAT = 0x02, // EoE
CANopenOverEtherCAT = 0x03, // CoE
FileOverEtherCAT = 0x04, // FoE
ServoOverEtherCAT = 0x05, // SoE
VendorOverEtherCAT = 0x0F // VoE
}
EcCoEDetails 枚举值
[Flags]
public enum EcCoEDetails : byte
{
None = 0x00,
SDO = 0x01, // 支持 SDO
SDOInfo = 0x02, // 支持 SDO Info
PDOAssign = 0x04, // 支持 PDO Assign
PDOConfig = 0x08, // 支持 PDO Config
Startup = 0x10, // 支持 Startup
CompleteAccess = 0x20 // 支持 Complete Access
}
EcEoEDetails 枚举值
[Flags]
public enum EcEoEDetails : byte
{
None = 0x00,
SendFrame = 0x01, // 支持发送帧
ReceiveFrame = 0x02, // 支持接收帧
SetIPParam = 0x04, // 支持设置 IP 参数
GetIPParam = 0x08 // 支持获取 IP 参数
}

子对象

属性类型说明
PDOSlavePdoPDO 数据访问器,详见 PDO 输入输出
DiagnosticsSlaveDiagnostics诊断信息访问器,详见 从站诊断
StartupStartupParameterList启动参数列表
CoECoEInstance?CANopen over EtherCAT,从站不支持时为 null
SoESoEInstance?Servo over EtherCAT,从站不支持时为 null
FoEFoEInstance?File over EtherCAT,从站不支持时为 null
EoEEoEInstance?Ethernet over EtherCAT,从站不支持时为 null
AoEAoEInstance?ADS over EtherCAT,从站不支持时为 null
VoEVoEInstance?Vendor over EtherCAT,从站不支持时为 null
FSoEFSoEInstance?Functional Safety over EtherCAT,从站不支持时为 null
MDPMdpInstance?MDP 模块化设备,从站不支持时为 null

枚举描述方法

所有枚举统一使用 .GetDescription() 扩展方法获取中文描述:

EcState state = slave.State;
string desc = state.GetDescription(); // "OP"

StateCiA402 driveState = slave.CoE.CiA402.StateDrive;
string driveDesc = driveState.GetDescription(); // "运行使能"

ModeCiA402 mode = slave.CoE.CiA402.OperationMode;
string modeDesc = mode.GetDescription(); // "周期同步位置 (CSP)"

FSoEState fsoeState = slave.FSoE.State;
string fsoeDesc = fsoeState.GetDescription(); // "数据交换"
统一规范

项目中所有枚举描述均通过 .GetDescription() 扩展方法获取,包括 EcStateEcALStateSDOErrorFSoEStateFSoEErrorStateCiA402ModeCiA402 等。内部实现基于 [Description] 特性。

硬件信息查询

GetFMMUs()

public ec_fmmut[] GetFMMUs()

获取从站 FMMU 配置数组。

GetSyncManagers()

public ec_smt[] GetSyncManagers()

获取从站 SyncManager 配置数组。

GetSyncManagerTypes()

public byte[] GetSyncManagerTypes()

获取从站 SyncManager 类型数组(0=未使用, 1=邮箱输出, 2=邮箱输入, 3=过程数据输出, 4=过程数据输入)。

诊断

从站诊断信息(通信异常率、冗余状态、DC 同步)通过 slave.Diagnostics 访问,详见 从站诊断

ESI 方法

SetEsiFile(string esiFileName)

public bool SetEsiFile(string esiFileName)

设置从站使用的 ESI 文件。

返回值:

  • bool — 是否成功

Startup 配置

属性类型说明
StartupStartupParameterList启动参数列表
ShouldWritePDOAssignmentbool启动时是否写入 PDO Assignment,默认 true
ShouldWritePDOConfigurationbool启动时是否写入 PDO Configuration,默认 false
SupportsCompleteAccessbool从站是否支持 SDO Complete Access

AutoStartup() / AutoStartupFromMDP() / AutoStartupFromSM()

public bool AutoStartup()
// AutoStartupFromESI(string esiFilePath) - ESI-based startup is implemented in the runtime but
// is intentionally omitted from the public API documentation (internal/advanced usage).
public bool AutoStartupFromMDP()
public bool AutoStartupFromSM()

对从站执行自动启动配置。AutoStartup() 会自动检测 ESI/MDP/SM 并生成参数。

SetConfigSourceENI() / SetConfigSourceDENI()

public void SetConfigSourceENI()
public void SetConfigSourceDENI()

设置从站配置来源。

RefreshPDOStartupParameters()

public int RefreshPDOStartupParameters()

刷新 PDO 启动参数(重新从当前配置生成 PDO 映射参数)。

StartupParameterList 方法

通过 slave.Startup 访问:

  • Add(StartupParameter param) — 添加启动参数
  • AddParameter(index, subIndex, data, ...) — 添加启动参数(显式参数)
  • Remove(index, subIndex) — 移除启动参数
  • Clear() — 清除所有启动参数
  • Apply(slave, transition, writeTiming) — 应用启动参数到从站

示例:

slave.Startup.Add(new StartupParameter
{
Index = 0x1C12, SubIndex = 0,
Data = new byte[] { 0 },
Transition = "PS", Priority = 10
});

StartupTransition 状态转换

  • IP — Init → PreOp,默认 AfterTransition
  • PS — PreOp → SafeOp,默认 BeforeTransition
  • SO — SafeOp → Op,默认 BeforeTransition
  • OS — Op → SafeOp,默认 AfterTransition
  • SP — SafeOp → PreOp,默认 AfterTransition
  • PI — PreOp → Init,默认 BeforeTransition