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

4.1 KiB
Raw Blame History

分工说明:采集链与上送链台架联调(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 快照字段)变更 先在本文件登记再动手。