跳到主要内容

开发机本地自连 (自己连自己 IO) 可行性验证

验证日期: 2026-08-14 (抓包窗口 05:54:43–05:55:10, 共 25 秒) 验证方式: 只读系统查询 + 系统内置 pktmon 抓包 + 只读服务日志/注册表取证。未改任何配置、未动驱动绑定、未 reset 网卡、未重启、未启停任何服务。 临时抓包文件已删除。


1. 硬件现状 (结论: 当前只有 1 块物理有线网卡)

1.1 物理有线网卡 — 仅 1 块

网卡类型状态详情
以太网 2 (设备侧, 驱动绑定)USB 有线Up, 100 MbpsWCH USB2.0 Ethernet Adapter #2 (USB\VID_1A86&PID_E396), MAC 70-19-88-73-6E-DF, ifIndex 10, 驱动 WCHUSBNICA64.sys 1.9.2026.4, TCP/IPv4 已禁用 (纯二层设备口, 符合设计)
  • 第二块 USB 网卡 (ASIX AX88179 千兆, USB\VID_0B95&PID_1790): 注册表设备节点存在 (历史插过), 但 Get-PnpDevice -PresentOnly 查询无命中 = 当前未插入。插回即免装驱动。
  • 板载/PCIe 有线网卡: 无。唯一 PCIe 网卡是 WLAN (MediaTek MT7922 Wi-Fi 6E)。Get-NetAdapter -IncludeHidden 亦无隐藏有线卡 (仅内核调试网络适配器 Not Present)。
  • WLAN 2: MediaTek MT7922, Up 1.2 Gbps, 192.168.3.193/24 — 无线, 无与 USB 卡的二层通路, 不能充当直连主站口。

1.2 虚拟/隧道网卡 (不能用作主站直连口)

网卡类型说明
VMware VMnet1 / VMnet8虚拟交换机 (host-only/NAT)Up 100 Mbps, 仅 169.254.x 本地链路地址。无到 USB 卡的二层通路; 且"VMware Bridge 流量只下发到 NIC、不回送宿主协议栈" — 同卡桥接的虚拟机流量设备侧收不到, 同卡自连不成立; 建网桥属配置变更, 本轮禁动
TAP-Windows V9 (OpenVPN)虚拟二层卡Up 1 Gbps, 10.8.170.3/24 VPN 隧道, 与 USB 卡无通路
Wintun ×6 / Mihomo Meta / 蓝牙 PAN隧道/虚拟无通路

1.3 工具现状

  • Wireshark / Npcap / WinPcap (服务列表与 Program Files 均无)。
  • 西门子 PRONETA / TIA Portal (Program Files 无命中)。
  • Python scapy 模块 (Python 3.12 已装但未装 scapy; 且 Windows 下发 L2 裸帧本就需要 Npcap 驱动)。
  • 系统内置 pktmon (本次抓包所用) + 管理员权限已具备。

判定: 当前凑不出"两块可直连的物理网卡"。唯一低成本补法 = 插回 ASIX AX88179。


2. 设备侧驱动绑定现状 (注册表双侧重核)

2.1 网卡侧 (NIC class key) — 声明存在 ✓

HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0004\Linkage\UpperBind:

DarraRTEth, DarraRTPnet, Ndisuio, RasPppoe, RDMANDK, s7PnDiscoveryDriver, Snpnio, SNTIE, VMnetBridge

Get-NetAdapterBinding -Name "以太网 2" 关键项:

ComponentID显示名Enabled
DarraRT_PnetDarra PROFINET IO DeviceTrue
DarraRT_EthDarra PROFINET IO DeviceTrue
SI_SNPNIOPROFINET IO RT-Protocol V2.3 (西门子)True
s7PnDiscoveryDriverPROFINET IO protocol (DCP/LLDP/RSI) (西门子)True
ms_tcpipInternet 协议版本 4False (纯二层 ✓)

2.2 协议侧 (驱动服务键) — 半死绑定 ✗

HKLM\SYSTEM\CurrentControlSet\Services\DarraRT_Pnet 没有 Linkage 子键 (无 Bind / Export), DarraRT_Eth 同样没有。

已正常附着的 NDIS 协议必须有 Linkage\Export + Linkage\Bind (列出其下方 miniport 设备 GUID)。缺失 = NDIS 绑定引擎从未把协议真正 attach 到网卡 — 网卡侧 UpperBind 声明了协议, 协议侧却没有回绑, 即"半死绑定"残留态 (与记忆 PNET 测试机部署三连环 中 .197 的"驱动半死残留"同型)。

2.3 服务/进程状态 (只读)

  • DarraPnetService (仓库构建版) RUNNING, PID 60212, 2026-08-14 03:59:20 启动, 路径 A:\c\Darra\Darra_Profinet_Slave\Darra_Pnet_Service\bin\Release\net8.0-windows\Darra.Pnet.Service.exe
  • 内核驱动 DarraRT_Pnet 服务 RUNNING (Start=2 自动, \SystemRoot\system32\DRIVERS\DarraRT_Pnet.sys, INF 来源 oem125.inf)。
  • runtime-config.xml 当前 InterfaceName = 以太网 2 ✓ (另有历史配置遗留 DriverAdapterName='以太网'NetworkInterfaceName 不一致的 WARN, 服务已按单一网口权威收敛, 属配置清理项)。

3. 数据面实测 — pktmon 抓包 25 秒 (软验证)

  • 方法: pktmon start --capture --comp 1 --pkt-size 0 --file-name %TEMP%\pnet-dcp.etl (仅 USB 卡组件) → 25 秒 → stop → format txt (1633 事件 / 1648 行) → 分析后临时文件已删
  • 结果统计:
判据命中
EtherType 0x8892 (PROFINET PPM/DCP)0 帧
DCP 组播目的 01-0E-CF-xx-xx-xx0 帧
帧尾 Magic 0xDA550
LLDP (0x88CC)15 帧
Tx / Rx 事件517 / 517
"Unsupported EtherType" drop (TCPIP 丢 LLDP, 正常)6
  • LLDP 明细 (链路层收发通路证据):
    • 本机 Tx 3 帧: 源 70-19-88-73-6E-DF (USB 卡) → 01-80-C2-00-00-0E, ChassisId DESKTOP-TMKO3LS — 由西门子 s7PnDiscoveryDriver 发出, 证明该卡二层 TX 通路可用 (但非 Darra 栈)。
    • 对端 Rx: 来自 E0-DC-A0-19-BF-DD (USB 卡当前所接交换机), 证明 RX 通路可用 + 网线/链路 Up

判读: 物理链路与二层收发正常, 但 Darra PROFINET 数据面 0 流量 — 从站当前并未在线发帧。


4. 服务日志根因 (只读取证)

logs\pnet_20260814.log 反复出现 (03:48 / 03:59 / 04:01 / 05:25):

[ERROR] 驱动数据面初始化失败 异常: PnetDriverException: DeviceIoControl 失败
(IOCTL=0x0022EC84, Win32 error=1168)
at PnetDriverBridge.BindAdapter() ... PnetRuntime.StartCoreFresh()
[ERROR] 从站进入网卡缺失/数据面降级状态: 网卡缺失: 配置网卡 '以太网 2' 不存在或驱动未绑定
(BIND_ADAPTER 失败, Win32=1168)
  • 1168 = ERROR_NOT_FOUND: 驱动按网卡名找不到自己的绑定 (与 §2.2 协议侧缺 Linkage\Bind 完全吻合)。
  • 后果: 从站栈数据面降级, 不发 PPM / DCP Hello 帧 (与 §3 抓包 0 帧互证)。

关键结论: 1168 是自连的"第一前置" — 即使现在插上第二块网卡并发出 DCP Identify, 设备侧也无人应答。


5. DCP 自检 — 未执行, 如实说明

未执行原因 (三重阻塞, 缺一不可):

  1. 无发帧口: 没有第二块物理网卡 (§1)。
  2. 无发帧工具: 无 Npcap / PRONETA / scapy / Wireshark; 纯 PowerShell 无法发 L2 裸帧; 仓内 测试项目/TEST_Pnet_Sim 为对测说明文档, 无现成主站模拟器可执行程序 (仓内亦无 DCP 发送工具)。
  3. 数据面降级 (§4): 即使有前两者, DCP Identify 也无人应答。

条件齐后 (或到 .197 测试机) 的 DCP 自检步骤:

  1. 主站侧装 西门子 PRONETA (免费) 或 Wireshark+Npcap; 选第二块卡。
  2. 主站发 DCP Identify All (目的 01-0E-CF-00-00-00, EtherType 0x8892, FrameID 0xFEFD, ServiceID 0x0005)。
  3. 判据: 设备返回 Identify Response (NameOfStation / DeviceID / 选项 IP·Device·All); 线上同时出现周期 PPM 帧 (帧尾 0xDA55, 见 Darra_Pnet_Kernel/.../DarraRT_Pnet_Internal.h)。
  4. 与仓内判据一致: 测试项目/TEST_Pnet_Sim 方式 A — "周期性 0x8892 帧可捕获 = 帧路径通"。

6. 可行性结论

维度状态说明
物理链路USB 卡 Up 100M, LLDP 双向通, 已接交换机
主站侧网卡缺第二块物理有线卡 (ASIX 插回即补足, 免装驱动)
设备侧数据面1168 半死绑定 (协议侧无 Linkage\Bind), 从站未在线
主站工具需装 PRONETA 或 Wireshark+Npcap (仓内无)
自连总判定当前不可行硬件差 1 块卡 + 软件差 1168 修复 + 工具差 1 个主站软件; 三项齐后可全本地自连

同卡软路径已排除: VMware Bridge 流量不回送宿主协议栈 (同卡自连不成立); TAP/Wintun 与 USB 卡无通路; 建网桥属配置变更, 本轮禁动。


7. 最简完成路径 (建议顺序)

  1. 插回 ASIX AX88179 USB 千兆网卡 (或任意第二块 USB 有线网卡) — PnP 节点已在, 免装驱动。
  2. 修 1168: 复位半死绑定 — sc stop DarraRT_Pnet + sc start DarraRT_Pnet (同 .197 已验证手法), 或走 工具/NetCfgInstall 重绑 / GUI 重新选择网卡并应用配置。本轮禁动服务/驱动, 此步需授权后执行。 修好后从站即应自发周期 PPM + DCP Hello 帧 (pktmon 即可复测)。
  3. 直连网线: 两块卡均为现代 PHY, 支持 Auto-MDIX — 交叉线/直通线均可 (100M WCH 卡同样支持)。
  4. 主站软件: 西门子 PRONETA (免费, DCP+IO 测试) 或 Wireshark+Npcap (按 测试项目/TEST_Pnet_Sim 方式 A 判据); IO 级对测可上 p-net 社区控制器工具或 TIA 仿真。
  5. 通过判据: ① 主站 DCP Identify → 设备 Identify Response (设备名/IP); ② 线上周期 0x8892 PPM 帧 + 0xDA55 magic; ③ 建立 AR/IO CR 后服务日志 Connected=1Heartbeat 递增。

8. 本轮已完成验证清单 (证据)

  • Get-NetAdapter 全表: 物理有线仅"以太网 2"1 块; 虚拟卡清单 (VMnet1/8, TAP, Wintun×6, Mihomo, 蓝牙 PAN); -IncludeHidden 无隐藏有线卡
  • Get-PnpDevice 在场核对: ASIX VID_0B95&PID_1790 未插入; 以太网 2 = WCH VID_1A86&PID_E396
  • Get-NetAdapterBinding: DarraRT_Pnet/DarraRT_Eth/s7PnDiscoveryDriver Enabled=True; ms_tcpip Disabled (纯二层)
  • 注册表双侧重核: NIC 侧 UpperBindDarraRTPnet ✓; 协议侧 Services\DarraRT_Pnet 无 Linkage 键 ✗ (半死绑定根因)
  • 服务状态: DarraPnetService RUNNING (PID 60212, 仓库 Release 版); 驱动 DarraRT_Pnet RUNNING (oem125.inf)
  • 服务日志根因: BindAdapter IOCTL 0x0022EC84 → Win32 1168 → 数据面降级 (05:25 仍在)
  • pktmon 25 s 抓包: 0×0x8892 / 0×01-0E-CF / 0×DA55; LLDP 15 帧双向通 (本机 Tx 3 = s7PnDiscoveryDriver; 对端 E0-DC-A0-19-BF-DD)
  • DCP Identify 实发 — 未执行 (缺第二卡 + 无发帧工具 + 数据面降级), 步骤见 §5

约束遵守: 未重启机器、未动驱动绑定、未 reset 网卡、未启停服务、未改任何配置文件; 仅 Write 本 md; 抓包临时文件 (pnet-dcp.etl/.txt) 已删除; 未执行任何 git 操作。