W1 功能主线完成:内存台账三件套(W1-0) + IEC104 上行(B4) + protectTask 板端接线(B5)
W1-0 台账三件套:scripts/ram_baseline.py(四模式)+ ram_baseline.tsv 趋势 + docs/内存管理/RAM预算台账.md + pre-commit mem-budget 钩子(RW_IRAM1/RW_CCM >92% 即 FAIL + Top-10 附表);审查报告 §5.5 三条闭环。 B4 IEC 60870-5-104 上行(被控站,TCP 2404):App/protocol/iec104/ 三模块 (asdu 编解码 / pts 点表+数据源 vtable / link APCI+FSM,纯逻辑零 I/O)+ App/task/iec104_serv.c(iec104Task,NET_READY 屏障 100ms 分片喂位)。 82 断言 L0.5 全绿 + iec104-unit-test 钩子(第 31 钩子); 设计说明 docs/子系统设计/IEC104上行设计说明.md 全量回填。 B5 protectTask(L3 板端接线):App/task/protect_task.c——20ms 判据节拍 prot_elm_run + L5-4 采样故障闭锁(adc_health 电平位→元件复位)+ L5-1 定值 校验和巡检;新增 prot_elm_request_reset() 收口跨上下文复归(104 YK11 落请求、 eval 头部消费);定值/元件初始化移入 app_main_init(内核前)。TC-PE-010 (prot_elm 28 用例)。 门禁与内存:TASK_WD_PROTECT=8 入 required_mask(产品 0x77→0x1F7、HW 层 0x1F5,看门狗单测 39 断言同步);FreeRTOS 堆 48→56KB(.ioc L1 参数 + FreeRTOSConfig.h 同步,RAM预算台账 §6 登记配额 48→56KB)。 ZI 144,008→152,204(+8,196 B = 堆 +8KB,B5 扩容);Code=204,348。 stack_report:protectTask 512 words 静态链 872 B/余 57%、iec104Task 640 words 1456 B/余 43% 均 PASS;RW_IRAM1 73.1% / RW_CCM 87.9%(<92%)。 验证:@build 0 错 0 警;ci_local 全绿(31 钩子 + 13 主机侧单测); doc-links 135 文档 PASS。登记簿 B4/B5 销项、W1 波次完成;保护规划/看门狗 说明/AGENTS(9 任务)/RAM 三文档全部同步。 遗留(验收窗口,非代码空洞):台架第三方 104 主站往返(送检窗口)、 标准源注入动作判据、@test PROT 锚点 + protect 栈水位 + 新堆 min_ever 复测。
This commit is contained in:
+4
-2
@@ -196,8 +196,10 @@ flowchart TD
|
||||
- **闭锁联动**:`prot_set_locked()`(L5-1)或投退=0 → 该元件状态整体复位、不判据。
|
||||
- **V0.1 实例**(N-18):`OC1/OC2/OC3/OL`(IA)、`OV/UV`(UA)、`3U0`(UN 外部通道)。
|
||||
零序过流(IN 走 STM32)与过频/低频(待频率算法)**故意不在表中**。
|
||||
- **尚未接线**:无任务调用 `prot_elm_run()`(链接器整对象移除,零足迹);
|
||||
板端接线随 protectTask 立项(栈预算 + IWDG 心跳门禁,AGENTS E-59 同款流程)。
|
||||
- **板端接线已落地(B5,2026-10-12)**:`App/task/protect_task.c`(protectTask,
|
||||
20 ms 节拍)消费 `prot_elm_run()` + L5-4 采样故障闭锁 + L5-1 校验和巡检;
|
||||
跨上下文复归走 `prot_elm_request_reset()`(104 YK11 落请求、eval 头部消费)。
|
||||
判据结果经 104 遥信上送(`iec104_pts` YX15~23/31)。→ `docs/算法/继电保护功能复现规划.md` §7
|
||||
|
||||
## 4. 关键约定
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@ typedef struct {
|
||||
|
||||
static pe_rt_t s_rt[PE_COUNT];
|
||||
|
||||
/* 跨上下文复归请求(单字标志,volatile;B5:104 YK11 在 iec104Task 落请求) */
|
||||
static volatile uint8_t s_reset_req;
|
||||
|
||||
/*
|
||||
* 函数功能:按名前缀在 phasor 实例表里找索引(开机解析一次)
|
||||
* 入口参数:prefix - 相量实例名前缀(如 "C01")
|
||||
@@ -90,6 +93,16 @@ void prot_elm_init(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:登记"复归元件状态"请求(任意上下文安全,见 prot_elm.h)
|
||||
* 入口参数:无
|
||||
* 返 回 值:无
|
||||
* 函数说明:只置单字标志;真正的状态复位在下一拍 eval 头部(消费者上下文)执行。
|
||||
*/
|
||||
void prot_elm_request_reset(void) {
|
||||
s_reset_req = 1u;
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:纯判据步进——按当前定值 + 给定测量值推进所有元件
|
||||
* 入口参数:now_ms - 单调时基(tick ms,差值法回绕安全)
|
||||
@@ -103,6 +116,13 @@ void prot_elm_eval(uint32_t now_ms, const float meas[PE_COUNT]) {
|
||||
uint8_t locked = prot_set_locked();
|
||||
uint32_t i;
|
||||
|
||||
/* 跨上下文复归请求在此消费(YK11 经 request_reset,见 prot_elm.h) */
|
||||
if (s_reset_req != 0u) {
|
||||
s_reset_req = 0u;
|
||||
prot_elm_init();
|
||||
locked = prot_set_locked();
|
||||
}
|
||||
|
||||
for (i = 0u; i < (uint32_t)PE_COUNT; i++) {
|
||||
const pe_cfg_t *cfg = &k_pe[i];
|
||||
uint8_t cond;
|
||||
|
||||
+13
-2
@@ -18,8 +18,10 @@
|
||||
* - 复压/方向/无压无流闭锁(dwSetFyCtrl 类)随 P2/P3 元件扩展;
|
||||
* - 工程量↔码值换算系数暂为 1(L1-5 标定未实现,同 phasor 层口径)。
|
||||
*
|
||||
* 线程约定:init 内核启动前;eval/run 仅保护消费者任务上下文(P1 阶段 = 单测;
|
||||
* 板端接线随 protectTask 立项,走栈预算 + IWDG 心跳门禁)。
|
||||
* 线程约定:init 内核启动前或保护消费者任务上下文;eval/run 仅保护消费者任务
|
||||
* 上下文(B5 起 = protectTask);request_reset 任意上下文(跨上下文复归请求,
|
||||
* 如 104 遥控 YK11 在 iec104Task 落请求、下一拍 eval 头部消费)。板端接线
|
||||
* 走栈预算 + IWDG 心跳门禁。
|
||||
*
|
||||
* 创建日期:2026-10-11
|
||||
*/
|
||||
@@ -50,9 +52,18 @@ typedef struct {
|
||||
|
||||
/*
|
||||
* 函数功能:复位全部元件状态(定值不动;幂等,内核启动前可调)
|
||||
* 限定条件:内核启动前,或保护消费者任务上下文(跨上下文请用 request_reset)
|
||||
*/
|
||||
void prot_elm_init(void);
|
||||
|
||||
/*
|
||||
* 函数功能:登记"复归元件状态"请求(任意上下文安全,单字标志)
|
||||
* 函数说明:下一拍 prot_elm_eval() 头部消费并执行 prot_elm_init()。
|
||||
* 104 遥控 YK11(iec104Task 上下文)必须走本接口,不得直接调
|
||||
* prot_elm_init()(会与 protectTask 的 eval 竞态)。
|
||||
*/
|
||||
void prot_elm_request_reset(void);
|
||||
|
||||
/*
|
||||
* 函数功能:纯判据步进——按当前定值(prot_set RAM)+ 给定测量值推进所有元件
|
||||
* 入口参数:now_ms - 单调时基(tick ms,回绕安全:差值法)
|
||||
|
||||
Reference in New Issue
Block a user