docs: 删任务规划两份已完成文档,数据可信内容迁入算法层/硬件平台/登记簿
任务规划目录从 5 个文件收敛到 3 个:只留导航(README)、待办(登记簿)、 暂缓专项(暂缓-RS485)。 删除的两个文件都不再有现行读者: - UI补齐.md 执行清单 2026-10-28 清空、上板判据 2026-11-06 台架轮已复核; 叶数口径迁 docs/UI设计/菜单页面设计.md §3.9,三条内容页硬规矩迁 docs/UI设计/内容页架构.md §7.1,两条未闭环待办迁登记簿 §7/§8。 - 数据可信.md 不是完成记录,而是被约 130 处代码头注释引用的设计约束, 因此按内容分三处落位后删除,不整篇丢弃。 数据可信内容的新归属(旧节号 → 新家): - §2/§4 设计口径 → docs/算法/采集与算法层设计说明.md 新增 §13(13 小节), §7 前置决策表 → §13.12 已定案的前置决策。 - §3 台阶与波次退出判据 → docs/硬件平台/ADC通道映射说明.md 新增 §9。 - §5 任务卡 → docs/任务规划/登记簿.md §7(拆成变比确认 / 两点标定两行)。 引用改写 34 文件 77 处路径引用 + 14 文件 24 处昵称引用 + 双重节号 35 处, 覆盖代码头注释、测试、生成器与文档;归档区历史路径改纯文本提及。 四个 SVG 生成器文案同步并重跑,产物随脚本同批提交。 同批处理两件事: - 9 个 UTF-16 LE 证据文件转 UTF-8。end-of-file-fixer 按字节判末尾换行, UTF-16 的换行是 0A 00、末字节 00,钩子会追加裸 0x0a 使文件变奇数长度, 8 个已实际损坏。转码后逐文件比对 HEAD 原文验证正文零丢失。 - 修回 App/cfg/cfg_file.c 被剥掉的 UTF-8 BOM(补 3 字节,未整文件重写)。 验证:/keil-build 0 错误 0 警告(Code=255160);check_doc_links --all --sections-strict 221 篇全通过、无法判定 0;pre-commit 全量全 Passed。
This commit is contained in:
+8
-8
@@ -51,7 +51,7 @@ ADC 引脚电压 V)+ `adc_health_rail_watch()` ×9(「采样通道自检」
|
||||
|
||||
> **改本目录前先记五条红线**:① 取数只经 `adc_input_raw()`,不写死下标;② **禁止跨转换器**做
|
||||
> 相位 / 功率 / 矢量运算(双转换器无共同采样触发);③ 帧值已是 标定折算工程量,但 **未标定(`adc_cal_flags()` 无
|
||||
> VALID)时单位只是 ADC 引脚电压**,不是端子二次值——下游消费精度判据见「数据可信」§4.2 三态
|
||||
> VALID)时单位只是 ADC 引脚电压**,不是端子二次值——下游消费精度判据见docs/算法/采集与算法层设计说明.md §13.3 三态
|
||||
> 表;④ 工程量 → 帧的唯一折算点是 `adc_cal_apply()`,禁止旁路再乘系数;⑤ 本层不建任务、
|
||||
> 不等事件、不写日志(`adc_cal` 的 `[ERR]` 哨兵留痕是唯一例外,且每通道每开机一次),
|
||||
> `*_init()` 才可在内核前调。
|
||||
@@ -102,13 +102,13 @@ ADC 引脚电压 V)+ `adc_health_rail_watch()` ×9(「采样通道自检」
|
||||
### 3.8 `adc_cal.c` / `.h` — 标定折算通道标定折算(「数据可信」标定折算与落盘整定)
|
||||
- 折算模型:工程量 = (code + b) × k;**k 落盘用 int32 Q16(µV/码 × 65536)**、b 用
|
||||
int32 码值(负零点靠 `CFG_VAL_INT`)——单位与定点格式的选型依据见
|
||||
`docs/任务规划/数据可信.md` §4.1,勿改回 V/码 直存(Q16 只剩 20 个刻度)。
|
||||
`docs/算法/采集与算法层设计说明.md §13.2`,勿改回 V/码 直存(Q16 只剩 20 个刻度)。
|
||||
- **ROM 默认 = 量程口径冻结定死的引脚侧 LSB**(TPAFE 152.59 / STM32 805.66 µV/码,
|
||||
`docs/硬件平台/ADC通道映射说明.md` §7.1);表下标 = 语义枚举(UA0…IN7),
|
||||
V0.2 改版与本目录 `adc_input` 映射表同步改。
|
||||
- 三态可用性 `adc_cal_flags()`:VALID(已按变比标定,二次值成立——端子变比确认与两点标定前恒 0)
|
||||
/ CLIPPED(运行期按来源派生,V0.2 后自动清零)。**消费者判「能不能信」只许查它**,
|
||||
`adc_cal_apply()` 不返回可用性(「数据可信」§4.2 三态可用性表)。
|
||||
`adc_cal_apply()` 不返回可用性(docs/算法/采集与算法层设计说明.md §13.3 三态可用性表)。
|
||||
- 合法带哨兵:k ∉ ROM×[0.5,2.0] 或 |b| > 8192 → 折算回退 ROM + 每通道每开机一条
|
||||
`[ERR]` + VALID 被压制(**即便文件位图说已标定**);这层兜底同时挡坏文件与坏标定。
|
||||
- `adc_cal_set()` / `adc_cal_two_point()`:整定与两点公式的算术核已齐备(单测还原合成
|
||||
@@ -118,18 +118,18 @@ ADC 引脚电压 V)+ `adc_health_rail_watch()` ×9(「采样通道自检」
|
||||
|
||||
### 3.9 `meas.c` / `.h` — 遥测快照发布(全周傅氏相量发布侧,「数据可信」波次)
|
||||
- **唯一发布者 = adcTask**:`phasor_run()`/`freq_run()` 同拍、200 ms **tick 经过**分频
|
||||
调 `meas_tick()`(非拍计数——idle/skip 拍拉长名义节拍)。`docs/任务规划/数据可信.md` §4.5
|
||||
调 `meas_tick()`(非拍计数——idle/skip 拍拉长名义节拍)。`docs/算法/采集与算法层设计说明.md §13.9`
|
||||
定"唯一发布者 = `adc_task`" = 评审判据:全仓 `meas_tick` 调用点数须为 1;iec104Task /
|
||||
uiTask 只读。
|
||||
- 值口径(第二轮「遥测快照发布」的 A-lite 裁决):**基波有效值瞬时透传**,与 phasor 使用区
|
||||
**同拍同核逐位相等**(单测钉死);**不做** 4 点平均 / 谐波方和根——按
|
||||
docs/任务规划/数据可信.md §4.5"上送节拍非平均窗,再平均引入滞后";谐波 k-bin 轨
|
||||
docs/算法/采集与算法层设计说明.md §13.9"上送节拍非平均窗,再平均引入滞后";谐波 k-bin 轨
|
||||
(docs/算法/继电保护功能复现规划.md 「遥测谐波轨(可选)」)扩展只许结构尾部追加,
|
||||
docs/任务规划/数据可信.md §4.5 字段序 = 协议(布局由单测按偏移钉死,72 B × 双区)。
|
||||
docs/算法/采集与算法层设计说明.md §13.9 字段序 = 协议(布局由单测按偏移钉死,72 B × 双区)。
|
||||
- 并发 = phasor 双区 + 单字节索引翻转(「双区指针原子交换」同型,无锁);seq 只增供消费者判换帧。
|
||||
- 品质注入:削顶位图唯一源 = `adc_cal_flags()`(口径 docs/任务规划/数据可信.md §4.2
|
||||
- 品质注入:削顶位图唯一源 = `adc_cal_flags()`(口径 docs/算法/采集与算法层设计说明.md §13.3
|
||||
三态表;由 adc_task 编排注入,本层不链 `adc_cal`);TEMP = 最新一拍原始值透传 +
|
||||
`NT`(「数据可信」决策 5);`MEAS_QDS_*` 低字节与 104 QDS 线上字节同值
|
||||
`NT`(`docs/算法/采集与算法层设计说明.md` §13.3 三态表);`MEAS_QDS_*` 低字节与 104 QDS 线上字节同值
|
||||
(本层**不** include 协议层头——分层方向)。
|
||||
- 104 死区迁移 / 频率点绑定 = 104 改读快照那一波(道D 后续分支);读数与注入源比对 = **待台架实测**。
|
||||
|
||||
|
||||
+8
-8
@@ -2,14 +2,14 @@
|
||||
* 模块名称:通道标定与量纲折算(标定折算)——实现
|
||||
* 模块功能:见 adc_cal.h。折算模型(工程量 = (code + b) × k × 1e-6,k 为 Q16
|
||||
* µV/码)与两段 cfg 布局([adc_cal]:k_* + valid 位图;[adc_cal_ofs]:
|
||||
* b_*)照 docs/任务规划/数据可信.md §4.1 / §4.4 落地;系数口径
|
||||
* b_*)照 docs/算法/采集与算法层设计说明.md §13.2 / §4.4 落地;系数口径
|
||||
* (ROM 默认 = 量程口径冻结定死的引脚侧 LSB)见 docs/硬件平台/ADC通道映射说明.md
|
||||
* §7.1。
|
||||
* 并发契约:cfg RAM 副本属主 = 配置引擎(defaultTask 的 load/poll 原地
|
||||
* 改写),本层逐点折算现读——int32 对齐字在 Cortex-M4 上读写原子,
|
||||
* poll 重载「复位默认 + 逐键解析」存在 µs 级窗口,撞上则该拍该通道
|
||||
* 为默认值/半新值(相量 20 点窗摊薄,且触发面 = 用户改文件后 4 s
|
||||
* 沉降一次性事件)——「数据可信」§4.4 明载此设计(不挂回调)。
|
||||
* 沉降一次性事件)——docs/算法/采集与算法层设计说明.md §13.8 明载此设计(不挂回调)。
|
||||
* 合法带哨兵(防损坏文件/错误标定把假电压送进下游):k ∉ ROM×[0.5,2.0]
|
||||
* 或 |b| > ADC_CAL_B_MAX → 该通道折算回退 ROM + b=0,flags 不报
|
||||
* VALID,每通道每次开机首见沿打一条 [ERR](adc_cal_init 重置留痕)。
|
||||
@@ -46,12 +46,12 @@
|
||||
/* 常量定义区 */
|
||||
|
||||
/* 段名(≤ CFG_FILE_MAX_NAME_LEN)与键名(k_ua…b_in,均 4/5 字符)
|
||||
* ——「数据可信」§4.4 布局;键的书写顺序按该表,存储下标按语义枚举 */
|
||||
* ——docs/算法/采集与算法层设计说明.md §13.8 布局;键的书写顺序按该表,存储下标按语义枚举 */
|
||||
#define ADC_CAL_SEC_K "adc_cal"
|
||||
#define ADC_CAL_SEC_B "adc_cal_ofs"
|
||||
|
||||
/* Q16 → V 的合并比例因子:1e-6 / 65536(float 常量,精确到 1 ulp 以内即可:
|
||||
* 系数本身 Q16 舍入误差 < 0.001 %,见「数据可信」§4.1) */
|
||||
* 系数本身 Q16 舍入误差 < 0.001 %,见docs/算法/采集与算法层设计说明.md §13.2) */
|
||||
#define ADC_CAL_K_SCALE (1.52587890625e-11f)
|
||||
|
||||
/* 静态变量定义区 */
|
||||
@@ -73,7 +73,7 @@ typedef struct {
|
||||
static adc_cal_kcfg_t s_kcfg; /* 生效系数副本(引擎原地更新) */
|
||||
static adc_cal_bcfg_t s_bcfg; /* 生效零点副本 */
|
||||
|
||||
/* 工厂默认(ROM 理论系数,量程口径冻结定死,「数据可信」§4.4):**下标 = 语义枚举**
|
||||
/* 工厂默认(ROM 理论系数,量程口径冻结定死,docs/算法/采集与算法层设计说明.md §13.8):**下标 = 语义枚举**
|
||||
* (UA0 / UB1 / UC2 / UN3 / IA4 / IB5 / IC6 / IN7)——UA/UN/IA 走 TPAFE
|
||||
* (16 位 ±5 V 档),UB/UC/IB/IC/IN 走 STM32 ADC1;逐路对过
|
||||
* docs/硬件平台/ADC通道映射说明.md §3(IN=ADC11/STM32,勿再按分组顺序误写)。
|
||||
@@ -232,7 +232,7 @@ void adc_cal_init(void) {
|
||||
reg.data_size = (offsetof(adc_cal_kcfg_t, valid) + 1u); /* 33:覆盖到 valid */
|
||||
reg.p_keys = s_k_keys_tbl;
|
||||
reg.key_count = 9u;
|
||||
reg.p_cb = NULL; /* 不挂回调:RAM 副本即生效值(「数据可信」§4.4) */
|
||||
reg.p_cb = NULL; /* 不挂回调:RAM 副本即生效值(docs/算法/采集与算法层设计说明.md §13.8) */
|
||||
if (cfg_file_register(®) != 0) {
|
||||
DBG_ERROR("register '%s' FAIL (dup/full?) - calibration file values inactive",
|
||||
ADC_CAL_SEC_K);
|
||||
@@ -253,7 +253,7 @@ void adc_cal_init(void) {
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:码值 → 工程量折算(「数据可信」§4.1 模型)
|
||||
* 函数功能:码值 → 工程量折算(docs/算法/采集与算法层设计说明.md §13.2 模型)
|
||||
* 入口参数:sem - 语义通道;code - 原始码值 adc_semantic_t / int32_t
|
||||
* 返 回 值:工程量浮点(未标定 = ADC 引脚电压 V;TEMP/越界 = 原样透传码值) float
|
||||
* 限定条件:无(任意上下文,纯读)
|
||||
@@ -290,7 +290,7 @@ uint32_t adc_cal_flags(adc_semantic_t sem) {
|
||||
}
|
||||
/* CLIPPED 由**来源**派生(R5:STM32 侧单极性无偏置 → 负半周削顶)——
|
||||
* V0.2 改版(8 路全接 TPAFE,消除双转换器无共同采样触发)后本位自动恒 0,无需改码,
|
||||
* 对应「数据可信」§4.2 三态可用性表「页面与 104 绑定零改动」的要求 */
|
||||
* 对应docs/算法/采集与算法层设计说明.md §13.3 三态可用性表「页面与 104 绑定零改动」的要求 */
|
||||
if (s_rom_k_stm32((unsigned)sem) != 0) {
|
||||
f |= ADC_CAL_F_CLIPPED;
|
||||
}
|
||||
|
||||
+8
-8
@@ -4,11 +4,11 @@
|
||||
* 工程量 = (code + b) × k_f,k_f = k[µV/码] × 1e-6
|
||||
* k 以 int32 **Q16**(µV/码 × 65536)落盘、b 以 int32 码值落盘,
|
||||
* RAM 副本注册进 cfg_file 引擎([adc_cal] / [adc_cal_ofs] 两段,
|
||||
* 布局见 docs/任务规划/数据可信.md §4.4);**不挂回调**——RAM 副本
|
||||
* 布局见 docs/算法/采集与算法层设计说明.md §13.8);**不挂回调**——RAM 副本
|
||||
* 即生效值,逐点折算现取现用(1 kHz × 9 通道 = 9k 次/秒浮点乘,可忽略)。
|
||||
* 三态可用性:ADC_CAL_F_VALID(已按变比标定 → 工程量为二次值)与
|
||||
* ADC_CAL_F_CLIPPED(V0.1 硬件削顶)由 adc_cal_flags() 单点查询,
|
||||
* 104 / UI / 保护闭锁(未标定即闭锁)共用(docs/任务规划/数据可信.md §4.2)。
|
||||
* 104 / UI / 保护闭锁(未标定即闭锁)共用(docs/算法/采集与算法层设计说明.md §13.3)。
|
||||
* **未标定闭锁的判定本身也归本层**(`adc_cal_prot_blocked()`):它讲的是
|
||||
* 「这几路标定齐了没」,属标定层事实,不是任务编排逻辑——保护任务与 UI
|
||||
* 组装器都只是它的消费者(道F task-16 把此前的两份实现收成一份)。
|
||||
@@ -57,12 +57,12 @@ extern "C" {
|
||||
* TPAFE ±5 V 档:10 V 跨度 / 65536 码 = 152.587890625 µV/码 → ×65536 = 10,000,000(整)
|
||||
* STM32 0~3.3 V:3.3 V / 4096 码 = 805.6640625 µV/码 → ×65536 = 52,800,000(整)
|
||||
* 两个默认值在 Q16 下**无舍入**(系数定点舍入项从误差预算里抹掉,
|
||||
* 选型依据 → docs/任务规划/数据可信.md §4.1)
|
||||
* 选型依据 → docs/算法/采集与算法层设计说明.md §13.2)
|
||||
*/
|
||||
#define ADC_CAL_K_Q16_TPAFE (10000000L)
|
||||
#define ADC_CAL_K_Q16_STM32 (52800000L)
|
||||
|
||||
/* 系数合法带(「数据可信」§4.1 尾注):k 必须落在板级 ROM 系数的 ×[0.5, 2.0]
|
||||
/* 系数合法带(docs/算法/采集与算法层设计说明.md §13.2 尾注):k 必须落在板级 ROM 系数的 ×[0.5, 2.0]
|
||||
* 区间内;带宽用 ROM 值移位实现(>>1 / <<1),不设独立宏防两处真相 */
|
||||
|
||||
/* 零点偏移幅值上限(码值):超此即判文件损坏/异常标定,回退 ROM 并留痕 */
|
||||
@@ -81,7 +81,7 @@ extern "C" {
|
||||
void adc_cal_init(void);
|
||||
|
||||
/*
|
||||
* 函数功能:码值 → 工程量折算(「数据可信」§4.1 模型)
|
||||
* 函数功能:码值 → 工程量折算(docs/算法/采集与算法层设计说明.md §13.2 模型)
|
||||
* 入口参数:sem - 语义通道(TEMP 透传不折算) adc_semantic_t
|
||||
* code - 原始码值(TPAFE 16 位补码 / STM32 0..4095) int32_t
|
||||
* 返 回 值:工程量浮点(未标定时单位 = ADC 引脚电压 V;VALID 后置位 = 二次值) float
|
||||
@@ -127,7 +127,7 @@ uint32_t adc_cal_flags(adc_semantic_t sem);
|
||||
* 永不置位 → 徽标与停走**永不解除**;
|
||||
* · 逐通道打印 VALID/CLIPPED 位图是诊断输出(`App/task/adc_task.c`),
|
||||
* 不是判定。
|
||||
* ④ 台架调试旁路 = 编译期 `-DDTU_BENCH`(「数据可信」§4.3 决策 1 的例外通道,
|
||||
* ④ 台架调试旁路 = 编译期 `-DDTU_BENCH`(`docs/算法/采集与算法层设计说明.md`
|
||||
* 仅本地台架自行定义;本仓任何工程档都不定义 = 产品恒强制)。旁路**只在
|
||||
* 本函数实现内部这一处**,调用方不再各自写 `#ifndef`:否则有人只给单个
|
||||
* TU 加宏,屏上「未标定」徽标与判据停走当场分叉,且 0 错误 0 警告。
|
||||
@@ -173,7 +173,7 @@ int32_t adc_cal_k_q16(adc_semantic_t sem);
|
||||
* 返 回 值:0 - 成功;-1 - 参数非法/越出合法带(RAM 不动,[ERR] 留痕) int
|
||||
* 限定条件:**整定路径上下文**(defaultTask 标定流程/整定链;运行参数段落地起 iec104Task
|
||||
* 经 App/algo/run_par.c 的 0x8040~/0x8048~ 直通写亦为授权写者——写的仍是
|
||||
* 引擎对齐 int32 单字,µs 级混窗契约同「数据可信」§4.4)。勿在 adcTask 调用
|
||||
* 引擎对齐 int32 单字,µs 级混窗契约同docs/算法/采集与算法层设计说明.md §13.8)。勿在 adcTask 调用
|
||||
* 函数说明:**只写 RAM 副本,不置脏、不落盘、不返回"稍后会存"的承诺**——落盘由属主经
|
||||
* cfg_file_save 完成,而"要不要落盘"这件事只有一个真源:run_par 的脏标志。
|
||||
* 因此授权写者是 run_par 的语义 setter(写值 + 置脏成对发生,lead 裁②);
|
||||
@@ -188,7 +188,7 @@ int adc_cal_set(adc_semantic_t sem, int32_t k_q16, int32_t b_codes);
|
||||
* v_lo_uv/v_hi_uv - 两点实测电压(µV,v_hi > v_lo,端子/引脚域均可) int32_t
|
||||
* p_k_q16 / p_b - 输出:系数(Q16)与零点偏移(码值) int32_t *
|
||||
* 返 回 值:0 - 成功;-1 - 参数/斜率非法;-2 - 零点越 ±ADC_CAL_B_MAX(先查前端,
|
||||
* 不得用系数凑错斜率,「数据可信」§4.1 尾注) int
|
||||
* 不得用系数凑错斜率,docs/算法/采集与算法层设计说明.md §13.2 尾注) int
|
||||
* 限定条件:无(纯整数运算,主机侧可直接单测)
|
||||
* 函数说明:k = (v_hi−v_lo)×65536/(c_hi−c_lo)(四舍五入),b = v_lo×65536/k − c_lo;
|
||||
* 实测注入未做(台架待跑),本函数即「公式齐备」的交付物
|
||||
|
||||
+2
-1
@@ -50,7 +50,8 @@
|
||||
#define FREQ_INST_MIN_HZ 35.0f
|
||||
#define FREQ_INST_MAX_HZ 65.0f
|
||||
|
||||
/* 幅值门限(有效值,**二次值 V 口径**,「数据可信」下游常数按工程量重定的结果,依据其 §2.3 表第 1 行):
|
||||
/* 幅值门限(有效值,**二次值 V 口径**,下游常数按工程量重定的结果,依据
|
||||
* `docs/算法/采集与算法层设计说明.md` §13.7 表第 1 行):
|
||||
* 低于该值判"无有效波形"。取值 50 V = 0.5×Un(相电压标称 100 V,与
|
||||
* App/algo/prot_set.c 头部量纲基准同源):正常带载 UA 在 0.9~1.1×Un,
|
||||
* 50 V 之下只可能是断保险/PT 空载/浮空噪声(浮空实测 ~1.7 V 引脚域、
|
||||
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* 模块名称:遥测快照发布层(全周傅氏相量派生·发布侧,「数据可信」§4.5)
|
||||
* 模块名称:遥测快照发布层(全周傅氏相量派生·发布侧,docs/算法/采集与算法层设计说明.md §13.9)
|
||||
* 模块功能:实现见 meas.h——200 ms 基波有效值 + 品质快照,双区无锁读。
|
||||
* 本文件纯算法:输入 = sample_ring 取窗 + 调用方注入(频率/削顶位图),
|
||||
* 无 RTOS / 无寄存器 / 无日志(「数据可信」层内禁令:本目录不写日志)。
|
||||
* 双区不变量(docs/任务规划/数据可信.md §4.5,双区指针原子交换 同型,先例 = App/algo/
|
||||
* 双区不变量(docs/算法/采集与算法层设计说明.md §13.9,双区指针原子交换 同型,先例 = App/algo/
|
||||
*(保护功能清单见 docs/算法/继电保护功能复现规划.md)
|
||||
* phasor.c 的双区注释):写侧只碰**非使用区**,全部字段填完后一次
|
||||
* volatile 单字节 store 翻转使用区;读者先取索引再整体拷贝 → 拷贝期
|
||||
@@ -84,7 +84,7 @@ int meas_init(void) {
|
||||
* docs/硬件平台/ADC通道映射说明.md)逐路一周波基波 DFT;任一路取窗
|
||||
* 不足(开机未满一周波)→ 该路 IV|NT + 整帧 valid=0,但照常发布
|
||||
* (品质节拍性刷新,见 meas_tick 头注)。TEMP 只取最新一点透传 +
|
||||
* NT(「数据可信」决策 5)。品质值不因 IV 清零——"值在场但不可信"
|
||||
* NT(docs/算法/采集与算法层设计说明.md §13.3)。品质值不因 IV 清零——"值在场但不可信"
|
||||
* 与"值缺失"分开,消费者按 qds 裁决。
|
||||
*/
|
||||
void meas_tick(uint32_t tick_ms, uint8_t freq_valid_in, float freq_hz_in,
|
||||
@@ -113,7 +113,7 @@ void meas_tick(uint32_t tick_ms, uint8_t freq_valid_in, float freq_hz_in,
|
||||
}
|
||||
}
|
||||
|
||||
/* TEMP:非交流量语义(「数据可信」决策 5),最新一点原始帧值透传 + NT;
|
||||
/* TEMP:非交流量语义(docs/算法/采集与算法层设计说明.md §13.3),最新一点原始帧值透传 + NT;
|
||||
* clip_mask 位 8 不参与(adc_cal_flags(TEMP) 恒 0,无削顶语义) */
|
||||
{
|
||||
float tv = 0.0f;
|
||||
|
||||
+8
-8
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* 模块名称:遥测快照发布层(全周傅氏相量派生·发布侧,「数据可信」§4.5)
|
||||
* 模块名称:遥测快照发布层(全周傅氏相量派生·发布侧,docs/算法/采集与算法层设计说明.md §13.9)
|
||||
* 模块功能:每 **200 ms** 从 全周傅氏相量层取一次基波有效值 + 品质,产出一份全仓唯一的
|
||||
* 遥测快照(meas_snap_t,布局权威 = docs/任务规划/数据可信.md §4.5),
|
||||
* 遥测快照(meas_snap_t,布局权威 = docs/算法/采集与算法层设计说明.md §13.9),
|
||||
* 让 104 与 UI **共用同一份上游**——"什么时候算新值、品质怎么判"只此
|
||||
* 一处决定(M5 遥测链的地基;104 侧消费见「数据可信」104 改读快照,UI 侧 ui_data_feed 属
|
||||
* 「UI 扩展」波次,两者都只是本快照的读者)。
|
||||
@@ -9,15 +9,15 @@
|
||||
* (同拍 phasor 使用区口径,系数已在 标定折算折算进帧值——现单位 = ADC
|
||||
* 引脚电压 V,二次值语义等 adc_cal_flags() 出 VALID,见
|
||||
* docs/算法/采集与算法层设计说明.md §10 红线③);**不做** 4 点平均 /
|
||||
* 谐波方和根——docs/任务规划/数据可信.md §4.5 明示"200 ms 是上送节拍
|
||||
* 谐波方和根——docs/算法/采集与算法层设计说明.md §13.9 明示"200 ms 是上送节拍
|
||||
* 不是平均窗,再平均引入滞后";谐波 k-bin 轨(docs/算法/继电保护功能
|
||||
* 复现规划.md 遥测谐波轨(可选))将来扩展时只许在本结构**尾部追加**或留在发布侧
|
||||
*(保护功能清单见 docs/算法/继电保护功能复现规划.md)
|
||||
* 内部状态,既有字段序不得变更。
|
||||
* TEMP 通道(「数据可信」决策 5:不参与线性标定):yc = 最新一拍原始
|
||||
* 帧值透传,qds 恒置 NT——值在场但非交流量语义,UI 按「数据可信」§4.2
|
||||
* TEMP 通道(docs/算法/采集与算法层设计说明.md §13.3:不参与线性标定):yc = 最新一拍原始
|
||||
* 帧值透传,qds 恒置 NT——值在场但非交流量语义,UI 按docs/算法/采集与算法层设计说明.md §13.3
|
||||
* 三态表显示占位符,104 无对应点。
|
||||
* 并发(docs/任务规划/数据可信.md §4.5 原文口径):沿用 phasor 的
|
||||
* 并发(docs/算法/采集与算法层设计说明.md §13.9 原文口径):沿用 phasor 的
|
||||
* **双区 + 单字节活跃索引翻转**(双区指针原子交换 同型,不是新机制)——写侧填满
|
||||
* 计算区后一次 store 翻转,读者先取索引再整体拷贝,全程无锁;
|
||||
* seq 只增,消费者据此判"是否换帧"。
|
||||
@@ -58,10 +58,10 @@ extern "C" {
|
||||
#define MEAS_QDS_NT (0x0020u) /* 非当前值:未就绪 / 语义未处理(TEMP) */
|
||||
#define MEAS_QDS_IV (0x0080u) /* 无效:该路取窗失败,无有效读数 */
|
||||
#define MEAS_QDS_CLIPPED (0x0100u) /* 硬件削顶(adc_cal_flags 位图直通,
|
||||
* 「数据可信」§4.2 三态表;AC 量不可信,
|
||||
* docs/算法/采集与算法层设计说明.md §13.3 三态表;AC 量不可信,
|
||||
* 消费者应映射为品质无效,如 104 改读快照侧的 IV) */
|
||||
|
||||
/* 遥测快照(docs/任务规划/数据可信.md §4.5 权威布局;实测 72 B,2×72 ≈ 144 B
|
||||
/* 遥测快照(docs/算法/采集与算法层设计说明.md §13.9 权威布局;实测 72 B,2×72 ≈ 144 B
|
||||
* 双区 = 本项 DoD 预算口径,由 test/host/meas/ 的布局钉死用例锁字段偏移——
|
||||
* 改字段 = 破协议,须同步 104 改读快照 / UI) */
|
||||
typedef struct {
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
* 三段递升与过负荷低于速断均自洽)。ADC 帧仅在 adc_cal VALID 置位后才处
|
||||
* 于此域(未标定 = 引脚电压域,由未标定即闭锁停走判据,见 protect_task.c);
|
||||
* min/max 范围覆盖 0~4×标称,无需随这一项改动数值——换算依据与三处下游
|
||||
* 常数同源,见 docs/任务规划/数据可信.md §2.3。
|
||||
* 常数同源,见 docs/算法/采集与算法层设计说明.md §13.7。
|
||||
*
|
||||
* 创建日期:2026-10-11
|
||||
*/
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
|
||||
/* 静态变量定义区 */
|
||||
|
||||
/* [run_par] 段 RAM 副本(引擎原地更新;属主契约与 µs 级混窗见「数据可信」§4.4,
|
||||
/* [run_par] 段 RAM 副本(引擎原地更新;属主契约与 µs 级混窗见docs/算法/采集与算法层设计说明.md §13.8,
|
||||
* 同 adc_cal——本层不挂回调,副本即生效值,消费侧实时读) */
|
||||
typedef struct {
|
||||
int32_t db[RUN_PAR_DB_N];
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@
|
||||
* 改档 → 沉降去抖 → 重载),拿它"兜住"未落盘的改值会把 FTP 侧的旧档倒灌
|
||||
* 回 RAM,比不兜更坏。设计依据见 docs/算法/采集与算法层设计说明.md §10.1。
|
||||
* 并发契约:引擎副本 int32 对齐字读写在 Cortex-M4 上原子;poll 重载 µs 级窗口
|
||||
* 为「数据可信」§4.4 明载设计(adc_cal 同款)。写路径 = 104 执行段
|
||||
* 为docs/算法/采集与算法层设计说明.md §13.8 明载设计(adc_cal 同款)。写路径 = 104 执行段
|
||||
* (iec104Task)与引擎读路径互不加锁,勿改成"读侧缓存"(缓存 = 新真源)。
|
||||
* 纯算法:只用 stdint/stddef/math + cfg_file.h/adc_cal.h 头(注册/直通均为
|
||||
* 接口级)→ 主机侧可单测(test/host/run_par,链真 cfg 引擎 + 真 adc_cal)。
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
* - 按通道分列(一路连续 320 点),不按帧交错:回放页只画一路、PC 重算全周傅氏也逐路
|
||||
* 独立,交错布局两种用法都要跨步长取数(§6.2 末段「为什么按通道分列」);
|
||||
* - 通道数固定 8,TEMP 不录:温度是片内 ADC 的 12 位单极性原始值、非线性且未参与线性
|
||||
* 标定(docs/任务规划/数据可信.md §7 已定案),进录波只多占 640 字节,并让回放页多一
|
||||
* 标定(docs/算法/采集与算法层设计说明.md §13 已定案),进录波只多占 640 字节,并让回放页多一
|
||||
* 格会被误读成电气量的通道;带 TEMP 属二期,且必须连 flags_seq 与 clip_mask 一起升
|
||||
* 版本(§6.2 那两行的括注);
|
||||
* - 落位 SRAM1:本层全部是普通文件级静态,链接脚本 MDK-ARM/STM32F407-Demo/
|
||||
|
||||
@@ -86,7 +86,7 @@ extern "C" {
|
||||
#define WAVE_ST_CH_OFF_BCODE (8u) /* 4 字节 int32 */
|
||||
#define WAVE_ST_CH_BYTES (12u)
|
||||
|
||||
/* 本波通道数固定 8(TEMP 不录:理由见 §6.3 末段与 docs/任务规划/数据可信.md §7) */
|
||||
/* 本波通道数固定 8(TEMP 不录:理由见 §6.3 末段与 docs/算法/采集与算法层设计说明.md §13.3) */
|
||||
#define WAVE_ST_CH_NUM (8u)
|
||||
/* 通道数上限:给二期「带 TEMP 且同时升版本」留位;真正的口径是 meta 里的 ch_count 字段 */
|
||||
#define WAVE_ST_CH_MAX (9u)
|
||||
|
||||
Reference in New Issue
Block a user