From 302aa82e380ad4da868eb3ff71e27655a9ed3266 Mon Sep 17 00:00:00 2001 From: Huamonarch Date: Wed, 13 May 2026 14:47:35 +0800 Subject: [PATCH] docs: add valve_pair jitter/over-delay fault simulation params delay_jitter_ms for natural timing variation, delay_over_prob/delay_over_ms for simulating occasional valve timeout faults (e.g. once per day). --- ...6-05-13-rng-parameterized-models-design.md | 53 ++++++++++++++----- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/docs/superpowers/specs/2026-05-13-rng-parameterized-models-design.md b/docs/superpowers/specs/2026-05-13-rng-parameterized-models-design.md index e36435e..1d46b0e 100644 --- a/docs/superpowers/specs/2026-05-13-rng-parameterized-models-design.md +++ b/docs/superpowers/specs/2026-05-13-rng-parameterized-models-design.md @@ -36,7 +36,7 @@ t 为时间索引,从进程启动起每周期(~20ms)递增。 | `bool_random` | 随机 0/1,可配置为 1 的概率 | prob_true (default 0.5) | | `bool_toggle` | 固定周期 0/1 翻转 | period_ms | | `bool_csv` | CSV 数据回放(int 列) | file, column | -| `valve_pair` | 跟随另一个信号,加延迟/闪断 | on_delay_ms, off_delay_ms, flash_prob | +| `valve_pair` | 跟随另一个信号,加延迟/闪断/抖动/超时 | on_delay_ms, off_delay_ms, delay_jitter_ms, flash_prob, delay_over_prob, delay_over_ms | ### spike 毛刺行为 @@ -53,19 +53,46 @@ t 为时间索引,从进程启动起每周期(~20ms)递增。 不模拟动作信号本身,而是通过模型名引用另一个信号(如 `bool_toggle`)的当前值,模拟传感器对动作的响应延迟。 -``` -动作信号 A (如 toggle_2s): -t: 0 1 2 3 4 5 6 7 8 9 - 0────1──────────────────────────────0────────── +参数说明: -到位传感器 B (valve_px_std:toggle_2s): - 0─────────1────────────────────0───1──0──────── - ↑ on_delay=200ms ↑闪断(2%) ↑ off_delay=150ms +| 参数 | 含义 | 默认值 | +|------|------|--------| +| `on_delay_ms` | 阀开到位延迟(ms),信号 0→1 后传感器多久变 1 | 必填 | +| `off_delay_ms` | 阀关到位延迟(ms),信号 1→0 后传感器多久变 0 | 必填 | +| `delay_jitter_ms` | 延迟抖动范围,实际延迟 = delay ± random(0, jitter) | 0 | +| `flash_prob` | 高电平期间每周期出现闪断的概率 | 0 | +| `delay_over_prob` | 每次阀动作时触发超时的概率(on/off 独立判断) | 0 | +| `delay_over_ms` | 超时时的延迟值,替代正常延迟 | 0 | + +正常时序(无超时,有抖动): + +``` +动作信号 A: + ────────────┐ ┌──────────────── + │ │ + ├── on_delay ──→ ├── off_delay ──→ +传感器 B: │ ±jitter │ ±jitter + ────────────┘ └──────────────── + └─ 阀芯移动 ──→ └─ 阀芯复位 ──→ ``` -- B 在 A 变为 1 后延迟 `on_delay_ms` 才变为 1 -- B 在 A 变为 0 后延迟 `off_delay_ms` 才变为 0 -- B 在高电平期间有 `flash_prob` 概率出现短暂闪断(单周期归零后自动恢复) +超时场景(delay_over_prob 触发时): + +``` +动作信号 A: + ────────────┐ + │ + ├──────── on_delay_over (4000ms) ────────→ 正常 off_delay +传感器 B: │ ┌────── ... + ────────────┘ │ + └── 超时! 远超正常范围 +``` + +- 每次 A 跳变时(0→1 或 1→0),以 `delay_over_prob` 概率独立判断是否超时 +- 超时时延迟 = `delay_over_ms`,未超时时延迟 = `delay_ms` ± random(0, `delay_jitter_ms`) +- 闪断:高电平期间以 `flash_prob` 概率单周期归零后自动恢复 +- `delay_over_prob = 0` = 永不超时;`delay_jitter_ms = 0` = 无抖动 +- on 和 off 方向各自由各自概率独立触发超时 配对方式:B 的 `tables[1]` = `valve_px_std:toggle_2s`,其中 `toggle_2s` 是 A 的模型名。运行时通过模型名查找动作信号的 IModel 实例。 @@ -91,8 +118,8 @@ t: 0 1 2 3 4 5 6 7 8 9 "toggle_2s": { "mode": "bool_toggle", "params": { "period_ms": 2000 } }, "toggle_5s": { "mode": "bool_toggle", "params": { "period_ms": 5000 } }, "toggle_10s": { "mode": "bool_toggle", "params": { "period_ms": 10000 } }, - "valve_px_std": { "mode": "valve_pair", "params": { "on_delay_ms": 200, "off_delay_ms": 150, "flash_prob": 0.02 } }, - "valve_px_fast": { "mode": "valve_pair", "params": { "on_delay_ms": 80, "off_delay_ms": 60, "flash_prob": 0.01 } } + "valve_px_std": { "mode": "valve_pair", "params": { "on_delay_ms": 200, "off_delay_ms": 150, "delay_jitter_ms": 20, "flash_prob": 0.02, "delay_over_prob": 0.0001, "delay_over_ms": 4000 } }, + "valve_px_fast": { "mode": "valve_pair", "params": { "on_delay_ms": 80, "off_delay_ms": 60, "delay_jitter_ms": 10, "flash_prob": 0.01, "delay_over_prob": 0, "delay_over_ms": 0 } } } } ```