跳到主要内容

ENI/DENI 配置管理

支持 ENI 标准格式 (EtherCATConfig) 和 DENI 扩展格式 (DarraEtherCATConfiguration)。

推荐工作流
  1. 使用 Darra 配置工具连接从站、配置 PDO/DC/启动参数
  2. 导出 DENI 文件 (.deni)
  3. 在代码中使用 SetENI() + Build() 加载配置

加载配置​

用户 SDK 只走 SetENI。SetENI(path) 加载 DENI/ENI XML,到 Build() 才生效。C# 没有公开的 LoadConfigJson 方法。

SetENI(string eniPath)​

public DarraEtherCAT SetENI(string eniPath)

加载 DENI 或 ENI XML。路径在 Build() 时生效。

参数:

  • eniPath (string) — DENI 或 ENI 配置文件路径

热启动:

Build() 把 DENI/ENI 文件全文交给原生统一引擎(与 C/C++/Python/Rust/Java SDK 同一条加载路径),按文件热启动,不整片读 SII/EEPROM:

  1. 统计线上从站数量
  2. 分配地址
  3. 核对每个从站的 Vendor + Product 是否与 DENI 一致(身份取自 DENI,不回读 EEPROM)
  4. 一致则套用文件里的全配置(网卡 / SM / FMMU / InitCmd / DC / SDO / 看门狗 / 分组)

数量对不上,或 Vendor/Product 对不上,退回完整扫描。

TwinCAT 的 ENI 同样:身份对上就套文件,不对才全扫。

示例:

var master = new DarraEtherCAT()
.SetENI(@"C:\EtherCAT\MyProject.deni")
.Build()
.Master;

if (master == null)
{
Console.WriteLine("初始化失败");
return;
}
master.SetState(EcState.OP);
不是用户 SDK

SaveXMLConfiguration / TrySaveCache / LoadXMLConfiguration / ApplyXMLConfiguration / LoadAndApplyXMLConfiguration / LoadAndAutoConfigure / MasterXMLConfiguration 是 GUI 与 PLC 中间层内部 API(C# internal + InternalsVisibleTo),不要在应用代码里调用,也不要当作用户 SDK 文档入口。

SaveXMLConfiguration / TrySaveCache 写 deni-*.xml 缓存时,看门狗用文件里已有的值,不再从总线重读。

无 DENI、需要 ESI 自动匹配时,用 SetEsiFile / SetEsiFiles + EnableAutoStartup(),见 ESI 文件管理 与 初始化。

Validate()​

public ValidationResult Validate()

验证配置是否完整,不执行 Build(),用于预检查。

返回值:

public class ValidationResult
{
public bool IsValid { get; } // 验证是否通过
public IReadOnlyList<string> Errors { get; } // 验证错误列表(通过时为空)
}

当前检查项:已设置网口或 ENI 配置、ENI 文件存在、未达主站实例上限。

示例:

var result = new DarraEtherCAT().SetENI(@"C:\EtherCAT\MyProject.deni").Validate();
if (!result.IsValid)
{
foreach (var err in result.Errors)
Console.WriteLine(err);
return;
}

保存配置​

保存配置 / 启动快照在主站自愈窗口内采用有限等待(秒级上限,短轮询),超时返回错误,不会长时间挂起。

仅支持 Darra 产品内部使用

导出运行时配置为 DENI 文件的功能由 Darra 主界面和 PLC 中间层提供(菜单"导出 DENI"),不通过 SDK 对外开放。

SDK 用户的标准工作流是:

  1. 在 Darra 主界面或 PLC 中完成配置并导出 DENI 文件
  2. 在代码中使用 SetENI(path).Build() 加载已有的 ENI/DENI 文件

如果需要"扫描当前硬件并自动生成配置文件",请使用 Darra 主界面或 PLC 端的向导功能。

完整示例​

var master = new DarraEtherCAT()
.SetENI(@"C:\EtherCAT\MyProject.deni")
.Build()
.Master;

if (master == null) return;
master.SetState(EcState.OP);
相关功能

ENI/DENI 配置与初始化与构造(SetENI() / Build() 流式初始化)和 ESI 文件管理配合使用。Hot-Connect 组管理详见 Hot-Connect。