硬件与安装
本页汇总 DarraRT 交付到现场、第一次上电到稳定运行这段"部署期"最常遇到的硬件、系统、驱动、签名类问题。与编程、IDE 使用无关, 聚焦采购、装机、调优、自检。
工控机选型
最低与推荐配置
| 项目 | 最低 | 推荐 | 说明 |
|---|---|---|---|
| CPU | Intel i5-10400 (10 代) | Intel i7-11700 (11 代) | 必须 Intel 10 代或更新, 支持 TSC-Deadline 定时器 |
| 核心数 | 6 核 | 8 核及以上 | 至少预留 1 核给 DarraRT 实时隔离 |
| 内存 | 16 GB DDR4 | 32 GB DDR4 ECC | ECC 内存显著降低偶发位翻转风险 |
| 硬盘 | 256 GB SATA SSD | 512 GB NVMe SSD | NVMe 对日志/Historian 写入帮助巨大 |
| 网卡 | Intel i210 双口 | Intel i350-T4 四口 | 详见下节 |
| 电源 | 工业级宽压 (9-36V) 或双 220V 冗余 | 在线式 UPS 1kVA | 现场电网抖动非常常见 |
不推荐的选择
| 选择 | 问题 |
|---|---|
| AMD CPU | 实时驱动未针对 AMD 平台验证, BIOS 节能项差异大 |
| Intel 9 代及更早 | TSC 抖动大, C-State 控制粒度粗 |
| Celeron / 低功耗 N 系列 | 单核性能不足, 1ms 周期难保证 |
| 家用主板 | C-State / Turbo 选项常被精简, 无法关闭 |
| Realtek 板载网卡 | 见下节"网卡要求" |
网卡要求
必须使用 Intel 芯片组
EtherCAT 帧收发由 DarraRT_Eth.sys 直接通过 NDIS 底层抢占网卡, 对网卡的实时性与驱动配合度要求极高。
| 芯片组 | 支持度 | 典型型号 |
|---|---|---|
| Intel i210 | 推荐 | Intel EXPI9301CT, i210-T1 |
| Intel i219 | 推荐 | 板载 LM/V 系列 |
| Intel i350 | 推荐 | i350-T2, i350-T4 (四口) |
| Intel X540 / X550 | 支持 | 10G 高端场景 |
| Realtek 8111/8125 | 不支持 | 见下文 |
| 博通 BCM57xx | 未验证 | 不建议 |
Realtek 网卡为什么不行
- 中断实时性差: Realtek 驱动的中断合并 (Interrupt Moderation) 不可关闭, 最小粒度为数百微秒, 无法满足 1ms 周期下
<20μs的抖动要求。 - 驱动不开源: 官方驱动未暴露 NDIS miniport 底层接口, DarraRT_Eth.sys 无法在协议层下直接占用网卡。
- PHY 自协商不稳定: 断线重连后 Link 恢复时间长达 3-5 秒, 环网冗余切换要求
<100μs, 相差两个数量级。 - DC 时戳误差大: 收包时戳精度仅毫秒级, 无法作为 EtherCAT DC 参考时钟源。
现场采购提醒
如果工控机出厂只板载 Realtek 网卡, 必须另加装一块 Intel i210 PCIe 独立网卡作为 EtherCAT 口 (LAN2), Realtek 可保留做管理口 (LAN1)。
双网卡规划
| 网卡 | 用途 | IP 配置 |
|---|---|---|
| LAN1 (板载或任意) | 管理、HMI、OPC UA、MQTT | 静态 IP, 如 192.168.0.10/24 |
| LAN2 (Intel 独立) | EtherCAT 总线 | 不配 IP, 仅绑定 DarraRT_Eth 协议 |
操作系统安装
系统版本
| 版本 | 支持度 | 说明 |
|---|---|---|
| Windows 10 LTSC 2021 | 推荐 | 无商店、无应用商店更新, 最干净 |
| Windows 11 LTSC 2024 | 支持 | 需关闭遥测与 Widget |
| Windows 10/11 专业版 | 可用 | 必须手工关闭 Windows Update 与自动重启 |
| Windows 10/11 家庭版 | 不支持 | 组策略缺失, 无法禁用自动更新 |
| Windows 10/11 工作站版 | 不推荐 | 附带的虚拟化/RDMA 组件与核心隔离冲突 |
| Server 2019/2022 | 需单独评估 | 授权按另一条产品线处理 |
安装顺序 (必须严格按此顺序)
- OS 全新安装 (不要用旧镜像恢复, 避免残留驱动)
- 一次性装齐补丁:
sconfig→ Windows Update 升到当月累积补丁 - 关闭 Windows Update: 组策略
gpedit.msc→ 计算机配置 → 管理模板 → Windows 组件 → Windows 更新 → 配置自动更新 → 已禁用 - 关闭快速启动: 控制面板 → 电源选项 → 选择电源按钮功能 → 更改当前不可用的设置 → 取消"启用快速启动"
- 电源计划改"高性能" (见下节)
- 加入 Windows Defender 排除: 设置 → 更新与安全 → Windows 安全中心 → 病毒和威胁防护 → 排除项, 添加:
C:\Program Files\DarraRT\C:\ProgramData\DarraRT\%AppData%\DarraPLC\%AppData%\Darra\
- 安装 DarraRT 主程序 (从官方安装包, 勿用 U 盘携带来源不明副本)
- 加载三驱动: 管理员权限运行
scripts/install_drivers.bat - 授权激活 (见 授权许可)
- 首次自检 (见本页末"首次开机自检清单")
顺序很重要
先装 DarraRT 再打补丁, 常常导致驱动签名时间戳早于系统补丁, 被新版 Defender 判为"过期驱动"而拒绝加载。
BIOS 全量调优
必改项
| 设置项 | 目标值 | 原因 |
|---|---|---|
| C-State / CPU Idle | Disabled (最深到 C0) | 深度节能状态唤醒延迟达 100μs+ |
| Intel SpeedStep (EIST) | Disabled | 动态变频破坏 TSC 恒定 |
| Turbo Boost | Disabled | 频率突变带来周期抖动 |
| Hyper-Threading | Disabled | 逻辑核争用 L1/L2 cache |
| VT-d / IOMMU | Enabled | 与 Windows 核心隔离策略协作 |
| Secure Boot | Disabled | 测试签名驱动加载受阻 |
| Fast Boot | Disabled | POST 阶段部分设备未初始化 |
| ERP / Deep Sleep | Disabled | S4/S5 唤醒未恢复 NIC 配置 |
| USB Legacy Support | Disabled | Legacy 模式触发 SMI |
| Serial / Parallel Port | Disabled (如未使用) | 空闲中断干扰 |
| Intel AMT / ME | Disabled (如未使用) | ME 触发周期性 SMI |
| Watchdog Timer | 关闭或 >30s | 默认 WDT 误触发导致硬重启 |
不同厂商 BIOS 设置路径
| 厂商 | C-State 路径 | Turbo 路径 |
|---|---|---|
| Dell OptiPlex / Precision | Power Management → C-States | Performance → Intel TurboBoost |
| HP Z 系列 / EliteDesk | Advanced → Power Options → S3 State | Advanced → Performance Options |
| 研华 (Advantech) | Advanced → CPU Configuration → CPU C-States | Advanced → CPU Configuration → Turbo Mode |
| 研祥 (EVOC) | Chipset → PCH-FW → Power Management | Advanced → Intel RC |
| 超微 (Supermicro) | Advanced → CPU Configuration → Advanced Power Management | 同上 |
| 华硕 Pro 系列 | Ai Tweaker → CPU Power Management | Ai Tweaker → CPU Core Ratio |
提示
无法找到菜单时, 按 F9 (Load Optimized Defaults) 恢复默认, 再逐项修改, 避免 OEM 厂商把某些选项默认隐藏。
驱动签名与加载
正常加载流程 (已签名驱动)
# 管理员 PowerShell
sc.exe create DarraRT type= kernel binPath= "C:\Windows\System32\drivers\DarraRT.sys" start= auto
sc.exe create DarraRT_Eth type= kernel binPath= "C:\Windows\System32\drivers\DarraRT_Eth.sys" start= auto
sc.exe create DarraRT_PLC type= kernel binPath= "C:\Windows\System32\drivers\DarraRT_PLC.sys" start= auto
sc.exe start DarraRT
sc.exe start DarraRT_Eth
sc.exe start DarraRT_PLC
签名失败典型现象
| 现象 | 排查 |
|---|---|
CreateService 成功, StartService 报 577 | 驱动未签名, 或签名链失效 |
系统事件日志 CodeIntegrity 事件 3004 | Secure Boot 仍开启 |
bcdedit 显示 testsigning No | 测试签名模式未开 |
| 加载成功但 DbgView 无输出 | 驱动正常但未绑定到设备; 用 devcon 检查 |
开启测试签名模式 (开发/测试环境)
# 管理员 PowerShell
bcdedit /set testsigning on
bcdedit /set nointegritychecks on
shutdown /r /t 0
重启后桌面右下角会有"测试模式"水印, 此时未签名的驱动可加载。
生产环境禁用
生产机不得长期处于测试签名模式。正式部署必须使用 EV 代码签名证书重新签名, 关闭 testsigning 后验证加载。
EV 企业签名流程
- 购买 DigiCert / GlobalSign 的 EV Code Signing 证书 (硬件 USB Token)
- 用
signtool sign /v /ac cross-cert.cer /n "公司名" /tr http://timestamp.digicert.com /td sha256 /fd sha256 DarraRT.sys - 提交 Microsoft Hardware Program Portal 做 WHQL Attestation (约 1-3 天)
- 下载签好的
.cab内提取.sys部署
电源与散热
电源计划
# 激活高性能计划
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
# 硬盘永不关闭
powercfg /change disk-timeout-ac 0
# PCIe Link State 关闭 (否则 NIC 会被链路节电打盹)
powercfg -setacvalueindex scheme_current sub_pciexpress ee12f906-d277-404b-b6da-e5fa1a576df5 0
powercfg -setactive scheme_current
机柜散热与防尘
| 场景 | 建议 |
|---|---|
办公环境 (<30°C) | 桌面 ATX 或薄型工控机即可 |
| 一般车间 (30-40°C) | 机柜顶部加排风扇, 滤网季度清理 |
| 高温车间 (40-55°C) | 无风扇工控机 + 机柜空调, CPU 降频至 65W TDP 以下 |
| 高粉尘环境 | IP54 机柜 + 正压送风, 严禁开盖 |
| 振动/冲击 | SSD (禁用机械硬盘) + 减震脚垫 |
UPS 供电
| 负载 | UPS 规格 | 续航 |
|---|---|---|
| 单 PLC 主机 | 1 kVA 在线式 | 15-30 分钟 |
| PLC + 交换机 + HMI | 2 kVA 在线式 | 20 分钟 |
| 双机冗余 | 2 台独立 UPS | 每路独立供电 |
推荐在线双变换 UPS, 市电-电池切换时间为 0ms, 后备式 UPS 的 4-10ms 切换足以让 EtherCAT 周期超时。
首次开机自检清单
第一次开机, 按此清单逐项确认, 全部通过才交付用户使用。
| # | 检查项 | 验证方法 | 合格标准 |
|---|---|---|---|
| 1 | 三驱动服务已启动 | sc query DarraRT DarraRT_Eth DarraRT_PLC | STATE = RUNNING |
| 2 | 设备节点创建成功 | Get-ChildItem \\.\DarraRT* 或 DbgView 看初始化日志 | 三个设备都响应 |
| 3 | 核心隔离生效 | 任务管理器 → 性能 → CPU, 查看隔离核的占用始终 0% | 至少 1 个核闲置 |
| 4 | EtherCAT 网卡绑定 | 设备管理器 → 网络适配器 → Intel NIC → 属性 → 此连接使用下列项目 | 勾选 DarraRT_Eth Protocol |
| 5 | 实时周期抖动 | 诊断面板 → 实时抖动监视 | <20μs (1ms 周期) |
| 6 | 授权激活状态 | IDE → 帮助 → 关于 → 许可证信息 | 显示已激活及到期日期 |
| 7 | 日志输出正常 | 打开 %AppData%\DarraPLC\logs\ 看最新 log 文件 | 有启动日志, 无 ERROR |
| 8 | HMI Web 可访问 | 浏览器打开 http://localhost:18823 | 页面正常加载 |
| 9 | OPC UA 服务 | 用 UaExpert 连 opc.tcp://localhost:4840 | 可浏览节点 |
| 10 | 24 小时稳态 | 连续运行, 观察报警历史与资源曲线 | 无未处理报警, 内存曲线平稳 |
自检脚本
安装目录下 scripts\first_check.ps1 会自动执行前 9 项并输出报告。第 10 项需手工留机过夜。
常见安装失败
| 现象 | 原因 | 解决 |
|---|---|---|
驱动 StartService 报 577 | 签名未被信任 | 开启 testsigning 或导入 EV 根证书 |
| 驱动加载后蓝屏 | 双 NDIS 协议名冲突 | 确认只有 DarraRT_Eth 绑定, 禁用旧 DarraRT 协议 |
| 授权激活报"硬件指纹不匹配" | 换了网卡/主板 | 联系技术支持强制解绑 |
| IDE 启动闪退 | .NET 8 运行时未装 | 安装 dotnet-runtime-8 x64 |
| Service 无法启动 | 端口被占用 | 见 设备端口与地址分配 |
| HMI Web 打不开 | 防火墙阻 18823 | 入站规则放行 TCP 18823 |
| 离线机无法激活 | 采用在线激活 | 改用离线激活流程 (见授权许可) |
| 安装程序报"需要管理员" | 没右键以管理员运行 | 右键安装包 → 以管理员身份运行 |