Skip to content

Redstone Control_CN

MIAOKATZE edited this page Jul 12, 2026 · 2 revisions

红石控制系统

1. 红石模式概览

无线能量监视器(MTEWirelessEnergyMonitor)提供 5 种红石输出模式,可在 GUI 中切换。模式编号、判定逻辑与参数依赖如下表所示:

模式编号 名称 判定逻辑
0 关闭(Off) 不输出红石信号
1 高电平(High) 电量 > 参数1 时输出信号
2 低电平(Low) 电量 < 参数1 时输出信号
3 正向滞后(High-Hysteresis) >参数1 输出,必须 <参数2 才取消
4 反向滞后(Low-Hysteresis) <参数2 输出,必须 >参数1 才取消

**设计说明:**模式 0 直接关闭红石输出;模式 1/2 为单阈值比较;模式 3/4 引入双阈值滞后区间,避免在阈值附近反复跳变(红石抖动)。

2. 参数说明

红石模式 1~4 依赖 参数1参数2 两个阈值。参数支持负数,输入后通过 Math.round 四舍五入为整数参与判定。

输入框与调整按钮

  • **输入框:**200×17 像素,使用 ScientificTextFieldWidget(科学记数法文本框)
  • 4 个调整按钮:
    • **-(减最高位):**步长 = 10floor(log10(abs(value)))
    • **+(加最高位):**步长同上
    • **×(×10):**当前值乘以 10
    • **÷(÷10):**当前值除以 10
  • **容错:**输入非法时抛出 NumberFormatException,由 GUI 捕获并忽略,不写入参数

步长说明:"减/加最高位" 按钮的步长根据当前值的数量级动态计算,例如值为 12345 时步长为 104=10000,按下 - 后变为 2345。这种设计便于大数值的快速调整。

3. 锚定模式

红石判定基于 锚定值(anchor value),共 3 种锚定模式可选:

锚定模式 数据类型 取值来源
0 = 电网电量 BigInteger getWirelessEU()
1 = 平均 EU/t double → long Math.round(euPerTick)
2 = 实时 EU/t double → long Math.round(realtimeEuPerTick)
  • GUI 中提供 3 个锚定按钮,选中时显示 =,未选中显示 <
  • setAnchorMode 会将传入值钳制到 [0, 2] 区间,防止越界
  • 切换锚定模式后,红石判定立即基于新锚定值进行

4. 输出特性

特性 说明
输出强度 输出时为 15,不输出时为 0
红石检测间隔 2 ticks(0.1 秒),常量 REDSTONE_CHECK_INTERVAL = 2L
状态变化通知 状态变化时通知 6 个面(6 sides)
时间戳独立 红石输出与 UI 更新使用独立的时间戳,互不阻塞

**独立时间戳说明:**红石逻辑每 2 tick 检测一次,而 UI 刷新频率不同。两者分离确保红石响应迅速(0.1 秒级),同时 UI 更新不会拖慢红石判定。

5. 滞后状态机

模式 3 与模式 4 引入双阈值滞后(Hysteresis)机制,避免锚定值在阈值附近抖动导致红石频繁切换。

模式 3(正向滞后)状态机

  • **初始:**不输出
  • **进入输出:**锚定值 > 参数1 → 输出
  • **退出输出:**输出后,锚定值 < 参数2 → 取消输出
  • **滞后区间:**当 参数1 > 参数2 时形成滞后区间,区间内维持原状态

模式 4(反向滞后)状态机

  • **初始:**不输出
  • **进入输出:**锚定值 < 参数2 → 输出
  • **退出输出:**输出后,锚定值 > 参数1 → 取消输出

逻辑统一说明:getGeneralRS(用于 GUI 预览/查询)与 updateRedstoneOutput(用于实际红石输出更新)此前逻辑不一致,已统一为同一套滞后判定逻辑,确保 GUI 预览与实际输出行为完全一致。

6. 重载延迟

当电网发生 **长时重载(> 10 秒)**触发冷启动时,红石输出会启用一段缓冲期,避免数据集清空期间红石中断造成外部系统误判。

  • **缓冲时长:**600 ticks(30 秒),redstoneReloadDelay = 600
  • **递减机制:**每 tick 递减 1,直至归零
  • **缓冲期间:**维持 mSidedRedstone[] 缓存,红石输出不中断
  • **显示提示:**缓冲期间显示"重载计算中,红石逻辑维持"

**设计目的:**冷启动期间数据集不足,EU/t 无法准确计算,若直接清空红石输出可能导致外接的红石报警系统误报。30 秒缓冲为数据集重新积累提供时间窗口。

7. 配图引用

无线能量监视器 GUI 界面(含红石模式与参数配置区域):

无线能量监视器 GUI 界面

Clone this wiki locally