跳到主要内容

DarraRT_Eth WDK 内核驱动

DarraRT_Eth.sys 是 Darra EtherCAT Master 的 Windows 内核模式驱动 (WDK), 通过硬件定时器和 NDIS 协议驱动实现微秒级实时 EtherCAT 通信,专为 实时 PDO 交换DC 分布式时钟同步 设计。

驱动必须安装

DarraRT_Eth 驱动是 Darra EtherCAT Master 在 Windows 下运行的必需组件。SDK 不再提供用户态软件帧收发路径,未安装驱动时主站无法初始化。首次启动时若检测到驱动未安装,程序会弹出安装引导对话框。

架构概览

驱动运行于最高硬件优先级,通过多层隔离机制完全锁定 CPU 核心,确保 EtherCAT 帧收发不被任何系统活动打断。

SDK 自动选择最后一个 CPU 核心进行隔离,无需用户配置。

超高精度计时器

DarraRT 使用 Local APIC Timer 作为硬件定时源,计时精度达 ~0.17ns,远超操作系统提供的任何软件定时器。这一纳秒级精度确保 PDO 帧发送时序的极高确定性,为 DC 分布式时钟同步提供稳定的参考基准。

如何使用

驱动安装后,SDK 启动时自动检测内核驱动并接入实时帧收发路径,无需任何配置。驱动未加载时 SDK 启动会直接失败,并在日志中报告"WDK 驱动未就绪"。

安装

驱动随 官方安装包 一并安装,无需手动跑命令脚本。下载并以管理员身份双击运行安装程序 (Darra_EtherCAT_Master-Setup-*.exe.msi),安装包会自动:

  1. 安装 MS 副签 (Microsoft Attestation) 的 DarraRT_Eth.sys 驱动
  2. 注册并启动 DarraRT_Eth 服务,设为开机自启动
  3. 配置 RT 核隔离与实时性能优化
  4. 安装运行库 (Darra.Core.dll)
需要管理员权限

安装程序需以管理员身份运行。Windows 会在安装内核驱动时弹出 UAC 提权请求。

GUI 内置安装引导

若启动 GUI 时检测到驱动未安装或未启动,程序会弹出 Driver install required 对话框:

若服务已注册但只是停止 (Stopped),环境自检的 Install 按钮会直接 sc start DarraRT_Eth 启动服务,无需重装。

卸载

通过 控制面板 → 程序和功能 卸载,或重新运行安装包选择卸载/修复。卸载会移除 DarraRT_Eth 服务并尝试还原系统设置。

验证安装

在管理员命令提示符中查询服务状态:

sc query DarraRT_Eth      :: 服务应为 RUNNING

或直接看 GUI 启动时的 Preflight Check (环境自检) 窗口 —— 它逐项检查 6 个运行时依赖:

检查项含义
.NET Framework 4.7.2+必需运行时框架
VC++ Redistributable (x64)VC++ 2015-2022 运行库
DarraRT_Eth driver内核驱动服务是否运行
Darra.Core.dll核心运行库可加载
Driver compatibilitySDK ↔ 驱动 版本是否配套
RT core isolationRT 核隔离是否已配置

全部通过则静默进入主界面;有缺失项时窗口列出状态并提供 Install / Recheck 按钮。前 4 项为必需 (Required),后 2 项为警告 (Warning),警告不阻塞进入程序。

性能指标

DarraRT 驱动
PDO 帧发送抖动< 1μs(平均 1.2μs / 最大 4.5μs,Windows)
DC 同步质量最佳
最小周期31.25μs
CPU 占用1 个锁定核心
系统依赖>= Win 10
硬件标准 Intel / Realtek 千兆网卡,无需专用控制卡

设计目标

为多数学术/应用用户提供低成本、易部署的纯软件实时方案,无需专用 EtherCAT 主站卡即可在标准硬件上实现微秒级帧发送。

选型建议

  • 在标准硬件上实现高性价比的微秒级帧发送与良好 DC 表现 → DarraRT 纯软件方案,无需专用控制卡

优势

  • 免费 — 此驱动虽然属于实时方案,但是随 SDK 赠送,无附加费用
  • 微秒级实时性 — 硬件定时器驱动,帧发送抖动 < 1μs,满足高性能伺服控制需求
  • DC 同步最优 — 一致的帧时序为从站 DC 时钟提供稳定参考,偏差可控在数微秒内
  • 无需专用硬件 — 使用标准 Intel / Realtek 以太网卡,无需 EtherCAT 专用主站卡
  • 数据安全 — 双缓冲机制确保过程数据不撕裂
  • 容错机制 — 用户态未及时更新输出数据时,内核自动发送上一周期的有效数据,总线通信不中断
  • 完全 CPU 隔离 — 多层隔离机制,隔离核心上只运行定时器和 EtherCAT 帧收发

局限性

业务层仍受 Windows 调度影响

DarraRT 驱动解决的是 EtherCAT 帧发送时序 和 DC 同步 的实时性问题。

用户应用程序的 业务逻辑层 (运动插补计算、控制算法、数据处理等) 仍然运行在 Windows 用户态,受操作系统调度器影响。
虽然通过 MMCSS 线程优先级提升可以改善,但无法保证业务逻辑的硬实时执行。

具体表现:

  • PDO 帧在总线上的发送时序: < 1μs 抖动 (内核保证)
  • 用户态输出数据更新延迟: < 50μs (1.99.5+ HT 兄弟规避 + 跨物理核分配)
  • 当用户态延迟时,内核自动发送上一周期的有效数据,总线通信不会中断
1.99.5+ 应用层抖动新架构

1.99.5 起 SDK 自动给 RT 线程 + PDO 监控线程做 HT 兄弟规避 + 多主站跨物理核分配, 解决了之前偶发 几十毫秒 用户态尖峰 (HT 共享物理核导致 GUI/USB HID DPC 被拖慢). 客户开箱即用, 无需手工调优.

:::

适用场景

此驱动设计用于以下实时功能:

  • 实时 PDO 交换 — 周期性过程数据通信,确保帧发送时序精确
  • DC 分布式时钟 — 依赖稳定帧时序的多轴同步场景
需要业务层硬实时?

如果您的应用场景对 业务逻辑执行 也有硬实时要求 (如微秒级运动插补、确定性控制周期),标准 Windows 驱动无法满足,需要更深层的内核集成方案。

我们提供包含移植现有程序在内的 软 PLC 完整内核业务逻辑硬实时方案。
请联系我们获取定制驱动或硬件方案。

驱动 ↔ SDK 版本兼容

驱动与 SDK 必须配套使用。主版本 / 次版本变化时必须重装驱动, 否则程序启动会报兼容性错误并拒绝运行:

升级类型重装驱动?原因
PATCH (例 2.1.0 → 2.1.5)❌ 不需要运行库未变, 与现有驱动配套
MINOR (例 2.1.x → 2.2.0)✅ 必须运行库已更新, 需配套驱动
MAJOR (例 2.x → 3.0.0)✅ 必须同上, 可能伴随 API 变化

master.Build() 时 SDK 自动读取驱动版本与 SDK 版本比对, 不匹配 → 日志 Warning 提示重装。跨语言 (C# / Python / Java / Rust / C / C++) 行为一致。请始终从官方渠道获取安装包与运行库。

RT 核隔离自动校验

master.Build() 时 SDK 后台检查 RT 核隔离是否已由安装包配置:

检测结果SDK 行为
已配置配置 OK, 日志 Message
未配置日志 Warning, 提示重新运行官方安装包完成配置

C# SDK 提供 DarraEtherCAT.EnsureRtIsolation(elevated:true) 主动修复入口 (弹 UAC 自动完成配置)。跨语言 SDK 统一只检测, 修复仅 C# 提供。