diff --git a/docs/产品需求/产品需求设计文档.md b/docs/产品需求/产品需求设计文档.md index 1dcf4b73..cf6e2a23 100644 --- a/docs/产品需求/产品需求设计文档.md +++ b/docs/产品需求/产品需求设计文档.md @@ -7,13 +7,14 @@ > 待实现项与路线图、验收判据。 > **事实来源**:本文所有数值与结论均取自仓库内**受管事实源**(代码、`.ioc`、`.map`、网表分析报告与 > 各模块设计文档),凡与其它文档冲突处,以本文标注的权威来源为准。 -> **版本**:v1.2 **日期**:2026-10-27 **状态**:现状基线(含已实现项 + 待实现项) +> **版本**:v1.3 **日期**:2026-10-28 **状态**:现状基线(含已实现项 + 待实现项) > **阅读前提**:建议先读 [`docs/README.md`](../../docs/README.md)(文档索引)与 > [`docs/架构设计/项目架构总览.md`](../../docs/架构设计/项目架构总览.md)(全景架构)。 > **范围口径:1:1 复刻**——本产品是参考产品 **CLS100**(`Scatter_P_HV03.01_SV01.01`,OMAP-L138 > ARM+DSP 双核 + VxWorks 配电保护测控装置)的**逐模块复刻**。产品范围 = 参考源码的能力全集, > 差异只允许来自物理不可移植项(§2.4.1)。§2.5 以**参考工程源码的常量表与模块文件**为唯一清单, -> 给出 19 项能力对照与复刻进度;§9 的缺口一律表述为"复刻进度"而非"不做"。 +> 给出 19 项能力对照与复刻进度;§9 的缺口一律表述为"复刻进度"而非"不做", +> 其中 **§9.4~§9.12 是逐项明细**(每个定值 / 每个点 / 每个模块差在哪、怎么算做完)。 > 产品定义的技术细化见 [`docs/算法/继电保护功能复现规划.md`](../算法/继电保护功能复现规划.md)。 --- @@ -274,7 +275,7 @@ flowchart LR > (`0x8822`、`0x8823`、`0x883E`、`0x883F`、`0x8842`、`0x8851`、`0x8852`、`0x8853`) > 对应参考源码中被注释掉的 4 条映射(`ULTV_PARA_2`、`ULTV_Phase` 等)。 -#### 2.5.5 保护元件(45 个模块 → 已复刻 9 个元件 + 1 个记录模块) +#### 2.5.5 保护元件(45 个模块 → 覆盖 8 个模块 / 9 个实例) 按功能归类(`RelayUnit/` 文件名去 `PRS_` 前缀): @@ -1370,6 +1371,9 @@ pre-commit run --all-files 按**缺口性质**分两类:**阻塞型**(缺外部资源或硬件,排期无用)与**规模型**(无外部依赖,只等排期)。 +> 本节是**清单**;**§9.4~§9.12 是逐项明细**——参考源码到底有哪几项、本产品有哪几项、 +> 差额具体落在哪个定值 / 哪个点 / 哪个模块上、以及"怎么算做完了"。排期与估算以明细为准。 + #### 9.1.1 阻塞型(等外部条件,排期不能解决) | 条目 | 对应 §2.5.2 | 现状 | 缺的是 | 解除条件 | @@ -1385,12 +1389,12 @@ pre-commit run --all-files | 条目 | 对应 §2.5.2 | 参考 | 现状 | 差额 | |---|---|---|---|---| -| **定值铺开** | 1、2 | 249 项 / 23 单元 | 40 项 / 5 组 | +209 项 / +18 单元 | +| **定值铺开** | 1、2 | 249 项 / 23 单元 | 40 项(覆盖参考 35 + 本地 5)/ 5 组 | +214 项 / +18 单元 | | **映射铺开** | 3 | 107 项 `0x8820~0x8891` | 40 项局部 | +67 项 | -| **元件铺开** | 12 | 45 个模块 | 9 个元件 + 1 个记录模块 | +35 个(过流类 4 / 电压类 5 / 重合闸 5 / 方向功率 4 / 涌流故障 5 / 自动控制 5 / 记录 5 / 录波采样 2) | +| **元件铺开** | 12 | 45 个模块 | 8 个模块 / 9 个实例 | +37 个模块(过流类 6 / 电压类 5 / 重合闸 5 / 方向功率 4 / 涌流故障 5 / 自动控制 5 / 记录 5 / 录波采样 2) | | **遥测铺开** | 4、5 | 31 点 + 模型 35 行 | 9 点 | +22 点 + 模型表 | | **录波子系统** | 10、15 | 3 类型 / 6 段 / 65 通道 / RAM 16 个 / COMTRADE 64·64·16 | 0 | 整子系统 | -| **记录体系** | 9、13 | 13 类队列(128/256 条) | 8 通道 | +5 类(COS / 越限 / 启动 / 闭锁 / 顺控) | +| **记录体系** | 9、13 | 13 类队列(128/256 条) | 8 类 | +5 类(越限 / 闭锁 / COS / 顺控 / 顺控执行) | | **UI 记录页** | 9、13 | 参考有完整记录页与运行报告 | 菜单叶未绑页 | 5 页 + 运行报告 | | **多规约栈** | 17 | 12 种 | 1 种(104) | +11 种(101 / 102 / 103 / CDT / ModBus / Whm_GB / 61850 / CAN + 子站侧 3 类) | | **国密算法** | 18 | `Comm/Ecc/` 全套 | 0 | SM2 / SM3 / ECDSA | @@ -1438,6 +1442,540 @@ pre-commit run --all-files | `rs485_task.c` | `App/task/`(未建任务、白名单登记) | 唯一的结构白名单缺口:RS-485 整簇冻结期间**刻意不接线**,随该簇一并出白名单 | | `DTU_BENCH` | 构建宏(`protect_task.c` 等) | 台架构建下允许保护判据在未标定时动作(仅测试用);产品构建(`#ifndef DTU_BENCH`)下保护闭锁 | +### 9.4 定值复刻明细(参考 249 项 → 本产品 40 项) + +参考定值表的每一行固定 **21 个字段**:标识 ×2 / 类型(数值 | 枚举)/ 所属单元 / 单位组 / 值类型 / +最小值 / 最大值 / 步长 / 两个标志 / 上下限原始值 ×3(`0xAA` / `0xAAAA` / `0xFF`)/ 104 地址 / +单位 ×2 / 小数位 / 长度 / 显示名 / 结束标记。 +本产品对应物是 `App/algo/prot_set.h` 的 `PS_*` 枚举(`PS_ID_COUNT = 40`)。 + +**40 项的去向必须能对上账**,否则"还差多少"无从谈起: + +| 去向 | 项数 | +|---|---| +| 覆盖参考定值项 | **35** | +| 本产品本地扩展项(参考无对应行) | **5**(`PS_RET_OVER` / `PS_RET_UNDER` 返回系数,`PS_RET_OF` / `PS_RET_UF` 频率返回系数,`PS_GLOBAL_EN` 全局软压板) | +| **合计** | **40** | + +因此**定值差额 = 249 − 35 = 214 项**。 + +#### 9.4.1 23 个定值单元逐单元差额 + +| 单元 | 语义 | 参考项数 | 本产品覆盖 | 差额 | +|---|---|---|---|---| +| `WatchDog` | 过流三段 / 零序三段 / 过负荷 / 重载 / 过载 / 过频 / 低频 | 63 | 22 | **41** | +| `SYS3` | 系统参数(零飘、死区、变比、防抖、脉宽、FA 模式…) | 45 | 0 | **45** | +| `VolTimeRecv` | 电压时间型馈线自动化(失电分闸 / 得电合闸 / 联络) | 17 | 0 | **17** | +| `AutoReCls` | 重合闸 | 16 | 0 | **16** | +| `SYN` | 同期(FTU 型) | 13 | 0 | **13** | +| `OverCurI0` | 接地告警(小电流接地选线) | 13 | 0 | **13** | +| `VolPro` | 电压保护(失压 / 过压 / 零序过压) | 13 | 9 | 4 | +| `WAVESTART` | 录波启动 | 12 | 0 | **12** | +| `MeaLimit` | 遥测越限 | 10 | 0 | **10** | +| `OverCurSpeed` | 过流 / 零序后加速 | 8 | 0 | **8** | +| `SYS1` | PT 参数 | 6 | 2 | 4 | +| `SYS2` | CT 参数 | 4 | 2 | 2 | +| `Auto_FG` | 延时自动分闸 | 4 | 0 | 4 | +| `Auto_HH` | 延时自动合闸(电池活化) | 4 | 0 | 4 | +| `InRush` | 励磁涌流闭锁 | 3 | 0 | 3 | +| `OverCur` | 短路告警 | 3 | 0 | 3 | +| `VolQuaRate` | 电压合格率 | 3 | 0 | 3 | +| `FZDDL` | 非遮断电流闭锁 | 3 | 0 | 3 | +| `BHKO` | 保护出口展宽 | 2 | 0 | 2 | +| `MeaRecord` | 遥测记录周期 | 2 | 0 | 2 | +| `PowerSet` | 功率电压组 | 2 | 0 | 2 | +| `PTBreak` | PT / 控回断线告警 | 2 | 0 | 2 | +| `AutoCtrl` | 自动复归 | 1 | 0 | 1 | +| **合计** | | **249** | **35** | **214** | + +> 单元名 `WatchDog` 有误导性:它装的是**全部保护元件的动作定值**(过流 / 零序 / 负荷 / 频率), +> 不是看门狗参数。移植时不要按名字去找"看门狗定值"。 + +#### 9.4.2 已覆盖单元的逐项对照(35 项) + +**过流三段:参考 24 项,本产品 12 项**(每段缺 4 项,共缺 12) + +| 参考项(Ⅰ/Ⅱ/Ⅲ 段各一份) | 本产品 | 说明 | +|---|---|---| +| 过流 n 段投入 | `PS_OCn_EN` | ✅ | +| 过流 n 段跳闸投入 | `PS_OCn_TRIP` | ✅ 语义 = 0 告警 / 1 跳闸 | +| 过流 n 段定值 | `PS_OCn_CUR` | ✅ 二次值 A | +| 过流 n 段延时 | `PS_OCn_DLY` | ✅ ms(参考为 S,换算在整定入口) | +| 过流 n 段方向投入 | — | ❌ 无方向元件(`DirCell` / `PowDirJudge` 未复刻) | +| 过流 n 段低压投入 | — | ❌ 无复压闭锁(`bNOVOpen` 无来源) | +| 过流 n 段告警投入 | — | ❌ 参考把"告警投退"与"跳闸投退"拆成两项,本产品只有一项 | +| 过流 n 段低压定值 | — | ❌ 同上 | + +> **这一处差额最容易被低估**:本产品的三段过流是"简化版三段",参考的三段每段还带 +> **方向 / 低压 / 告警** 三个独立开关和一个低压定值。缺这四项时,三段过流只能做无方向、 +> 无复压闭锁的纯过流保护——在环网或双电源线路上会误动。 + +**零序过流三段:参考 18 项,本产品 0 项** + +参考在 `WatchDog` 内另有完整的零序三段(每段 6 项:投退 / 方向 / 告警投入 / 跳闸 / 定值 / 时限)。 +本产品 `PS_3U0_*` 三项是**零序过压**(属 `VolPro`),**不是零序过流**——两者不可混为一谈: +零序过流看 `3I0` 幅值,零序过压看 `3U0` 幅值。因此零序过流保护目前**完全没有定值载体**, +`OverCurrent_I0` 元件也无从判据。 + +**过负荷 / 重载 / 过载:参考 12 项,本产品 4 项** + +| 参考项组 | 本产品 | 差额 | +|---|---|---| +| 过负荷报警(投退 / 跳闸 / 定值 / 时限) | `PS_OL_*` 4 项 | ✅ 齐 | +| 重载报警(同上 4 项) | — | ❌ 缺 4 | +| 过载报警(同上 4 项) | — | ❌ 缺 4 | + +> 参考把"过负荷 / 重载 / 过载"分成三级(默认 150 A / 70 A / 100 A 步长,时限 9000 s / 0 / 0), +> 对应事件 435 / 436 / 437。本产品只有一级过负荷。三级是**同一判据不同门槛**, +> 复刻成本低(元件框架已具备),但需先补 `OverLoad` 的三个实例与三条事件映射。 + +**过频 / 低频:参考 8 项,本产品 6 项 + 2 本地项** + +| 参考项 | 本产品 | 说明 | +|---|---|---| +| 过频 / 低频 保护投退 | `PS_OF_EN` / `PS_UF_EN` | ✅ | +| 过频 / 低频 保护定值 | `PS_OF_HZ` / `PS_UF_HZ` | ✅ 参考单位 HZ 存 5000~5500(0.01 Hz),本产品存 Hz 浮点 | +| 过频 / 低频 保护时限 | `PS_OF_DLY` / `PS_UF_DLY` | ✅ | +| 过频 / 低频 **跳闸**投退 | — | ❌ 缺 2:参考区分"保护投入"与"跳闸投入",本产品只有前者 | + +**电压保护:参考 13 项,本产品 9 项** + +| 参考项 | 本产品 | 说明 | +|---|---|---| +| 失压保护投退 / 定值 / 时限 | `PS_UV_EN` / `PS_UV_VOL` / `PS_UV_DLY` | ✅ | +| 过压保护投退 / 定值 / 时限 | `PS_OV_EN` / `PS_OV_VOL` / `PS_OV_DLY` | ✅ | +| 零序过压投退 / 定值 / 时限 | `PS_3U0_EN` / `PS_3U0_VOL` / `PS_3U0_DLY` | ✅ | +| 失压 / 过压 / 零压 **跳闸**投退(3 项) | — | ❌ 缺 3 | +| 零压 **告警**投退(1 项) | — | ❌ 缺 1 | + +**PT / CT 参数:参考 10 项,本产品 4 项** + +| 参考项 | 本产品 | 说明 | +|---|---|---| +| 母线一次额定(kV) | `PS_PT_PRI` | ✅ 本产品存 V | +| 母线二次额定(线)(V) | `PS_PT_SEC` | ✅ | +| 额定 TA 一次值(A) | `PS_CT_PRI` | ✅ | +| 额定 TA 二次值(A) | `PS_CT_SEC` | ✅ | +| 母线二次额定(相)(V) | — | ❌ 缺:线 / 相两种二次额定的换算关系需显式给出 | +| 零序一次额定(kV) | — | ❌ 缺 | +| 零序二次额定(V) | — | ❌ 缺 | +| 零序一次额定(A) | — | ❌ 缺 | +| 零序二次额定(A) | — | ❌ 缺 | +| PT 接入数目(1~3) | — | ❌ 缺:决定用线电压还是相电压作判据源 | + +#### 9.4.3 完全未覆盖单元逐项清单(163 项) + +214 项差额中,**51 项**落在 §9.4.2 已部分覆盖的四个单元里(过流 12 / 零序 18 / 重载与过载 8 / +频率 2 / 电压 4 / PT·CT 6 / 备用控制字 1),余下 **163 项**落在下面这些**一项都没有**的单元里。 +逐项列出以便排期时按"整单元"认领,不要拆散。 + +**系统参数 `SYS3`(45 项)**——零飘门槛 10 项:额定电压零飘门槛、额定电流零飘门槛、直流电压零飘、 +功率零飘、频率零飘、功率因数零飘、相角零飘门槛、备用 ×4;死区 7 项:电流死区、电压死区、 +直流电压死区、功率死区、频率死区、功率因数死区、相角死区;开入开出 4 项:开入防抖(10~60000 ms)、 +分闸脉宽、合闸脉宽、开入手动分合;变比 5 项:PT 变比、相 CT 变比、零序 CT 变比、功率变比、电量变比; +其余 19 项:开关类型、故障遥信保持时间、功率置负、单项接地选线投入、单相接地跳闸时间、FA 模式、 +对时切换长延时、断线告警确认时间、事故总判小电流接地告警、加速段保护开放时间、 +重合闸检有压等待时间、连续分闸时间、分闸次数、备用参数 01~08。 + +> 本产品的死区落在**运行参数段**(`0x8030~0x8038` 九点,RAM 副本 + 104 可写), +> 变比落在 `prot_set` 的 PT/CT 四项。**语义已覆盖、载体不同**——复刻 `SYS3` 时是把这 +> 两类合并进定值表,不是重新实现。 + +**电压时间型自愈 `VolTimeRecv`(17 项)**:就地 FA 模式、LS(0/1,1 = 联络)、 +失电分闸投退、失电分闸时限(0~100000 s)、得电合闸投退、X 时间(1~100 s,默认 7)、 +故障电流检测、故障电流定值(1~10000 A)、Y 时间(1~100 s,默认 5)、联络开关合闸、 +联络充电时限(0~1800 s)、联络合闸时限(0~300 s)、正方向选择、残压定值(0~300 V)、 +残压判定时限、停电时间(1~10 s)、人工闭锁。 + +> 这是**馈线自动化(FA)的核心**:失电分闸 → 得电合闸 → 联络转供。对应元件 +> `NoVolTrip` / `HaveVolCls` / `ConnectBrkCls` / `FaultIsola` / `FaultRecov` 五个模块。 +> 无开入(开关位置)与出口(分合闸)时**无法闭环**,属 X4 依赖项。 + +**重合闸 `AutoReCls`(16 项)**:重合闸投退、充电时间(0~100000 s)、重合闸次数(0~3)、 +一次 / 二次 / 三次重合闸时间(0~60000 s)、重合闸闭锁时间(0~9900 s)、整组复归时间、 +大电流闭锁投退、大电流闭锁定值、重合闸检同期、重合闸检无压、同期检无压定值(0~15000 V)、 +同期检角差定值(1~30°)、过流禁止重合闸、零序禁止重合闸。 + +> 参考支持**三次重合**且每次时间独立可整定,充电时间与整组复归时间分离——这三项 +> 是"重合闸能不能用"的关键(无充电时间 = 每次跳闸都立即重合,会连击)。 +> 依赖出口(合闸)与开入(开关位置),属 X4 依赖项。 + +**同期 `SYN`(13 项,FTU 型专属)**:检无压投退、检同期投退、频差 / 角差 / 压差 / 滑差闭锁投退 +(4 项)、检无压定值(1000~9999 V)、检频差定值(0~200,0.01 Hz)、检角差定值(1~180°)、 +检压差定值(0~9999 V)、检频率滑差值(0~200 Hz/s)、开关合闸时限(0~200 s)、整组复归时间。 + +> 需**两路电压同刻**(母线侧 + 线路侧)才能算角差与频差——本产品 V0.1 只有一个转换器的 +> 电压通道,属 X4 / H1 依赖项。 + +**录波启动 `WAVESTART`(12 项)**:电流启动投退 / 定值(0~10000 A)、低压启动投退 / 定值 +(0~10000 V)、零压启动投退 / 定值(0~30000 V)、零流启动投退 / 定值(0~1000 A)、 +零流突变投退 / 定值(0~1000 A)、录波启动延时、保护启动录波。 + +> 录波启动是**独立于保护判据的触发源**:即使保护不动作,只要越启动值也要录波。 +> 本产品无录波子系统,这 12 项无处落地(见 §9.9)。 + +**遥测越限 `MeaLimit`(10 项)**:有压鉴别投退 / 线路有压定值(0~300 V)、无压鉴别投退 / +线路无压定值(0~300 V)、线路有压时限(2~100000 s)、电压越上限 / 越下限(0~100000 V)、 +电流越上限(0~10000 A)、越上限延时 / 越下限延时。 + +> 越限记录(`OVER` 队列,128 条)的判据来源。本产品无越限记录类,故这 10 项也无载体。 + +**过流后加速 `OverCurSpeed`(8 项)**:后加速投退、线路 1 前加速投退、过流后加速电流值 +(1~10000 A)、过流后加速时限(0~10000 s)、零序后加速投退、线路 1 前加速投退(重复项, +参考源码如此)、零序后加速电流值(1~1000 A)、零序后加速时限。 + +**接地告警 `OverCurI0`(13 项)**:线路接地告警投退、零序电流反极性、零序电压反极性、 +接地备用 02、接地告警投退、接地跳闸投退、接地方向投退、接地定值(0~10000 A)、接地时限、 +接地跳闸时限(0~600 s)、零压启动定值(1~10000 V)、接地重合投退、接地后加速投退。 + +> **反极性**两项是现场接线纠错开关(CT / PT 装反时不必改线,改定值即可), +> 属"现场可维护性"需求,不是可选项。 + +**其余小单元(合计 29 项)**:励磁涌流闭锁 3(闭锁投退、涌流制动系数 1~100、闭锁复归时间); +短路告警 3(投退 / 时限 / 线路 01 短路电流定值);电压合格率 3(上限 / 下限定值 0~200 %、周期类型 0~4); +非遮断电流闭锁 3(电流闭锁投退、停电跳闸投退、非遮断电流值 1~10000 A); +出口展宽 2(跳闸出口时间、合闸出口时间,1~100000 ms); +遥测记录 2(遥测记录周期 0~2880、极值记录周期 0~360); +功率电压组 2(1~4 组);PT 断线 2(断线告警、控回断线告警);自动复归 1(自动复归投退); +延时自动分闸 4(延时复归投退、2:时 1:分 0:秒、延时复归时限 ×2); +延时自动合闸 4(自动活化投退、2:分 1:时 0:日、自动活化周期 0~360、自动活化时限 0~23000 s)。 + +--- + +### 9.5 遥测复刻明细(参考 31 点 → 本产品 9 点) + +参考 `g_tYcIndexTab` 的 31 点是**按"两回线 × 三相 + 线电压 + 零序 + 功率"组织的完整电气量集**。 +本产品 9 点(`0x4011~0x4018`、`0x401D`)只覆盖第一回线的相量与频率。 + +| # | 参考遥测 | 参考枚举 | 本产品 | 差额原因 | +|---|---|---|---|---| +| 1 | 1 回 A 相电流 | `EN_YCMEA_IA01` | `0x4015` ✅ | | +| 2 | 1 回 B 相电流 | `EN_YCMEA_IB01` | `0x4016` ✅ | 削顶 → 恒 IV | +| 3 | 1 回 C 相电流 | `EN_YCMEA_IC01` | `0x4017` ✅ | 削顶 → 恒 IV | +| 4 | 2 回 A 相电流 | `EN_YCMEA_IA02` | — | ❌ 无第二回线 | +| 5 | 2 回 B 相电流 | `EN_YCMEA_IB02` | — | ❌ | +| 6 | 2 回 C 相电流 | `EN_YCMEA_IC02` | — | ❌ | +| 7 | 1 回 A 相电压 | `EN_YCMEA_UA1` | `0x4011` ✅ | | +| 8 | 1 回 B 相电压 | `EN_YCMEA_UB1` | `0x4012` ✅ | 削顶 → 恒 IV | +| 9 | 1 回 C 相电压 | `EN_YCMEA_UC1` | `0x4013` ✅ | 削顶 → 恒 IV | +| 10 | 2 回 A 相电压 | `EN_YCMEA_UA2` | — | ❌ | +| 11 | 2 回 B 相电压 | `EN_YCMEA_UB2` | — | ❌ | +| 12 | 2 回 C 相电压 | `EN_YCMEA_UC2` | — | ❌ | +| 13 | 1 回 AB 线电压 | `EN_YCMEA_UAB1` | — | ❌ 需两相相量之差 | +| 14 | 1 回 BC 线电压 | `EN_YCMEA_UBC1` | — | ❌ | +| 15 | 1 回 CA 线电压 | `EN_YCMEA_UCA1` | — | ❌ | +| 16 | 2 回 AB 线电压 | `EN_YCMEA_UAB2` | — | ❌ | +| 17 | 2 回 BC 线电压 | `EN_YCMEA_UBC2` | — | ❌ | +| 18 | 2 回 CA 线电压 | `EN_YCMEA_UCA2` | — | ❌ | +| 19 | 1 回零序电流 | `EN_YCMEA_3I01` | `0x4018` ✅ | 近似对齐(本产品为外部零序通道) | +| 20 | 1 回零序电压 | `EN_YCMEA_3U01` | `0x4014` ✅ | 近似对齐 | +| 21 | 2 回零序电压 | `EN_YCMEA_3U02` | — | ❌ | +| 22 | 频率 | `EN_YCMEA_FR1` | `0x401D` ✅ | | +| 23 | 直流 1 | `EN_YCMEA_DC_01` | — | ❌ 无直流采样通道 | +| 24 | 直流 2 | `EN_YCMEA_DC_02` | — | ❌ | +| 25 | A 相有功 | `EN_YCMEA_PA_1` | — | ❌ 需跨转换器同刻(H1) | +| 26 | B 相有功 | `EN_YCMEA_PB_1` | — | ❌ | +| 27 | C 相有功 | `EN_YCMEA_PC_1` | — | ❌ | +| 28 | 总有功 | `EN_YCMEA_P_1` | — | ❌ | +| 29 | 总无功 | `EN_YCMEA_Q_1` | — | ❌ | +| 30 | 总视在 | `EN_YCMEA_S_1` | — | ❌ | +| 31 | 功率因数 | `EN_YCMEA_COS_1` | — | ❌ | + +**缺的 22 点按依赖分三批**: + +| 批次 | 点数 | 内容 | 依赖 | +|---|---|---|---| +| 线电压与功率 | 13 | 6 线电压 + 7 功率/功率因数 | **H1**:电压在 TPAFE、电流在 STM32 ADC1,无共同触发,功率的 `U×I` 需同刻 | +| 第二回线 | 7 | 2 回 6 相量 + `3U02` | 采样通道数(V0.2 硬件) | +| 直流 | 2 | `DC_01` / `DC_02` | 无直流采样通道 | + +> 线电压本身**不一定要等 H1**:`Uab = Ua − Ub` 只需同一转换器内的两相相量, +> 若两相都落在 TPAFE 侧即可算。当前 `Ub`/`Uc` 削顶(在 STM32 侧),所以连带算不出。 +> **先解决"三相电压全落 TPAFE"这一件事,能一次解锁 6 个线电压点**。 + +**遥测模型 `g_tAnaModelTab`(35 行)**:参考为每个遥测点定义死区、变比、系数、越限档等属性行, +是"点表 + 整定"的合体。本产品的对应物拆成了三处:`iec104_pts.c` 的 YC 表(地址 + 死区系数)、 +`run_par.c` 的死区九点、`adc_cal.c` 的 k/b。复刻模型表 = 把这三处收敛成一张可整定的表。 + +**电度 `g_tYmIndexTab`(8 种,本产品 0)**:正向有功 `Pt1`、正向无功 `Qt1`、Q1 象限、Q4 象限、 +反向有功 `Pt0`、反向无功 `Qt0`、Q2 象限、Q3 象限。地址段 `0x6401~0x6600`。 +电度 = 功率对时间积分,**与功率同批解锁**(同一 H1 依赖)。 + +--- + +### 9.6 开入 / 开出复刻明细(138 + 31 → 本产品 0) + +参考把"开入"分成四类,本产品**一个都没有**(无硬件,不可移植项 X4)。 + +**开入 138 点的构成**: + +| 类别 | 点数 | 含义 | +|---|---|---| +| 软遥信 `EN_KI_SOFTYX_*` | **104** | 由保护元件/逻辑产生的内部状态,不占物理端子(如"过流Ⅰ段动作""重合闸充电完成""FA 投入") | +| 硬件开入 `EN_KI_*` / `EN_KIA_*` | **27** | 物理端子:开关合位 / 分位 / 未储能 / 就地远方 / 接地位置 / 隔离位置 / 停用重合闸 / 保护投入 / 检修压板 / 远方信号 / 就地 FTU 手合手分 / 电源输入 / 活化状态 / 电池欠压 / 活化投入 | +| 双点遥信 `EN_KI_TWIN_YX_*` | **6** | 开关位置用双点表达(00 中间态 / 01 分 / 10 合 / 11 无效) | +| 多态遥信 `EN_KI_INT8U_*` | **1** | 8 位状态量(如"设备状态"枚举) | + +> **104 点 ≠ 104 个端子**。真正要接线的是 27 个硬件开入;104 个软遥信是**元件输出**, +> 只要元件复刻出来就自然存在。这个区分决定了工作量估算:不是"买 138 路开入板", +> 而是"27 路端子 + 104 个元件状态映射"。 + +**开出 31 点的构成**: + +| 类别 | 点数 | 明细 | +|---|---|---| +| 出口类 | **11** | 保跳 1(`BH_TZ1`)、保合 1(`BH_HZ1`)、遥分 1(`YT01`)、遥合 1(`YH01`)、遥分 2(`YT02`)、遥合 2(`YH02`)、电池活化(`DCHH`)、活化退出(`DCHH_Esc`)、信号复归(`FG`)、开入变位(`KICHANGE`)、录波启动(`WAVE_START`) | +| 信号类 | **20** | 事故信号 `SignTV`、运行 `SignRun`、通信中断 `SignCOMM`、硬件故障 `SignHW`、储能 `SignCN`、电池欠压 `SignBatQY`、失电 `SignSD`、过负荷 `SignGL`、接地 `SignJD`、闭锁 `SignBM`、备用 `SignBS`、自检 `SignCHK`、重合 `SignCH`、备用 3 个 `SignBAK1~3`、告警 `SignALM`、保护动作 `SignPro`、就地 FA `SignJDFA`、集中 FA `SignJZFA` | + +> 本产品当前**保护动作只体现为遥信 + SOE**,没有任何物理出口。这在"保护测控装置"的 +> 定义里是硬缺口:保护判据做得再准,不跳闸就等于没保护。X4 解除前,`YX` 里的 +> 动作类遥信必须**如实标 IV**,不能让主站误以为已跳闸。 + +--- + +### 9.7 动作事件复刻明细(参考 33 条 → 本产品 9 条) + +参考 `g_tActRecTab` 的 33 条动作事件编号 **421~453**,是"保护动作 → 事件码 → 记录 → 上送"的 +中间层。本产品用 `App/log/sys_log.h` 的七类记录 + SOE,**没有事件码表**。 + +| 事件码 | 参考事件 | 本产品 | 说明 | +|---|---|---|---| +| 421 | 线路励磁涌流闭锁 | ❌ | `InRushCur` 未复刻 | +| 422 | 线路Ⅰ段过流保护动作 | ✅ | `PS_OC1_*` | +| 423 | 线路Ⅱ段过流保护动作 | ✅ | `PS_OC2_*` | +| 424 | 线路Ⅲ段过流保护动作 | ✅ | `PS_OC3_*` | +| 425 | 线路零序Ⅰ段过流保护动作 | ❌ | 无零序过流定值载体 | +| 426 | 线路零序Ⅱ段过流保护动作 | ❌ | 同上 | +| 427 | 线路零序Ⅲ段过流保护动作 | ❌ | 同上 | +| 428 | 线路后加速保护动作(过流) | ❌ | `OverCurrent_SpeedUp` 未复刻 | +| 429 | 线路后加速保护动作(零序) | ❌ | `OverCurrentI0_SpeedUp` 未复刻 | +| 430 | 零序过压保护动作 | ✅ | `PS_3U0_*` | +| 431 | 线路欠压保护动作 | ✅ | `PS_UV_*` | +| 432 | 线路过压保护动作 | ✅ | `PS_OV_*` | +| 433 | 高频保护动作(过频) | ✅ | `PS_OF_*` | +| 434 | 低频保护动作 | ✅ | `PS_UF_*` | +| 435 | 线路过负荷保护动作 | ✅ | `PS_OL_*` | +| 436 | 线路重载保护动作 | ❌ | 三级负荷只做了一级 | +| 437 | 线路过载保护动作 | ❌ | 同上 | +| 438 | 线路接地保护动作 | ❌ | `OverCurI0` 未复刻 | +| 439 | 一次重合动作 | ❌ | 重合闸未复刻 | +| 440 | 二次重合动作 | ❌ | 同上 | +| 441 | 三次重合动作 | ❌ | 同上 | +| 442 | 接地重合动作 | ❌ | 同上 | +| 443 | 接地后加速动作 | ❌ | 同上 | +| 444 | 失电分闸动作 | ❌ | `NoVolTrip` 未复刻 | +| 445 | 得电合闸动作 | ❌ | `HaveVolCls` 未复刻 | +| 446 | 闭锁合闸动作 | ❌ | 需开入(闭锁压板) | +| 447 | 闭锁分闸动作 | ❌ | 同上 | +| 448 | 联络开关合闸动作 | ❌ | `ConnectBrkCls` 未复刻 | +| 449 | 联络开关分闸动作 | ❌ | 同上 | +| 450 | 保护动作备用 02 | — | 参考即备用 | +| 451 | A 相故障 | ❌ | 需分相判别(三相全接) | +| 452 | B 相故障 | ❌ | 同上 | +| 453 | C 相故障 | ❌ | 同上 | + +> **本产品覆盖 9 / 33 条**。注意 428 与 429 在参考源码里**同名**(都叫"线路后加速保护动作"), +> 靠事件码区分过流与零序——移植时不能按名字去重。 +> +> 事件码缺失的连带后果:**事故报告(`CN_NUM_QUE_REC_RPT` 队列)无法生成**。 +> 参考的事故报告是按事件码索引动作时序的,没有事件码表就没有"保护动作报告"这一页。 + +--- + +### 9.8 保护元件复刻明细(参考 45 个模块 → 本产品 8 个) + +**模块级口径**:参考 `RelayUnit/` 45 个 `.c` 文件 = 45 个元件模块。本产品覆盖 **8 个模块** +(7 个判据模块 + 1 个记录模块),以 **9 个实例**落地(`OverCurrent` 一个模块出三段实例)。 + +| 类别 | 参考模块 | 本产品 | 缺 | +|---|---|---|---| +| 过流类 | 8 | 2(`OverCurrent`、`OverLoad`) | **6** | +| 电压类 | 8 | 3(`OverVol`、`OverVol_U0`、`LackVol`) | **5** | +| 频率类 | 2 | 2(`OverFr`、`LackFr`) | 0 | +| 重合闸 | 5 | 0 | **5** | +| 方向 / 功率 | 4 | 0 | **4** | +| 涌流 / 故障 | 5 | 0 | **5** | +| 自动控制 | 5 | 0 | **5** | +| 记录类 | 6 | 1(`SOERecord`) | **5** | +| 录波 / 采样 | 2 | 0 | **2** | +| **合计** | **45** | **8** | **37** | + +**缺的 37 个模块,逐个给出"缺它意味着什么"**: + +| 模块 | 类别 | 判据要点 | 缺它的后果 | 依赖 | +|---|---|---|---|---| +| `OverCurrent_I0` | 过流 | 零序电流三段 + 方向 | 接地故障无保护 | 定值载体(零序 18 项) | +| `OverCurrent_SpeedUp` | 过流 | 后加速:重合后短延时无选择跳闸 | 重合于故障时靠 Ⅰ 段延时切除,慢一拍 | 重合闸 | +| `OverCurrentI0_SpeedUp` | 过流 | 零序后加速 | 同上(接地) | 重合闸 | +| `FZDOverCur` | 过流 | 非遮断电流闭锁(负荷电流以下不允许跳闸) | 小电流跳闸可能拉弧不熄 | 定值 3 项 | +| `OverCurWarn` | 过流 | 过流告警(只告警不跳闸) | 过流只能跳不能告警 | 定值(告警投入) | +| `OverCurWarn_I0` | 过流 | 零序过流告警 | 同上 | 定值 | +| `LineHaveVol` | 电压 | 线路有压鉴别 | 无法区分"有压合闸"与"无压合闸" | 定值(MeaLimit 有压鉴别) | +| `HaveVolCls` | 电压 | 得电合闸 | FA 的"来电自动合闸"缺失 | 开入 + 出口 | +| `NoVolTrip` | 电压 | 失电分闸 | FA 的"失电自动分闸"缺失 | 开入 + 出口 | +| `PTBreak` | 电压 | PT 断线(电压消失但电流正常) | 断线时电压类保护可能误动/拒动 | 定值 2 项 | +| `CTBreak` | 电压 | CT 断线 | 同上(电流侧) | 定值 | +| `AutoReCls` | 重合闸 | 充电 → 跳闸 → 延时重合 → 整组复归 | 瞬时故障必须人工合闸 | 开入 + 出口 + 16 项定值 | +| `AutoReCls_JD` | 重合闸 | 接地故障重合 | 同上(接地) | 同上 | +| `OnceCch` | 重合闸 | 一次重合(表内无定值,条件编译) | — | 同上 | +| `TwiceCch` | 重合闸 | 二次重合(表内无定值,条件编译) | — | 同上 | +| `ConnectBrkCls` | 重合闸 | 联络开关合闸(转供) | 环网无法转供 | 开入 + 出口 + 17 项定值 | +| `DirCell` | 方向 / 功率 | 方向元件(功率方向判别) | 双电源/环网会反送电误动 | 三相电压 + 三相电流同刻(H1) | +| `PowDirJudge` | 方向 / 功率 | 功率方向(有功/无功象限) | 同上 | 同上 | +| `PowerSet` | 方向 / 功率 | 功率电压组切换(1~4 组) | 多组 PT/CT 变比无法切换 | 定值 2 项 | +| `YcOverLimit` | 方向 / 功率 | 遥测越限判据 | 越限记录无来源 | 定值(MeaLimit 10 项) | +| `InRushCur` | 涌流 / 故障 | 二次谐波制动(励磁涌流闭锁) | 变压器空投时过流误动 | 谐波算法(见 §9.12 遥测增强) | +| `FaultIsola` | 涌流 / 故障 | 故障隔离 | FA 无法定位故障区段 | 开入 + 出口 | +| `FaultRecov` | 涌流 / 故障 | 故障恢复供电 | 同上 | 同上 | +| `BusEarthAlm` | 涌流 / 故障 | 母线接地告警 | 母线接地无告警 | 零序电压 | +| `SgzAlarm` | 涌流 / 故障 | 事故总告警 | 事故总信号缺失 | 事件码表 | +| `AutoCtrlTrip` | 自动控制 | 自动控制跳闸(电池活化等) | 活化流程无法跳闸 | 出口 | +| `ManualTrip` | 自动控制 | 手动跳闸 | 就地手动分闸缺失 | 开入 + 出口 | +| `MusterRecov` | 自动控制 | 总复归(复归所有保持态) | 动作态只能靠重启清 | 无(**可先做**) | +| `ExvRec` | 自动控制 | 事故记录 | 事故报告缺失 | 事件码表 | +| `ExvRecGW` | 自动控制 | 事故记录(网关侧) | 同上 | 同上 | +| `CORecord` | 记录 | COS 变位记录 | 开入变位无记录 | 开入 | +| `FrzRecord` | 记录 | 冻结记录(整点冻结电量) | 电度无冻结 | 电度 | +| `YcMeaRecord` | 记录 | 遥测定时记录 | 无遥测历史 | 定值 2 项 | +| `YcMeaLimitRec` | 记录 | 遥测越限记录 | 无越限记录 | 越限判据 | +| `YcVolQuaRate` | 记录 | 电压合格率统计 | 无合格率 | 定值 3 项 | +| `WaveQdCell` | 录波 / 采样 | 录波启动判据 | 录波无触发源 | 录波子系统 | +| `RlyCommSam` | 录波 / 采样 | 保护通信采样(跨装置采样同步) | 多装置差动类保护不可能 | 通信 + 对时 | + +> **唯一"现在就能做"的是 `MusterRecov`(总复归)**:它不依赖任何硬件,只把各元件的 +> 保持态与出口标志清一遍。本产品已有 `prot_elm_request_reset` 单字请求标志(§3.5), +> 接上即可。其余 36 个模块都至少依赖定值载体、开入、出口、事件码四者之一。 + +--- + +### 9.9 故障录波子系统规格(本产品 0) + +录波是**唯一一个"完全独立的子系统"级缺口**:它不在保护链路上,但有独立的采样率、 +独立的存储格式、独立的文件传输通道。参考实现的硬指标如下,可直接作为复刻验收判据。 + +| 指标 | 参考值(`APP/EquipCfg/Const_Wave.h`) | 说明 | +|---|---|---| +| 录波采样率 | `CN_SAM_RATE × CN_WAVE_RATIO` = 20 × 4 = **80 点/周波**(50 Hz 下 4000 Hz) | 保护计算用 20 点/周波,录波要 4 倍过采样才能看清波形 | +| 录波段数 | `CN_WAVE_SECT_NUM` = **6 段** | 每段独立缓冲,支持连续多次录波 | +| 启动前缓冲 | `CN_WAVE_CYCLE_SUM_REFRE_BUF` = **5 周波**(100 ms) | 循环刷新,保证故障前有数据 | +| 动作后 | `CN_WAVE_CYCLE_SUM_ACTED` = **10 周波**(200 ms) | | +| 返回段 | `CN_WAVE_CYCLE_SUM_RET` = **2 周波** | 返回过程也要录 | +| 手动录波 | `CN_WAVE_CYCLE_SUM_HAND` = **6 周波** | | +| 单次最长 | `CN_WAVE_MAX_TIME` = **9000 ms** | 超长故障(如持续性接地)按此截断 | +| RAM 录波个数 | `CN_WAVE_RAM_NUM` = **16** | RAM 里最多同时存 16 份,满了转存文件 | +| COMTRADE 保存数 | 动作 **64** / 启动 **64** / 手动 **16** | 三类独立配额,满了循环覆盖 | +| 单份最大开关变位 | `CN_WAVE_MAX_RECSWI` = **64** | | +| 布尔量通道 | `CN_WAVE_NUM_BOOLFLG` = **320** | 全局布尔变量按位录波 | +| 模拟量通道 | 原始 + 计算 = `CN_WAVE_ALL_ANA_NUM` | 本产品对应 **65 通道**(`g_tMeasureModelTab`) | +| 录波类型 | 动作 `TYPE_ACT`=1 / 启动 `TYPE_START`=2 / 手动 `TYPE_HAND`=3 | | +| 文件格式 | COMTRADE(`.cfg` + `.dat`) | 主站侧通用格式,非私有 | +| 上送方式 | 104 文件传输(`F_FR_NA_1` 目录 / `F_SR_NA_1` 读文件) | 本产品 104 未实现文件传输 | + +**复刻所需的四件东西**(缺一不可): + +1. **4 倍过采样缓冲**:当前 `adcTask` 以 1000 Hz 出样本,录波要 4000 Hz。要么提高采样率 + 再抽取给保护(改变整条链节拍),要么在 TPAFE 侧单独开一条 4 倍速通路(改驱动)。 +2. **环形缓冲 + 触发点定位**:5 周波前缓冲 + 10 周波后缓冲,触发时刻要能反算出缓冲内偏移。 +3. **COMTRADE 编码器**:`.cfg`(通道定义、采样率、时标)+ `.dat`(二进制采样值)+ `.hdr`。 +4. **文件存储与配额管理**:SPI NAND 上按 64/64/16 配额循环覆盖,需与现有 FatFs + dhara 层对接。 + +> **排期判断**:录波不是"加个功能",是**新增一条 4 倍速采样通路 + 一套文件格式 + 一个配额管理器**。 +> 它排在定值/元件铺开之后,因为录波通道表(65 路)本身依赖元件输出。 + +--- + +### 9.10 记录体系复刻明细(参考 13 类 → 本产品 8 类) + +参考用 13 个定长队列分类存记录,容量按类分配(`GlobalDef/Const_Sys.h`): + +| 参考队列 | 容量 | 语义 | 本产品 | +|---|---|---|---| +| `REC_ACT` | 128 | 动作记录(保护动作) | ✅ 事故记录 `/log/accid.log` | +| `REC_ALM` | 128 | 告警记录 | ✅ 保护告警 `/log/alarm.log` | +| `REC_OVER` | 128 | 越限记录 | ❌ | +| `REC_START` | 128 | 启动记录(元件启动但未动作) | ✅ 保护启动 `/log/start.log` | +| `REC_LOCK` | 128 | 闭锁记录(保护被闭锁) | ❌ | +| `REC_SOE` | **256** | SOE(带时标的开入变位) | ✅ `soe_store`(SPSC 深度 8 → 落盘) | +| `REC_COS` | **256** | COS(无时标的状态变位) | ❌ | +| `REC_CHK` | 128 | 自检记录 | ✅ `/log/selftest.log` | +| `REC_RUN` | 128 | 运行记录(上电/重启) | ✅ `/log/run.log` | +| `REC_OPT` | 128 | 操作记录(复归/对时/定值保存) | ✅ `/log/oper.log` | +| `REC_YK` | 128 | 遥控记录 | ✅ `/log/yk.log` | +| `REC_SC` | 128 | 顺控记录 | ❌ | +| `REC_SCSTEPINFO` | 128 | 顺控执行明细 | ❌ | + +**缺的 5 类及其依赖**: + +| 缺的队列 | 依赖 | 能否先做 | +|---|---|---| +| 越限记录 | 越限判据(`MeaLimit` 10 项定值 + `YcOverLimit` 元件) | 可先做判据、后做记录 | +| 闭锁记录 | 闭锁源已具备(四源闭锁,§5.12),**只缺记录落点** | ✅ **最该先补**——现在闭锁发生了但无记录,现场排障靠猜 | +| COS 记录 | 开入(X4) | ❌ | +| 顺控记录 / 顺控执行明细 | 顺控功能(参考 `YKRly.c` 63 KB 的顺控执行引擎) | ❌ 整功能未立项 | + +> **闭锁记录是本表里性价比最高的一项**:闭锁源(未标定 / 采样故障 / 定值校验和 / 软压板退出) +> 已经全部实现,但闭锁的**发生与解除都没有留痕**。加一个 `REC_LOCK` 等价队列, +> 只需在 `protect_task` 的闭锁判定处加一条写入,不依赖任何硬件。 + +**格式差异**:参考是**二进制定长记录 + 独立队列 + 循环覆盖**;本产品是**文本行(64 B 定长)+ 文件**。 +文本行的优点是 FTP 直接可读、现场排障友好;缺点是容量利用率低、无结构化解码。 +复刻时建议**保留文本格式**(本产品优势),只补队列分类与配额。 + +--- + +### 9.11 规约栈复刻明细(参考 12 种 → 本产品 1 种) + +| 规约 | 参考源码 | 链路 | 用途 | 工作量特征 | +|---|---|---|---|---| +| **IEC 60870-5-104** | `Comm/Pub/Rly_IEC104.c` | TCP | 主站接入(本产品已实现) | ✅ 已完成 | +| IEC 60870-5-101 | `Rly_IEC101.c`、`Rly_IEC101_B.c` | 串口 | 主站接入(老站) | 与 104 共享 ASDU 层,**只换链路层**(平衡/非平衡链路、可变帧长) | +| IEC 60870-5-102 | `Rly_IEC102.c` | 串口 | 电度采集 | 独立 ASDU(电度专用类型),依赖电度 | +| IEC 60870-5-103 | `RLY_IEC103.c`、`RLY_IEC103-tcp.c`、`Rly_IEC103T.c` | 串口 / TCP | 保护装置信息接口 | 三种变体(串口 / TCP / T 型),ASDU 与 101/104 不同族 | +| ModBus | `Rly_ModBus.c` | 串口 / TCP | 通用工业设备 | 简单,**对下采集首选** | +| CDT | `Rly_Cdt.c` | 串口 | 循环式远动(老国标) | 帧结构简单,无确认机制 | +| `Whm_GB` | `Whm_GB.c` | 串口 | 国标电度 | 依赖电度 | +| IEC 61850 | `struct61850.h`、`GlobalUnit/SttnLvlGoose.c` | 以太网多播 | MMS / GOOSE / SV | **最大工作量**:需 MMS 栈 + ASN.1 + 多播组管理 | +| CAN | `Rly_Can.h` | CAN 总线 | 内部总线 | 依赖 CAN 硬件 | +| 子站 IEC 101 | `Comm/Mon/Rtu_IEC101*.c`(含 ABB / 西门子 / 无优先级变体) | 串口 | 对下接 FTU / 开关 | **对下主站侧**,与对上从站侧是不同角色 | +| 子站 IEC 104 | `Rtu_IEC104.c`、`Rtu_Dbg104.c`、`Rtu_RIS104.c` | TCP | 对下 | 含调试与 RIS 变体 | +| BALA101 / ModBus | `Rtu_BALA101*.c`、`Rtu_ModBus.c` | 串口 | 对下 | 与 RS-485 簇同批 | +| 加密 | `Comm/Ecc/`(SM2 / SM3 / ECDSA) | — | 安全加固 | 国密算法库,纯软件可移植 | + +**排期分层**: + +| 层 | 规约 | 理由 | +|---|---|---| +| 先做 | ModBus(对上 + 对下)、IEC 101 | 与 104 共享 ASDU 或结构简单;对下采集是配网终端必备 | +| 次做 | IEC 103、CDT、BALA101 | 老设备兼容,结构清晰 | +| 后做 | IEC 102、`Whm_GB` | 依赖电度(H1) | +| 末做 | IEC 61850 | 需 MMS/ASN.1/多播,单核 M4 资源需专项评估 | +| 并行 | SM2 / SM3 / ECDSA | 纯软件,无硬件依赖,可随时插入 | + +> **一个容易漏的点**:参考同时有**对上(`Comm/Pub`,本机作从站)**与**对下(`Comm/Mon`,本机作主站)** +> 两套规约。本产品只有对上 104。做"配网终端"时对下那套(101/104/ModBus 主站侧) +> 是**必须**的——否则接不了一次开关。 + +--- + +### 9.12 复刻完成判据(逐缺口可验证) + +每一条缺口给出"怎么算做完了",避免"实现了但没验收"。 + +| 缺口 | 完成判据 | +|---|---| +| 定值铺开 | `PS_ID_COUNT = 249`(或按单元分批:每批新增项在 104 上可读写、跨复位保持、校验和正确);`check` 脚本比对参考表逐项一致 | +| 104 定值映射 | 107 个地址(`0x8820~0x8891` 含 8 空洞)全部可读可写;空洞地址返回"未知信息体地址" | +| 元件铺开 | 45 个模块对应 45 个实例;每个实例有:定值项齐全、启动/动作/返回三态可观测、事件码正确、单测覆盖判据边界 | +| 遥测铺开 | 31 点全部非 IV(除物理不可达点明确标 IV);线电压与相量满足 `Uab = Ua − Ub` 误差 ≤ 0.5 % | +| 开入开出 | 27 路硬件开入可读、31 路开出可驱动;开入防抖可整定;双点遥信四态正确(00/01/10/11) | +| 录波 | 4000 Hz 采样;三类录波各生成一份 COMTRADE 且被第三方工具打开;配额 64/64/16 循环覆盖正确 | +| 记录体系 | 13 类队列各有落点;每类容量达标;断电不丢已确认记录 | +| 多规约 | 每种规约与对应主站/子站工具完成一次完整交互(连接 / 总召 / 变位 / 遥控 / 断链重连) | +| 国密 | SM2 签名验签、SM3 摘要与标准测试向量一致 | +| 软压板 | 9 面全部可投退且行为可观测(投退后对应功能确实停走/恢复) | +| 出口与开入 | 保护动作 → 出口继电器动作 → 开入回读确认,全链路 ≤ 120 ms | +| 标定解卡 | 8 通道两点标定后 `ADC_CAL_F_VALID` 全置位;注入标准源,保护动作值与定值误差 ≤ 3 % | + --- ## 10. 验收判据 @@ -1551,3 +2089,4 @@ pre-commit run --all-files | 2026-10-10 | FR-CFG-4 旧档迁移**取消** | 删除旧固件 `/cfg/netcfg.bin`(NCFG 二进制)的首启自动迁移:旧档若存在则被忽略(不读、不删、不迁移),配置回落工厂默认。理由:该一次性路径把整条配置写链挂进启动期调用图,defaultTask 静态最坏栈链 +600 B,而本仓库不存在携带旧档的设备;`net_cfg_legacy.c/h` 与 `cfg_store_legacy_path()` 一并移除。§7.1「掉电不丢配置」同步 | | 2026-10-27 | **v1.1 全面刷新(以参考产品 CLS100 为横向基准)** | ① 新增 §2.5「与参考产品 CLS100 的能力对照」(12 个能力域逐域给出参考实现 / 本产品现状 / 结论),并据此重写 §2.1 现状口径与 §2.4 产品范围(分"已验收 / 已实现但受制约 / 非本期"三档);② 新增 §4.6「V0.1 硬件能力边界」(H1 双转换器无共同采样触发 / H2 无中点偏置 / H3 无出口开入 / H4 无本地屏 / H5 无 SDIO)作为范围裁剪的硬依据;③ 任务模型由 6 任务更正为 **9 任务**(补 `adcTask` / `iec104Task` / `protectTask`,栈配置改为 words/B 双列),事件位补至 bit8,启动时序补配置段注册与 `adc1_disable` 铁律,线程间通信补双区快照 / SPSC 环 / 脏位;④ **功能需求新增五节**:§5.9 ADC 采集与标定(FR-ADC,含标定折算与前端物理口径)、§5.11 遥测与相量(FR-MEAS)、§5.12 保护功能(FR-PROT,9 元件 + 四源闭锁)、§5.13 定值与运行参数(FR-SET)、§5.14 SOE 与动作记录(FR-SOE)、§5.15 IEC 104 上行(FR-IEC104,含点表推荐响应时间);⑤ 新增 §6.8 104 点表摘要,§6.7 对外 API 补 10 个模块;⑥ §7.2 补采样/相量/遥测/保护/上送七项实时指标,§7.3 内存与栈预算全部换为 2026-10-24 受管快照与 2026-10-22 栈快照,§7.4 门禁改为按族描述,§7.6 补 104 与配置面安全边界;⑦ §8 菜单绑定现状(22/33/42)与内容页分组重写;⑧ §9 改为「缺口总表(G1~G10)+ 推进顺序 + 未接线开关」,删除已闭环的 ADC/104 缺口;⑨ §10 验收补栈/体积门禁、采集与 104 锚点、六条现场项与五项台架闭环用例。**本次只改本文件** | | 2026-10-27 | **v1.2 改为 1:1 复刻口径(以参考工程源码为唯一清单)** | ① **范围口径反转**:产品范围由「按硬件裁剪」改为「参考源码能力全集」,差异只允许来自 5 项物理不可移植项(X1 双核分工 / X2 VxWorks / X3 本地屏 / X4 一次设备接口 / X5 计量通道,§2.4.1);② §2.5 由「12 域能力对照 + 取舍依据」重写为 **「1:1 复刻基线」**,判定依据从参考项目的分析文档改为 **参考工程源码的常量表与模块文件**(§2.5.1 三要素:点表即契约 / 地址即接口 / 模块即元件);③ 新增 **§2.5.2 19 项能力清单**(源码实测):定值 **249 项 / 23 单元**(`g_tSetModelTab`)、104 定值映射 **107 项 `0x8820~0x8891`**(`g_tCommSetParaTab`)、遥测 **31**、遥测模型 35、电度 **8**、开入 **138**、开出 **31**、动作事件 **33**、录波通道 **65**、软压板 **9**、保护元件 **45 模块**、记录队列 **13 类**、自检 3 类型、录波 3 类型 / 6 段、规约 **12 种**、加密 SM2/SM3/ECDSA;④ 新增 **§2.5.3 104 地址空间 8 段表**并 **更正段基址笔误**——参考 `Rly_IEC104.h` 为 1 起编,遥测 `0x4001`、遥控 `0x6001`(v1.1 及更早写 `4000H+` / `6000H+`),§5.15 与 §6.8 同步更正;⑤ 新增 **§2.5.4 定值 23 单元分布表**(WatchDog 63 / SYS3 45 / VolTimeRecv 17 / AutoReCls 16 …,并说明枚举 28 个中 4 个表内无项的原因)与 **§2.5.5 45 元件九类归集表**(含 `PRS_OverCurrent.c` 判据结构对照);⑥ 新增 **§2.5.6 规约全集 13 行表**(对上 9 种 / 对下 3 类 / 加密)与 **§2.5.7 差异归因表**,结论改为「差距全部是进度而非范围」;⑦ **§9 重写为「复刻进度与路线图」**:删除全部「不做」表述,缺口分 **阻塞型**(标定闭锁 / 出口与开入 / 三相与同期 / 电度计量 / 对下采集 / 第三方送检)与 **规模型**(定值 40→249、映射 40→107、元件 9→45、录波子系统、规约 1→12、国密等)两表,条目一律用**语义短语**命名以免与其它文档的 `S`/`A`/`P` 编号族撞名(编号规范 P-8),推进顺序补「点表铺开必须晚于标定」铁律;⑧ §2.1 产品定位补 1:1 复刻目标与三项差距量化(定值 40 vs 249 / 遥测 9 vs 31 / 开入开出 0 vs 138·31);⑨ §6.8 点表摘要逐段补「与参考的差额」说明(遥测缺第二回线与线电压、遥信缺 138 点开入、定值缺整单元)。**本次只改本文件** | +| 2026-10-28 | **v1.3 缺口逐项细化(新增 §9.4~§9.12)** | ① **定值**:给出 40 项去向对账(覆盖参考 35 + 本地扩展 5),差额由「+209」更正为 **+214 项**;新增 23 单元逐单元差额表、已覆盖 35 项逐项对照(过流三段每段缺方向 / 低压 / 告警 / 低压定值 4 项;零序过流三段 18 项全缺,注意 `PS_3U0_*` 是零序**过压**不是过流;三级负荷只做一级;频率缺「跳闸投退」;电压缺 4 项跳闸 / 告警投退;PT·CT 缺 6 项)、完全未覆盖 163 项逐项清单(`SYS3` 45 / `VolTimeRecv` 17 / `AutoReCls` 16 / `SYN` 13 / `WAVESTART` 12 / `MeaLimit` 10 / `OverCurSpeed` 8 / `OverCurI0` 13 / 小单元 29);② **遥测**:31 点逐点对照,缺 22 点按依赖分三批(线电压与功率 13 / 第二回线 7 / 直流 2),指出「三相电压全落 TPAFE」可一次解锁 6 个线电压点;③ **开入开出**:138 = 软遥信 104 + 硬件 27 + 双点 6 + 多态 1,澄清「104 点 ≠ 104 个端子」;31 开出 = 出口 11 + 信号 20;④ **动作事件**:33 条(421~453)逐条对照,覆盖 9 条;记录参考源码 428/429 **同名**需按事件码区分;⑤ **保护元件**:口径改为模块级 45 → 8,37 个缺失模块逐个给出「缺它的后果 + 依赖」,差额由「+35」更正为 **+37**,指出 `MusterRecov` 总复归是唯一无硬件依赖、可立即开工的元件;⑥ **录波**:14 项硬指标(80 点/周波 = 4000 Hz、6 段、前 5 后 10 返回 2 手动 6 周波、9000 ms、RAM 16、COMTRADE 64/64/16、65 通道)与复刻所需四件东西;⑦ **记录体系**:13 类队列容量表,覆盖 8 类,缺越限 / 闭锁 / COS / 顺控 / 顺控执行;指出「闭锁记录」性价比最高(四源闭锁已全实现却无留痕);⑧ **规约栈**:12 种逐种链路 / 用途 / 工作量特征 + 四层排期,指出对上与对下是两套角色;⑨ 新增 **§9.12 复刻完成判据**(12 条可验证判据)。**本次只改本文件** |