Files
STM32F4-Base/docs/产品需求/参考产品复刻明细.md
T
wandering1 4ceb5b41e6 docs(任务规划): 故障录波卡片登记簿销项——判据并入设计说明后删除
用户指令(2026-10-30):确认录波任务完成度,把除实际操作之外的所有
步骤做完,然后删除规划文件,避免已完成的工作被误读为未做。

审计结论:代码面确已全部收口——wave_read.py --selftest 92/92、
三套主机单测 113/170/110 复跑全 rc=0、bench 自抓与 PC 读段脚本在仓、
数据可信/复刻明细/短板评测/UI 两处回写均已做过。**唯一未跑的是
板级台架那一轮(实际操作)**,判据不得丢,故先迁后删:

- 设计说明 §9 承接落盘道失败留痕名全清单(13+1 条,打印点现值
  default_task.c:816/:831 实测核对)
- 设计说明 §10 承接原卡 2/卡 3 的板级段(触发来路一行、回放页
  一行)与本波执行顺序图(mermaid,原规划 §3 逐字迁)
- §4/§11 头部定位、§11 尾注、§14 关系行改属主口径
- 全库 32 处引用改挂设计说明 §10/§9(18 文件):任务规划 README
  独立行(顺带订正单测数 100→113 为实测)、登记簿、数据可信 ×2、
  复刻明细、产品需求 ×2、ADC 注入 ×3、短板评测 ×2、页面补齐规划、
  App/algo README、配图生成器注释、录波三套单测注释 ×6
- git rm docs 该规划文件;人类索引任务规划 6→5 个文件(沿革注照
  屏板链路先例走裸句,不留反引号死引用)

验证:残留两形态(任务规划/故障录波、裸文件名)全树扫描 0;
mermaid 预检新发 0;doc-links 11 个被改文件逐文件 PASS;生成器
注释改动重跑产物逐字节不变(svg 60a0dd39e4);三套单测与
wave_read selftest 复跑全绿;18 文件 BOM/CR/U+FFFD 全零。

本笔不含固件编译单元(test/host 仅注释行与文档),构建留待合并
轮统一跑;板级轮启动判据与顺序见设计说明 §10。
2026-10-30 18:20:37 +08:00

805 lines
58 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.
# STM32F4-Base 参考产品复刻明细(CLS100)
> **文档定位**:1:1 复刻口径下**「参考有什么 / 我们有什么 / 差额在哪 / 怎么算做完」**的
> 逐项明细权威——自 `docs/产品需求/产品需求设计文档.md` v1.9 的「复刻基线」章与
> 原「复刻缺口明细」各节(v1.9 编号 2.5 与 9.4~9.13)拆出:本文 §1 = 复刻基线,
> 本文 §2~§11 = 各专题逐项明细。
> **范围口径、缺口清单与排期(需求档 §3 / 需求档 §9.1~需求档 §9.3)仍在需求档**;本档只放明细。
> 本档「**需求档**」= [`产品需求设计文档.md`](产品需求设计文档.md);「软件架构档」=
> [`../架构设计/软件架构与运行时规格.md`](../架构设计/软件架构与运行时规格.md);「硬件规格档」=
> [`../架构设计/硬件规格与能力边界.md`](../架构设计/硬件规格与能力边界.md)。
> 判定纪律:所有参考能力数字一律从参考工程源码常量表实测
> (`Scatter_P_HV03.01_SV01.01`),不做估计。
## 1. 复刻基线(参考源码能力清单)
**判定口径**:本节所有"参考能力"的数字,**一律从参考工程源
(实测已发现"89 个元件模块"实为 45 个、定值"约 260 项"实为 249 项两处偏差)。
### 1.1 复刻基线三要素
1. **点表即契约**:参考源码用常量表(`g_t*Tab[]`)定义点表、定值、事件、压板。
这些表就是"要复刻什么"的**唯一清单**——表有几行,目标就有几个点。
2. **地址即接口**:104 的 IOA 由 `Rly_IEC104.h` 的基址宏划分段,**段基址必须逐字对齐**(需求档 §1.3)。
3. **模块即元件**:`RelayUnit/` 下一个 `.c` 对应一个保护元件,元件数 = 文件数(本文 §1.5)。
### 1.2 能力清单与复刻进度(源码实测)
| # | 能力 | 参考源码出处 | 参考数量 | 本产品现状 | 状态 |
|---|---|---|---|---|---|
| 1 | 定值项 | `APP/EquipCfg/Const_Set.c` `g_tSetModelTab` | **249 项** | 40 项(`PS_ID_COUNT`) | 🔶 |
| 2 | 定值单元 | `APP/EquipCfg/Const_Set.h` `EN_SET_CELL_*` | **23 个有项**(枚举 28) | 5 组(短路/接地/过负荷/电压/频率) | 🔶 |
| 3 | 104 定值映射 | `Comm/Pub/Const_CommSetPara.c` `g_tCommSetParaTab` | **107 项**,`0x8820~0x8891` | 40 项(`0x8820~0x8890` 局部) | 🔶 |
| 4 | 遥测 YC | `APP/EquipCfg/Const_Ana.c` `g_tYcIndexTab` | **31 点** | 9 点(`0x4011~0x4018` + `0x401D`) | 🔶 |
| 5 | 遥测模型 | 同上 `g_tAnaModelTab` | 35 行 | 0 | ⬜ |
| 6 | 电度 YM | 同上 `g_tYmIndexTab` | **8 种** | 0 | ⬜ |
| 7 | 开入 KI | `APP/EquipCfg/Const_IO.c` `g_tInputModelTab` | **138 点** | 0(无硬件,X3) | ⬜ |
| 8 | 开出 KO | 同上 `g_tOutputModelTab` | **31 点** | 0(无硬件,X3) | ⬜ |
| 9 | 动作事件 | `APP/EquipCfg/Const_Rec.c` `g_tActRecTab` | **33 条**(421~453) | 7 类记录(`App/log/sys_log.h`) | 🔶 |
| 10 | 录波测量通道 | 同上 `g_tMeasureModelTab` | **65 通道** | 8(本波口径,2026-10-29 代码面已交付;65 通道仍为 0,参考机口径未改)| 🔶 |
| 11 | 软压板 | `APP/EquipCfg/Const_Soft.c` `g_tSoftTab` | **9 面**(表容量 32) | 1 面(`PS_GLOBAL_EN`) | 🔶 |
| 12 | 保护元件 | `RelayUnit/*.c` | **45 个模块** | 9 个实例 | 🔶 |
| 13 | 记录队列 | `RecUnit/RecFile.c` + `GlobalDef/Const_Sys.h` | **13 类**(128/256 条) | 8 通道(7 文本 + SOE) | 🔶 |
| 14 | 自检类型 | `GlobalUnit/SelfChk.c` | **3 类型 + 2 闭锁** | 3 类 | ✅ |
| 15 | 故障录波 | `APP/EquipCfg/Const_Wave.h` | **3 类型 / 6 段 / RAM 16 个** | 0 | ⬜ |
| 16 | 采样节拍 | `APP/EquipCfg/Const_VisEquip.h` | **20 点/周波**(50 Hz) | 20 点/周波(1000 Hz) | ✅ |
| 17 | 上行规约 | `Comm/Pub/`、`Comm/Mon/` | **12 种** | 1 种(104) | 🔶 |
| 18 | 加密算法 | `Comm/Ecc/` | SM2 / SM3 / ECDSA | 0 | ⬜ |
| 19 | 双核分工 | `CLS100_Arm/`、`CLS100_Dsp/` | ARM + DSP | 单核(X1) | — |
| 20 | 远端屏与按键链路 | `HMI/RemoeDisp/RemoDispBus.c`、`HMI/Dsp/Key.c`、`HMI/Dsp/Disp_Pub.c`;屏板侧 `DTU-LCD` | **串口屏板通道**(显存 3200 B + **状态灯 4 B 位掩码**下行 / 键号上行)+ **TCP 7003 镜像** | 7003 四命令已通;**串口屏板通道整条缺失**(协议已按屏板源码定版,见需求档 §5.16.2);INIT 应答 8 B(参考 29 B,其中 13 B 颜色信息**不对齐**)、无断点续传、无链路监视、缺 F1/F2 | 🔶 |
> **读法**:🔶 / ⬜ 行**全部是待办**,逐条对应 需求档 §9.1;`—` 只出现在 X1~X4 不可移植项上。
> 本表是范围判定的唯一出处,需求档 §9 不再重复解释"为什么缺"。
### 1.3 104 地址空间(段基址逐字对齐)
| 段 | 基址 | 范围 | 容量 | 本产品使用 |
|---|---|---|---|---|
| 遥信 YX | `0x0001` | `0x0001~0x1000` | 4096 | 定义 1~31,有效 6(YX15~18/23/31) |
| 保护 BH | `0x1001` | `0x1001~0x4000` | 12288 | 0 |
| 遥测 YC | `0x4001` | `0x4001~0x5000` | 4096 | `0x4011~0x4018`、`0x401D` |
| 参数 PM | `0x5001` | `0x5001~0x6000` | 4096 | 0 |
| 遥控 YK | `0x6001` | `0x6001~0x6200` | 512 | `0x600A`(信号复归)、`0x600B`(全局压板) |
| 设定 YS | `0x6201` | `0x6201~0x6400` | 512 | 0 |
| 电能 YM | `0x6401` | `0x6401~0x6600` | 512 | 0 |
| 步位置 STEP | `0x6601` | `0x6601~0x6700` | 256 | 0 |
> ⚠ **段基址是 `0x4001` / `0x6001`,不是 `0x4000` / `0x6000`**。参考源码
> `Comm/Pub/Rly_IEC104.h` 的 `CONST_104_BASEADDR_YC` / `_YK` 明确 1 起编
> (注释即写 `4001-5000H`、`6001-6200H`)。本仓 v1.1 及更早文档按 `4000H+` / `6000H+` 描述
> 属笔误,以本表为准;需求档 §5.15、需求档 §6.8 已同步更正。
### 1.4 定值单元(23 个有项单元,合计 249 项)
| 单元 | 语义 | 项数 | 本产品 |
|---|---|---|---|
| `EN_SET_CELL_WatchDog` | 看门狗功能 | 63 | ⬜ |
| `EN_SET_CELL_SYS3` | 系统参数 | 45 | 🔶 |
| `EN_SET_CELL_VolTimeRecv` | 电压时间型自愈 | 17 | ⬜ |
| `EN_SET_CELL_AutoReCls` | 重合闸 | 16 | ⬜ |
| `EN_SET_CELL_SYN` | 同期元件(FTU 型) | 13 | ⬜ |
| `EN_SET_CELL_OverCurI0` | 接地告警 | 13 | 🔶 |
| `EN_SET_CELL_VolPro` | 电压保护 | 13 | 🔶 |
| `EN_SET_CELL_WAVESTART` | 录波启动 | 12 | ⬜ |
| `EN_SET_CELL_MeaLimit` | 遥测越限 | 10 | ⬜ |
| `EN_SET_CELL_OverCurSpeed` | 过流加速 | 8 | ⬜ |
| `EN_SET_CELL_SYS1` | PT 参数 | 6 | 🔶 |
| `EN_SET_CELL_SYS2` | CT 参数 | 4 | 🔶 |
| `EN_SET_CELL_Auto_FG` | 自动分闸 | 4 | ⬜ |
| `EN_SET_CELL_Auto_HH` | 自动合闸 | 4 | ⬜ |
| `EN_SET_CELL_InRush` | 励磁涌流闭锁 | 3 | ⬜ |
| `EN_SET_CELL_OverCur` | 短路告警 | 3 | 🔶 |
| `EN_SET_CELL_VolQuaRate` | 电压合格率 | 3 | ⬜ |
| `EN_SET_CELL_FZDDL` | 非遮断电流闭锁 | 3 | ⬜ |
| `EN_SET_CELL_BHKO` | 保护出口展宽 | 2 | ⬜ |
| `EN_SET_CELL_MeaRecord` | 遥测记录 | 2 | ⬜ |
| `EN_SET_CELL_PowerSet` | 功率电压设置 | 2 | ⬜ |
| `EN_SET_CELL_PTBreak` | PT 断线告警 | 2 | ⬜ |
| `EN_SET_CELL_AutoCtrl` | 自动控制(活化/复归) | 1 | ⬜ |
> 枚举中另有 4 个单元在参考源码表内**无项**(`EN_SET_CELL_YB_TY` 功能软压板、`OnceCch`
> 一次重合闸、`TwiceCch` 二次重合闸、`OverLoad` 过负荷保护)——已被条件编译或注释掉,
> 因此 249 项分布在 **23** 个单元而非枚举的 28 个。另有 3 个单元(`SYN` / `OverCurSpeed` /
> `VolTimeRecv`)受 `CN_DEV_TYPE_FTU` 宏控制,属 FTU 型专属。
>
> **104 定值地址编排**:107 项占 `0x8820~0x8891` 连续段中的 107 个地址,**8 个空洞**
> (`0x8822`、`0x8823`、`0x883E`、`0x883F`、`0x8842`、`0x8851`、`0x8852`、`0x8853`)
> 对应参考源码中被注释掉的 4 条映射(`ULTV_PARA_2`、`ULTV_Phase` 等)。
### 1.5 保护元件(45 个模块 → 覆盖 8 个模块 / 9 个实例)
按功能归类(`RelayUnit/` 文件名去 `PRS_` 前缀):
| 类别 | 元件模块 | 个数 | 本产品 |
|---|---|---|---|
| 过流类 | `OverCurrent`、`OverCurrent_I0`、`OverCurrent_SpeedUp`、`OverCurrentI0_SpeedUp`、`FZDOverCur`、`OverCurWarn`、`OverCurWarn_I0`、`OverLoad` | 8 | 🔶 过流 Ⅰ/Ⅱ/Ⅲ + 过负荷(4) |
| 电压类 | `OverVol`、`OverVol_U0`、`LackVol`、`LineHaveVol`、`HaveVolCls`、`NoVolTrip`、`PTBreak`、`CTBreak` | 8 | 🔶 过压 / 欠压 / 零序过压(3) |
| 频率类 | `OverFr`、`LackFr` | 2 | ✅ 过频 / 低频(2) |
| 重合闸 | `AutoReCls`、`AutoReCls_JD`、`OnceCch`、`TwiceCch`、`ConnectBrkCls` | 5 | ⬜ |
| 方向 / 功率 | `DirCell`、`PowDirJudge`、`PowerSet`、`YcOverLimit` | 4 | ⬜ |
| 涌流 / 故障 | `InRushCur`、`FaultIsola`、`FaultRecov`、`BusEarthAlm`、`SgzAlarm` | 5 | ⬜ |
| 自动控制 | `AutoCtrlTrip`、`ManualTrip`、`MusterRecov`、`ExvRec`、`ExvRecGW` | 5 | ⬜ |
| 记录类 | `SOERecord`、`CORecord`、`FrzRecord`、`YcMeaRecord`、`YcMeaLimitRec`、`YcVolQuaRate` | 6 | 🔶 SOE 落盘(1,非判据元件) |
| 录波 / 采样 | `WaveQdCell`、`RlyCommSam` | 2 | ⬜ |
**判据结构对齐**(以 `PRS_OverCurrent.c` 为样板,三段过流共用一个核):
```
M_GRly_OverRelay(&bRelay, fAmp, fSetStart, fSetRet) 越限 + 返回系数滞回
∧ bFyOpen ∧ bDirOpenX ∧ bNOVOpen 复压 / 方向 / 低压闭锁
GRly_TimeRelay(&bRelay, &tTimer, dwSetDelay, CN_T10MS) 定时限(10 ms 基准)
tTimer_KeepKI 电流保持(返回后仍延时保持)
tTimer_NoUI 无压无流判据(CN_T20MS / CN_T200MS)
```
> 本产品 `prot_elm.c` 的"越限 + 返回系数滞回 + 定时限"三元核与上述结构**同构**;
> 差异在于本产品用**每元件独立实例表**替代参考的全局定时器数组——这是单核移植的必要调整,
> 不改变判据语义。逐元件复刻计划见
> [`docs/算法/继电保护功能复现规划.md`](../算法/继电保护功能复现规划.md)。
### 1.6 上行规约全集(12 种 → 已复刻 1 种;加密算法另计)
| 方向 | 规约 | 参考源码 | 本产品 |
|---|---|---|---|
| 主站侧(对上) | IEC 60870-5-101 | `Comm/Pub/Rly_IEC101.c`、`Rly_IEC101_B.c` | ⬜ |
| | IEC 60870-5-102(电度) | `Comm/Pub/Rly_IEC102.c` | ⬜ |
| | IEC 60870-5-103 | `Comm/Pub/RLY_IEC103.c`、`RLY_IEC103-tcp.c`、`Rly_IEC103T.c` | ⬜ |
| | **IEC 60870-5-104** | `Comm/Pub/Rly_IEC104.c` | ✅ |
| | ModBus | `Comm/Pub/Rly_ModBus.c` | ⬜ |
| | CDT | `Comm/Pub/Rly_Cdt.c` | ⬜ |
| | 国标电度 `Whm_GB` | `Comm/Pub/Whm_GB.c` | ⬜ |
| | IEC 61850(MMS / GOOSE / SV) | `Comm/Pub/struct61850.h`、`GlobalUnit/SttnLvlGoose.c` | ⬜ |
| | CAN | `Comm/Pub/Rly_Can.h` | ⬜ |
| 子站侧(对下) | IEC 101(含 ABB / 西门子 / 无优先级变体) | `Comm/Mon/Rtu_IEC101*.c` | ⬜ |
| | IEC 104(含调试 / RIS 变体) | `Comm/Mon/Rtu_IEC104.c`、`Rtu_Dbg104.c`、`Rtu_RIS104.c` | ⬜ |
| | BALA101 / ModBus | `Comm/Mon/Rtu_BALA101*.c`、`Rtu_ModBus.c` | ⬜ |
| 加密 | SM2 / SM3 / ECDSA | `Comm/Ecc/` | ⬜ |
> **排期判断**:104 已对齐;**对下 ModBus RTU 与 101 是"配网终端"的必要项**(接一次开关 / FTU),
> 与 RS-485 簇同批解冻;61850 依赖以太网多播与 MMS 栈,单核 M4 资源上需单独评估,属最末批。
### 1.7 差异归因与结论
| 归因 | 涉及条目 | 解除方式 |
|---|---|---|
| **外部资源**(标准源、端子变比) | 定值标定、保护判据解卡 | 两点标定(需求档 §9.2 第 4 步) |
| **硬件缺失**(X3 / X4) | 开入 138、开出 31、电度 8、同期、三相通道 | V0.2 硬件 |
| **立项未排** | 多规约、SNTP、定值铺开 | 按需求档 §9.2 顺序。**录波最小闭环已交付代码面**(2026-10-29,设计与板级判据 `docs/子系统设计/故障录波设计说明.md` §10;原卡片登记簿 2026-10-30 销项并入后删除;1 kHz 起步与本文 80 点/周波口径的偏离在该设计文档 §2 显式登记);**4 kHz 全速、多段、COMTRADE、104 文件传输仍未排**,属二期范围 |
| **算力 / 形态**(X1 / X2) | 双核分工、VxWorks | 不解除。**屏板链路已从范围外项移入范围内**(规格见需求档 §5.16,主机侧实现 `docs/子系统设计/屏板链路设计说明.md`;串口通道已实现,网络通道未做):主机侧链路与参考 1:1 同构,不属"替代方案" |
> **结论**:本产品与参考产品的差距**全部是"进度"而非"范围"**——没有一项是"参考有而我们不做"。
> 已对齐的是**软件骨架**(采样节拍、相量算法、定值模型、104 上行、SOE 落盘、自检闭锁);
> 未对齐的是**点表规模**(249 / 31 / 138 / 31 / 33 / 65 vs 40 / 9 / 0 / 0 / 7 / 0)
> 与**独立子系统**(录波、电度、多规约)。因此需求档 §9 统一表述为"复刻进度",不再出现"不做"。
---
## 2. 定值复刻明细(参考 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 项**。
### 2.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` 有误导性:它装的是**全部保护元件的动作定值**(过流 / 零序 / 负荷 / 频率),
> 不是看门狗参数。移植时不要按名字去找"看门狗定值"。
### 2.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) | — | ❌ 缺:决定用线电压还是相电压作判据源 |
### 2.3 完全未覆盖单元逐项清单(163 项)
214 项差额中,**51 项**落在 需求档 §2.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` 五个模块。
> 无开入(开关位置)与出口(分合闸)时**无法闭环**,属 X3 依赖项。
**重合闸 `AutoReCls`(16 项)**:重合闸投退、充电时间(0~100000 s)、重合闸次数(0~3)、
一次 / 二次 / 三次重合闸时间(0~60000 s)、重合闸闭锁时间(0~9900 s)、整组复归时间、
大电流闭锁投退、大电流闭锁定值、重合闸检同期、重合闸检无压、同期检无压定值(0~15000 V)、
同期检角差定值(1~30°)、过流禁止重合闸、零序禁止重合闸。
> 参考支持**三次重合**且每次时间独立可整定,充电时间与整组复归时间分离——这三项
> 是"重合闸能不能用"的关键(无充电时间 = 每次跳闸都立即重合,会连击)。
> 依赖出口(合闸)与开入(开关位置),属 X3 依赖项。
**同期 `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 只有一个转换器的
> 电压通道,属 X3 / H1 依赖项。
**录波启动 `WAVESTART`(12 项)**:电流启动投退 / 定值(0~10000 A)、低压启动投退 / 定值
(0~10000 V)、零压启动投退 / 定值(0~30000 V)、零流启动投退 / 定值(0~1000 A)、
零流突变投退 / 定值(0~1000 A)、录波启动延时、保护启动录波。
> 录波启动是**独立于保护判据的触发源**:即使保护不动作,只要越启动值也要录波。
> 本产品无录波子系统,这 12 项无处落地(见 需求档 §7)。
**遥测越限 `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)。
---
---
## 3. 遥测复刻明细(参考 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 依赖)。
---
---
## 4. 开入 / 开出复刻明细(138 + 31 → 本产品 0)
参考把"开入"分成四类,本产品**一个都没有**(无硬件,不可移植项 X3)。
**开入 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**,没有任何物理出口。这在"保护测控装置"的
> 定义里是硬缺口:保护判据做得再准,不跳闸就等于没保护。X3 解除前,`YX` 里的
> 动作类遥信必须**如实标 IV**,不能让主站误以为已跳闸。
---
---
## 5. 动作事件复刻明细(参考 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` 队列)无法生成**。
> 参考的事故报告是按事件码索引动作时序的,没有事件码表就没有"保护动作报告"这一页。
---
---
## 6. 保护元件复刻明细(参考 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.1.2「遥测增强」) |
| `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` 单字请求标志(软件架构档 §5),
> 接上即可。其余 36 个模块都至少依赖定值载体、开入、出口、事件码四者之一。
---
---
## 7. 故障录波子系统规格(本产品 0)
录波是**唯一一个"完全独立的子系统"级缺口**:它不在保护链路上,但有独立的采样率、
独立的存储格式、独立的文件传输通道。参考实现的硬指标如下,可直接作为复刻验收判据。
| 指标 | 参考值(`APP/EquipCfg/Const_Wave.h`) | 说明 |
|---|---|---|
| 录波采样率 | `CN_SAM_RATE × CN_WAVE_RATIO` = 20 × 4 = **80 点/周波**(50 Hz 下 4000 Hz) | 保护计算用 20 点/周波,录波要 4 倍过采样才能看清波形。**偏离登记**:本装置先按 1 kHz(20 点/周波)立项,理由与二期不返工的结构约束见 `docs/子系统设计/故障录波设计说明.md` §2 与 §2.1 |
| 录波段数 | `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 路)本身依赖元件输出。
---
---
## 8. 记录体系复刻明细(参考 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 记录 | 开入(X3) | ❌ |
| 顺控记录 / 顺控执行明细 | 顺控功能(参考 `YKRly.c` 63 KB 的顺控执行引擎) | ❌ 整功能未立项 |
> **闭锁记录是本表里性价比最高的一项**:闭锁源(未标定 / 采样故障 / 定值校验和 / 软压板退出)
> 已经全部实现,但闭锁的**发生与解除都没有留痕**。加一个 `REC_LOCK` 等价队列,
> 只需在 `protect_task` 的闭锁判定处加一条写入,不依赖任何硬件。
**格式差异**:参考是**二进制定长记录 + 独立队列 + 循环覆盖**;本产品是**文本行(64 B 定长)+ 文件**。
文本行的优点是 FTP 直接可读、现场排障友好;缺点是容量利用率低、无结构化解码。
复刻时建议**保留文本格式**(本产品优势),只补队列分类与配额。
---
---
## 9. 规约栈复刻明细(参考 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 主站侧)
> 是**必须**的——否则接不了一次开关。
---
---
## 10. 复刻完成判据(逐缺口可验证)
每一条缺口给出"怎么算做完了",避免"实现了但没验收"。
| 缺口 | 完成判据 |
|---|---|
| 定值铺开 | `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) |
| 录波 | **(二期口径;本波按 1 kHz / 8 路 / 单段 / 无 COMTRADE,对照表见 需求档 §9.1 第 10 行)**4000 Hz 采样;三类录波各生成一份 COMTRADE 且被第三方工具打开;配额 64/64/16 循环覆盖正确 |
| 记录体系 | 13 类队列各有落点;每类容量达标;断电不丢已确认记录 |
| 多规约 | 每种规约与对应主站/子站工具完成一次完整交互(连接 / 总召 / 变位 / 遥控 / 断链重连) |
| 国密 | SM2 签名验签、SM3 摘要与标准测试向量一致 |
| 软压板 | 9 面全部可投退且行为可观测(投退后对应功能确实停走/恢复) |
| 出口与开入 | 保护动作 → 出口继电器动作 → 开入回读确认,全链路 ≤ 120 ms |
| 标定解卡 | 8 通道两点标定后 `ADC_CAL_F_VALID` 全置位;注入标准源,保护动作值与定值误差 ≤ 3 % |
| 屏板链路 | **串口通道**:屏板 280 ms 召唤、主机 ≤200 ms 内**发完** **4208 B**(整帧无 2 个字符时间以上的间隙),连续 10 min **主机侧**零超时、零 CRC 错帧;显存 3200 B 与 `g_ui_fbuf` 逐字节一致;7 个物理键(`1/2/3/4/7/8/9`)动作正确;**状态灯位掩码逐位一致、LED 0 恒亮**;屏板 ≈5000 s 自复位不误判离线;LOGO 下发出局(不实现);**网络通道**:INIT 应答 **16 B** 逐字段一致且无颜色字段、`LCDMEM` 偏移 0 得 3204 B、重复召唤无应答、偏移 ≥3200 无应答、`KEEPLIVE` 无应答且 1 分钟不掉链、8 键(含 `F1\|ENT` 组合)动作正确(需求档 §5.16.10 十四条,第 15 条 LOGO 出局) |
---
---
## 11. 屏板链路复刻任务规划
> **口径**:条目一律用**语义短语**(编号规范 P-8),执行序即表序。
> 改动范围只含本产品固件与 `DTU-RemoteLCD` 客户端;**屏板固件不在本仓库**,
> 其行为以需求档 §5.16 为契约做黑盒验收。
>
> **两种部署形态,两条通道都要**:① **串口直连屏板**(参考的形态,第 10~15 条)——屏板直接挂在设备
> 串口上,无需任何网络设备;② **串口服务器透传 / 网络镜像**(第 2~9 条)——屏板或调试软件经以太网连 7003。
> 现场用串口服务器把屏板接到网上时,两种形态等价,但**固件侧不能只实现后者**:
> 只有 7003 时,设备离开网络就没有任何本地显示,与参考产品不等价。
>
> **方向相反,别写错**:网络通道是"**客户端召唤、设备应答**";串口通道是"**屏板召唤、设备应答**"。
> 两条通道共用同一份显存快照,但**帧格式、校验、时序完全不同**(网络用 `0xAA/0xBB` + XOR,
> 串口用裸二进制 + CRC-16/MODBUS),不能共用组帧代码。
>
> **实现事实另立**:主机侧的接线、串口配置、协议实现口径、验证状态与未闭环项在
> `docs/子系统设计/屏板链路设计说明.md`;本节只保留**需求视角**的缺口与顺序,不复制实现细节。
| 序 | 任务 | 改动点 | 判据 | 跨端 |
|---|---|---|---|---|
| 1 | **报文口径定版** | 本节 + 需求档 §5.16 + 需求档 §6.2 按参考源码成文 | 文档门禁全绿(已完成) | — |
| 2 | **INIT 应答补足 16 字节** | `ui_net_sink.c` 的 `remo_send_init()` 组帧由 8 B 扩到 **16 B**:补 8 B 键值表;**不加颜色位与 RGB**(单色屏不对齐多色协议,需求档 §5.16.5) | 16 B 逐字节比对通过,且报文内**无颜色字段** | **是** |
| 3 | **键值表补 F1 / F2** | `ui_net_sink.h` 键值宏补 `0x04` / `0x80`;`ui_net_sink_inject_key()` 映射;UI 键处理接受组合键 | 下发 `0x04` / `0x80` / `0x24` 界面响应正确 | 否 |
| 4 | **显存断点续传** | `CMD_LCDMEM` 分支去掉"仅偏移 0"限制:按偏移取 `g_ui_fbuf + off`,长度 `min(9800, 3200 − off)` | `off=1600` 得 `4+1600` B,内容与整帧尾部逐字节一致 | 否 |
| 5 | **召唤拒绝握手** | 新增"帧代次 + 已上送"等价状态:新图未就绪时重复召唤**不应答**;偏移 ≥3200 不应答 | 需求档 §5.16.10 第 2、3 条通过 | **是** |
| 6 | **链路监视** | 1 分钟通信中断计时(收到帧 / 发送成功即重置);超时置状态位并落一行日志 | 断链 60 s 有明确日志与状态;重连后自动恢复推流 | 否 |
| 7 | **KEEPLIVE 静默** | 去掉空帧回显,改为仅重置计时 | 需求档 §5.16.10 第 4 条通过 | **是** |
| 8 | **发送重试评估** | 对比参考"BUSY + 200 ms 放弃"与现有 `net_send` 阻塞模型,出结论并回填需求档 §5.16.9 第 7 行 | 结论有实测数据支撑(实现 / 明确不实现) | 否 |
| 9 | **客户端一致性回归** | `DTU-RemoteLCD` 按 **16 B** 解析;把需求档 §5.16.10 第 1~7 条做成自动化用例 | 七条判据全 PASS | **是** |
| 10 | **串口物理层落地** | 按需求档 §5.16.2 定版:**700000 8N1、`BRR = 0x0078`**(USART1,APB2 84 MHz)、**无 DE**(TTL 直连,不走收发器)、RX 缓冲 16 B + 空闲中断断帧、发送走 **DMA 一次性发完**(禁逐块阻塞;主机侧 TX 用 `DMA2_Stream7`,RX 走 IDLE 中断、不用 RX DMA) | 环回 + 示波器实测 700 kbaud 分频零误差;屏板能收到帧 A 并回帧 B | 否 |
| 11 | **帧 A 解析 / 帧 B 组帧** | 新增屏板通道模块:识别 6 B 请求(`01 03 type key CRC_L CRC_H`)、校验 CRC-16/MODBUS(**低字节在前**,口径见需求档 §5.16.2);组 **4208 B** 帧 B(3200 显存 + 4 B LED + 4 B info 保留 + 998 B 填充 + 2 B CRC) | 屏板出图与 `g_ui_fbuf` 逐字节一致;`info[0..3]` 与下发的 LED 掩码一致 | 否 |
| 12 | **状态灯位映射表** | 定义"**业务状态 → 屏板 LED 位**"映射(参考源码**无此表**,须自定);`info[0..3]` 按 **32 位小端**填,bit0 恒 0、bit20~31 恒 0 | 需求档 §5.16.10 第 11 条通过 | 否 |
| 13 | **串口上行按键** | 帧 A 的 `key` 字节按**屏板 `KEY_TYPE`** 解释——实际可达值只有 **`1/2/3/4/7/8/9`**(`5`/`6`/`10` 无物理入口);映射为逻辑键值后与 7003 注入**同一入口**合并 | 需求档 §5.16.10 第 10 条通过;`9`/`10` 语义按需求档 §5.16.3 ② 处置 | 否 |
| 14 | **双通道并发 + 自复位容忍** | 两出口各自独立发送上下文;串口 4208 B 阻塞不拖 7003;链路监视按"**连续 ≥10 s 无应答**"判离线,**忽略屏板 ≈5000 s 周期自复位** | 需求档 §5.16.10 第 12、13、14 条通过 | 否 |
| 15 | **LOGO 下发流程(出局,不实现)** | 主机不提供 LOGO 帧,总线上不会出现 `info[4..5] = 0x89 0x45` | —(不参与验收) | 否 |
| 16 | **日志口迁移(USART1 → RS-232 通道)** | ① `console_log.c` 的 `huart1`、`USART1_IRQn`、`__HAL_RCC_USART1_CLK_*`、`MX_USART1_UART_Init()` 收口成**一处端口宏**,指向 RS232#1(`huart5` / UART5);② **不动** UART4 的 `g_rs485` 绑定 | 日志在 RS-232 侧(CN1)可读且内容与迁移前一致;USART1 **完全空出**;连续 10 分钟无 `[ERR]` | 否 |
**批次划分**:
| 批 | 任务 | 理由 |
|---|---|---|
| 第一批(无跨端风险,可独立发版) | 3、6、8 | 只动本端,旧客户端不受影响 |
| 第二批(跨端,须与客户端同步发版) | 2、4、5、7、9 | 报文口径变更,两端必须同版本 |
| 第三批(**独立立项**,不随 RS-485 冻结) | **16**、10、11、12、13、14 | 屏板串口通道是**独立需求**,与 需求档 §5.10 冻结的"对下采集簇"不是一回事。**第 16 条排在 10 之前**:日志先腾出 USART1,屏板链路才能独占这条通道 |
> ⚠ **唯一破坏性变更**:第 2 条把 INIT 应答从 8 B 改成 **16 B**。**旧客户端会把 16 B 的前 8 B 当全部、
> 把后 8 B 当作下一帧的 TAG 去找**,解析状态机会被这 8 B 拖住直到超时——表现为"连上了但不出图"。
> 因此第 2、5、7、9 条必须**同批发布**,且发版说明中明确"客户端需升级"。
>
> ⚠ **16 B 与参考的 29 B 不可互换**:删掉 13 B 颜色字段后,偏移 4 之后全部前移——
> 参考的"显存大小在偏移 5、键值表在偏移 21"在本产品变成"偏移 4、偏移 8"。
> 客户端**不得**复用参考的 29 B 解析器再截前 16 B(会读出颜色位当显存高位)。
>
> **屏板固件边界**:本表不覆盖屏板侧固件(帧解析 / 显存写入 / 按键扫描 / 状态灯驱动)。
> 屏板固件工程在 `D:\Code\DTU Code\DTU-LCD`,**不在本仓库**,其契约已按源码逐字节成文(需求档 §5.16.2 / 需求档 §5.16.3)。
> 本产品只要满足 需求档 §5.16.10 的十四条判据即为兼容(第 15 条 LOGO 出局)。
>
> **第三批状态**:串口通道(第 10~14、16 条)主机侧已实现并经台架与真屏板验收,屏板实物已上台架;
> 帧长**已固化 4208 B**(代码实参为准,屏板 readme 的 3208 B 不作数——真屏板出图为端到端证据)。
> 未闭环项(2 h 长稳、仪器项等)见 `docs/子系统设计/屏板链路设计说明.md` §9.2;**网络通道(第 2~9 条)未开工**。
>
> **一条物理前置(已完成 2026-10-29)+ 一条实现纪律**:
> ① **台架串口线已挪位**——日志口迁到 RS-232 侧后,台架那根线改接 CN1 的 RS232#1 端子
> (`CN1.10` 接适配器 TXD、`CN1.12` 接适配器 RXD、`CN1.7` 或 `CN1.8` 接 GND),台架日志口
> 因此由 `COM6` 变为 **`COM3`**,`.serialtest/config.json` 的 `portName` 已同步,`/serial-boot-test` 与
> `serial-assistant` 不必再手工指端口。这些端子是 **RS-232 电平**,TTL 的 CH340 直连不了,
> 用的是 USB 转 RS-232 适配器;接法与端子出处见 `docs/子系统设计/屏板链路设计说明.md` §3.2。
> **这条要在第 16 条动代码之前完成。**
> ② **RX 要真的读、ORE 要真的清**——PA10 一直是接线的(需求档 §5.16.2),
> 但"RX 使能却不读 `DR`"本身就足以让 ORE 永久锁存。第 11 条实现时必须在
> `HAL_UART_ErrorCallback` 里清 ORE 并重挂接收,否则一次噪声就永久静默。
---