Files
STM32F4-Base/docs/任务规划/分工说明-20261028-采集链与上送链联调.md
T
wandering1 593c5d0c84 refactor(编号): 采集链分层 L1/L1.5/L2/L2.5/L3/L4/L5 → 语义名(批次 1)
用户裁定(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 干净。
2026-10-28 13:04:02 +08:00

45 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 分工说明:采集链与上送链台架联调(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` 区**)
- **交付物**:
1. `App/algo/README.md` 补 **「快照时序」** 一节:`tpafe5160_snapshot()` 临界区原子性、`adc_tick_irq_notify()` 的「消费者就绪」门(TIM3 比调度器早 ≈100 ms);
2. `test/host/adc_input/run_unit_test.py` 增加 **帧序号回绕** 与 **双缓冲半帧** 两个用例;
3. `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/` 里 include `App/` 的头(`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`
- **交付物**:
1. `App/algo/meas.c` 的 **200 ms 双区快照** 写一个 **单写者/多读者** 一致性说明,落到 `docs/架构设计/项目架构总览.md` 的跨层依赖表;
2. `Drivers/BSP/UI/ui_data.c` 与 104 上送 **共用同一份上游**:补 `test/host/ui_data/run_unit_test.py` 的 **陈旧代次(generation)** 用例;
3. 若新增 `.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-comment` 9-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` 快照字段)变更 **先在本文件登记**再动手。