DarraRT WDK 内核驱动
DarraRT 是 Darra EtherCAT Master 的 Windows 内核模式驱动 (WDK) 插件, 通过硬件定时器和专用协议驱动实现微秒级实时 EtherCAT 通信,专为 实时 PDO 交换 和 DC 分布式时钟同步 设计。
DarraRT WDK 驱动是 Darra EtherCAT Master 在 Windows 下运行的必需组件。SDK 不再提供用户态软件帧收发路径,未安装驱动时主站无法初始化。
架构概览
驱动运行于最高硬件优先级,通过多层隔离机制完全锁定 CPU 核心,确保 EtherCAT 帧收发不被任何系统活动打断。
SDK 自动选择最后一个 CPU 核心进行隔离,无需用户配置。
DarraRT 使用 Local APIC Timer 作为硬件定时源,计时精度达 ~0.17ns,远超操作系统提供的任何软件定时器。这一纳秒级精度确保 PDO 帧发送时序的极高确定性,为 DC 分布式时钟同步提供稳定的参考基准。
如何使用
驱动安装后,SDK 启动时自动检测内核驱动并接入实时帧收发路径,无需任何配置。驱动未加载时 SDK 启动会直接失败,并在日志中报告"WDK 驱动未就绪"。
安装
以管理员身份运行安装命令:
darrt.bat install
darrt.bat 的所有子命令均需以管理员身份运行。右键命令提示符选择"以管理员身份运行",或在 PowerShell 中使用 Start-Process cmd -Verb RunAs。
脚本会自动:
- 开启测试签名模式
- 配置实时性能优化 (
disabledynamictick + useplatformtick + tscsyncpolicy) - 复制驱动到系统目录
- 创建服务并设为开机自启动
- 立即启动驱动
测试签名和时钟优化通过 bcdedit 配置,需重启后生效。此后每次开机驱动自动加载,无需再次操作。
卸载
darrt.bat uninstall
验证安装
darrt.bat status
或在管理员命令提示符中:
sc query DarraRT :: 服务状态
darrt.bat 子命令
darrt.bat 是统一的驱动管理工具,支持以下子命令:
| 子命令 | 说明 |
|---|---|
| darrt.bat install | 安装驱动并配置系统 |
| darrt.bat uninstall | 卸载驱动并清理配置 |
| darrt.bat test | 测试驱动功能 |
| darrt.bat status | 查看驱动状态 |
性能指标
| DarraRT 驱动 | 低端控制卡 | 高端控制卡 | |
|---|---|---|---|
| PDO 帧发送抖动 | < 1μs | > 1μs | ≈ 0.1~0.5μs |
| DC 同步质量 | 最佳 | 较好 | 最佳 |
| 最小周期 | 31.25μs | > 100μs | 31.25μs |
| CPU 占用 | 1 个锁定核心 | 低 | 低 |
| 系统依赖 | >= Win 10 | >= Win 7 | >= Win 7 |
| 成本 | 无 | > $200 / 台 | > $500 / 台 |
设计目标
为多数学术/应用用户提供低成本、易部署的实时方案,在绝大多数工业场景替代低端板卡。
选型建议
- 需要在标准硬件上实现高性价比的微秒级帧发送与良好 DC 表现 → 选 DarraRT
- 追求极限实时性能、最低抖动与最小周期,并且愿意采购高端硬件 → 高端控制卡
优势
- 免费 — 此驱动虽然属于实时方案,但是随 SDK 赠送,无附加费用
- 微秒级实时性 — 硬件定时器驱动,帧发送抖动 < 1μs,满足高性能伺服控制需求
- DC 同步最优 — 一致的帧时序为从站 DC 时钟提供稳定参考,偏差可控在数微秒内
- 无需专用硬件 — 使用标准 Intel / Realtek 以太网卡,无需 EtherCAT 专用主站卡
- 数据安全 — 双缓冲机制确保过程数据不撕裂
- 容错机制 — 用户态未及时更新输出数据时,内核自动发送上一周期的有效数据,总线通信不中断
- 完全 CPU 隔离 — 多层隔离机制,隔离核心上只运行定时器和 EtherCAT 帧收发
局限性
DarraRT 驱动解决的是 EtherCAT 帧发送时序 和 DC 同步 的实时性问题。
用户应用程序的 业务逻辑层 (运动插补计算、控制算法、数据处理等) 仍然运行在 Windows 用户态,受操作系统调度器影响。
虽然通过 MMCSS 线程优先级提升可以改善,但无法保证业务逻辑的硬实时执行。
具体表现:
- PDO 帧在总线上的发送时序: < 1μs 抖动 (内核保证)
- 用户态输出数据更新延迟: 通常 < 10μs,偶发 50~1000μs (Windows 调度)
- 当用户态延迟时,内核自动发送上一周期的有效数据,总线通信不会中断
适用场景
此驱动设计用于以下实时功能:
- 实时 PDO 交换 — 周期性过程数据通信,确保帧发送时序精确
- DC 分布式时钟 — 依赖稳定帧时序的多轴同步场景
如果您的应用场景对 业务逻辑执行 也有硬实时要求 (如微秒级运动插补、确定性控制周期),标准 Windows 驱动无法满足,需要更深层的内核集成方案。
我们提供包含移植现有程序在内的 类TwinCAT 软PLC 完整内核业务逻辑硬实时方案。
请联系我们获取定制驱动或硬件方案。