驱动与绑卡
Darra PnSlave 的周期数据面由 NDIS 协议驱动承载。产品名是 Darra PnSlave;内部协议驱动名尚未改,安装 / 绑卡必须用下面现网名字。
| 项 | 现网名字 |
|---|---|
| 二进制 | DarraRT_Pnet.sys |
| 设备路径 | \\.\DarraRT_Pnet |
| 过程映像 Section | \Device\DarraRT_Pnet_GlobalIO |
| netcfg 协议名 | DarraRT_Pnet |
| 服务名 | DarraPnetService |
SDK 实时路径只映射 Section,不打开 \\.\DarraRT_Pnet(句柄由服务独占)。
1. 驱动做什么
| 职责 | 说明 |
|---|---|
| 周期帧 | EtherType 0x8892:PPM(I,从站 → 控制器)/ CPM(Q,控制器 → 从站) |
| IOCR | 已建立的周期连接才收发;没建 IOCR 不处理周期帧 |
| 过程映像 | 命名 Section \Device\DarraRT_Pnet_GlobalIO,应用 Start() 后直接读写 |
| 看门狗 | 控制器连续丢帧记诊断,不主动拆用户映射 |
- 热路径不分配内存。
- 运行时不写注册表。
- RT Class 1,无 IRT。周期由驱动跑,应用没有用户周期。
2. 网口
- NDIS 协议驱动,不是过滤驱动。
- 一台设备只选一个 PROFINET 口(GUI / 服务配置)。不要和
DarraRT_Eth/DarraRT_Sync绑同一块卡(双注册会蓝屏)。 - VMnet / TAP / Wintun / 蓝牙 PAN 没有到设备的二层通路,不能当从站口。
不要开混杂模式,不要为“扫不到站”去开关网卡。
3. 安装
走安装包(管理员)。安装包内部等价于:
netcfg -l <inf> -c p -i DarraRT_Pnet
- 服务 RUNNING 不等于协议已绑定。以
netcfg -q DarraRT_Pnet为准。 - 不要手拷
.sys到System32\drivers。 - 不要
pnputil /remove-device正在绑定的网卡。 - 不要反复 disable / enable 网卡。一次复位没好就查根因,停手。
- 不要用内核调试器(kd / WinDbg)看这套驱动。
4. 和应用的边界
应用 DarraPnet.Connect() → Start()
│ 映射 \Device\DarraRT_Pnet_GlobalIO
│ 写 I / 读 Q
│ Stop() 只卸映射
服务 打开 \\.\DarraRT_Pnet,管站名 / AR / 报警
驱动 周期帧 + Section
主站已在连时不要 POST /api/stop(18840 备用控制面)。Stop() 只卸本进程映射。
测通:改 I,看 Q。前 4 字节是主站同步。
5. 与 ETH 主站共存
| 协议 | 名字 |
|---|---|
| PnSlave 数据面 | DarraRT_Pnet |
| EtherCAT 主站 | DarraRT_Eth |
协议名独立,注册表键不撞。同一台机器可同时装,但 不要绑同一块物理网卡。
6. 故障速查
| 现象 | 处理 |
|---|---|
netcfg -q DarraRT_Pnet 没有 | 用安装包重装,不要手拷 sys |
| 服务 RUNNING 但无 0x8892 | 绑定没建好:再走安装包 / netcfg,不要开关网卡 |
SDK Start 映射失败 | 服务是否已起、Section 名是否仍是 \Device\DarraRT_Pnet_GlobalIO |
| 写 I 前 4 字节被改 | 主站同步,预期 |
| 需要看崩溃 | 只读事件查看器 / 驱动自带日志。不要 kd |