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),安装包会自动:
- 安装 MS 副签 (Microsoft Attestation) 的
DarraRT_Eth.sys驱动 - 注册并启动
DarraRT_Eth服务,设为开机自启动 - 配置 RT 核隔离与实时性能优化
- 安装运行库 (
Darra.Core.dll)
安装程序需以管理员身份运行。Windows 会在安装内核驱动时弹出 UAC 提权请求。
若启动 GUI 时检测到驱动未安装或未启动,程序会弹出 Driver install required 对话框:
- 若同级目录有本地安装包,点 Yes 直接启动安装程序;
- 若没有,点 Yes 打开在线下载页 https://ethercat.darra.xyz/download。
若服务已注册但只是停止 (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 compatibility | SDK ↔ 驱动 版本是否配套 |
| RT core isolation | RT 核隔离是否已配置 |
全部通过则静默进入主界面;有缺失项时窗口列出状态并提供 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 帧收发
局限性
DarraRT 驱动解决的是 EtherCAT 帧发送时序 和 DC 同步 的实时性问题。
用户应用程序的 业务逻辑层 (运动插补计算、控制算法、数据处理等) 仍然运行在 Windows 用户态,受操作系统调度器影响。
虽然通过 MMCSS 线程优先级提升可以改善,但无法保证业务逻辑的硬实时执行。
具体表现:
- PDO 帧在总线上的发送时序: < 1μs 抖动 (内核保证)
- 用户态输出数据更新延迟: < 50μs (1.99.5+ HT 兄弟规避 + 跨物理核分配)
- 当用户态延迟时,内核自动发送上一周期的有效数据,总线通信不会中断
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# 提供。