移除 OpenCode 配置与命令,技能与串口单一配置源迁移至 .dsh/skills 与 .serialtest,同步更新全部文档引用
This commit is contained in:
@@ -0,0 +1,436 @@
|
||||
# 继电保护功能复现规划
|
||||
|
||||
> **定位**:把参考系统(CLS100 DTU 保护测控装置)的**继电保护链路**在本项目(STM32F4-Base DTU 平台)上分层复现的**总规划**——给出要实现的功能、性能指标、定值参数、平台适配口径与分阶段路线图。
|
||||
> **参考来源**:`D:\Code\DTU\参考资料\huaiyuan\huaiyuan\Scatter_P_HV03.01_SV01.01\项目分析文档\04-算法与采样专题\ADC采集至数据使用全流程详解`(同专题另有《项目详细分析-交流采样与有效值计算》《傅氏算法详解》《项目详细分析-阶段6-继电器保护单元分析》)。
|
||||
> **阅读前提**:先读 `docs/算法/傅氏算法详解.md`(算法原理)与 `docs/硬件平台/ADC通道映射说明.md`(采样通道权威口径)。
|
||||
> **相关文档**:`docs/产品需求/产品需求设计文档.md`、`docs/待处理内容.md`、`docs/内存管理/RAM使用分析与优化方案.md`。
|
||||
> **状态**:规划稿——保护链路本体尚未实现;其前置的 ADC 采集链路(`adc_task`)当前为空桩,见登记簿 **P1-1 / B1**。
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景、目标与范围
|
||||
|
||||
### 1.1 参考系统(CLS100)保护实现概览
|
||||
|
||||
| 维度 | 参考实现 |
|
||||
| ------ | ------------------------------------------------------------------------------------ |
|
||||
| 硬件平台 | TI OMAP-L138(ARM926EJ-S + C674x DSP **双核**),无 FPGA |
|
||||
| 操作系统 | VxWorks |
|
||||
| 核心分工 | **DSP 核**跑保护算法(1 ms 中断节拍),**ARM 核**跑管理 / 通信 / 人机 |
|
||||
| 采样率 | 50 Hz 系统,每周波 **20 点** → 保护采样率 **1000 Hz**(`CN_SAM_HERTZ=50`、`CN_SAM_RATE=20`) |
|
||||
| 内部总线节拍 | **4000 Hz**(80 点/周波,为保护采样率的 4 倍,`CN_WAVE_RATIO=4`),供录波/高频量使用 |
|
||||
| 保护相量 | **全周傅氏**(全周 DFT),每次刷新 15 个基波相量 + 3 个二次谐波相量 + 1 个五次谐波相量,**每 1 ms 重算** |
|
||||
| 遥测有效值 | 每 **200 ms** 对 k=1~9 次谐波做 DFT 再**方和根**(`CN_NUM_YCHUMWAVE=9`),得"真有效值"轨 |
|
||||
| 保护元件 | **89 个模块**(`RelayUnit/PRS_*.c`),统一 `tagPRS_XXX` 接口(Init / Main / 执行函数) |
|
||||
| 并发机制 | 采样**双缓冲**(2 周波 = 40 点)+ 相量**双区指针原子交换** + 遥测 **0x55/0xaa 计算/拷贝标志协议** |
|
||||
| 调度 | **时间片表**(单点 / 2 点 / 4 点 / 8 点)按 `g_dwSchedulerCnt` 位掩码分发 |
|
||||
| 定值 | EEPROM 存定值 + 折算系数(`wCoeEEP` / `wCoeCal` / `wCoeRet`),TLV 通道;遥测微调 TLV10(±10%,0.1% 步长) |
|
||||
| 有效值口径 | 保护用**基波有效值**(`CN_ANA_VEC_SQRT=FALSE`),计量/遥测用**谐波方和根** |
|
||||
|
||||
> 数据全链路(采样 → 内部总线 → 缓冲 → 预处理 → 算法 → 存储 → 使用)见参考文档《ADC采集至数据使用全流程详解》§5~§7;傅氏原理与系数折算见 `docs/算法/傅氏算法详解.md`。
|
||||
|
||||
### 1.2 本项目现状
|
||||
|
||||
| 维度 | 现状 |
|
||||
| ------ | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 硬件平台 | STM32F407ZGTx(Cortex-M4F,168 MHz,**单核**,硬件 FPU) |
|
||||
| 操作系统 | FreeRTOS V10.3.1(CMSIS-RTOS v2) |
|
||||
| 已实现子系统 | 网络(CH395F)、存储(GD5F2GQ5UE SPI NAND + dhara FTL + FatFs)、时间(SD2506 RTC + `sys_clock`)、配置(cfg_file)、日志、UI(远端显示)、看门狗(IWDG)、FTP |
|
||||
| 采样硬件 | TPAFE5160(16 位、8 通道**同步**、±5 V 双极性、并行 `GPIOG[15:0]`)+ STM32 内部 ADC1(12 位、9 通道**顺序**扫描、0~3.3 V 单极性) |
|
||||
| 采样软件 | `Drivers/BSP/TPAFE5160/tpafe5160.h` 驱动就绪(原子快照 API);`App/task/adc_task.c` **空桩**;无周期 CONVST 重触发;STM32 侧无 `HAL_ADC_Start` |
|
||||
| 保护算法层 | **完全缺失**(无傅氏、无保护元件、无出口、无定值模型) |
|
||||
| 已知硬件缺陷 | **N-18**:8 路电气量分属两片转换器 → V0.1 上禁止跨转换器做相位/功率/矢量运算 |
|
||||
|
||||
### 1.3 复现范围界定
|
||||
|
||||
**本期做(保护链路最小可用集)**
|
||||
|
||||
1. 采样与预处理:周期采样触发、通道语义映射、标定、有效性校验、等周波调频、自产零序。
|
||||
2. 相量计算:全周傅氏基波/谐波相量、线/负序/零序合成、双区交换、每 1 ms 刷新。
|
||||
3. 保护元件:三段式相间过流、三段式零序过流、过负荷、过压/欠压、过频/低频、零序过压、涌流制动、PT/CT 断线、母线接地告警、故障启动。
|
||||
4. 出口与记录:跳闸/告警出口、SOE/动作记录、定值模型与 cfg_file 集成、自检闭锁。
|
||||
|
||||
**本期不做(延后或依赖条件)**
|
||||
|
||||
- 方向元件 / 功率 / 功率因数 / 对称分量类运算——受 **N-18** 制约,V0.1 上取子板计量结果,或待 V0.2 硬件改版后实现。
|
||||
- 重合闸、馈线自动化(FA)等 FTU 专有功能——视产品定义(B0)。
|
||||
- 双核 / DSP 拆分、VxWorks 特有机制、IEC 61850、完整故障录波——与单核 FreeRTOS 平台不匹配。
|
||||
- 参考系统 89 个模块的**全量**移植——按需裁剪,只复现本产品定义的元件集。
|
||||
|
||||
### 1.4 前置依赖与阻塞项
|
||||
|
||||
| 依赖 | 说明 | 状态 |
|
||||
| --------------- | ------------------------------------------------------------ | ------------------------ |
|
||||
| **B0 产品定义** | 采集是否持续 / 采样率与通道 / 转发目标 / 保护元件清单——决定 B1 与保护层的**规模** | ✅ 已确认(2026-10-10,见 §1.5) |
|
||||
| **B1 ADC 采集链路** | 周期 CONVST + `adc_task` 消费 `tpafe5160_snapshot()` + 建任务 + 栈预算 | ⬜ 未实现(驱动契约已就绪) |
|
||||
| **N-18 硬件缺陷** | V0.1 跨转换器无同一时刻性 → 限定 V0.1 可实现的保护范围 | ⚠️ 硬件改版项(V0.2) |
|
||||
| **栈预算** | 保护任务栈需入 `Src/freertos.c` 并经 `scripts/stack_report.py` 核算 | ⬜ 待做 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 总体架构设计
|
||||
|
||||
### 2.1 数据全链路(分层)
|
||||
|
||||
复现后的保护链路分为 6 层,自下而上:
|
||||
|
||||
| 层 | 职责 | 参考对应 | 本项目落点(拟) |
|
||||
| ------------- | ----------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ |
|
||||
| **L0 采样驱动** | 触发转换、读出原始码值 | AD 芯片 + 总线 | `Drivers/BSP/TPAFE5160/` + STM32 ADC1 HAL |
|
||||
| **L1 采集与预处理** | 快照取数、语义映射、标定、有效性校验、等周波调频、自产零序 | `DataPreRecv` / `RealDataMerge` / `CalSoftFr` / `GetZoreSamData` | `adc_task` + `App/algo/`(拟) |
|
||||
| **L2 相量计算** | 全周傅氏基波/谐波、线/负序/零序合成、双区交换 | `CalFFTVecFull` / `CalfLineVec` / `CalfNegVec` | `App/algo/`(拟) |
|
||||
| **L3 保护元件** | 各保护判据(过流/零序/过压/频率/…) | `RelayUnit/PRS_*.c` | `App/protect/`(拟) |
|
||||
| **L4 出口与信号** | 跳闸/告警出口、信号灯 | `TripKO` / KO | `App/protect/` + BSP 出口驱动 |
|
||||
| **L5 记录与上送** | SOE/动作记录、UI 显示、遥测上送 | 记录模块 + 通信 | `App/log/` + `Drivers/BSP/UI/` + `App/protocol/` |
|
||||
|
||||
> **分层原则**:L1 只做"数"(码值→工程量),L2 只做"相量"(工程量→复相量),L3 只做"判据"(相量 + 定值→布尔),L4/L5 只做"动作与留痕"。**算法与 I/O 分离**,使 L2/L3 成为主机侧单元测试(L0.5)的天然适格对象(落实登记簿 **A-4**)。
|
||||
|
||||
### 2.2 任务与中断模型(映射到 STM32F4 + FreeRTOS)
|
||||
|
||||
参考系统用 DSP 的 1 ms 中断串起整条保护链。本项目为单核 FreeRTOS,采用"**中断触发 + 任务计算**"模型:
|
||||
|
||||
| 角色 | 载体 | 周期 | 优先级(拟) | 说明 |
|
||||
| ------ | --------------------------- | -------- | ------- | -------------------------------------- |
|
||||
| 采样节拍 | 定时器中断(TIMx) | **1 ms** | 最高(ISR) | 产生 CONVST 脉冲;ISR 内只置事件/计数,不做重运算 |
|
||||
| 采集与预处理 | `adcTask` | 1 ms | 高 | `tpafe5160_snapshot()` 取数 → 标定 → 存入采样环 |
|
||||
| 相量计算 | `adcTask` 内联 或 `algoTask` | 1 ms | 高 | 全周傅氏 → 相量双区交换 |
|
||||
| 保护判据 | `protectTask` | 1 ms | 高 | 各保护元件 Init/Main → 出口 |
|
||||
| 遥测与显示 | 复用 `uiTask` / 新增 `measTask` | 200 ms | 中 | 谐波方和根、死区/平滑、UI 与上送 |
|
||||
| 记录 | `defaultTask`(已有) | 事件驱动 | 低 | SOE/动作记录落 `sys_log` |
|
||||
|
||||
> **铁律**:`adcTask` / `protectTask` 的 FS 路径若触碰存储,必须沿用卷锁 try 语义(`vol_lock_wait(0)`),且每任务纳入看门狗 `required_mask` 心跳(见 `docs/子系统设计/看门狗设计说明.md`)。**保护节拍任务不得阻塞在存储 I/O 上**——记录走队列异步落盘。
|
||||
|
||||
### 2.3 并发与数据一致性
|
||||
|
||||
参考系统用三重机制保证"采样—相量—保护"三段并发无锁:**采样双缓冲 + 相量双区指针交换 + 遥测标志协议**。本项目沿用同一思想,并复用已有的原子快照范式:
|
||||
|
||||
| 机制 | 参考做法 | 本项目做法 |
|
||||
| ---- | -------------------------------------- | ------------------------------------------------------------------------------ |
|
||||
| 采样缓冲 | 双缓冲(2 周波 = 40 点),写/读分属两区 | 环形缓冲 + **序号**(`tpafe5160_frame_seq()` 已有)+ 临界区快照,防撕裂 |
|
||||
| 相量区 | `tVectorRly[2][N]`,算完**原子交换**计算区/使用区指针 | 双区结构体 + 指针/索引原子切换(单核下用临界区或 `__atomic`) |
|
||||
| 遥测拷贝 | 0x55/0xaa 计算/拷贝握手标志 | 快照 + 序号,或 FreeRTOS 事件标志握手 |
|
||||
| 取数契约 | —— | **只能用 `tpafe5160_snapshot()`**(`AGENTS.md` 铁律),不用已删除的 `get_buf` / `data_ready` |
|
||||
|
||||
### 2.4 与现有子系统的接口
|
||||
|
||||
| 保护层需求 | 复用现有能力 | 落点 |
|
||||
| --------- | ------------------------------------ | ------------------------------------ |
|
||||
| 定值存取 | **cfg_file 配置引擎**(替代参考的 EEPROM 定值文件) | `App/cfg/cfg_file.c` + 新增定值段 |
|
||||
| 动作/SOE 记录 | `sys_log`(`/log/run.log`)与运行记录 | `App/log/` |
|
||||
| 保护定值/测量显示 | 远端显示 UI(`ui_page_ac` 已有 24 行占位) | `Drivers/BSP/UI/ui_page_ac.h` |
|
||||
| 遥测/事件上送 | 网络栈 + `App/protocol/`(协议预留) | `App/protocol/` + `Drivers/BSP/NET/` |
|
||||
| 时间戳 | `sys_clock`(RTC 基准) | `App/util/sys_clock.c` |
|
||||
| 自检留痕 | `selftest.log` / 自检框架 | `App/log/` |
|
||||
|
||||
---
|
||||
|
||||
## 3. 功能规划(分层清单)
|
||||
|
||||
> 每项给出:**功能点 / 关键参数 / 完成判据**。状态列 ⬜ 未实现。
|
||||
|
||||
### 3.1 L1 采集与预处理
|
||||
|
||||
| # | 功能点 | 关键参数 | 完成判据 | 状态 |
|
||||
| ---- | ------------------ | ------------------------------------------- | --------------------------------------------------------------- | -- |
|
||||
| L1-1 | 周期 CONVST 重触发 | 1000 Hz(与保护节拍同源) | 示波器见 U3 `BUSY` 连续脉冲;`tpafe5160_frame_seq()` 持续递增 | ⬜ |
|
||||
| L1-2 | TPAFE 快照消费 | 8 通道 / 帧 | `adc_task` 每拍调 `tpafe5160_snapshot()`,返回 1/0/-1 有处理 | ⬜ |
|
||||
| L1-3 | STM32 ADC1 启动与扫描 | 9 通道、144 cycles、软件触发 | 全库出现 `HAL_ADC_Start`;9 通道码值随注入变化 | ⬜ |
|
||||
| L1-4 | 通道语义映射 | 见 `docs/硬件平台/ADC通道映射说明.md`(**按语义取数,不写死下标**) | `UA→buf[6]`、`UN→buf[5]`、`IA→buf[2]`;STM32 侧 `UB→ADC_CHANNEL_14` | ⬜ |
|
||||
| L1-5 | 通道标定(一次系数 + 零漂) | 每通道 `k`、`b`;系数定点 `2^10` | 注入标准源,读数误差 ≤ 目标精度 | ⬜ |
|
||||
| L1-6 | 采样有效性校验 | FRSTDATA 跳变、帧序号单调、丢帧计数 | 芯片静默/丢帧被检出并置告警 | ⬜ |
|
||||
| L1-7 | 等周波采样(软件测频 + 调频闭环) | 20 点/周波;测频范围建议 **45~55 Hz**(参考 40.5~60.5) | 频率偏移 ±2 Hz 时幅值误差 ≤ 1% | ⬜ |
|
||||
| L1-8 | 自产零序合成 | `3I0 = Ia+Ib+Ic`;外部/自产可选(参考 TLV13) | 零序通道可切换来源,值正确 | ⬜ |
|
||||
| L1-9 | 二次谐波/五次谐波提取入口 | k=2(涌流)、k=5(选线) | 相量层可产出对应谐波相量 | ⬜ |
|
||||
|
||||
|
||||
> ⚠️ **N-18 约束**:L1-4 中 `UA/UN/IA` 在 TPAFE、`UB/UC/IB/IC/IN` 在 STM32 ADC。V0.1 上 L1 只做**逐通道独立监视**,不得假设同族量同刻(`UA` 与 `UB` 无共同采样触发)。
|
||||
|
||||
### 3.2 L2 相量计算
|
||||
|
||||
| # | 功能点 | 关键参数 | 完成判据 | 状态 |
|
||||
| ---- | ------------ | ----------------------------------------------- | -------------------------------- | -- |
|
||||
| L2-1 | 全周傅氏系数表 | `sin(2πk/N)·(√2/N)`、`cos(2πk/N)·(√2/N)`,N=20 | 系数表与 `docs/算法/傅氏算法详解.md` §2.3 一致 | ⬜ |
|
||||
| L2-2 | 基波相量实例 | 4 个实例:C01 基波 I/U、C02 零序基波、C03 二次谐波、C04 五次谐波 | 每实例输出 `{fRe, fIm, fAm, fAmSQ}` | ⬜ |
|
||||
| L2-3 | 相量有效值输出 | `fAmSQ = √(fRe²+fIm²)` 直接为**有效值**(系数已折算) | 标准源读数 = 设定有效值 | ⬜ |
|
||||
| L2-4 | 相位输出 | `φ = atan2(fIm, fRe)` | 相位误差 ≤ 目标值 | ⬜ |
|
||||
| L2-5 | 线/负序/零序合成 | 线电压 `Uab=Ua−Ub` 等;负序 `3U2`/`3I2`;零序 `3U0`/`3I0` | 合成相量可复用于保护元件 | ⬜ |
|
||||
| L2-6 | 每 1 ms 滑动窗刷新 | 每来新点,窗滑动一格、20 点重算(暴力法) | 相量每拍更新 | ⬜ |
|
||||
| L2-7 | 双区指针原子交换 | 计算区/使用区切换 | 保护元件读使用区,无撕裂 | ⬜ |
|
||||
| L2-8 | 遥测谐波轨(可选) | k=1~9,方和根 `√(ΣHk²)` | 与基波轨并行,供 UI/上送 | ⬜ |
|
||||
|
||||
> **双轨有效值**:保护要"基波有效值 + 相位"(抗衰减直流、抗谐波误动);计量/遥测要"真有效值"(谐波方和根)。两者**不可混用**——这是参考系统 `CN_ANA_VEC_SQRT=FALSE` 与遥测谐波轨并存的根本原因。
|
||||
|
||||
### 3.3 L3 保护元件
|
||||
|
||||
采用参考系统的**统一接口模式**:每元件一个 `tagPRS_XXX` 配置结构(定值号、模拟通道号、KI/KO、标志位、校验和)+ `Init` / `Main`(判据)/ 出口函数。
|
||||
|
||||
**核心集(P0/P1)**
|
||||
|
||||
| # | 元件 | 判据要点 | 关键定值 | 状态 |
|
||||
| ---- | ------- | ----------------------- | ---------------- | -- |
|
||||
| L3-1 | 三段式相间过流 | 相电流基波 > 定值,经延时出口;返回系数滞回 | Ⅰ/Ⅱ/Ⅲ 段电流 + 延时 | ⬜ |
|
||||
| L3-2 | 三段式零序过流 | 零序电流 > 定值,经延时出口 | Ⅰ/Ⅱ/Ⅲ 段零序电流 + 延时 | ⬜ |
|
||||
| L3-3 | 过负荷 | 相电流 > 定值,告警/跳闸可整定 | 过负荷电流 + 延时 | ⬜ |
|
||||
| L3-4 | 过压 / 欠压 | 相/线电压越限,经延时出口 | 过压定值、失压定值 + 延时 | ⬜ |
|
||||
| L3-5 | 过频 / 低频 | 频率越限,经延时出口 | 过频、低频定值 + 延时 | ⬜ |
|
||||
| L3-6 | 零序过压 | 零序电压 > 定值 | 零序过压定值 + 延时 | ⬜ |
|
||||
|
||||
**扩展集(P2/P3)**
|
||||
|
||||
| # | 元件 | 判据要点 | 状态 |
|
||||
| ----- | ---------- | --------------------- | -- |
|
||||
| L3-7 | 涌流制动 | 二次谐波占比 > 制动系数,闭锁差动/过流 | ⬜ |
|
||||
| L3-8 | PT 断线 | 电压突变/负序判据,闭锁电压类保护 | ⬜ |
|
||||
| L3-9 | CT 断线 | 电流不平衡判据,闭锁 | ⬜ |
|
||||
| L3-10 | 母线接地告警 | 零序电压 + 零序电流组合 | ⬜ |
|
||||
| L3-11 | 故障启动(波形启动) | 突变量启动,触发录波/启动元件 | ⬜ |
|
||||
| L3-12 | 无压/无流闭锁 | 低电压或低电流时闭锁过流 | ⬜ |
|
||||
|
||||
**延后集(受 N-18 / 产品定义制约)**
|
||||
|
||||
| # | 元件 | 制约 |
|
||||
| ----- | ----------- | -------------------- |
|
||||
| L3-13 | 方向元件 / 功率方向 | 需跨转换器相位一致 → V0.1 不可做 |
|
||||
| L3-14 | 重合闸 | FTU 专有,视 B0 产品定义 |
|
||||
| L3-15 | 手动跳闸 / 遥控 | 依赖出口硬件与协议定义 |
|
||||
|
||||
### 3.4 L4 出口与记录
|
||||
|
||||
| # | 功能点 | 说明 | 状态 |
|
||||
| ---- | --------- | --------------------- | -- |
|
||||
| L4-1 | 跳闸出口(KO) | 判据满足 → 驱动出口继电器,带保持/脉冲 | ⬜ |
|
||||
| L4-2 | 告警出口 / 信号 | 告警类动作驱动信号灯/继电器 | ⬜ |
|
||||
| L4-3 | 出口自检 | 出口回路检测(若有回读) | ⬜ |
|
||||
| L4-4 | SOE 记录 | 带时标的事件顺序记录 | ⬜ |
|
||||
| L4-5 | 动作记录 | 保护动作/返回记录,落 `run.log` | ⬜ |
|
||||
| L4-6 | 故障录波(可选) | 4000 Hz 内部节拍预留 | ⬜ |
|
||||
|
||||
### 3.5 L5 自检与闭锁
|
||||
|
||||
| # | 功能点 | 说明 | 状态 |
|
||||
| ---- | ------ | ----------------------------------- | -- |
|
||||
| L5-1 | 定值校验和 | `tagPRS_XXX` 的 `dwTagSum` 自检,定值非法闭锁 | ⬜ |
|
||||
| L5-2 | 采样通道自检 | 通道码值越界/静默检出 | ⬜ |
|
||||
| L5-3 | 硬件自检 | 出口回路、电源、时钟 | ⬜ |
|
||||
| L5-4 | 自检失败闭锁 | 任一项失败 → 闭锁相关保护并告警 | ⬜ |
|
||||
|
||||
---
|
||||
|
||||
## 4. 性能指标
|
||||
|
||||
### 4.1 实时性
|
||||
|
||||
| 指标 | 目标值 | 依据 |
|
||||
| ------ | ---------------------------- | ------------------------------ |
|
||||
| 保护节拍 | **1 ms** | 参考 `CN_PROTECT_PERIOD=1000 µs` |
|
||||
| 保护采样率 | **1000 Hz**(20 点/周波 @ 50 Hz) | 全周傅氏窗长 |
|
||||
| 相量刷新周期 | **1 ms** | 每来一点重算 |
|
||||
| 遥测刷新周期 | **200 ms** | 参考遥测链周期 |
|
||||
| 出口动作时间 | ≥ 1 周波(20 ms)算法窗 + 定值延时 | 全周波算法固有延时 |
|
||||
| 内部总线节拍 | 4000 Hz(80 点/周波) | 参考 `CN_WAVE_RATIO=4`(本项目按需裁剪) |
|
||||
|
||||
### 4.2 精度
|
||||
|
||||
| 指标 | 目标值 | 说明 |
|
||||
| ------ | --------------------------- | ------------------------- |
|
||||
| 基波幅值误差 | ≤ 1%(频偏 ±2 Hz 内) | 依赖等周波采样 |
|
||||
| 相位误差 | ≤ 目标角误差(依产品定义) | 依赖调频闭环 |
|
||||
| 测频范围 | 建议 45~~55 Hz(参考 40.5~~60.5) | `CN_HERTZ_SOFTFR_MIN/MAX` |
|
||||
| 定值折算 | 定点系数 `2^10` | 与参考一致 |
|
||||
| 遥测微调 | ±10%,0.1% 步长(TLV10) | 参考口径 |
|
||||
|
||||
> **误差来源与预算**(参考《ADC采集至数据使用全流程详解》§12):采样量化(TPAFE LSB ≈ 152.6 µV)、通道标定残差、窗长偏离整周波(频偏)、系数定点舍入。前三项决定可达精度,最后一项可忽略。
|
||||
|
||||
### 4.3 算力与内存预算
|
||||
|
||||
| 项 | 估算 | 说明 |
|
||||
| -------- | ------------------------------- | -------------------------------------- |
|
||||
| 傅氏乘加 | 20 点 × 2(sin/cos)× 相量数 / 拍 | 参考用暴力法(CPU 余量足够);本项目 168 MHz + FPU 需实测 |
|
||||
| 相量区 RAM | `tVectorRly[2][N] × sizeof(相量)` | 双区 + 4 实例 |
|
||||
| 采样缓冲 RAM | 40 点/通道 × 通道数 × 字宽 | 双缓冲 2 周波 |
|
||||
| 定值区 RAM | 元件数 × 定值项 × 字宽 | 可由 cfg_file 载入 |
|
||||
| 任务栈 | `adcTask` / `protectTask` 待核算 | 建任务前后各跑 `scripts/stack_report.py` |
|
||||
|
||||
> ⚠️ **改内存相关代码后必须刷新快照**:`@build` 出 `.map` 后跑 `scripts/check_mem_numbers.py --write`,同步 `docs/内存管理/RAM使用分析与优化方案.md` §2.1(`mem-numbers` 钩子会因体积变化 FAIL)。
|
||||
|
||||
### 4.4 频率跟踪
|
||||
|
||||
- **原理**:软件测频(对电压/电流信号过零点或相角差测频)→ 调整采样定时器周期 → 使窗长恒等于实际周波(严格 20 点/周波)。
|
||||
- **闭环**:测频 → 周期修正 → 采样 → 再测频;参考用片内 EHRPWM 调频,本项目用 TIM 重装载值调整。
|
||||
- **必要性**:窗长偏离整周波会破坏正交性,直流与二次谐波漏入测量(见 `docs/算法/傅氏算法详解.md` §3)。
|
||||
|
||||
## 6. 平台适配与差异处理
|
||||
|
||||
### 6.1 采样源差异
|
||||
|
||||
| 维度 | 参考系统 | 本项目 | 适配要点 |
|
||||
| ----- | ----------------- | -------------------------------------------------------- | ------------------------------ |
|
||||
| AD 器件 | 专用同步采样 AD | TPAFE5160(16 位、8 通道同步、±5 V)+ STM32 ADC1(12 位、顺序、0~3.3 V) | 统一到"工程量"层,屏蔽码值差异 |
|
||||
| 通道数 | 8 实通道(4U+4I,自产零序) | 8 路电气量(4U+4I)+ 温度 | 语义映射见 `docs/硬件平台/ADC通道映射说明.md` |
|
||||
| 同一时刻性 | 单芯片同步 | **跨转换器无共同触发**(N-18) | V0.1 只做逐通道独立监视 |
|
||||
| 量程/精度 | 一致 | TPAFE LSB ≈ 152.6 µV vs STM32 LSB ≈ 806 µV | 同族量不可统一算法处理 |
|
||||
|
||||
### 6.2 N-18 影响与降级口径
|
||||
|
||||
- **V0.1 现板**:主板侧只做**逐通道独立监视**(有效值/越限/温度);**禁止**跨转换器的同周期相位、功率、功率因数、矢量类运算。
|
||||
- **受影响功能**:方向元件、功率方向、差动类——延后(L3-13)。
|
||||
- **V0.2 改版后**:8 路电气量全部接 TPAFE(与 5 路备用路对调串联电阻目的地,BOM 不变),上层语义与代码**不动**,只改映射表内容 → 保护层无需重构。
|
||||
- **接口设计启示**:**按语义取数、不写死下标**,是 V0.2 平滑升级的前提。
|
||||
|
||||
### 6.3 单核 vs 双核
|
||||
|
||||
| 维度 | 参考(ARM+DSP) | 本项目(单核) | 适配 |
|
||||
| ----- | ----------- | ------------------- | ----------------------- |
|
||||
| 保护计算 | DSP 核独占 | 与 FreeRTOS 任务共享 CPU | 保护任务优先级最高;避免长临界区 |
|
||||
| 管理/通信 | ARM 核 | 同核分任务 | 依赖现有任务优先级体系 |
|
||||
| 隔离 | 核间隔离 | 无 | 靠任务优先级 + 栈预算 + 看门狗保证实时性 |
|
||||
|
||||
### 6.4 零序自产 / 外部
|
||||
|
||||
- 参考:TLV13 选择映射表——外部零序(专用通道)或**自产零序**(`3I0 = Ia+Ib+Ic`)。
|
||||
- 本项目:V0.1 无专用零序通道 → 一期**自产零序**(软件合成),外部零序待 V0.2 或子板提供。
|
||||
- 落点:L1-8。
|
||||
|
||||
### 6.5 定值存储
|
||||
|
||||
| 维度 | 参考 | 本项目 |
|
||||
| -- | ------------ | ------------------------------------ |
|
||||
| 载体 | EEPROM 定值文件 | cfg_file(`/config.ini`,NAND + FatFs) |
|
||||
| 折算 | `wCoeEEP` 定点 | 同模型(工程量 ↔ 码值) |
|
||||
| 微调 | TLV10 ±10% | cfg_file 微调段(按需) |
|
||||
|
||||
---
|
||||
|
||||
## 7. 分阶段实施路线图
|
||||
|
||||
### 7.1 阶段划分与里程碑
|
||||
|
||||
| 阶段 | 名称 | 内容 | 前置 | 里程碑 |
|
||||
| ------ | ---------- | ------------------------------------------------------------------------- | -------------- | ----------------------- |
|
||||
| **P0** | 采样与相量底座 | B1(周期 CONVST + `adcTask` 消费 + 建任务 + 栈预算)+ L1 + L2 | B0 + B1 | 每 1 ms 产出正确的基波相量 |
|
||||
| **P1** | 基础保护元件 | L3-1 三段式过流、L3-2 三段式零序过流、L3-3 过负荷 | P0 | 标准源注入可正确动作 |
|
||||
| **P2** | 电压/频率类保护 | L3-4 过压/欠压、L3-5 过频/低频、L3-6 零序过压 | P0 | 电压/频率越限正确动作 |
|
||||
| **P3** | 异常检测与闭锁 | L3-7 涌流制动、L3-8 PT 断线、L3-9 CT 断线、L3-10 母线接地、L3-11 故障启动、L3-12 无压/无流闭锁、L5 自检 | P1/P2 | 异常工况闭锁与告警正确 |
|
||||
| **P4** | 出口、记录与定值集成 | L4 出口与记录、§5 定值模型落 cfg_file、UI 显示、上送 | P1 | 动作出口 + SOE 记录 + UI 显示闭环 |
|
||||
| **P5** | 方向/功率类(延后) | L3-13 方向元件等 | V0.2 硬件 / 子板计量 | 跨转换器相位一致后实现 |
|
||||
|
||||
### 7.2 每阶段交付物与验收判据
|
||||
|
||||
| 阶段 | 交付物 | 验收判据 |
|
||||
| -- | ------------------------------------ | ----------------------------------- |
|
||||
| P0 | `adcTask`/`algo` 模块 + 设计文档 + L0.5 单测 | 标准源读数误差 ≤ 目标;相量每 1 ms 刷新;`@test` 通过 |
|
||||
| P1 | 过流/零序/过负荷元件 + 定值模型 | 注入 1.2×/0.9× 定值,正确动作/返回;返回系数正确 |
|
||||
| P2 | 电压/频率元件 | 越限动作时间符合定值延时 |
|
||||
| P3 | 异常检测 + 自检闭锁 | 断线/涌流工况正确闭锁;自检失败闭锁 |
|
||||
| P4 | 出口 + 记录 + 定值 UI | 动作驱动出口;SOE 带正确时标;UI 显示实时值 |
|
||||
| P5 | 方向元件 | 需 V0.2 前置条件满足 |
|
||||
|
||||
### 7.3 依赖关系图
|
||||
|
||||
```text
|
||||
B0 产品定义(阻塞)
|
||||
└─ B1 ADC 采集链路(周期 CONVST + adcTask + 建任务 + 栈预算)
|
||||
└─ P0 采样与相量底座
|
||||
├─ P1 基础保护(过流/零序/过负荷)
|
||||
│ └─ P4 出口/记录/定值
|
||||
├─ P2 电压/频率保护
|
||||
└─ P3 异常检测与闭锁
|
||||
└─ P5 方向/功率类(依赖 V0.2 硬件 / 子板计量)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. 测试与验证
|
||||
|
||||
### 8.1 测试分层
|
||||
|
||||
| 层 | 对象 | 方式 |
|
||||
| --------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| L0 静态 | 代码规范、文档链接、体积 | pre-commit 钩子(`cppcheck` / `doc-links` / `mem-numbers`) |
|
||||
| L0.5 主机单测 | 傅氏相量、定值解析、保护判据(**算法与 I/O 分离**后天然适格) | `test/host/<模块>/run_unit_test.py`(MSVC 离线编译真实源文件,参考 `test/host/cfg_file/run_unit_test.py`) |
|
||||
| L1 板端套件 | 采样/相量/保护元件 | `test/run_all_suites.py` 板端套件 |
|
||||
| L2/L3 台架 | 标准源注入、动作出口、时序 | 台架闭环(COM6 @115200) |
|
||||
|
||||
|
||||
### 8.2 A-4 约束落实
|
||||
|
||||
登记簿 **A-4** 对采集链路提出三条设计约束,保护层须一并满足:
|
||||
|
||||
1. **协议解析与硬件 I/O 分离**——保护判据函数只吃相量 + 定值,可单测;
|
||||
2. **采集缓冲双缓冲 + 序号**——防撕裂(单测测不出时序撕裂,须设计上消除);
|
||||
3. **DE 收尾超时路径**(RS-485,若保护涉及 485 通信)。
|
||||
|
||||
### 8.3 验收判据(保护层)
|
||||
|
||||
- 标准源注入:幅值/相位/频率读数误差在目标内;
|
||||
- 定值动作:1.2× 定值可靠动作、0.9× 定值可靠返回,返回系数符合 `wCoeRet`;
|
||||
- 时序:动作时间 = 算法窗(≥20 ms)+ 定值延时,误差在允许范围;
|
||||
- 闭锁:PT/CT 断线、涌流、自检失败工况下相关保护可靠闭锁;
|
||||
- 记录:SOE/动作记录时标正确(注意板载 RTC 比墙钟慢约 8 h)。
|
||||
|
||||
---
|
||||
|
||||
## 9. 风险与开放问题
|
||||
|
||||
| # | 风险 / 开放问题 | 影响 | 处置方向 |
|
||||
| -- | ------------------ | --------------------- | -------------------------------------- |
|
||||
| R1 | **B0 产品定义未定** | 保护元件清单与规模无法锁定 | 先按核心集(P1/P2)推进,扩展集待定义 |
|
||||
| R2 | **N-18 硬件缺陷** | 方向/功率/矢量类无法在 V0.1 实现 | V0.2 硬件改版;V0.1 取子板计量 |
|
||||
| R3 | **单核算力** | 1 ms 节拍内完成傅氏 + 全部保护元件 | 实测 CPU 余量;必要时裁剪遥测谐波轨或降低元件扫描频率 |
|
||||
| R4 | **等周波调频实现** | 频偏时精度不达标 | TIM 重装载调频;先固定 1000 Hz 跑通再上闭环 |
|
||||
| R5 | **STM32 侧无中点偏置** | 交流量负半周削顶,无法算 RMS | V0.1 只做监视;V0.2 补偏置 |
|
||||
| R6 | **栈预算** | 新任务栈溢出 | 建任务前后跑 `scripts/stack_report.py`;纳入看门狗 |
|
||||
| R7 | **出口硬件未确认** | 跳闸出口无法验证 | 确认出口继电器/回读电路;无硬件时先做逻辑级验证 |
|
||||
| R8 | **TPAFE 自动扫描模式未知** | 影响采样实现方式 | 查手册确认(登记簿 §4 待确认项) |
|
||||
|
||||
---
|
||||
|
||||
## 10. 附录
|
||||
|
||||
### 10.1 参考系统关键常量
|
||||
|
||||
| <u>常量</u> | <u>值</u> | <u>含义</u> |
|
||||
| -------------------------------- | --------------------- | ---------------------------- |
|
||||
| <u>`CN_PROTECT_PERIOD`</u> | <u>1000 µs</u> | <u>保护中断周期</u> |
|
||||
| <u>`CN_SAM_HERTZ`</u> | <u>50</u> | <u>系统频率(Hz)</u> |
|
||||
| <u>`CN_SAM_RATE`</u> | <u>20</u> | <u>每周波采样点数</u> |
|
||||
| <u>`CN_SAM_RATIO`</u> | <u>1</u> | <u>保护采样倍率</u> |
|
||||
| <u>`CN_YCSAM_RATIO`</u> | <u>2</u> | <u>遥测采样倍率</u> |
|
||||
| <u>`CN_WAVE_RATIO`</u> | <u>4</u> | <u>录波倍率(4000 Hz)</u> |
|
||||
| <u>`CN_BUFSAM_CYCLE`</u> | <u>2</u> | <u>采样缓冲周波数</u> |
|
||||
| <u>`CN_BUFSAM_LEN`</u> | <u>40</u> | <u>采样缓冲长度(点)</u> |
|
||||
| <u>`CN_ANA_VEC_SQRT`</u> | <u>FALSE</u> | <u>保护用基波有效值(非方和根)</u> |
|
||||
| <u>`CN_ANA_DIF`</u> | <u>FALSE</u> | <u>半周波/差分组件关闭</u> |
|
||||
| <u>`CN_HERTZ_SOFTFR_MIN/MAX`</u> | <u>40.5 / 60.5 Hz</u> | <u>软测频范围</u> |
|
||||
| <u>`CN_NUM_YCHUMWAVE`</u> | <u>9</u> | <u>遥测谐波次数上限(`(20>>1)−1`)</u> |
|
||||
| <u>`CN_NUM_YCAVER`</u> | <u>4</u> | <u>遥测平均点数</u> |
|
||||
| <u>系数定点</u> | <u>`2^10`</u> | <u>标定系数定标</u> |
|
||||
|
||||
### <u>10.2 术语表</u>
|
||||
|
||||
| <u>术语</u> | <u>含义</u> |
|
||||
| ------------ | -------------------------------------------- |
|
||||
| <u>全周傅氏</u> | <u>全周波傅里叶算法,单频 DFT,得基波相量</u> |
|
||||
| <u>相量</u> | <u>`{fRe, fIm, fAm, fAmSQ}`,实部/虚部/幅值/有效值</u> |
|
||||
| <u>等周波采样</u> | <u>软件测频 + 调频,保持严格 20 点/周波</u> |
|
||||
| <u>自产零序</u> | <u>`3I0 = Ia+Ib+Ic` 软件合成</u> |
|
||||
| <u>双区交换</u> | <u>相量计算区/使用区指针原子切换</u> |
|
||||
| <u>时间片表</u> | <u>单点/2点/4点/8点调度表</u> |
|
||||
| <u>TLV</u> | <u>参考系统的参数通道(定值/微调/映射)</u> |
|
||||
| <u>返回系数</u> | <u>动作值/返回值之比(滞回)</u> |
|
||||
|
||||
### <u>10.3 待确认清单</u>
|
||||
|
||||
1. <u>保护元件清单(核心集/扩展集边界)——依 B0。</u>
|
||||
2. 定值取值范围/步长/单位——依产品定义。
|
||||
3. 出口硬件形态(继电器/回读)——依硬件。
|
||||
4. 等周波调频范围与精度目标——依产品定义。
|
||||
5. 是否保留遥测谐波轨(k=1~9)——依 UI/上送需求。
|
||||
|
||||
---
|
||||
|
||||
## 变更记录
|
||||
|
||||
| 日期 | 变更 | 说明 |
|
||||
| ---------- | ----- | --------------------------------------------------------------------------------------------------------- |
|
||||
| 2026-10-10 | 建立本文档 | 依据参考项目《ADC采集至数据使用全流程详解》等专题文档,规划 CLS100 保护链路在本项目(STM32F4-Base)的分层复现:功能/性能/参数/平台适配/路线图;登记至 `docs/README.md` |
|
||||
Reference in New Issue
Block a user