docs(任务规划): 只留待办——删除已完成条目与变更记录
「只保留待办」此前只落了一半:UI补齐 / 排期详述 / 测试专项已瘦身,并行分道 方案与数据可信还留着批 1/批 2 的收口说明、销项括注与里程碑达成记录。本次按 README.md §3 清干净。 并行分道方案.md(353→238 行): - 删「批 1/批 2/批 2.5 全部收口」块、道A~道D 表行、11 张已销项数据可信卡 - 删 L1-5 通道标定 / L5-2 码值越界两条已落项、§5 批 1 三道详解(5.1~5.5) - 删 §6.1 冲突矩阵;章节重编号 9→8,并修 §9→§8 自引用 - §4.3 删「ui_data 为什么当初排批 2」历史插叙 数据可信.md(384→290 行): - 删 §1「为什么是这一波」、§2.2 量纲错配、§2.4 点表现状、§2.5 引擎约束 - §5 任务卡表只剩 0 / 0b / 12;§3 里程碑只剩 M4 未收口行,M5/M6 压成一行口径 - §6 顺序图只留剩余三张;§8 删两张已销风险行;§4.4 落地注改为现状口径 - §2.1/§2.3/§2.6/§4.1~§4.5/§7/§8/§9/§10 与卡 0/0b/12 全部保留:它们是 adc_cal.* / meas.* / cfg_file.* / protect_task.c / ui_data* 头注释引用的 口径出处,不是"已完成记录" - §2 编号不连续是刻意的(被代码引用故不重排),已在节首加注说明 README.md / docs/README.md: - 文件地图去掉「卡 1~11 已销项」「八条道」等历史表述 - §1 网络行删掉三处 merge 号与批 1/批 2 销项经过 - 道A~道H 改为道E~道H,与并行分道方案一致 排期详述.md / 采集保护收尾.md / 登记簿.md / UI补齐.md: - 删 N-2/N-17/N-22 销项注、M1/M2 已达成括注、批 1/批 2 道名 - 修 E-27/28「批 3」与「批 4」自相矛盾;B10 硬依赖改指卡 12 未动:测试与架构专项.md——S12 / A-5 / P1-10 三节分别是 net_socket.c、 check_size_gate.py、ch395f_test.h 与门禁说明引用的锚点,删了会断校验 6。 门禁:check_ids --strict 通过(可判定 84.73%,基线 84.0%); check_doc_links --all --sections-strict 通过(180 文档 / 2691 处章节引用)。
This commit is contained in:
+1
-1
@@ -238,7 +238,7 @@ docs/
|
||||
|
||||
| 位置 | 内容 |
|
||||
|---|---|
|
||||
| [`任务规划/`](任务规划/README.md) | **统一待办登记簿(文件夹)**——`README.md` = 排序权威(推进顺序 + 波次语义名)+ 编号空间 + 维护约定;`UI补齐.md` = **当前波次**(21 叶补齐,7 张卡);`数据可信.md` = 收口态(软件侧已 100%,剩 3 张台架/外部卡);`采集保护收尾.md` = 「采集保护收尾」剩余(只剩 M3 送检);`登记簿.md` = N/S/T-x 长期观察;`排期详述.md` / `暂缓-RS485.md` / `测试与架构专项.md` = 波内详表 / 冻结簇 / 专项;`基线与待确认.md` = 待确认(开放问题,OQ 族属主);**`并行分道方案.md` = 待办横向归道(写域 域1~域8 + 道A~道H + 批次 + 合并次序)**;只保留未闭环项,完成即删 |
|
||||
| [`任务规划/`](任务规划/README.md) | **统一待办登记簿(文件夹)**——`README.md` = 排序权威(推进顺序 + 波次语义名)+ 编号空间 + 维护约定;`UI补齐.md` = **当前波次**(21 叶补齐,7 张卡);`数据可信.md` = 收口态(软件侧已 100%,剩 3 张台架/外部卡);`采集保护收尾.md` = 「采集保护收尾」剩余(只剩 M3 送检);`登记簿.md` = N/S/T-x 长期观察;`排期详述.md` / `暂缓-RS485.md` / `测试与架构专项.md` = 波内详表 / 冻结簇 / 专项;`基线与待确认.md` = 待确认(开放问题,OQ 族属主);**`并行分道方案.md` = 待办横向归道(写域 域1~域8 + 道E~道H + 批次 + 合并次序)**;只保留未闭环项,完成即删 |
|
||||
| `硬件平台/` | 网表详细分析报告与语义图(V0.0 / V0.1);**[`ADC通道映射说明.md`](硬件平台/ADC通道映射说明.md)——V0.1 十七路 ADC 语义/网名/通道号权威映射表(固件取数、UI 显示、自检注入以此为准)** |
|
||||
| `芯片手册/` | 外部芯片数据手册转录(CH395F / GD5F2GQ5UE / SD2506 / TPAFE5160 / RTL8305NBI 等) |
|
||||
| `images/` | 文档技术配图(`.svg` 产物,由 `tools/arch_diagram/`、`tools/refgraph/` 生成) |
|
||||
|
||||
+10
-10
@@ -10,12 +10,12 @@
|
||||
> | `README.md`(本文件) | 编号空间(§0)· 未闭环一览(§1)· **推进顺序权威(§2)** · 维护约定(§3) | 低频;仅主工作树 |
|
||||
> | `采集保护收尾.md` | 「采集保护收尾」剩余:只剩 M3 送检(B10) | 低频——送检窗口前后改 |
|
||||
> | `UI补齐.md` | **当前波次(2026-10-25 用户定项)**:菜单树剩 21 叶未绑,按数据源就绪度分三梯队;含现状核对、三梯队、**7 张任务卡** | **高频**——开工后状态流转只改它 |
|
||||
> | `数据可信.md` | **收口态**:软件侧 100%(卡 1~11 已销项),只剩卡 0 / 0b / 12 三张台架与外部卡;含事实基线、折算模型、前置决策 | 低频——只在上机或外部资源到位时改 |
|
||||
> | `数据可信.md` | **收口态**:软件侧已 100%,只剩卡 0 / 0b / 12 三张台架与外部卡;含事实基线、折算模型、前置决策(**代码头注释引用其 §2/§4/§7/§8/§9/§10 为口径出处**) | 低频——只在上机或外部资源到位时改 |
|
||||
> | `排期详述.md` | 「结构债」/「验证常态」波内详表 | 低频 |
|
||||
> | `并行分道方案.md` | **待办横向归道**:文件级写域(域1~域8)· 八条道(道A~道H)· 批次与合并次序 · 不能并行的事项 | 低频——分道或批次变化时改;**明细不复制**,只做归道 |
|
||||
> | `并行分道方案.md` | **待办横向归道**:文件级写域(域1~域8)· 四条道(道E~道H)· 批次与合并次序 · 不能并行的事项 | 低频——分道或批次变化时改;**明细不复制**,只做归道 |
|
||||
> | `暂缓-RS485.md` | B2 RS-485 整簇冻结清单(用户决定) | 极少 |
|
||||
> | `登记簿.md` | N-x / S-x / T-x 长期登记(网络 / 存储 / 硬件 / 测试 / 报告并轨) | 中频——新发现进对应表 |
|
||||
> | `测试与架构专项.md` | S1x / A-x 专项(P1-10 / S12 / A-5 已于 2026-10-25 销项) | 低频 |
|
||||
> | `测试与架构专项.md` | S1x / A-x 专项**未闭环项** | 低频 |
|
||||
> | `基线与待确认.md` | **只放还没答案的问题**(OQ 族属主登记处);基线类内容已移出到模块文档 | 参考,少改 |
|
||||
>
|
||||
> **怎么用**:想知道"现在该做什么、按什么顺序" → 本文件 **§2**;想知道"当前波次任务卡状态 / 验收判据 / 并行道" → `UI补齐.md`;
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
| 类别 | 数量 | 条目 |
|
||||
|---|---|---|
|
||||
| 网络 | 4 | N-3(L5 基线重验)· N-16(A2/A4 负向台架)· N-30(relisten 沉降段统一受阻,观察)· **reconcile 突发饿死 uiTask**(🟦并档 E-27/28 批 4 评估)——2026-10-25 台架两轮分箱定案的饿死型签名。本波连带三修已合入并销项(按位分账 66f862e / sink 往返喂位 9d90e00 / v5 判读 v1.1 4c05b58+a92baa2,两轮验收与分箱证据 `boot_log_data/f3rounds_r1/r2` 两 gz)。本波道F 原三张条目(日志静默观察 / 探针窗口心跳 / 写回 flush)已于 2026-10-25 台架大窗销项删行——心跳主签名在 9 条 stall 行中 NET 位全程在场 = 旧 44/44 必发归零;复跑暴露的两个新签名以语义标识上行为本表独立条目,详 `登记簿.md` §1 |
|
||||
| 网络 | 4 | N-3(L5 基线重验)· N-16(A2/A4 负向台架)· N-30(relisten 沉降段统一受阻,观察)· **reconcile 突发饿死 uiTask**(🟦并档 E-27/28,批 4 评估)——2026-10-25 台架两轮分箱定案的饿死型签名,详 `登记簿.md` §1 |
|
||||
| 存储 / 日志 | 3 | **S-3(USART1 TX-only 根治)** · S-4(dhara 重试自旋)· S-5(可选全序列卷锁) |
|
||||
| 结构 / 健壮性 | 3 | N-23(注册校验残余白名单)· N-25(性能/语义簇)· N-28(uvprojx 空 TU 观察) |
|
||||
| 仓库 | 1 | N-29(`.git` **233 MB**,**已决策暂不处理、登记观察**) |
|
||||
@@ -65,7 +65,7 @@
|
||||
| 测试 / 基础设施 | 3 | T-7(CI 远端两 job 闭环 + 第二机交叉验证)· A-4(采集链路测试约束,RS485 侧随 B2 暂缓)· 串口助手 A6/A7 补验(待 CH340) |
|
||||
| **UI**(当前波次) | 1 簇 · **21 叶** | **U5 页面落地**——33 叶已绑 12、剩 **21**(不是原口径的 4 叶):第一梯队 9 叶(整定 4 + 维护 3 + 遥测 2,数据源全就绪)· 第二梯队 4 叶(通讯设置 + 遥信 3 页)· 第三梯队 6 叶(记录 5 + 运行报告)· 不排 2 叶(手动录波缺模块 / SNTP 缺口径)。组件层三件套已落地但**零消费者**,详表 `UI补齐.md` |
|
||||
| **暂缓** | 2 簇 | **B2 RS-485 整簇**(`暂缓-RS485.md`)· **N-27 内存优化簇剩余**(R-2 后半 / R-3 / R-4 / R-6;重开条件见 `../内存管理/RAM使用分析与优化方案.md` §4)。⚠ 已落地的 R-9 与 `mem-budget` 门禁/台账/趋势**不回退** |
|
||||
| **数据可信**(收口态) | 1 簇 · 剩 3 张外部卡 | **软件侧已 100%**:卡 1~7 批 1 销项、卡 8~11 批 2 销项(2026-10-25,遥测快照/104 读快照/运行参数段/频率绑定全链 + 大窗与验收窗台架钉证;详表 `数据可信.md` §5)。剩 🔴 已知电压注入(卡 0,一块万用表即可)· 🟡 端子变比(0b)· 🟡 标准源两点标定(12)。⚠ **保护现处于未标定闭锁态**——`protect_task.c:98` 要求 UA/UN/IA 的 `ADC_CAL_F_VALID` 全置位,而 VALID 只在标定写入 `[adc_cal] valid` 后才置位;用户裁定(2026-10-25)**保持闭锁到标准源到位**,不缩短解锁路径 |
|
||||
| **数据可信**(收口态) | 1 簇 · 剩 3 张外部卡 | **软件侧已 100%**,只剩 🔴 已知电压注入(卡 0,一块万用表即可)· 🟡 端子变比(0b)· 🟡 标准源两点标定(12),详表 `数据可信.md` §5。⚠ **保护现处于未标定闭锁态**——`protect_task.c:98` 要求 UA/UN/IA 的 `ADC_CAL_F_VALID` 全置位,而 VALID 只在标定写入 `[adc_cal] valid` 后才置位;用户裁定(2026-10-25)**保持闭锁到标准源到位**,不缩短解锁路径 |
|
||||
|
||||
> **网络侧 E-xx 存量项**(历史编号族,属主文档已于 2026-10-15 删除,编号冻结见
|
||||
> `docs/编号规范.md` §4.3):E-27 / E-28 挂「net 层跨上下文收口」(见 `排期详述.md` §1);
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
1. **功能主线优先(用户决定 2026-10-12)**:把"采集→相量→保护→上送"链路收口到"台架闭环 + 功能面完整 + 可送检"。前两项已达成,「采集保护收尾」只剩 M3 送检(`采集保护收尾.md`)。**RS-485 对下采集(B2)暂缓**(`暂缓-RS485.md`),主线不等它。
|
||||
2. **产品功能面在 V0.1 已到顶**(2026-10-25 复核):保护元件的三相类(B/C 相过流、零序过流、PT/CT 断线、方向/功率类)**全部被 N-18 硬件缺陷挡住**(跨转换器无同一时刻性 + STM32 侧削顶),剩余可行的只有 A 相涌流制动 / 突变量启动 / 无压无流闭锁 / 元件级校验和 4 项,而它们**没有标准源就无法验证**。加上**保护当前整条链处于未标定闭锁态**(`protect_task.c:98`),保护侧的工作在标准源到位前**没有可闭环的增量**。
|
||||
3. **数据可信软件侧已尽**:卡 1~11 全销项,剩下的卡 0 / 0b / 12 三张全是台架或外部资源(万用表 / 子板 / 标准源),软件道插不上手。
|
||||
3. **数据可信软件侧已尽**:剩下的卡 0 / 0b / 12 三张全是台架或外部资源(万用表 / 子板 / 标准源),软件道插不上手。
|
||||
4. **内存预算红线已机械化**:`mem-budget` 钩子拦 RW_IRAM1/RW_CCM >92%,子系统配额 / CCM 台账 / 趋势基线 → `docs/内存管理/RAM预算台账.md`。**R-2 后半与 R-3 / R-4 / R-6 整簇暂缓**(CCM 只剩 **7,904 B**,重开条件见 `../内存管理/RAM使用分析与优化方案.md` §4)——**门禁与台账继续常开,它们正是"何时该重开"的传感器**。
|
||||
5. **验证债仅剩窗口性事项**(L5 基线重锁 / A2-A4 负向台架 / 串口助手补验 / T-7 CI 两 job),不单独排期、逢机顺手做。
|
||||
|
||||
@@ -106,11 +106,11 @@
|
||||
| 波次 | 内容 | 为什么在这 |
|
||||
|---|---|---|
|
||||
| **采集保护收尾** | **只剩 M3 送检**(B10,Fixed Date)——任务卡与判据见 `采集保护收尾.md` | 收口目标"台架闭环 + 功能面完整 + 可送检"的前两项已达成;**真约束只剩送检窗口**,窗口一到全道让路、窗口前 2 日特性冻结。⚠ B10 的「L1-5 标定复核」依赖卡 12,而卡 12 要标准源;保护现处于未标定闭锁态(`protect_task.c:98`),送检前必须先解卡 |
|
||||
| **数据可信**(收口态) | **软件侧已 100%**:M4 系数与量纲 ②③④⑥ / M5 遥测链 / M6 运行参数与点表全部达成;**只剩 3 张台架与外部卡**——卡 0 已知电压注入(万用表)· 卡 0b 端子变比(子板)· 卡 12 标准源两点标定。详表 `数据可信.md` | **用户决定(2026-10-23):通道标定先于 UI 与结构债**——它是唯一"改一处、全链受益"的入口(`App/task/adc_task.c:335` 是码值→工程量的唯一位置),软件道已于 2026-10-25 全部走完(卡 1~11 销项)。⚠ **剩下的三张卡没有软件道可做**:0 要万用表与台架、0b 要子板、12 要标准源。**台架不在手边(2026-10-25 确认)→ 本波整体顺延**,不占编码道 |
|
||||
| **数据可信**(收口态) | **软件侧已 100%**:**只剩 3 张台架与外部卡**——卡 0 已知电压注入(万用表)· 卡 0b 端子变比(子板)· 卡 12 标准源两点标定。详表 `数据可信.md` | **用户决定(2026-10-23):通道标定先于 UI 与结构债**——它是唯一"改一处、全链受益"的入口(`App/task/adc_task.c:335` 是码值→工程量的唯一位置)。⚠ **剩下的三张卡没有软件道可做**:0 要万用表与台架、0b 要子板、12 要标准源。**台架不在手边(2026-10-25 确认)→ 本波整体顺延**,不占编码道 |
|
||||
| **UI 补齐**(当前) | 菜单树剩 **21 叶未绑**(33 叶已绑 12):第一梯队 9 叶零依赖 · 第二梯队 4 叶需新配置段 · 第三梯队 6 叶需写入方或计数器;7 张任务卡见 `UI补齐.md` | **用户决定(2026-10-25):下一波只做 UI 补齐,结构债押后**。判据是"能开工"——产品功能面被 N-18 挡、数据可信被标准源挡,而结构债无外部依赖、随时能捡;UI 是唯一**数据源已就绪、不依赖台架、能整波闭环**的工作,且 21 叶一直压着产品可见度。组件层三件套(编辑器 / 定值表 / 操作页)已落地但**零消费者**,不写页面等于白做 |
|
||||
| **结构债**(押后) | **net 层跨上下文收口(含 2026-10-25 台架实证的 reconcile 饿死签名)→ 注册校验白名单清理 → 性能语义簇 / 空 TU**;USART1 改为只发不收**单独独占一轮**(CubeMX 重生成,需清空全部工作树)。日志管线与 S8 合并评估、写回 flush 已于 2026-10-25 销项;详表 `排期详述.md` §1 | **无人在等、无外部依赖 → 随时能捡起来**,故排在 UI 之后。其中 net 收口优先于 USART1:饿死签名是台架**实测捕获**的可用性缺陷(8 连窗 UI 缺席 800 ms+,v1.1 判据下 3 事件 8 行、漏检与误报均为零),而 USART1 那条只是 IWDG 误复位的机制根源、且已有 250 ms drain 预算 + 300 ms 冷却的缓解 |
|
||||
| **结构债**(押后) | **net 层跨上下文收口(含 2026-10-25 台架实证的 reconcile 饿死签名)→ 注册校验白名单清理 → 性能语义簇 / 空 TU**;USART1 改为只发不收**单独独占一轮**(CubeMX 重生成,需清空全部工作树)。详表 `排期详述.md` §1 | **无人在等、无外部依赖 → 随时能捡起来**,故排在 UI 之后。其中 net 收口优先于 USART1:饿死签名是台架**实测捕获**的可用性缺陷(8 连窗 UI 缺席 800 ms+,v1.1 判据下 3 事件 8 行、漏检与误报均为零),而 USART1 那条只是 IWDG 误复位的机制根源、且已有 250 ms drain 预算 + 300 ms 冷却的缓解 |
|
||||
| **预算与内存** | ⏸ **整簇暂缓**:R-2 后半(缩堆 56→32 KB → 29.5 KB 迁 CCM)· R-3 · R-4 · R-6;R-5 已判定不可行 | **不再排期**:没有功能在等这块预算,而搬迁要动 scatter、要逐条过 DMA 可达性清单、缩堆还要上板复测。重开条件 → `../内存管理/RAM使用分析与优化方案.md` §4 |
|
||||
| **验证常态** | T-7 CI · L5 基线重锁 · A2/A4 负向台架 · 串口助手 A6/A7(详表 `排期详述.md` §2) | 窗口性,逢机顺带,不单独排期。探针窗口心跳已于 2026-10-25 台架大窗销项(心跳主签名在 9 条 stall 行中 NET 位全程在场 = 旧 44/44 必发归零) |
|
||||
| **验证常态** | T-7 CI · L5 基线重锁 · A2/A4 负向台架 · 串口助手 A6/A7(详表 `排期详述.md` §2) | 窗口性,逢机顺带,不单独排期 |
|
||||
| **仓库决策** | **N-29** `.git` **233 MB** + 图片 36.3 MB | **已决策(2026-10-11):暂不处理、登记观察**——推送/协作前重评(`git filter-repo` 历史重写影响未推送提交与协作者) |
|
||||
| **暂缓** | **B2 RS-485 整簇**(`暂缓-RS485.md`) | **用户决定(2026-10-12):当前不处理 RS-485** |
|
||||
| **硬件改版** | N-18 8 路电气量全接 TPAFE(V0.2) | 下一版硬件;固件侧已用语义映射隔离,改版只动映射表 |
|
||||
@@ -120,7 +120,7 @@
|
||||
```
|
||||
采集保护收尾 只剩 B10 送检(M3, Fixed Date) 详表 采集保护收尾.md
|
||||
↓ ⚠ 送检的「L1-5 标定复核」依赖卡 12(标准源),且保护要先解卡
|
||||
数据可信 ⏸ 软件侧已 100%(卡 1~11 销项,M4/M5/M6 达成)
|
||||
数据可信 ⏸ 软件侧已 100%(只剩台架与外部卡)
|
||||
只剩 卡 0(万用表)→ 0b(子板变比)→ 12(标准源) 详表 数据可信.md
|
||||
台架不在手边(2026-10-25)→ 整体顺延,不占编码道
|
||||
↓
|
||||
|
||||
+5
-7
@@ -8,8 +8,7 @@
|
||||
> `docs/UI设计/页面补齐规划.md`;数据供给契约见 `docs/UI设计/UI_数据供给设计说明.md`。
|
||||
>
|
||||
> **修订**:2026-10-25 建档(用户决定:下一波只做 UI 补齐,结构债押后;台架不在手边,
|
||||
> 卡 0 顺延)。**取代原「余批 5 = 整定 4 页」的口径**——那是按页面批次统计的,漏了批 1
|
||||
> 剩的 3 页与批 3 的 12 页,实际剩 21 叶。
|
||||
> 卡 0 顺延)。统计口径 = **按菜单树叶计**(不按页面批次计),当前 33 叶已绑 12、剩 21。
|
||||
|
||||
---
|
||||
|
||||
@@ -18,10 +17,10 @@
|
||||
| 项 | 数 | 说明 |
|
||||
|---|---|---|
|
||||
| 菜单树叶总数 | **33** | `ui_menu_tree.txt` 实际叶子(不含 9 个父节点) |
|
||||
| 已绑页面 | **12** | 装置信息 · 交流量 · 直流量 · 遥信量 · 查看 4 页 · 网口设置 · SOE · 自检记录 · 运行记录 |
|
||||
| 已绑页面 | **12** | 装置信息 / 交流量 / 直流量 / 遥信量 / 查看 4 页 / 网口设置 / SOE / 自检记录 / 运行记录(明细见 `docs/UI设计/页面补齐规划.md`) |
|
||||
| 未绑叶子 | **21** | 见 §2 三梯队 |
|
||||
| 组件层 | **3 就绪** | `ui_w_editor` / `ui_w_setlist` / `ui_page_action` 均已落地(批 1 道B),**当前无任何页面消费**——写了不用等于没写 |
|
||||
| 数据供给 | 3 通道 | `ui_data` 的 rt / par / info 三通道 + `ui_data_feed` 已接线(批 2 道E) |
|
||||
| 组件层 | **3 就绪** | `ui_w_editor` / `ui_w_setlist` / `ui_page_action` 均已落地,**当前无任何页面消费**——写了不用等于没写 |
|
||||
| 数据供给 | 3 通道 | `ui_data` 的 rt / par / info 三通道 + `ui_data_feed` 已接线 |
|
||||
| 黄金用例 | 18 页 | `ui-golden` 像素基线 + 字符集差集检查均已挂 pre-commit |
|
||||
|
||||
> ⚠ **未绑叶子 ≠ 空菜单项**:未绑的叶子按菜单树规则是"无内容页",进得去但只显示空框架。
|
||||
@@ -112,7 +111,6 @@
|
||||
| 遥信类型 / 防抖 / 双点(3 叶) | V0.1 无开入硬件;随开入固件独立立项(`docs/任务规划/并行分道方案.md` §4.2 的 L4-1~L4-3 同批) |
|
||||
| 手动录波(1 叶) | 录波模块未立项;且录波通道必须先有工程量(`docs/任务规划/数据可信.md` §9) |
|
||||
| SNTP 设置(1 叶) | 当前对时走 8888 端口私有协议,SNTP 是另一条链;产品口径亦未定。只做页面 = 又一个"看着能用其实不生效"的页 |
|
||||
| 交流量 / 直流量回炉 | 批 1 已做(接 `ui_data` 快照层);直流量行表按 V0.1 实际可用量裁剪,已并入 |
|
||||
| 结构债 / net 收口 | 用户决定(2026-10-25):本波只做 UI,结构债押后(`docs/任务规划/README.md` §2) |
|
||||
|
||||
---
|
||||
@@ -121,6 +119,6 @@
|
||||
|
||||
| 波次 | 关系 |
|
||||
|---|---|
|
||||
| **数据可信** | 本波消费其产出:`ui_data` 的 `eng` 字段由 `adc_cal_flags()` 决定(M4 后 `eng=0` = 引脚电压);遥测死区页直接改 `run_par`。**保护当前处于未标定闭锁态**(`protect_task.c:98`),整定页可改定值但判据不会动作——页面须显示闭锁原因,不能让用户以为"改了没用" |
|
||||
| **数据可信** | 本波消费其产出:`ui_data` 的 `eng` 字段由 `adc_cal_flags()` 决定(现 `eng=0` = 引脚电压,卡 0b 拿到变比后才升 1);遥测死区页直接改 `run_par`。**保护当前处于未标定闭锁态**(`protect_task.c:98`),整定页可改定值但判据不会动作——页面须显示闭锁原因,不能让用户以为"改了没用" |
|
||||
| **采集保护收尾** | B10 送检不依赖 UI 页面;无交集 |
|
||||
| **结构债** | 押后;`sys_log` 删除 API 与日志管线同域,本波只补这一个 API,不动管线 |
|
||||
|
||||
+19
-153
@@ -13,26 +13,13 @@
|
||||
|
||||
---
|
||||
|
||||
> **批 1 / 批 2 / 批 2.5 全部收口(2026-10-25)**,工作树清零、两锁空闲。
|
||||
> 批 1(九分支):M4 六条 ②③④⑥ 达成、①⑤台架面 deferred(归卡 0/0b/12);台架 f2→f3 转 PASS。
|
||||
> 批 2(三大道):道D 遥测(卡 8~11 销项)∥ 道E UI 页面(黄金 18 页)∥ 道F 结构债(三条销项;
|
||||
> 复跑暴露两新签名,F2/F3 修复已合入)。批 2.5 尾单三件全清:两轮判据(`17ece86`)、
|
||||
> v5arch 日志归档(`ac51ff2`)、v5 判读工具 v1.1(`4c05b58`)。
|
||||
>
|
||||
> **批 3 重定义(2026-10-25 用户决定)**:原计划的「道G 保护元件 ∥ 道H 采集增强」**整体押后**——
|
||||
> 产品功能面在 V0.1 已到顶(三相类全被 N-18 挡)、且保护当前处于未标定闭锁态、没有标准源就
|
||||
> 无法验证;道H 的幅值类判据同样依赖标定。**批 3 只剩道E 一条道(UI 补齐 21 叶)**,
|
||||
> 单道串行。结构债(含 USART1 独占轮)押后到批 4。
|
||||
>
|
||||
> 道C 不含主机单测(S1-c 已完成,证据见 `docs/测试说明/主机单测覆盖率口径.md` §9)。
|
||||
## 1. 一句话结论
|
||||
|
||||
> **当前只有一条编码道**:道E UI 补齐(21 叶,单道串行)。
|
||||
> 道F 结构债排批 4;道G 保护元件与道H 采集增强排批 5(等标准源 / 标定)。
|
||||
> 台架道空转(台架不在手边);外部窗口 = 卡 0 / 0b / 12、N-16、N-3、B10。
|
||||
|
||||
```
|
||||
批 1 道A 标定与量纲 ∥ 道B UI 组件层 ∥ 道C 工具链与验证 ✅ 2026-10-25 收口
|
||||
↓
|
||||
批 2 道D 遥测链 ∥ 道E UI 页面 ∥ 道F 结构债与网络 ✅ 2026-10-25 收口
|
||||
↓
|
||||
批 2.5 两轮判据 ∥ v5arch 归档 ∥ 判读工具 v1.1 ✅ 2026-10-25 收口
|
||||
↓
|
||||
批 3 道E UI 补齐(21 叶,单道串行) ← 当前
|
||||
↓
|
||||
批 4 结构债:net 收口(含饿死签名)∥ 白名单 ∥ 性能簇
|
||||
@@ -42,14 +29,10 @@
|
||||
台架/外部窗口:卡 0 / 0b / 12、N-16、N-3、B10
|
||||
```
|
||||
|
||||
**道名对照**(全文只用这 8 个标签):
|
||||
**道名对照**(全文只用这 4 个标签):
|
||||
|
||||
| 道 | 名称 | 批 | 写域 |
|
||||
|---|---|---|---|
|
||||
| **道A** | 标定与量纲(「数据可信」M4,关键路径) | 1 | 域1+域2+域3+域4 |
|
||||
| **道B** | UI 组件层(等数据时先做的活) | 1 | 域5 |
|
||||
| **道C** | 工具链与验证(断言/门禁/构建实测) | 1 | 域8 |
|
||||
| **道D** | 遥测链(「数据可信」M5/M6) | 2 | 域1+域4+域2 |
|
||||
| **道E** | UI 页面(21 叶补齐) | **3(当前)** | 域5 |
|
||||
| **道F** | 结构债与网络(net 收口 / 白名单 / 性能簇 / USART1) | 4 | 域6+域7 |
|
||||
| **道G** | 保护元件扩展(V0.1 子集) | 5(等标准源) | 域3+域2 |
|
||||
@@ -69,7 +52,7 @@
|
||||
|---|---|---|---|
|
||||
| 1 | **同时最多 3 棵工作树** | `docs/环境与部署/并行任务工作树方案.md` §4 | 并发上限 3,不是想切几条切几条 |
|
||||
| 2 | **`@build` 必须串行**(UV4 不能两个实例同时 `-b`) | `并行任务工作树方案.md` §7.2 | 三条道能**同时编码**,构建排队;增量 4~5 s,不是瓶颈 |
|
||||
| 3 | **台架必须串行**(COM6 / ST-LINK / 192.168.1.100 各一份) | `并行任务工作树方案.md` §7.1 | 真正的瓶颈。台架道单列,见 §5.4 |
|
||||
| 3 | **台架必须串行**(COM6 / ST-LINK / 192.168.1.100 各一份) | `并行任务工作树方案.md` §7.1 | 真正的瓶颈。台架道单列,跑在主工作树、不占工作树名额 |
|
||||
| 4 | **单写者文件**:`docs/任务规划/**`、`AGENTS.md` 任务表块、`MDK-ARM/*.uvprojx`、`.pre-commit-config.yaml`、内存快照 | `并行任务工作树方案.md` §6.1 | 任务分支不碰登记簿;uvprojx 手工并;内存数字合并后重生成 |
|
||||
| 5 | **分支存活 ≤2 天、绿即合** | `并行任务工作树方案.md` §7.3 规则 3 | 一条道不是一条长分支,是**连续若干个短分支** |
|
||||
| 6 | **`done` 只能在主工作树、必须串行** | `.dsh/skills/task-worktree/SKILL.md` 铁律 1 | 合并不是并行的,只能排队 |
|
||||
@@ -108,37 +91,23 @@
|
||||
## 4. 全量待办归道
|
||||
|
||||
> 覆盖 `docs/任务规划/` 全部未闭环项 + 保护复现规划 L 项 + UI 两篇规划。
|
||||
> "批"列 = 第几轮开工;`—` = 现在不排(理由见 §9)。
|
||||
> "批"列 = 第几轮开工;`—` = 现在不排(理由见 §8)。
|
||||
|
||||
### 4.1 数据可信(14 卡)
|
||||
|
||||
> **卡 1~11 已全部销项**(批 1 道A + 批 2 道D,2026-10-25),下表保留作为归道记录。
|
||||
> **只剩卡 0 / 0b / 12 三张**,全是台架或外部资源,**批号改为「顺延」**——台架不在手边,
|
||||
> 不占编码道(`docs/任务规划/数据可信.md` §5)。
|
||||
### 4.1 数据可信(剩 3 卡)
|
||||
|
||||
| 条目 | 写域 | 道 | 批 |
|
||||
|---|---|---|---|
|
||||
| 卡 1 TPAFE 量程口径定死 | 文档(`docs/硬件平台/`) | **道A 标定** | 1 |
|
||||
| 卡 3 `cfg_file` 补 `CFG_VAL_INT` | 域2 | **道A 标定** | 1 |
|
||||
| 卡 2 通道标定模块与折算 | 域1 | **道A 标定** | 1 |
|
||||
| 卡 4 标定系数落盘 | 域1 + 域2 | **道A 标定** | 1 |
|
||||
| 卡 5 未标定即闭锁 | 域3 | **道A 标定** | 1 |
|
||||
| 卡 6 下游三常数重定 | 域3 + 域4 + 域2 | **道A 标定** | 1 |
|
||||
| 卡 7 量纲回归用例 | `test/host/` | **道A 标定** | 1 |
|
||||
| 卡 0 已知电压注入验证 | 台架 + 文档 | **台架道** | 1 |
|
||||
| 卡 0b 端子/子板变比确认 | 台架 + 文档(🟡 外部) | **台架道** | 1~2 |
|
||||
| 卡 8 遥测快照 200 ms | 域1 | **道D 遥测** | 2 |
|
||||
| 卡 9 104 读快照 + 死区 | 域4 | **道D 遥测** | 2 |
|
||||
| 卡 10 运行参数段 `0x8020~0x8058` | 域2 + 域4 | **道D 遥测** | 2 |
|
||||
| 卡 11 频率点 `0x401D` | 域4 | **道D 遥测** | 2 |
|
||||
| 卡 12 8 通道两点标定 | 台架(🟡 标准源) | **台架道** | 3+ |
|
||||
| 卡 0 已知电压注入验证 | 台架 + 文档 | **台架道** | 顺延(等台架) |
|
||||
| 卡 0b 端子/子板变比确认 | 台架 + 文档(🟡 外部) | **台架道** | 顺延(等子板) |
|
||||
| 卡 12 8 通道两点标定 | 台架(🟡 标准源) | **台架道** | 顺延(等标准源) |
|
||||
|
||||
> 三张全是台架或外部资源,**不占编码道**;台架不在手边 → 整体顺延
|
||||
> (`docs/任务规划/数据可信.md` §5)。顺序:0 → 0b → 12。
|
||||
|
||||
### 4.2 保护待做(L 项)
|
||||
|
||||
| 条目 | 判据是否依赖工程量 | 写域 | 道 | 批 |
|
||||
|---|---|---|---|---|
|
||||
| L1-5 通道标定 | — | 域1 | = 卡 2/4 | 1 |
|
||||
| L5-2 码值越界检出(残余) | 否(越界门限可用 FS 百分比) | 域1(`adc_health`) | **道A 标定** | 1 |
|
||||
| L3-7 涌流制动(二次谐波占比) | **否**(比值) | 域3 + 域2(加定值) | **道G 保护** | 5(等标准源) |
|
||||
| L3-9 CT 断线(电流不平衡) | **否**(比值) | 域3 + 域2 | **道G 保护** | 5(等标准源) |
|
||||
| L3-11 故障启动(突变量) | **否**(相对量) | 域3 + 域2 + 新 `prot_start.*` | **道G 保护** | 5(等标准源) |
|
||||
@@ -166,10 +135,6 @@
|
||||
|
||||
### 4.3 UI(批 3 唯一在跑的道)
|
||||
|
||||
**批 1 / 批 2 已交付**(过程记录,不再排期):字库扩充 · `ui_w_editor` · `ui_w_setlist` ·
|
||||
`ui_page_action` · 记录 reader 注入 · `ui_data` 三通道 + `ui_data_feed` · 遥信 33 行 ·
|
||||
定值查看 4 页 · 记录 3 页 · 交流量/直流量回炉。**黄金 18 页入库**。
|
||||
|
||||
**剩余 21 叶按数据源就绪度分三梯队**(明细与 DoD 见 `docs/任务规划/UI补齐.md`):
|
||||
|
||||
| 梯队 | 条目 | 叶数 | 写域 | 前置 |
|
||||
@@ -182,18 +147,9 @@
|
||||
> **为什么批 3 只有一条道**:`ui_menu_tree.txt` 与 `ui_page_registry.c` 是**单写者生成物**,
|
||||
> 两条道并行会在菜单树与注册表上互相覆盖;`uvprojx` 也要逐条手工并。单道串行 = 零冲突,
|
||||
> 而 UI 是当前唯一在跑的波次,并行度换来的收益抵不过合并成本。
|
||||
>
|
||||
> **`ui_data` 为什么当初排批 2 而不是批 1**:`ui_data_feed` 组装的 `eng` 字段要等「数据可信」M4
|
||||
> 的结论(`docs/任务规划/数据可信.md` §2.6 与 §10)。组件层与标定无关,所以单独提到批 1——
|
||||
> **这是分道最大的收益点**:让 UI 在等标定的同时有活干。
|
||||
|
||||
### 4.4 结构债、验证与其它
|
||||
|
||||
> **批 1 的道C 三项已全销项**(`docs/任务规划/测试与架构专项.md` 的 P1-10 测试固件构建实测 /
|
||||
> S12 断言宏 / A-5 体积门禁),
|
||||
> **批 2 的道F 三项也已销项**(日志管线与 S8 合并评估 / 写回缓存 flush / 探针窗口心跳)——
|
||||
> 均不再列入本表。剩余条目归批 4。
|
||||
|
||||
| 条目 | 写域 | 道 | 批 |
|
||||
|---|---|---|---|
|
||||
| **net 层跨上下文收口**(E-27 / E-28 裸指针收口 + reconcile 饿死签名) | 域7 | **道F 结构债** | 4 |
|
||||
@@ -211,97 +167,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 5. 批 1 三道详解(✅ 2026-10-25 收口:九分支全合入,本节转为过程记录)
|
||||
|
||||
### 5.1 道A「标定与量纲」(关键路径)
|
||||
|
||||
**目标**:把 `adc_task.c:335` 的 `frame[s] = (float)code;` 换成折算,让采样环里第一次是电压。
|
||||
**含**:本波卡 1 → 卡 3 → 卡 2 → 卡 4 → 卡 5 → 卡 6 → 卡 7,加 L5-2 码值越界。
|
||||
|
||||
| 分支 | 内容 | 预计 | 写域 | 依赖 |
|
||||
|---|---|---|---|---|
|
||||
| `task/cal-scale-doc` | 卡 1(量程口径定死)+ 卡 3(`CFG_VAL_INT`) | 0.5~1 d | 文档 + 域2 | 无 |
|
||||
| `task/cal-adc-cal` | 卡 2(`adc_cal.*`)+ 卡 4(落盘)+ L5-2 | 1~1.5 d | 域1 + 域2 | 上一条 |
|
||||
| `task/cal-lockout-dim` | 卡 5(未标定闭锁)+ 卡 6(三常数)+ 卡 7(量纲回归) | 1~1.5 d | 域3 + 域4 + 域2 | 上一条 |
|
||||
|
||||
**退出判据**:M4 六条(`docs/任务规划/数据可信.md` §3)全满足;`@build` 0/0;
|
||||
主机单测绿;台架 `@test` 的期望已按"默认构建下保护不动作"更新。
|
||||
|
||||
**与谁撞**:`iec104_pts.c`(卡 6 改 `k_yc[].deadband`)会与批 2 的道D 撞 → **道A 先合**;
|
||||
`prot_set.c` 会与批 3 的道G 撞 → **道G 在道A 之后**。
|
||||
|
||||
### 5.2 道B「UI 组件层」(与标定并行)
|
||||
|
||||
**目标**:把"等数据"的页面工作提前做掉,只留数据绑定给批 2。
|
||||
**含**:字库扩充 → `ui_w_editor` → `ui_w_setlist` → `ui_page_action` → 记录 reader 注入。
|
||||
|
||||
| 分支 | 内容 | 预计 | 写域 |
|
||||
|---|---|---|---|
|
||||
| `task/UI-font-subset` | 字库扩字 + `make_font.py` 重生成 + 字符集差集检查 | 0.5 d | `ui_cn_chars.txt`、`tools/font_gen/`、`ui_font_cn_12.c` |
|
||||
| `task/UI-widgets` | `ui_w_editor` + `ui_w_setlist` + `ui_page_action` | 1.5 d | 域5(新增 3 对文件) |
|
||||
| `task/UI-rec-reader` | 记录 reader 注入,页面不再 include `sys_log.h` | 1 d | 域5 + `scripts/check_layer_deps.py` |
|
||||
|
||||
**退出判据**:`ui-golden` 像素基线更新后通过;`check_layer_deps.py --prune` 报"基线可收紧 3 条"
|
||||
且实际收紧到 **3 条**(6→3);`@build` 0/0。
|
||||
|
||||
**为什么安全**:`Drivers/BSP/UI/` 与道A 的 `App/algo`+`App/cfg` **零文件交集**;
|
||||
唯一共享的是 `uvprojx`(新增源文件)与内存快照——按 §3 的办法处理。
|
||||
|
||||
### 5.3 道C「工具链与验证」(零交集)
|
||||
|
||||
**目标**:补门禁与测试底座,让后两批的合并更安全。
|
||||
**含**:S12 断言宏 → A-5 体积门禁 → 测试固件构建实测(详见 `docs/任务规划/测试与架构专项.md`)。
|
||||
|
||||
> **本道不含主机单测**(S1-c 已完成):`test/host/**` 由 `test-coverage` 总闸统一守,
|
||||
> 本道不再新增测试目录。证据见 `docs/测试说明/主机单测覆盖率口径.md` §9。
|
||||
|
||||
| 分支 | 内容 | 预计 | 写域 |
|
||||
|---|---|---|---|
|
||||
| `task/S12-assert` | `app_assert.h` + 1~2 处试点(`net_socket` 状态机不变量) | 0.5 d | `App/util/` + 域7 单点 |
|
||||
| `task/A5-size-gate` | 体积门禁的强制路径 | 0.5 d | `.gitea/` + `scripts/` |
|
||||
| `task/P1-10-test-fw` | CH395F 套件构建确认 + `@test` | 1 d | `MDK-ARM/` 测试配置 + 台架 |
|
||||
|
||||
**与谁撞**:`test/host/**` 现由主工作树的 `test-coverage` 总闸统一守着,本道**不再新增**
|
||||
`test/host/` 目录 → 与道A/道B 零文件交集。
|
||||
|
||||
### 5.4 台架道(主工作树,不占工作树名额)
|
||||
|
||||
批 1 期间台架只做一件事:**「数据可信」卡 0 已知电压注入验证**(只需万用表,不需要信号源/示波器)。
|
||||
它验证的是"ADC 到底读得准不准",是道A 系数冻结的前置。
|
||||
|
||||
节奏:道A 分支合入 → 主工作树 `@build` → 持 `bench.lock` → 注入三点 → 记录斜率 →
|
||||
写回 `docs/硬件平台/ADC通道映射说明.md` §8。
|
||||
|
||||
> 台架道永不空转(TOC):卡 0 做完后接着做卡 0b(若子板到手),否则跑测试固件构建那一项的 `@test`。
|
||||
|
||||
### 5.5 批 1 的并行度
|
||||
|
||||
| 资源 | 并发 | 说明 |
|
||||
|---|---|---|
|
||||
| 工作树 | **3**(道A/道B/道C 各一) | 达到 §2 约束 1 的上限 |
|
||||
| `@build` | 1 | 自动排队,增量 4~5 s,不构成瓶颈 |
|
||||
| 台架 | 1 | 主工作树,只在道A 分支合入后占用 |
|
||||
| `done` | 1 | 按 道A → 道B → 道C 顺序串行回收 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 合并次序与冲突预判
|
||||
|
||||
### 6.1 冲突矩阵(批 1 三道)
|
||||
|
||||
| 文件 | 道A | 道B | 道C | 处理 |
|
||||
|---|---|---|---|---|
|
||||
| `MDK-ARM/*.uvprojx` | 加 `adc_cal.c` | 加 3 对 UI 文件 | 不动 | 每次 `done` 手工并 `<File>` → `registration-check` |
|
||||
| `docs/内存管理/RAM使用分析与优化方案.md` | RAM +≈100 B | RAM +≈300 B | 不动 | 每次 `done` 后 `check_mem_numbers.py --write` |
|
||||
| `.pre-commit-config.yaml` | 加 adc_cal 钩子 | 加 UI 钩子 | 不动(S12 走既有 `coding-standard` 面) | 并集;各自 `git add` 自己的行 |
|
||||
| `scripts/check_layer_deps.py` | 不动 | **减 3 条基线** | 不动 | 道B 独占 |
|
||||
| `test/host/**` | 新增 `adc_cal/` | 不动 | 不动 | 道A 独占(道C 已无单测活) |
|
||||
| `docs/任务规划/**` | 不动 | 不动 | 不动 | 主工作树统一销项 |
|
||||
|
||||
**合并次序**:`道A → 道B → 道C`。理由是道A 在关键路径上、且它决定道D 与道G 的前置;
|
||||
道B 与道C 无先后依赖,按"改动小的先合"以减少 rebase 面(道B 的 `ui-golden` 基线更新是独立提交,好回退)。
|
||||
|
||||
### 6.2 每次 `done` 的固定动作
|
||||
## 5. 每次 `done` 的固定动作
|
||||
|
||||
1. `done <ID> --dry-run` 预演(`git merge-tree`,rc≠0 就先在任务分支解冲突)
|
||||
2. `done <ID>`:合入 → 并集残留审计(三方对比,不用 `tail` 目测)→ 重生成产物 → 门禁
|
||||
@@ -310,7 +176,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 7. 三件"看起来能并行、实际不能"的事
|
||||
## 6. 三件"看起来能并行、实际不能"的事
|
||||
|
||||
| 事项 | 为什么不能并行 | 正确做法 |
|
||||
|---|---|---|
|
||||
@@ -320,7 +186,7 @@
|
||||
|
||||
---
|
||||
|
||||
## 8. 执行清单(批 3 起步)
|
||||
## 7. 执行清单(批 3 起步)
|
||||
|
||||
```powershell
|
||||
$PY = ".venv\Scripts\python.exe"
|
||||
@@ -353,7 +219,7 @@ $WT = ".dsh\skills\task-worktree\scripts\task_worktree.py"
|
||||
|
||||
---
|
||||
|
||||
## 9. 现在不排的(避免误以为漏了)
|
||||
## 8. 现在不排的(避免误以为漏了)
|
||||
|
||||
| 项 | 状态 | 重开条件 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
## 1. 结构债(按性价比排序)
|
||||
|
||||
> 顺序 = 先灭实测缺陷,后可靠性根治,再大体量重构;评估簇随窗口。
|
||||
> **2026-10-25 已销项三项**:日志管线与 S8 合并评估(N-2)、写回缓存空闲 flush(N-22)、
|
||||
> 探针窗口心跳缺口(N-17)——结论沉淀在模块文档,本表不再保留。
|
||||
|
||||
| 条目 | 内容 | 出处 |
|
||||
|---|---|---|
|
||||
|
||||
+44
-152
@@ -1,66 +1,26 @@
|
||||
# 数据可信(通道标定 → 遥测链 → 运行参数)
|
||||
|
||||
> **一句话结论**:全项目现在唯一"改一处、全链受益"的入口是 `App/task/adc_task.c:335` 的
|
||||
> `frame[s] = (float)code;`——它是码值变成工程量的**唯一**位置。本波把它拆成三段:
|
||||
> 系数可信(M4)→ 遥测可信(M5)→ 整定可信(M6)。做完之后保护定值、104 遥测、
|
||||
> UI 交流量才第一次有名副其实的数值。
|
||||
> **一句话结论**:软件侧已收口,**只剩三张卡**——卡 0 已知电压注入(万用表)→ 卡 0b 端子变比
|
||||
> (子板)→ 卡 12 标准源两点标定。三张全是台架或外部资源,**没有软件道可做**。
|
||||
> **台架不在手边(2026-10-25 确认)→ 本波整体顺延**,不占编码道,当前波次在 `UI补齐.md`。
|
||||
>
|
||||
> **本文定位**:本波次的任务卡与验收判据。**排序权威在 `docs/任务规划/README.md` §2**;
|
||||
> 本文只写"这一波做什么、按什么判据算做完"。上游分析见
|
||||
> `docs/问题记录/采集与数据处理短板评测.md`(四类短板的成因与分档)。
|
||||
> **本文定位**:本波次剩余的验收判据 + **设计权威**。**排序权威在 `docs/任务规划/README.md` §2**。
|
||||
> ⚠ §2.1 / §2.3 / §2.6 / §4.1~§4.5 / §7 / §8 / §9 / §10 与卡 0 / 0b / 12 都被**代码头注释**引用为
|
||||
> 口径出处(`adc_cal.*` / `meas.*` / `cfg_file.*` / `prot_elm` / `protect_task.c` / `ui_data*`)——
|
||||
> 它们是现行规范、不是"已完成记录",不要当历史删掉。上游分析见
|
||||
> `docs/问题记录/采集与数据处理短板评测.md`。
|
||||
>
|
||||
> **修订**:2026-10-23 建档(用户决定:下一步做通道标定,先于 UI 页面与结构债)。
|
||||
> 2026-10-23 补卡:用户指出"ADC 还没采过真实电压"——经核查成立且更严重(连极性都没验过,
|
||||
> 见 §2.6),故新增"已知电压注入验证"与"端子变比确认"两卡,并把 M4 的承诺边界改为
|
||||
> "引脚电压"(`eng=0`),"端子二次值"降为依赖变比的条件项。
|
||||
> **2026-10-25 转收口态**:卡 1~7(批 1 道A)与卡 8~11(批 2 道D)全部销项,**软件侧已 100%**;
|
||||
> 剩卡 0 / 0b / 12 三张台架与外部卡。**台架不在手边(2026-10-25 确认)→ 本波整体顺延**,
|
||||
> 不占编码道,当前波次已切到 `UI补齐.md`。
|
||||
> **修订**:2026-10-23 建档。
|
||||
> ⚠ **保护现处于未标定闭锁态**:`protect_task.c:98` 要求 UA/UN/IA 的 `ADC_CAL_F_VALID`
|
||||
> 全置位才走判据,而 VALID 只在标定写入 `[adc_cal]` 的 `valid` 位图后才置位
|
||||
> (`adc_cal.c:338`)。用户裁定(2026-10-25)**保持闭锁到标准源到位**,不缩短解锁路径。
|
||||
|
||||
---
|
||||
|
||||
## 1. 为什么是这一波
|
||||
|
||||
### 1.1 唯一插入点
|
||||
|
||||
```c
|
||||
/* App/task/adc_task.c:333-335 */
|
||||
/* ⚠ L1-5 通道标定尚未实现(缺标准源)→ 暂以**原始码值**充作工程量(系数 = 1)。 */
|
||||
frame[s] = (float)code;
|
||||
```
|
||||
|
||||
采样环、相量、保护、频率、104、UI 全部在这行下游。改它,下游一次性获得工程量含义;
|
||||
不改,每一层都在给码值编自己的故事。
|
||||
|
||||
### 1.2 三层各自记着"系数 = 1"
|
||||
|
||||
| 层 | 位置 | 原文口径 |
|
||||
|---|---|---|
|
||||
| 保护判据 | `App/algo/prot_elm.h:25` | "工程量↔码值换算系数暂为 1(L1-5 标定未实现,同 phasor 层口径)" |
|
||||
| 104 上送 | `docs/子系统设计/IEC104上行设计说明.md` §4 | "现读数为**原始码值**(L1-5 标定未实现,系数=1 口径与之一致)" |
|
||||
| 相量 / 频率 | `docs/算法/采集与算法层设计说明.md` §11 | "现以原始码值……标定未实现" |
|
||||
|
||||
三条独立记录指向同一个根。**这不是三个问题,是一个问题的三种表现。**
|
||||
|
||||
### 1.3 为什么排在 UI 与结构债之前
|
||||
|
||||
| 候选 | 判据 |
|
||||
|---|---|
|
||||
| **数据可信(本波)** | 它是「UI 扩展」页面与 104 遥测的**共同前置**:先做页面,`ui_data_feed` 组装出的是码值帧,标定落地后组装逻辑要重写一遍 = 纯返工 |
|
||||
| 「UI 扩展」剩余 27 页 | 依赖本波的产出(`ui_data_rt_t.eng` 才能填 1);现在做只能继续塞占位值 |
|
||||
| 「结构债」 | 无人在等;net 层跨上下文收口体量大、验证重 |
|
||||
| 录波 + 104 文件传输 | 独立立项,且依赖工程量(录波通道必须有物理量含义) |
|
||||
|
||||
**代价对比**:本波 S 段约 200 行(系数表 + 折算 + 落盘),「UI 扩展」那 30 页次是几千行。
|
||||
|
||||
---
|
||||
|
||||
## 2. 事实基线(2026-10-23 代码级核对)
|
||||
|
||||
> 本节所有结论都可在代码里逐条复查,行号为核对时快照。**不依赖任何文档转述。**
|
||||
> (编号不连续是故意的:§2.1 / §2.3 / §2.6 被代码头注释引用为口径出处,编号不重排。)
|
||||
|
||||
### 2.1 通道与量纲
|
||||
|
||||
@@ -73,11 +33,9 @@ frame[s] = (float)code;
|
||||
| IB / IC / IN | STM32 ADC1 | 同上 | 805.66 µV | 同上 | **1611.3 µV/码** | ❌ 削顶 |
|
||||
| TEMP | STM32 ADC1 | 同上 | 805.66 µV | 同上 | 热敏非线性 | — 不纳入线性标定 |
|
||||
|
||||
> **卡 8~11 已销项**(2026-10-25 批 2:卡 8 meas 快照 →merge 9c2653c;卡 9/11 快照消费 + 0x401D 频率绑定 + src 类型 →merge 969fc5c;→ "卡 10 run_par(9 键毫伏死区 + k/b 代理 adc_cal + [run_par] 落盘)→merge 7bbcc9c;台架面已钉:大窗 S1/S1b 读回链24 项 + 验收窗(--walk 10/12、SOE 真时标、51V PN、持久化 500)全绿,详见 `../测试说明/` 与 boot_log_data 留档)。余卡:0 / 0b / 12(🟡 外部依赖与台架实测,见上)。
|
||||
|
||||
- 通道数:`ADC_SEM_COUNT = 9`(8 电气 + 温度),定义见 `App/algo/adc_input.h`。
|
||||
- 分压比出处:`docs/硬件平台/ADC通道映射说明.md` §7"前端偏置"行(每路 1k 串联 + 1k 到 `*_GND`)。
|
||||
- ✅ **口径已定死(2026-10-25,卡 1 销项)**:`docs/硬件平台/ADC通道映射说明.md` §1/§7 统一为
|
||||
- ✅ **量程口径(2026-10-25 定)**:`docs/硬件平台/ADC通道映射说明.md` §1/§7 统一为
|
||||
"±5 V 满量程 = 10 V 跨度、LSB 152.59 µV"("±10 V" 仅作芯片可选档括注,本板 RANGE 接 GND 未用);
|
||||
全仓搜 `±10 V` 无本板口径残留。分段链路口径(引脚侧已冻结 / 分压读法待卡 0 / 变比待卡 0b)
|
||||
见同文档 §7.1。
|
||||
@@ -87,24 +45,6 @@ frame[s] = (float)code;
|
||||
(`docs/硬件平台/` 只有 `.tel` 网表与分析报告,无子板原理图)。故
|
||||
"端子二次值 = 码 × 上表系数"**不成立**,详见 §2.6 与卡 0。
|
||||
|
||||
### 2.2 保护判据的量纲错配(本波要修的核心)
|
||||
|
||||
`App/algo/prot_elm.c` 的 `prot_elm_run()` 把相量有效值原样送进判据:
|
||||
|
||||
```c
|
||||
meas[i] = p.fAmSQ; /* fAmSQ = 原始码值的有效值 */
|
||||
...
|
||||
m = meas[i]; /* 判据侧 */
|
||||
set = prot_set_get_f(cfg->set_id); /* 定值侧,单位 A / V(二次值) */
|
||||
```
|
||||
|
||||
而 `App/algo/prot_set.c` 的默认值是工程单位:`OC1 电流定值 = 10.0 A`(`0x8858`)、
|
||||
`过压 = 120.0 V`(`0x8029`)。**码值量级远大于这些定值上限(100 A / 200 V)**——TPAFE 侧
|
||||
台架开机实测 `UA=11429 / UN=11454 / IA=11452`(16 位),STM32 侧 `UB=1018 / IC=1069`(12 位),
|
||||
两侧都比定值上限高 1~2 个数量级。故"过流/过压元件一旦投退即恒动作"不是推测,是量纲决定的必然结果。
|
||||
|
||||
> 台架此前"通过"是因为没有一条判据检查"**不该动作时不动作**"。本波的任务卡把这条固化成回归用例。
|
||||
|
||||
### 2.3 三个必须同步重定的下游常数
|
||||
|
||||
| # | 位置 | 现值 | 语义 | 标定后必须做什么 |
|
||||
@@ -113,33 +53,6 @@ set = prot_set_get_f(cfg->set_id); /* 定值侧,单位 A / V(二次值)
|
||||
| 2 | `App/protocol/iec104/iec104_pts.c:23` `k_yc[].deadband` | 9 点全 10.0(freq 0.5) | 注释写"工程量绝对值",实际是码值 | 按各点工程量重定(建议规则:额定值的 0.5%) |
|
||||
| 3 | `App/algo/prot_set.c` `g_prot_set_meta[]` | 10 A / 120 V / 15 V … | 现在是"跟码值比"的工程单位 | 复核默认值与 `min`/`max` 范围;**标定后它们才名副其实**,此前一直是错的 |
|
||||
|
||||
### 2.4 点表与数据源现状
|
||||
|
||||
`App/protocol/iec104/iec104_pts.c` 的 `k_yc[]`(9 点):
|
||||
|
||||
| IOA | 绑定 | 说明 |
|
||||
|---|---|---|
|
||||
| `0x4011` 1Ua | `ADC_SEM_UA` | ✅ 有源 |
|
||||
| `0x4012` 1Ub / `0x4013` 1Uc | `-1` | 削顶 → 恒 IV(**故意不绑**,不是遗漏) |
|
||||
| `0x4014` 1U0 | `ADC_SEM_UN` | ✅ 有源 |
|
||||
| `0x4015` 1Ia | `ADC_SEM_IA` | ✅ 有源 |
|
||||
| `0x4016`/`0x4017`/`0x4018` 1Ib/1Ic/1I0 | `-1` | 削顶 → 恒 IV |
|
||||
| `0x401D` 1f | `-1` | 注释"L1-7 未实现"——**已过时**:B8 已落地自适应窗测频(`freq_get()` 可用),本波把它接上 |
|
||||
|
||||
### 2.5 配置引擎的硬约束(决定落盘方案)
|
||||
|
||||
`App/cfg/cfg_file.h`:
|
||||
|
||||
| 宏 | 值 | 对本波的含义 |
|
||||
|---|---|---|
|
||||
| `CFG_FILE_MAX_NAME_LEN` | 15 | 段名/键名须 ≤15 字符(超长注册被拒) |
|
||||
| `CFG_FILE_MAX_KEYS` | 16 | **单段键数上限 16** → 8 通道 ×(k + b)= 16 正好顶格,再加一个就爆 |
|
||||
| `CFG_FILE_MAX_SECTIONS` | 8 | 已用 2(`network` / `ftp`),余 6 |
|
||||
| 回调约束 | `data_size ≤ 64` 才可挂 `p_cb` | 若把 9 通道 × 8 B 塞一段 = 72 B 会超;拆两段后各 33 B / 32 B(**但本波不需要回调**——RAM 副本即生效值) |
|
||||
| 值类型 | 仅 `UINT` / `IP4` / `MAC` / `STR` | `s_decode_uint()` 用 `strtoul` 且校验 `v > max_v` → **负的零点偏移无法干净表达** |
|
||||
|
||||
---
|
||||
|
||||
### 2.6 验证现状:ADC 从未采过已知电压
|
||||
|
||||
这是本波**最大的隐藏前提**,也是排期需要补卡的原因(2026-10-23 用户提出)。
|
||||
@@ -171,13 +84,14 @@ set = prot_set_get_f(cfg->set_id); /* 定值侧,单位 A / V(二次值)
|
||||
|
||||
| 里程碑 | 退出判据(全部满足才算完成) | 服务分类 | 状态(2026-10-25) |
|
||||
|---|---|---|---|
|
||||
| **M4 系数与量纲** | ① **至少 1 路电压通道经已知电压注入验证**(卡 0),斜率与理论 LSB 偏差 ≤2 %;② `adc_cal` 折算落地,采样环里是**引脚电压 V**而非码值(`eng=0`;若卡 0b 已给变比则直接到二次值 `eng=1`);③ 8 通道系数/零点可落盘、上电加载失败回退 ROM 默认;④ 三处下游常数按工程量重定并注明依据;⑤ "未标定 → 保护闭锁"生效;⑥ 量纲回归用例(不该动作时不动作)通过 | Standard | 🔶 **②③④⑥ 达成**(卡 2/4/6/7 销项);**① 与 ⑤ 的台架面 deferred** —— 卡 0 未跑(台架不在手边),故 M4 行保留、本波不收口 |
|
||||
| **M5 遥测链** | ① 200 ms 遥测快照模块产出值 + 品质;② 104 与 UI 共用同一份快照(不再各自取相量);③ 死区从编译期常量改为运行参数;④ 104 上送值与工程量一致(PC 主站读回核对) | Standard | ✅ **①②③ 达成**(卡 8~11 销项,大窗 24 项读回 + 验收窗全绿);④ 的"值与快照一致"已验,**"与工程量一致"待卡 0/12**(工程量口径尚未成立) |
|
||||
| **M6 运行参数与点表** | ① 运行参数段 `0x8020~0x8058` 可读写并持久化;② `0x401D` 频率点绑 `freq_get()`,品质位正确;③ 总召/周期/变位三种上送路径均取新值 | Standard | ✅ **全部达成**(`[run_par]` 9 键死区 + 0x401D 频率绑定 + 三路径取新值,台架钉证) |
|
||||
| **M4 系数与量纲** | ① **至少 1 路电压通道经已知电压注入验证**(卡 0),斜率与理论 LSB 偏差 ≤2 %;② `adc_cal` 折算落地,采样环里是**引脚电压 V**而非码值(`eng=0`;若卡 0b 已给变比则直接到二次值 `eng=1`);③ 8 通道系数/零点可落盘、上电加载失败回退 ROM 默认;④ 三处下游常数按工程量重定并注明依据;⑤ "未标定 → 保护闭锁"生效;⑥ 量纲回归用例(不该动作时不动作)通过 | Standard | 🔶 **未收口**:②③④⑥ 已达成,**① 与 ⑤ 的台架面待卡 0**(台架不在手边) |
|
||||
|
||||
> **批 2 裁定补记(lead,道D 票转述)**:遥测轨的两项增强——谐波**方和根真有效值**(挂
|
||||
> `继电保护功能复现规划.md` L2-8)与快照**4 点平均平滑**——**不进 M5/M6 退出判据**,
|
||||
> 随谐波轨立项一起做;批 2 快照保持「基波有效值 + 直取相量」口径(§4.5 原文)。
|
||||
**M5 遥测链 / M6 运行参数与点表**:均已达成,口径沉淀在 `App/algo/meas.h`、`App/algo/run_par.h`
|
||||
头注释与 §4.5;M5 的"104 上送值与**工程量**一致"仍挂卡 0 / 卡 12(工程量口径尚未成立)。
|
||||
|
||||
> **不进本波退出判据的两项增强**:谐波**方和根真有效值**(挂
|
||||
> `docs/算法/继电保护功能复现规划.md` L2-8)与快照**4 点平均平滑**——随谐波轨立项一起做;
|
||||
> 快照保持「基波有效值 + 直取相量」口径(§4.5 原文)。
|
||||
|
||||
---
|
||||
|
||||
@@ -247,17 +161,15 @@ UI 快照的 `qds`)。
|
||||
|
||||
段名 7 / 11 字符,键名 4 字符,均在 15 字符上限内。段数 2 → 总计 4/8,未逼近上限。
|
||||
|
||||
> **落地注(2026-10-25 卡 3/卡 10 合入后)**:`CFG_VAL_INT` 已实现(卡 3);运行参数段 = `[run_par]`
|
||||
> 9 键死区(卡 10,merge 7bbcc9c),总计 5/8 段。系数唯一真源仍是 `[adc_cal]/[adc_cal_ofs]`——
|
||||
> 104 写 k/b 经 `adc_cal_set` 代理,run_par 不存第二份;落盘链走 `SYS_EVT_RUN_PAR_SAVE`
|
||||
> (iec104Task peek 投递 → defaultTask 整档 save),`p_cb` 回调依旧未用,本节「不挂回调」口径不变。
|
||||
> **现状口径**:`CFG_VAL_INT` 已就位;运行参数段 = `[run_par]` 9 键死区,总计 5/8 段。
|
||||
> 系数唯一真源仍是 `[adc_cal]/[adc_cal_ofs]`——104 写 k/b 经 `adc_cal_set` 代理,run_par 不存
|
||||
> 第二份;落盘链走 `SYS_EVT_RUN_PAR_SAVE`(iec104Task peek 投递 → defaultTask 整档 save),
|
||||
> `p_cb` 回调依旧未用,本节「不挂回调」口径不变。
|
||||
|
||||
⚠ **负零点**:`cfg_file` 只有 `CFG_VAL_UINT`,`s_decode_uint()` 用 `strtoul` 并校验上界,
|
||||
负值落盘会变成 `4294967291` 这种现场看不懂的数。两条路:
|
||||
|
||||
- **推荐**:给引擎补 `CFG_VAL_INT`(`strtol` + 有符号输出 + 上界按 `INT32_MIN/MAX` 校验),
|
||||
约 30 行,两个 switch 各加一个分支。运行参数段(死区、系数)后面也要有符号值,一次做完。
|
||||
- 备选:零点存"码值 + 32768 偏置"的 uint16——绕开引擎但要每个读点记住减偏置,属于给未来埋坑。
|
||||
⚠ **负零点**:引擎原本只有 `CFG_VAL_UINT`(`s_decode_uint()` 用 `strtoul` + 上界校验),
|
||||
负的零点偏移会落成 `4294967291` 这种现场看不懂的数——**这就是补 `CFG_VAL_INT` 的动因**
|
||||
(见 §7 已定案行)。备选方案"零点存码值 + 32768 偏置的 uint16"已否决:绕开引擎但要每个读点
|
||||
记住减偏置,属于给未来埋坑。
|
||||
|
||||
### 4.5 遥测快照:让 104 与 UI 共用一份上游
|
||||
|
||||
@@ -295,57 +207,39 @@ typedef struct {
|
||||
> 资源图例:🔴 台架(COM6/ST-LINK,`bench.lock` 独占)· 🟡 外部(标准源 / 子板原理图)· 🟢 纯软件。
|
||||
> 状态:⬜ 未开始 · 🟦 进行中。**新条目一律用语义标识,不新增字母+数字编号**
|
||||
> (规则见 `docs/任务规划/README.md` §0)。
|
||||
> **2026-10-23 新增"已知电压注入验证"与"端子变比确认"两卡**(序栏 0 / 0b 只为阅读顺序):
|
||||
> 补的是 §2.6「ADC 从未采过已知电压」这一前置验证,不改动既有 1~12 的编号与引用。
|
||||
>
|
||||
> **2026-10-25 收口态**:卡 1~11 已全部销项,本表只剩 **0 / 0b / 12** 三张——三张全是台架或
|
||||
> 外部资源,**没有软件道可做**。台架不在手边 → 本波顺延,不占编码道(当前波次 `UI补齐.md`)。
|
||||
> 顺序不变:**卡 0 是唯一"只需一块万用表"的卡**,它同时是 M4 ①、卡 12 与 B10 送检的前置。
|
||||
> 序栏 0 / 0b 只为阅读顺序(补的是 §2.6 这一前置验证),1~12 的编号与外部引用保持不变。
|
||||
> **顺序:0 → 0b → 12**。**卡 0 是唯一"只需一块万用表"的卡**,没有外部依赖,是今天就能做的
|
||||
> 第一步;它同时是 M4 ①、卡 12 与 B10 送检的前置。
|
||||
|
||||
| 序 | 任务 | DoD(可验证验收判据) | 硬依赖 | 资源 | 写范围 | 状态 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| **0** | **已知电压注入验证(首次功能级 ADC 验证)** | 在**可安全接触的最低一级**(ADC 引脚侧或端子侧,二选一并在证据里写明注入点)用板载 3.3 V 轨经电位器注入 **3 个直流点**(≈0.3 / 1.0 / 2.0 V),每点**同时**用万用表读注入点实际电压 + 读 `adc_input_raw()` 码值:① 三点线性拟合 **R² ≥ 0.999**;② 注入点在引脚侧时,斜率须与 §2.1 理论值(TPAFE 6553 码/V、STM32 1241 码/V)偏差 **≤2 %**;在端子侧时把斜率记为**实测变比**;③ 注入 0 V(短接 AGND)零点 \|码\| ≤ 10(TPAFE)/ ≤ 5(STM32),并解释首帧 ~1000 码的来源;④ **逐通道映射确认**:8 路电气量逐个注入,确认"注入哪一路、哪一路语义变化",语义与下标不符即映射错;⑤ TPAFE 侧原"BUSY 有脉冲"判据**改用固件帧计数**(注入前后 `tpafe5160_frame_seq()` 仍严格 1000 Hz 递增)——不需要示波器;⑥ 结论写回 `docs/硬件平台/ADC通道映射说明.md` §8,把"尚未执行"改为实测值 + 日期 | 1 | 🔴 + 万用表(**不需信号源 / 示波器**) | `docs/硬件平台/ADC通道映射说明.md`、`docs/测试说明/boot_log_data/` | ⬜ |
|
||||
| **0b** | **端子 / 子板变比确认** | 给出"端子电压 → ADC 引脚电压"的比值(万用表同时量端子与引脚,或查子板原理图后实测核对),写入 `docs/硬件平台/ADC通道映射说明.md`;据此判定 `eng` 能否置 1;数据缺失则本波只交付引脚电压并登记缺口 | 0 | 🟡 子板实物或原理图 | `docs/硬件平台/` | ⬜ |
|
||||
| **12** | **8 通道两点标定与精度验收** | 电压 4 路(UA/UB/UC/UN)+ 电流 4 路(IA/IB/IC/IN)各做两点标定(零点 + 满度,温度不纳入),写入 `[adc_cal]` 并置 `VALID`;误差 ≤ 目标精度(待定:0.5 级 / 1 级);证据归档 | 0、0b、4 | 🟡 标准源 / 继保测试仪 | `docs/算法/`、`docs/测试说明/boot_log_data/` | ⬜ |
|
||||
| **12** | **8 通道两点标定与精度验收** | 电压 4 路(UA/UB/UC/UN)+ 电流 4 路(IA/IB/IC/IN)各做两点标定(零点 + 满度,温度不纳入),写入 `[adc_cal]` 并置 `VALID`;误差 ≤ 目标精度(待定:0.5 级 / 1 级);证据归档 | 0、0b | 🟡 标准源 / 继保测试仪 | `docs/算法/`、`docs/测试说明/boot_log_data/` | ⬜ |
|
||||
|
||||
> **卡 1~7 已销项**(2026-10-25 批 1 道A:`task/cal-scale-doc`→231dc81、`task/cal-adc-cal`→d39e5c9、
|
||||
> `task/cal-lockout-dim`→59da40b;证据沉淀 `docs/算法/采集与算法层设计说明.md`、
|
||||
> `docs/硬件平台/ADC通道映射说明.md` §7.1 与 `App/algo/adc_cal.*`)。M4 六条中 ②③④⑥ **达成**;
|
||||
> **①(卡 0 注入验证)与 ⑤ 的台架面 deferred**——M4 行保留,卡 0 跑完再整波收口。
|
||||
> **两张 🟡 外部依赖卡**:卡 0b(子板变比)与卡 12(标准源)。二者都**不阻塞** M4~M6 的软件道——
|
||||
> M4 用板级 LSB 常数即可退出(`eng=0`),但"二次值"真正成立要靠 0b 的变比、`VALID` 置位要靠 12。
|
||||
> 卡 0(引脚侧注入)**没有外部依赖**,只需一块万用表,是今天就能做的第一步。
|
||||
> 三张卡的分工:**0b 与 12 都是外部依赖**(子板 / 标准源),0 没有。M4 用板级 LSB 常数即可
|
||||
> 收口(`eng=0`),但"二次值"真正成立要靠 0b 的变比、`VALID` 置位要靠 12。
|
||||
|
||||
---
|
||||
|
||||
## 6. 并行与顺序
|
||||
|
||||
```
|
||||
② 核心折算 + 三条分支(✅ 2026-10-25 全部销项:231dc81 / d39e5c9 / 59da40b)
|
||||
2 标定模块 ─→ 4 落盘 ─→ 5 未标定闭锁 ─┐
|
||||
6 三常数重定 ─────────────────────┼─→ 7 量纲回归
|
||||
③ 遥测与运行参数(✅ 2026-10-25 全部销项:9c2653c / 969fc5c / 7bbcc9c)
|
||||
8 遥测快照 ─→ 9 104 读快照 ─→ 10 运行参数段
|
||||
6 ─→ 11 频率点绑定
|
||||
④ 剩余三张(⏸ 顺延,等台架/外部)
|
||||
0 注入验证(万用表)→ 0b 变比(子板)→ 12 两点标定(标准源)
|
||||
0 ─→ 5 闭锁验证(VALID 置位后保护才走判据)→ B10 送检
|
||||
0 注入验证(万用表)→ 0b 变比(子板)→ 12 两点标定(标准源)
|
||||
0 ─→ 5 闭锁验证(VALID 置位后保护才走判据)→ B10 送检
|
||||
```
|
||||
|
||||
- **卡 0 斜率规则对 ROM 默认仍有效**(卡 1~7 已按理论 LSB 冻结销项):实测斜率与理论值
|
||||
偏差 >2 % 时**先查前端(分压/变比/焊接)再改系数**——用系数凑斜率会把硬件的错固化成"标定值"。
|
||||
- **WIP ≤ 2**:代码道最多 2 个并行(台架道 1 个),沿用 `docs/环境与部署/并行任务工作树方案.md` §7.3。
|
||||
**当前软件道为 0**(本波已收口)。
|
||||
- **写范围冲突预警**(历史记录,卡 9 / 11 均已销项):两卡都改
|
||||
`App/protocol/iec104/iec104_pts.c`,必须同一分支顺序做;卡 8 新增 `App/algo/meas.*`、
|
||||
卡 10 新增 `App/algo/run_par.*`,落新文件须双端注册。
|
||||
- **卡 0 斜率规则**:实测斜率与理论 LSB 偏差 >2 % 时**先查前端(分压/变比/焊接)再改系数**——
|
||||
用系数凑斜率会把硬件的错固化成"标定值"。
|
||||
- **WIP**:本波已收口,**当前软件道为 0**;三张卡全是台架/外部窗口,串行做即可。
|
||||
并行度规则见 `docs/环境与部署/并行任务工作树方案.md` §7.3。
|
||||
|
||||
---
|
||||
|
||||
## 7. 前置决策
|
||||
|
||||
> 2026-10-25 收口复核:原 7 条里 5 条已随实现定案,只剩 **2 条真开放**。已定案的结论沉淀在
|
||||
> 代码与 `App/algo/adc_cal.h` / `meas.h` 的头注释里,不再占本表。
|
||||
> 只剩 **2 条真开放**,都在等外部资源。已定案的收敛成下面那一行——**它是口径锚点,勿删**:
|
||||
> `App/cfg/cfg_file.c` 头注释引用的"§7 决策 3"就指向其中的 `CFG_VAL_INT` 项。
|
||||
|
||||
| # | 问题 | 备选 | 建议 / 现状 |
|
||||
|---|---|---|---|
|
||||
@@ -362,13 +256,11 @@ typedef struct {
|
||||
|
||||
| 风险 | 触发条件 | 缓解 |
|
||||
|---|---|---|
|
||||
| **量程口径定错** | 卡 1 未做就开卡 2 | 卡 1 设为硬前置;系数差一倍时台架量级核对会立刻暴露(市电 220 V 量级对不上) |
|
||||
| **`@test` 大面积红** | 卡 5 的闭锁改变默认行为 | 卡 5 与判据更新**同一提交**;先跑 A/B(`git stash` 对照)确认红的原因就是闭锁,不是新回归 |
|
||||
| **`cfg` 键数顶格** | 后续给 `[adc_cal]` 加键 | 已按 8+1 / 8 拆段;加键前先看 `CFG_FILE_MAX_KEYS`,必要时再拆 |
|
||||
| **标定值把保护"调坏"** | 卡 12 写入错误系数 | `adc_cal_set()` 校验范围(`k` 必须在板级系数 × [0.5, 2.0] 内)+ 写入后回读校验;越界拒绝并留 `[ERR]` |
|
||||
| **削顶通道被当成可测** | 消费者只看 `k` 不看 `flags` | `adc_cal_flags()` 是唯一查询入口,`adc_cal_apply()` 不返回可用性;单测覆盖"CLIPPED 通道 104 恒 IV" |
|
||||
| **快照双写** | 104 或 UI 侧也加一个 200 ms 计时器 | 卡 8 明确"唯一发布者 = `adc_task`";其余侧只读,评审时看 `meas_tick()` 的调用点数量 = 1 |
|
||||
| **未验证的系数被当成定论** | 跳过卡 0 直接冻结 ROM 默认系数 | 卡 0 设为卡 4 的硬前置;实测斜率偏差 >2 % 时**先查前端**(分压/变比/焊接),不用系数去凑 |
|
||||
| **未验证的系数被当成定论** | 跳过卡 0 直接冻结 ROM 默认系数 | 卡 0 设为卡 4 的硬前置;实测斜率偏差 >2 % 时**先查前端**(分压/变比/焊接),不用系数去凑。⚠ **此风险已部分兑现**:ROM 默认系数已按理论 LSB 冻结,卡 0 仍未跑 |
|
||||
| **加压烧板** | 变比未确认就往端子加额定电压 | 卡 0 只加 ≤2 V 直流;端子级上额定值必须在卡 0b 之后,且先量"端子对地通断"确认无直流通路 |
|
||||
|
||||
---
|
||||
@@ -380,9 +272,9 @@ typedef struct {
|
||||
| 录波 + 104 文件传输 | 独立立项;且录波通道必须先有工程量,排在本波之后 |
|
||||
| 等周波调频(`docs/算法/继电保护功能复现规划.md` §3.1 的 L1-7) | 与标定正交;无标准源时判据不可达 |
|
||||
| 功率 / 相位 / 功率因数 | **V0.1 硬件禁止**(`docs/硬件平台/ADC通道映射说明.md` §7 通道归属行:跨转换器无同一时刻性) |
|
||||
| PT 断线判据 | 需要 `flags` 与遥信配合,排在 M5 之后单独评估 |
|
||||
| PT 断线判据 | 需要 `flags` 与遥信配合,而 V0.1 **无开入硬件** → 与下一行同归开入波次 |
|
||||
| 开入 / 开出固件 | 固件里**完全没有**这两类代码(`docs/问题记录/采集与数据处理短板评测.md` 登记),是另一个波次的量级 |
|
||||
| 温度非线性折算 | 见 §7 决策 5 |
|
||||
| 温度非线性折算 | 见 §7 已定案行"温度不纳入线性标定" |
|
||||
| 端子二次值(一次/二次变比换算) | **条件项**:卡 0b 拿到变比才做;拿不到则本波只到"ADC 引脚电压",`eng` 保持 0,缺口登记进 `docs/任务规划/登记簿.md` |
|
||||
| UI 页面(含交流量回炉) | 归「UI 扩展」;本波只保证 `meas_snap_t` 可供其消费 |
|
||||
|
||||
@@ -393,6 +285,6 @@ typedef struct {
|
||||
| 波次 | 关系 |
|
||||
|---|---|
|
||||
| **采集保护收尾** | 该波的 B10 送检卡里"L1-5 标定复核"依赖本波卡 12;本波是 B10 的前置 |
|
||||
| **UI 扩展** | 本波交付 `meas_snap_t` + `adc_cal_flags()` → 「UI 扩展」的 `ui_data_rt_t` 才能填 `eng`(M4 后为 0 = 引脚电压,卡 0b 之后为 1 = 二次值),交流量页第 7 行"标定状态"才有真值。**「UI 扩展」应在本波 M4 之后开工**,不必等 M6 |
|
||||
| **UI 扩展** | 本波交付 `meas_snap_t` + `adc_cal_flags()` → 「UI 扩展」的 `ui_data_rt_t` 才能填 `eng`:现为 0 = 引脚电压,卡 0b 拿到变比后才升 1 = 二次值,交流量页"标定状态"才有真值。**「UI 扩展」已开工**(当前波次 `UI补齐.md`),不必等卡 0b |
|
||||
| **结构债** | 无交集 |
|
||||
| **N-18(V0.2 硬件改版)** | 本波的 `CLIPPED` 位就是 N-18 在软件里的可见形态;V0.2 改版后该位恒 0,页面与 104 绑定零改动 |
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
|---|---|---|---|---|
|
||||
| N-3 | **L5 队列往返基线(1223/988µs)的 L3 后重验**——L5 测 DONTWAIT 队列全程;L3 对该路径逐位不变 → 机制上无影响,但基线数值属分片时代,严格重锁需跑一轮 Phase 13(需 PC peer) | 2026-09-22(L3 收尾留档) | 低风险:10ms/100ms 阈值余量 >8×;下次 Phase 13 窗口顺带重锁即可 | `链路延迟测试说明.md` §6.4 L5 注¹ |
|
||||
| N-16 | **A2/A4 专项场景台架验证待办**(正常路径已实测零回归):① PHY 拔线负向测试——断链需断 **DTU 侧**线缆或关**受管交换机端口**;② A2 芯片级 `net_init` 失败分支(需 SPI 故障注入);③ A4 短写压测(需远显客户端 + UI 推流压力) | 2026-10-03(台架拓扑 = CH395↔交换机,拔线操作受限) | 待专项台架窗口 | `实机测试实施指南.md` §10 |
|
||||
| reconcile 突发饿死 uiTask | **对时 reconcile/relisten 突发(0~4s 窗)把唯一 BelowNormal 的 uiTask 压成同一任务 800ms+ 单串缺席(饿死型,非等待型——F3 返回点喂位射程外)**:8 连窗级 UI 缺席期间喂狗面本身未断(cf=0 seg=1)、uisn=0(不在 sink 段内)、uip 在途 307→1083ms 而 uis 峰仅 183ms——被拖的 1s 在 feed/port 纯计算段墙钟。**2026-10-25 台架两轮分箱定案**:同负载换 :7003 churn 2200 周期 stall=0(阻塞型已被 F3 治愈),探针轮 3 事件 8 行全为该签名(漏检零、误报零,v1.1 口径 FAIL 面精确收缩)。处置方向 = 自愈设计 §11.3 脆弱点 1 实测样本并档 **E-27/28 批 3**:优先级矩阵复核 与 reconcile 突发分片让路 两案并评;**排期 = 批 4(结构债)**,与 E-27/E-28 裸指针收口同批 | 2026-10-25(F2/F3 验收轮②,v1.1 判据下捕获) | `docs/测试说明/boot_log_data/f3rounds_r2_probe_30min.log.gz`(3 事件 8 行 + STALL 证据行 + 同行 PROF);对照轮 `f3rounds_r1_7003_churn_30min.log.gz`;机理归档 `../网络/网络自愈架构设计.md` §4.6、`../子系统设计/看门狗设计说明.md` §11.3、`../UI设计/UI_设计架构.md` §5.8 | `../算法/继电保护功能复现规划.md`(E-27/28 属主文档指针) |
|
||||
| reconcile 突发饿死 uiTask | **对时 reconcile/relisten 突发(0~4s 窗)把唯一 BelowNormal 的 uiTask 压成同一任务 800ms+ 单串缺席(饿死型,非等待型——F3 返回点喂位射程外)**:8 连窗级 UI 缺席期间喂狗面本身未断(cf=0 seg=1)、uisn=0(不在 sink 段内)、uip 在途 307→1083ms 而 uis 峰仅 183ms——被拖的 1s 在 feed/port 纯计算段墙钟。**2026-10-25 台架两轮分箱定案**:同负载换 :7003 churn 2200 周期 stall=0(阻塞型已被 F3 治愈),探针轮 3 事件 8 行全为该签名(漏检零、误报零,v1.1 口径 FAIL 面精确收缩)。处置方向 = 自愈设计 §11.3 脆弱点 1 实测样本并档 **E-27/28**:优先级矩阵复核 与 reconcile 突发分片让路 两案并评;**排期 = 批 4(结构债)**,与 E-27/E-28 裸指针收口同批 | 2026-10-25(F2/F3 验收轮②,v1.1 判据下捕获) | `docs/测试说明/boot_log_data/f3rounds_r2_probe_30min.log.gz`(3 事件 8 行 + STALL 证据行 + 同行 PROF);对照轮 `f3rounds_r1_7003_churn_30min.log.gz`;机理归档 `../网络/网络自愈架构设计.md` §4.6、`../子系统设计/看门狗设计说明.md` §11.3、`../UI设计/UI_设计架构.md` §5.8 | `../算法/继电保护功能复现规划.md`(E-27/28 属主文档指针) |
|
||||
| N-30 | **relisten 沉降段统一到驱动 `sock_reset` 原语受阻**——"去重复实现"的收口已实测回退:原语版 `ftp_abort_probe` RST **0/10**、FIN **0/5**(中止后首笔复连仍被截断到 ≤2048B),另新增 `sock_reset_sync timeout (600ms)` 与 `close: sock_reset not done` 两条 `[ERR]`;同场 net 层自建序列 **10/10 + 5/5** | 2026-10-14(同一块板 A/B,判据 `test/host/ftp_abort_probe.py`;快复连 50/50、背靠背 30/30 两版都过 → 失效面精确落在"中止后首笔复连") | **现状 = `net_listener.c` 保留自建排渣序列**(排空 + CLOSE + 排事件 + 等 CLOSED,30 ms 重试轮持续清)。重开前置三条语义:① 隔离窗内**持续**排空/关闭(残渣在 CLOSE 之后才落进 RX,一次排空接不住)② **复用让位**(复位机不得拆上层刚在同一芯片 Socket 上重建的监听)③ `net_sock_reset_sync` 改"已在运行 = 加入等待"(`begin` 返 -1 ≠ 失败) | `../网络/网络自愈架构设计.md` §8 延后项 1、§5.2 E16;`../问题记录/CH395F_Trap_Records.md` TRAP-NET-18 |
|
||||
|
||||
## 2. 存储 / 日志管线
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
# 采集 + 保护收尾(只剩 M3 送检)
|
||||
|
||||
> **本波只剩余一项未开工的事**:M3 可送检(B10)。M1 台架闭环与 M2 功能面完整已于 2026-10-12
|
||||
> 达成并销项,本文件不再保留其任务卡与证据链(证据在模块文档与 `git log`)。
|
||||
> **本波只剩余一项未开工的事**:M3 可送检(B10)。台架闭环与功能面完整这两项已闭环,本文件
|
||||
> 不保留其任务卡与证据链(证据在模块文档与 `git log`)。
|
||||
> 排序权威(波次总览)在 `docs/任务规划/README.md` §2;并行 / 工作树 / 两把锁的机制见
|
||||
> `docs/任务规划/并行分道方案.md`。
|
||||
|
||||
@@ -23,11 +23,11 @@
|
||||
|
||||
| 序 | 任务 | DoD(可验证验收判据) | 硬依赖 | 资源 | 写范围 | 状态 | 出处 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **B10** | **标准源注入 + 第三方 104 主站往返(送检窗口)** | 标准源注入:L1-5 标定复核 / L1-7 等周波 / P1 过流·过负荷 / P2 电压 + 频率类判据全通过;第三方主站总召/周期/变位/遥控全流程(`../子系统设计/IEC104上行设计说明.md` §7/§8 核对单);证据归档 | M1 + M2(均已达成) | 🟡 | —(窗口内缺陷修复走 Expedite 类) | ⬜ | 保护规划 §7 P1/P2 验收;`../子系统设计/IEC104上行设计说明.md` §7/§8 |
|
||||
| **B10** | **标准源注入 + 第三方 104 主站往返(送检窗口)** | 标准源注入:L1-5 标定复核 / L1-7 等周波 / P1 过流·过负荷 / P2 电压 + 频率类判据全通过;第三方主站总召/周期/变位/遥控全流程(`../子系统设计/IEC104上行设计说明.md` §7/§8 核对单);证据归档 | 卡 12(「数据可信」,标准源) | 🟡 | —(窗口内缺陷修复走 Expedite 类) | ⬜ | 保护规划 §7 P1/P2 验收;`../子系统设计/IEC104上行设计说明.md` §7/§8 |
|
||||
|
||||
> ⚠ **B10 与「数据可信」的依赖**:B10 的"L1-5 标定复核"依赖「数据可信」的通道标定卡(卡 12),
|
||||
> 即 **「数据可信」是 B10 的前置**。该依赖已在 `docs/任务规划/数据可信.md` §10 登记,两边不要
|
||||
> 各写一套;送检窗口若早于「数据可信」的 M4,先按卡 0 的注入结果对齐口径。
|
||||
> 各写一套;送检窗口若早于卡 12,先按卡 0 的注入结果对齐口径。
|
||||
>
|
||||
> ⚠ **送检前必须先解保护闭锁**(2026-10-25 复核):产品构建下 `protect_task.c:98` 要求
|
||||
> UA/UN/IA 的 `ADC_CAL_F_VALID` 全置位才走判据,而 VALID 只在标定写入 `[adc_cal] valid`
|
||||
|
||||
Reference in New Issue
Block a user