593c5d0c84
用户裁定(2026-10-28):L1/L1.5/L2/L2.5/L3 这套层号「谁能看懂」,改用语义名。 映射(同一批定稿,含 L4/L5): L1 → 语义取数与有效性 L1.5 → 标定折算 L2 → 全周傅氏相量 L2.5 → 测频与遥测快照 L3 → 保护判据 L4 → 出口与记录 L5 → 动作留痕 实测规模:384 站点 / 62 文件(App/algo、App/task、test/host 六个套件、docs/算法、 产品需求、架构总览、启动顺序、ADC 采样节拍、IEC104 上行、采集短板评测、内存管理、 AGENTS.md、README.md、docs/README.md、.pre-commit-config.yaml 与 scripts 里的注释)。 改法(不是全局替换,逐模式有上下文规则): - 先吃同位语再落裸词:L1 有效性校验 → 语义取数与有效性校验、L2 相量层 → 全周傅氏 相量层、L3 保护 → 保护判据、L2.5 遥测快照 → 测频与遥测快照,避免「保护判据保护判据」 这类重复(第一版就是这么坏掉的,已整体回滚重做)。 - .c/.h 只改注释:先把字符串字面量切出去(引号数为奇数的跨行注释按整行处理), C 字符串里的 L2-in ring 之类原样保留——AGENTS 铁律「字符串字面量必须纯 ASCII」。 - 层内条目号(L1-3 / L2-3 这类)**本批不动**,属批次 2;另外三族(UI 菜单层级 L0~L3、链路延迟分段 L1~L8、CubeMX 防丢失三层)也不动,属批次 3。 - 顺手修的措辞:范围写法 L1~L3 → 「分层(语义取数与有效性 → 保护判据)」、 CI 段「不含 L1/L2/L3」→「不含采集链分层」、目录地图里同一处并列表述。 验证:@build 0 错 0 警(Code=236456,与改前逐字节同尺寸——纯注释改动); 内存布局配图已按新脚本重生成(自检通过);doc-links --all --sections-strict 通过 (195 文档);mojibake / bom-guard / coding-standard / 新编号门禁自查 全 rc=0; git diff --check 干净。
4.1 KiB
4.1 KiB
分工说明:采集链与上送链台架联调(2026-10-28)
目标:把 语义取数与有效性→全周傅氏相量→测频与遥测快照 取数链与 测频与遥测快照→104/UI 上送链在同一次台架烧录里对齐,提交门禁 0 错误 0 警告。 口径:本文件只分工,不改行为;任何一条线单独验收通过后合并,不交叉编辑对方文件。
A 线 · 采集链(负责人 A)
- 涉及文件:
App/algo/adc_input.c、App/algo/adc_health.c、App/algo/sample_ring.c、App/algo/phasor.c、Src/freertos.c(只写USER CODE区) - 交付物:
App/algo/README.md补 「快照时序」 一节:tpafe5160_snapshot()临界区原子性、adc_tick_irq_notify()的「消费者就绪」门(TIM3 比调度器早 ≈100 ms);test/host/adc_input/run_unit_test.py增加 帧序号回绕 与 双缓冲半帧 两个用例;docs/子系统设计/ADC采样节拍设计说明.md§5 表格与代码实际节拍(TIM3 PSC 83 / ARR 999 → 1 kHz + TRGO_UPDATE)核对后回填差异。
- 禁止:
malloc/calloc/realloc/strdup/free(门禁 CODE-RULE-20);跨转换器做 相位/功率/功率因数 运算(V0.1 硬件缺陷);Drivers/BSP/里 includeApp/的头(layer-deps)。 - 取数只用
adc_input_poll()/adc_input_raw()按语义取值,不写死下标(buf[2]=IA、buf[5]=UN、buf[6]=UA见docs/硬件平台/ADC通道映射说明.md)。
B 线 · 上送链(负责人 B)
- 涉及文件:
App/algo/meas.c、App/task/iec104_task.c、Drivers/BSP/UI/ui_data.c(带 UTF-8 BOM:改完核对EF BB BF)、test/host/meas/run_unit_test.py - 交付物:
App/algo/meas.c的 200 ms 双区快照 写一个 单写者/多读者 一致性说明,落到docs/架构设计/项目架构总览.md的跨层依赖表;Drivers/BSP/UI/ui_data.c与 104 上送 共用同一份上游:补test/host/ui_data/run_unit_test.py的 陈旧代次(generation) 用例;- 若新增
.c:MDK-ARM/STM32F4-Base.uvprojx+simulator/CMakeLists.txt双端注册(new-source-file)。
- 禁止:直接编辑
Drivers/BSP/UI/之外的Src/、Inc/标记区外内容;把*.uvprojx的 UV4 抖动改动入库;改Lib/lv_conf.h不同步simulator/那份(lv-conf-sync)。 - UI 侧铁律:字符串字面量 纯 ASCII,中文只进注释;注释里写路径 不要出现星号形态(
nested-comment9-D),写目录或用尖括号。
共用约束(A/B 都要守)
- 改代码/改文档 只用 Edit 精确替换;绝不用
Get-Content/Set-Content/cmd重写含中文的文件(U+FFFD不可逆)。 - 行尾 LF(
.gitattributes已写死* text=auto eol=lf);怀疑乱码先数EF BF BD字节,不要git checkout。 - 门禁只在 提交时 统一跑:
@build+& '.venv\Scripts\python.exe' scripts/ci_local.py+check_doc_links.py --all;不要中途反复跑。 - 文档引用章节 紧邻写法:
docs/算法/采集与算法层设计说明.md§10.1;改名/挪目录走scripts/rename_ref.py(先 dry-run)。 git commit/git push/ 烧录 /CubeMX重生成 / 抬栈 —— 须用户明确指示(抬栈前后各跑scripts/stack_report.py)。
验收(合并前)
| 线 | 判据 | 证据 |
|---|---|---|
| A | 语义取数与有效性→全周傅氏相量与 1 kHz 节拍一致,无半帧 | test/host/adc_input 全绿 + docs/子系统设计/ADC采样节拍设计说明.md |
| B | meas 双区 104 与 UI 同源,无撕裂 |
test/host/meas、test/host/ui_data 全绿 + docs/编号规范.md 无新撞号 |
| A+B | 台架一次烧录 -Rst -Run + 回读校验(No difference found),串口日志无 [ERR] |
@test 报告 + MDK-ARM/build_log.txt |
交接
- 两条线各自 只回报:改了哪些文件、跑了哪些自检、剩余风险;跨线接口(
meas快照字段)变更 先在本文件登记再动手。