feat(motor): 自适应 PDO 窗口与通道活动指示,新增原生 SOEM 时序诊断

后端 PDO 循环改为按在线槽收缩状态窗口,稀疏总线下单槽每周期都能刷新,
并补上尾部槽的发现扫描游标;新增自旋节拍源(阈值/显式覆盖)、P 核识别
与线程级钉核,自旋期间释放 GIL 以免 HTTP 线程被饿死;启动时先关停旧实例,
避免两个进程争用 Npcap 适配器。

记录每拍完整时间线、GC stop-the-world 事件与网格跳拍数,经 /api/motor/dbg
导出用于归因固定频率的超时;配
This commit is contained in:
cbb
2026-09-05 01:20:14 +08:00
parent 979da72181
commit 79633a2b0f
121 changed files with 33088 additions and 75 deletions
+148
View File
@@ -0,0 +1,148 @@
Microsoft (R) COFF/PE Dumper Version 14.43.34809.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file C:\Windows\System32\Npcap\wpcap.dll
File Type: DLL
Section contains the following exports for wpcap.dll
00000000 characteristics
FFFFFFFF time date stamp
0.00 version
1 ordinal base
119 number of functions
119 number of names
ordinal hint RVA name
1 0 00001010 bpf_dump
2 1 00001170 bpf_filter
3 2 00001C40 bpf_image
4 3 00001190 bpf_validate
5 4 00073000 eproto_db
6 5 00018850 pcap_activate
7 6 000189C0 pcap_breakloop
8 7 000189E0 pcap_bufsize
9 8 00018A00 pcap_can_set_rfmon
10 9 00018A40 pcap_close
11 A 00012DD0 pcap_compile
12 B 000131B0 pcap_compile_nopcap
13 C 00018A70 pcap_create
14 D 00018BC0 pcap_createsrcstr
15 E 00018BF0 pcap_datalink
16 F 00018C10 pcap_datalink_ext
17 10 00018C30 pcap_datalink_name_to_val
18 11 00018D10 pcap_datalink_val_to_description
19 12 00018D60 pcap_datalink_val_to_description_or_dlt
20 13 00018E00 pcap_datalink_val_to_name
21 14 00018E50 pcap_dispatch
22 15 0001DED0 pcap_dump
23 16 0001DF60 pcap_dump_close
24 17 0001DF90 pcap_dump_file
25 18 0001DFA0 pcap_dump_flush
26 19 0001DFC0 pcap_dump_ftell
27 1A 0001DFD0 pcap_dump_ftell64
28 1B 0001DFE0 pcap_dump_hopen
29 1C 0001E0F0 pcap_dump_open
30 1D 0001E240 pcap_dump_open_append
31 1E 000136B0 pcap_ether_aton
32 1F 00013720 pcap_ether_hostton
33 20 00018E70 pcap_file
34 21 00018E80 pcap_fileno
35 22 00018EA0 pcap_findalldevs
36 23 000220E0 pcap_findalldevs_ex
37 24 00019070 pcap_free_datalinks
38 25 00019070 pcap_free_tstamp_types
39 26 00019080 pcap_freealldevs
40 27 00013230 pcap_freecode
41 28 00019140 pcap_get_airpcap_handle
42 29 000191D0 pcap_get_tstamp_precision
43 2A 000191E0 pcap_geterr
44 2B 000191F0 pcap_getevent
45 2C 00019270 pcap_getnonblock
46 2D 0001C130 pcap_hopen_offline
47 2E 0001C140 pcap_hopen_offline_with_tstamp_precision
48 2F 00019340 pcap_init
49 30 000193D0 pcap_inject
50 31 00019490 pcap_is_swapped
51 32 0001FF90 pcap_lib_version
52 33 000194B0 pcap_list_datalinks
53 34 00019580 pcap_list_tstamp_types
54 35 00019640 pcap_live_dump
55 36 00019690 pcap_live_dump_ended
56 37 00020050 pcap_lookupdev
57 38 000202B0 pcap_lookupnet
58 39 000196A0 pcap_loop
59 3A 00019720 pcap_major_version
60 3B 00019740 pcap_minor_version
61 3C 00013800 pcap_nametoaddr
62 3D 00013870 pcap_nametoaddrinfo
63 3E 000138C0 pcap_nametoeproto
64 3F 00013920 pcap_nametollc
65 40 000136A0 pcap_nametonetaddr
66 41 00013980 pcap_nametoport
67 42 00013B40 pcap_nametoportrange
68 43 00013BF0 pcap_nametoproto
69 44 00019760 pcap_next
70 45 00002360 pcap_next_etherent
71 46 000197B0 pcap_next_ex
72 47 00019810 pcap_offline_filter
73 48 00019830 pcap_oid_get_request
74 49 00019880 pcap_oid_set_request
75 4A 000225D0 pcap_open
76 4B 000198D0 pcap_open_dead
77 4C 000198E0 pcap_open_dead_with_tstamp_precision
78 4D 00019B10 pcap_open_live
79 4E 0001C200 pcap_open_offline
80 4F 0001C210 pcap_open_offline_with_tstamp_precision
81 50 0001A3D0 pcap_parsesrcstr
82 51 0001A6D0 pcap_perror
83 52 00023F70 pcap_remoteact_accept
84 53 00023FA0 pcap_remoteact_accept_ex
85 54 00024350 pcap_remoteact_cleanup
86 55 00024380 pcap_remoteact_close
87 56 00024510 pcap_remoteact_list
88 57 0001A740 pcap_sendpacket
89 58 0001A7A0 pcap_sendqueue_alloc
90 59 0001A800 pcap_sendqueue_destroy
91 5A 0001A820 pcap_sendqueue_queue
92 5B 0001A890 pcap_sendqueue_transmit
93 5C 0001A8D0 pcap_set_buffer_size
94 5D 0001A910 pcap_set_datalink
95 5E 0001AA80 pcap_set_immediate_mode
96 5F 0001AAC0 pcap_set_promisc
97 60 0001AB00 pcap_set_rfmon
98 61 0001AB40 pcap_set_snaplen
99 62 0001AB80 pcap_set_timeout
100 63 0001ABC0 pcap_set_tstamp_precision
101 64 0001AC50 pcap_set_tstamp_type
102 65 0001ACE0 pcap_setbuff
103 66 0001AD20 pcap_setdirection
104 67 0001ADD0 pcap_setfilter
105 68 0001AE10 pcap_setmintocopy
106 69 0001AE50 pcap_setmode
107 6A 0001AE90 pcap_setnonblock
108 6B 00022850 pcap_setsampling
109 6C 0001AF00 pcap_setuserbuffer
110 6D 0001AF40 pcap_snapshot
111 6E 0001AF60 pcap_stats
112 6F 0001AFA0 pcap_stats_ex
113 70 0001AFE0 pcap_statustostr
114 71 0001B150 pcap_strerror
115 72 0001B1B0 pcap_tstamp_type_name_to_val
116 73 0001B290 pcap_tstamp_type_val_to_description
117 74 0001B2E0 pcap_tstamp_type_val_to_name
118 75 00073120 pcap_version
119 76 000136A0 pcap_wsockinit
Summary
A000 .data
1000 .fptable
4000 .pdata
26000 .rdata
1000 .reloc
1000 .rsrc
4C000 .text
+4
View File
@@ -0,0 +1,4 @@
@echo off
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" >nul
cd /d G:\Robot_v2\DCU\tools\ecat
cl /nologo /c /O2 /W3 /utf-8 /D_CRT_SECURE_NO_WARNINGS /I soem-src\soem /I soem-src\osal /I soem-src\osal\win32 /I soem-src\oshw\win32 /I soem-src\oshw\win32\wpcap\Include /Fobuild_native\ soem-src\oshw\win32\nicdrv.c 2>&1
+121
View File
@@ -0,0 +1,121 @@
LIBRARY wpcap
EXPORTS
bpf_dump
bpf_filter
bpf_image
bpf_validate
eproto_db
pcap_activate
pcap_breakloop
pcap_bufsize
pcap_can_set_rfmon
pcap_close
pcap_compile
pcap_compile_nopcap
pcap_create
pcap_createsrcstr
pcap_datalink
pcap_datalink_ext
pcap_datalink_name_to_val
pcap_datalink_val_to_description
pcap_datalink_val_to_description_or_dlt
pcap_datalink_val_to_name
pcap_dispatch
pcap_dump
pcap_dump_close
pcap_dump_file
pcap_dump_flush
pcap_dump_ftell
pcap_dump_ftell64
pcap_dump_hopen
pcap_dump_open
pcap_dump_open_append
pcap_ether_aton
pcap_ether_hostton
pcap_file
pcap_fileno
pcap_findalldevs
pcap_findalldevs_ex
pcap_free_datalinks
pcap_free_tstamp_types
pcap_freealldevs
pcap_freecode
pcap_get_airpcap_handle
pcap_get_tstamp_precision
pcap_geterr
pcap_getevent
pcap_getnonblock
pcap_hopen_offline
pcap_hopen_offline_with_tstamp_precision
pcap_init
pcap_inject
pcap_is_swapped
pcap_lib_version
pcap_list_datalinks
pcap_list_tstamp_types
pcap_live_dump
pcap_live_dump_ended
pcap_lookupdev
pcap_lookupnet
pcap_loop
pcap_major_version
pcap_minor_version
pcap_nametoaddr
pcap_nametoaddrinfo
pcap_nametoeproto
pcap_nametollc
pcap_nametonetaddr
pcap_nametoport
pcap_nametoportrange
pcap_nametoproto
pcap_next
pcap_next_etherent
pcap_next_ex
pcap_offline_filter
pcap_oid_get_request
pcap_oid_set_request
pcap_open
pcap_open_dead
pcap_open_dead_with_tstamp_precision
pcap_open_live
pcap_open_offline
pcap_open_offline_with_tstamp_precision
pcap_parsesrcstr
pcap_perror
pcap_remoteact_accept
pcap_remoteact_accept_ex
pcap_remoteact_cleanup
pcap_remoteact_close
pcap_remoteact_list
pcap_sendpacket
pcap_sendqueue_alloc
pcap_sendqueue_destroy
pcap_sendqueue_queue
pcap_sendqueue_transmit
pcap_set_buffer_size
pcap_set_datalink
pcap_set_immediate_mode
pcap_set_promisc
pcap_set_rfmon
pcap_set_snaplen
pcap_set_timeout
pcap_set_tstamp_precision
pcap_set_tstamp_type
pcap_setbuff
pcap_setdirection
pcap_setfilter
pcap_setmintocopy
pcap_setmode
pcap_setnonblock
pcap_setsampling
pcap_setuserbuffer
pcap_snapshot
pcap_stats
pcap_stats_ex
pcap_statustostr
pcap_strerror
pcap_tstamp_type_name_to_val
pcap_tstamp_type_val_to_description
pcap_tstamp_type_val_to_name
pcap_version
pcap_wsockinit