From c0a46c7bef5439c3a1986eedd7cb99b2c8fc8a46 Mon Sep 17 00:00:00 2001 From: Michal Tuszowski Date: Mon, 20 Oct 2025 18:32:08 +0200 Subject: [PATCH] 1.14 --- nucleares_monitor/control_board_monitor.py | 245 +- nucleares_monitor/mon.json | 877 ++++++++ nucleares_monitor/stab_ion.json | 2362 ++++++++++++++++++++ 3 files changed, 3422 insertions(+), 62 deletions(-) create mode 100644 nucleares_monitor/mon.json create mode 100644 nucleares_monitor/stab_ion.json diff --git a/nucleares_monitor/control_board_monitor.py b/nucleares_monitor/control_board_monitor.py index 561c997..9d095f3 100644 --- a/nucleares_monitor/control_board_monitor.py +++ b/nucleares_monitor/control_board_monitor.py @@ -38,6 +38,7 @@ try: import matplotlib as mpl mpl.rcParams["path.simplify"] = True mpl.rcParams["agg.path.chunksize"] = 10000 + PLOT_SCALE = -200 except Exception: HAS_MPL = False @@ -50,7 +51,7 @@ SERVER_HOST: str = "localhost" SERVER_PORT: int = 8785 REFRESH_INTERVAL_S: int = 1 REQUEST_TIMEOUT_S: float = 5.0 -USER_AGENT: str = "ControlBoardMonitor/1.10 (+tkinter)" +USER_AGENT: str = "ControlBoardMonitor/1.14 (+tkinter)" # Fallback defaults (extracted from your HTML) DEFAULT_VARS: List[str] = ['ALARMS_ACTIVE', 'AMBIENT_TEMPERATURE', 'CHEM_BORON_DOSAGE_ACTUAL', 'CHEM_BORON_DOSAGE_ORDERED', 'CHEM_BORON_FILTER_ACTUAL', 'CHEM_BORON_FILTER_ORDERED', 'CHEM_BORON_PPM', 'CHEM_TRUCK_CONNECTED', 'CHEM_TRUCK_IN_ZONE', 'CHEMICAL_CLEANING_PUMP_DRY_STATUS', 'CHEMICAL_CLEANING_PUMP_OVERLOAD_STATUS', 'CHEMICAL_CLEANING_PUMP_STATUS', 'CHEMICAL_DOSING_PUMP_DRY_STATUS', 'CHEMICAL_DOSING_PUMP_OVERLOAD_STATUS', 'CHEMICAL_DOSING_PUMP_STATUS', 'CHEMICAL_FILTER_PUMP_DRY_STATUS', 'CHEMICAL_FILTER_PUMP_OVERLOAD_STATUS', 'CHEMICAL_FILTER_PUMP_STATUS', 'CONDENSER_CIRCULATION_PUMP_ACTIVE', 'CONDENSER_CIRCULATION_PUMP_ORDERED_SPEED', 'CONDENSER_CIRCULATION_PUMP_OVERLOAD_STATUS', 'CONDENSER_CIRCULATION_PUMP_SPEED', 'CONDENSER_CIRCULATION_PUMP_SWITCH', 'CONDENSER_CONDENSATE_FLOW_RATE', 'CONDENSER_COOLANT_EVAPORATED', 'CONDENSER_EXTRACTION_FLOW_RATE', 'CONDENSER_PRESSURE', 'CONDENSER_TEMPERATURE', 'CONDENSER_VACUUM', 'CONDENSER_VACUUM_PUMP_ACTIVE', 'CONDENSER_VACUUM_PUMP_MODE', 'CONDENSER_VACUUM_PUMP_POWER', 'CONDENSER_VACUUM_RELIEF_VALVE_OPENING', 'CONDENSER_VAPOR_VOLUME', 'CONDENSER_VOLUME', 'COOLANT_CORE_CIRCULATION_PUMP_0_CAPACITY', 'COOLANT_CORE_CIRCULATION_PUMP_0_DRY_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_0_ORDERED_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_0_OVERLOAD_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_0_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_0_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_1_CAPACITY', 'COOLANT_CORE_CIRCULATION_PUMP_1_DRY_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_1_ORDERED_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_1_OVERLOAD_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_1_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_1_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_2_CAPACITY', 'COOLANT_CORE_CIRCULATION_PUMP_2_DRY_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_2_ORDERED_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_2_OVERLOAD_STATUS', 'COOLANT_CORE_CIRCULATION_PUMP_2_SPEED', 'COOLANT_CORE_CIRCULATION_PUMP_2_STATUS', 'COOLANT_CORE_FLOW_IN', 'COOLANT_CORE_FLOW_ORDERED_SPEED', 'COOLANT_CORE_FLOW_OUT', 'COOLANT_CORE_FLOW_REACHED_SPEED', 'COOLANT_CORE_FLOW_SPEED', 'COOLANT_CORE_MAX_PRESSURE', 'COOLANT_CORE_PRESSURE', 'COOLANT_CORE_PRIMARY_LOOP_LEVEL', 'COOLANT_CORE_QUANTITY_CIRCULATION_PUMPS_PRESENT', 'COOLANT_CORE_QUANTITY_FREIGHT_PUMPS_PRESENT', 'COOLANT_CORE_QUANTITY_IN_VESSEL', 'COOLANT_CORE_STATE', 'COOLANT_CORE_VESSEL_TEMPERATURE', 'COOLANT_SEC_0_LIQUID_VOLUME', 'COOLANT_SEC_0_PRESSURE', 'COOLANT_SEC_0_TEMPERATURE', 'COOLANT_SEC_0_VOLUME', 'COOLANT_SEC_1_LIQUID_VOLUME', 'COOLANT_SEC_1_PRESSURE', 'COOLANT_SEC_1_TEMPERATURE', 'COOLANT_SEC_1_VOLUME', 'COOLANT_SEC_2_LIQUID_VOLUME', 'COOLANT_SEC_2_PRESSURE', 'COOLANT_SEC_2_TEMPERATURE', 'COOLANT_SEC_2_VOLUME', 'COOLANT_SEC_CIRCULATION_PUMP_0_CAPACITY', 'COOLANT_SEC_CIRCULATION_PUMP_0_DRY_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_0_ORDERED_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_0_OVERLOAD_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_0_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_0_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_1_CAPACITY', 'COOLANT_SEC_CIRCULATION_PUMP_1_DRY_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_1_ORDERED_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_1_OVERLOAD_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_1_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_1_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_2_CAPACITY', 'COOLANT_SEC_CIRCULATION_PUMP_2_DRY_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_2_ORDERED_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_2_OVERLOAD_STATUS', 'COOLANT_SEC_CIRCULATION_PUMP_2_SPEED', 'COOLANT_SEC_CIRCULATION_PUMP_2_STATUS', 'CORE_BAY_1_HATCH_OPEN', 'CORE_BAY_1_STATE', 'CORE_BAY_2_HATCH_OPEN', 'CORE_BAY_2_STATE', 'CORE_BAY_3_HATCH_OPEN', 'CORE_BAY_3_STATE', 'CORE_BAY_4_HATCH_OPEN', 'CORE_BAY_4_STATE', 'CORE_BAY_5_HATCH_OPEN', 'CORE_BAY_5_STATE', 'CORE_BAY_6_HATCH_OPEN', 'CORE_BAY_6_STATE', 'CORE_BAY_7_HATCH_OPEN', 'CORE_BAY_7_STATE', 'CORE_BAY_8_HATCH_OPEN', 'CORE_BAY_8_STATE', 'CORE_BAY_9_HATCH_OPEN', 'CORE_BAY_9_STATE', 'CORE_CRITICAL_MASS_REACHED', 'CORE_CRITICAL_MASS_REACHED_COUNTER', 'CORE_EXTERNAL_COOLANT_RESERVOIR_VOLUME', 'CORE_FACTOR', 'CORE_FACTOR_CHANGE', 'CORE_FUEL_1_FISSIONABLE', 'CORE_FUEL_1_POWER_FACTOR', 'CORE_FUEL_1_TEMPERATURE', 'CORE_FUEL_2_FISSIONABLE', 'CORE_FUEL_2_POWER_FACTOR', 'CORE_FUEL_2_TEMPERATURE', 'CORE_FUEL_3_FISSIONABLE', 'CORE_FUEL_3_POWER_FACTOR', 'CORE_FUEL_3_TEMPERATURE', 'CORE_FUEL_4_FISSIONABLE', 'CORE_FUEL_4_POWER_FACTOR', 'CORE_FUEL_4_TEMPERATURE', 'CORE_FUEL_5_FISSIONABLE', 'CORE_FUEL_5_POWER_FACTOR', 'CORE_FUEL_5_TEMPERATURE', 'CORE_FUEL_6_FISSIONABLE', 'CORE_FUEL_6_POWER_FACTOR', 'CORE_FUEL_6_TEMPERATURE', 'CORE_FUEL_7_FISSIONABLE', 'CORE_FUEL_7_POWER_FACTOR', 'CORE_FUEL_7_TEMPERATURE', 'CORE_FUEL_8_FISSIONABLE', 'CORE_FUEL_8_POWER_FACTOR', 'CORE_FUEL_8_TEMPERATURE', 'CORE_FUEL_9_FISSIONABLE', 'CORE_FUEL_9_POWER_FACTOR', 'CORE_FUEL_9_TEMPERATURE', 'CORE_FUEL_AVG_FISSIONABLE', 'CORE_FUEL_AVG_POWER_FACTOR', 'CORE_FUEL_AVG_TEMPERATURE', 'CORE_HIGH_STEAM_PRESENT', 'CORE_IMMINENT_FUSION', 'CORE_INTEGRITY', 'CORE_IODINE_CUMULATIVE', 'CORE_IODINE_GENERATION', 'CORE_OPERATION_MODE', 'CORE_POOL_COOLANT_TANK_VOLUME', 'CORE_POOL_PUMP', 'CORE_PRESSURE', 'CORE_PRESSURE_MAX', 'CORE_PRESSURE_OPERATIVE', 'CORE_PRIMARY_CIRCUIT_COOLING_TANK_VOLUME', 'CORE_READY_FOR_START', 'CORE_STATE', 'CORE_STATE_CRITICALITY', 'CORE_STEAM_PRESENT', 'CORE_TEMP', 'CORE_TEMP_MAX', 'CORE_TEMP_MIN', 'CORE_TEMP_OPERATIVE', 'CORE_TEMP_RESIDUAL', 'CORE_WEAR', 'CORE_XENON_CUMULATIVE', 'CORE_XENON_GENERATION', 'EMERGENCY_BATTERIES_MODE', 'EMERGENCY_BATTERIES_POWER_OUTPUT_KW', 'EMERGENCY_GENERATOR_1_FUEL', 'EMERGENCY_GENERATOR_1_MAINTENANCE_NEEDED', 'EMERGENCY_GENERATOR_1_MODE', 'EMERGENCY_GENERATOR_1_PRESSURIZER', 'EMERGENCY_GENERATOR_1_STATUS', 'EMERGENCY_GENERATOR_2_FUEL', 'EMERGENCY_GENERATOR_2_MAINTENANCE_NEEDED', 'EMERGENCY_GENERATOR_2_MODE', 'EMERGENCY_GENERATOR_2_PRESSURIZER', 'EMERGENCY_GENERATOR_2_STATUS', 'EMERGENCY_GENERATOR_POWER_OUTPUT_KW', 'FREIGHT_PUMP_CONDENSER_ACTIVE', 'FREIGHT_PUMP_CONDENSER_SWITCH', 'FREIGHT_PUMP_EXTERNAL_ACTIVE', 'FREIGHT_PUMP_EXTERNAL_SWITCH', 'FREIGHT_PUMP_FEEDWATER_ACTIVE', 'FREIGHT_PUMP_FEEDWATER_SWITCH', 'FREIGHT_PUMP_INTERNAL_ACTIVE', 'FREIGHT_PUMP_INTERNAL_SWITCH', 'FUN_IS_ENABLED', 'GAME_DIFFICULTY', 'GAME_SIM_SPEED', 'GAME_VERSION', 'GENERATOR_0_A', 'GENERATOR_0_BREAKER', 'GENERATOR_0_HERTZ', 'GENERATOR_0_KW', 'GENERATOR_0_V', 'GENERATOR_1_A', 'GENERATOR_1_BREAKER', 'GENERATOR_1_HERTZ', 'GENERATOR_1_KW', 'GENERATOR_1_V', 'GENERATOR_2_A', 'GENERATOR_2_BREAKER', 'GENERATOR_2_HERTZ', 'GENERATOR_2_KW', 'GENERATOR_2_V', 'INSTALLED_LOOPS_JSON', 'INVENTORY_HTML', 'MAINTENANCE_REPORT_HTML', 'MSCV_0_OPENING_ACTUAL', 'MSCV_1_OPENING_ACTUAL', 'MSCV_2_OPENING_ACTUAL', 'POWER_DEMAND_MW', 'POWER_FROM_EXTERNAL_KW', 'POWER_FROM_TURBINE_KW', 'POWER_MAX_THEORETICAL_FINAL_PLANT_OUTPUT_MW', 'POWER_MAX_THEORETICAL_PLANT_OUTPUT_MW', 'RES_ABSORPTION_CAPACITY_MW', 'RES_DIVERT_SURPLUS_FROM_MW', 'RES_EFFECTIVELY_DERIVED_ENERGY_MW', 'RESISTOR_BANK_01_SWITCH', 'RESISTOR_BANK_02_SWITCH', 'RESISTOR_BANK_03_SWITCH', 'RESISTOR_BANK_04_SWITCH', 'RESISTOR_BANKS_JSON', 'RESISTOR_BANKS_MAIN_SWITCH', 'ROD_BANK_POS_0_ACTUAL', 'ROD_BANK_POS_0_ORDERED', 'ROD_BANK_POS_1_ACTUAL', 'ROD_BANK_POS_1_ORDERED', 'ROD_BANK_POS_2_ACTUAL', 'ROD_BANK_POS_2_ORDERED', 'ROD_BANK_POS_3_ACTUAL', 'ROD_BANK_POS_3_ORDERED', 'ROD_BANK_POS_4_ACTUAL', 'ROD_BANK_POS_4_ORDERED', 'ROD_BANK_POS_5_ACTUAL', 'ROD_BANK_POS_5_ORDERED', 'ROD_BANK_POS_6_ACTUAL', 'ROD_BANK_POS_6_ORDERED', 'ROD_BANK_POS_7_ACTUAL', 'ROD_BANK_POS_7_ORDERED', 'ROD_BANK_POS_8_ACTUAL', 'ROD_BANK_POS_8_ORDERED', 'RODS_ALIGNED', 'RODS_DEFORMED', 'RODS_MAX_TEMPERATURE', 'RODS_MOVEMENT_SPEED', 'RODS_MOVEMENT_SPEED_DECREASED_HIGH_TEMPERATURE', 'RODS_POS_ACTUAL', 'RODS_POS_ORDERED', 'RODS_POS_REACHED', 'RODS_QUANTITY', 'RODS_STATUS', 'RODS_TEMPERATURE', 'STEAM_EJECTOR_CONDENSER_RETURN_VALVE_ACTUAL', 'STEAM_EJECTOR_CONDENSER_RETURN_VALVE_ORDERED', 'STEAM_EJECTOR_MOTIVE', 'STEAM_EJECTOR_OPERATIONAL_MOTIVE_VALVE_ACTUAL', 'STEAM_EJECTOR_OPERATIONAL_MOTIVE_VALVE_ORDERED', 'STEAM_EJECTOR_STARTUP_MOTIVE_VALVE_ACTUAL', 'STEAM_EJECTOR_STARTUP_MOTIVE_VALVE_ORDERED', 'STEAM_GEN_0_BOILING_POINT', 'STEAM_GEN_0_EVAPORATED', 'STEAM_GEN_0_INLET', 'STEAM_GEN_0_OUTLET', 'STEAM_GEN_0_RETURN_FLOW_PLUS_CONDENSED', 'STEAM_GEN_0_STATUS', 'STEAM_GEN_0_VENT_SWITCH', 'STEAM_GEN_1_BOILING_POINT', 'STEAM_GEN_1_EVAPORATED', 'STEAM_GEN_1_INLET', 'STEAM_GEN_1_OUTLET', 'STEAM_GEN_1_RETURN_FLOW_PLUS_CONDENSED', 'STEAM_GEN_1_STATUS', 'STEAM_GEN_1_VENT_SWITCH', 'STEAM_GEN_2_BOILING_POINT', 'STEAM_GEN_2_EVAPORATED', 'STEAM_GEN_2_INLET', 'STEAM_GEN_2_OUTLET', 'STEAM_GEN_2_RETURN_FLOW_PLUS_CONDENSED', 'STEAM_GEN_2_STATUS', 'STEAM_GEN_2_VENT_SWITCH', 'STEAM_TURBINE_0_BYPASS_ACTUAL', 'STEAM_TURBINE_0_INSTALLED', 'STEAM_TURBINE_0_PRESSURE', 'STEAM_TURBINE_0_RPM', 'STEAM_TURBINE_0_TEMPERATURE', 'STEAM_TURBINE_0_TORQUE', 'STEAM_TURBINE_1_BYPASS_ACTUAL', 'STEAM_TURBINE_1_INSTALLED', 'STEAM_TURBINE_1_PRESSURE', 'STEAM_TURBINE_1_RPM', 'STEAM_TURBINE_1_TEMPERATURE', 'STEAM_TURBINE_1_TORQUE', 'STEAM_TURBINE_2_BYPASS_ACTUAL', 'STEAM_TURBINE_2_INSTALLED', 'STEAM_TURBINE_2_PRESSURE', 'STEAM_TURBINE_2_RPM', 'STEAM_TURBINE_2_TEMPERATURE', 'STEAM_TURBINE_2_TORQUE', 'TIME', 'TIME_DAY', 'TIME_STAMP', 'VACUUM_RETENTION_TANK_PRESSURE', 'VACUUM_RETENTION_TANK_VOLUME', 'VALVE_M01_OPEN', 'VALVE_M02_OPEN', 'VALVE_M03_OPEN', 'VALVE_PANEL_JSON', 'WEATHER_FORECAST_JSON', 'WEBSERVER_BATCH_GET', 'WEBSERVER_LIST_VARIABLES', 'WEBSERVER_LIST_VARIABLES_JSON', 'WEBSERVER_VIEW_VARIABLES'] @@ -217,6 +218,36 @@ def detect_batch_payload_type(body: str) -> str: except Exception: pass return "unknown" +def eval_threshold_expr(expr: str, + stats_x: Optional[dict], + stats_y: Optional[dict], + stats_z: Optional[dict]) -> Optional[float]: + """ + Eval progu z dostępem do: x, x_avg, dx, dx_avg, y, y_avg, dy, dy_avg, z, z_avg, dz, dz_avg. + Zwraca float albo None przy błędzie. + """ + if not expr: + return None + + env: dict = {} + def push(prefix: str, d: Optional[dict]): + if not d: + return + env[prefix] = d.get("x") + env[f"{prefix}_avg"] = d.get("x_avg") + env[f"d{prefix}"] = d.get("dx") + env[f"d{prefix}_avg"] = d.get("dx_avg") + + push("x", stats_x) + push("y", stats_y) + push("z", stats_z) + + try: + # jeżeli masz już safe_eval w kodzie – użyj go; inaczej zwykły eval bez builtins + val = safe_eval(expr, env) if 'safe_eval' in globals() else eval(expr, {"__builtins__": {}}, env) + return float(val) + except Exception: + return None # ===================== # Data model @@ -270,6 +301,12 @@ class Thresholds: expr_x_source_operating: str = "raw" expr_x_source_high: str = "raw" expr_x_source_extreme_high: str = "raw" + # Optional expressions for dynamic thresholds (override numeric constants if provided) + expr_thr_dead_low: Optional[str] = None + expr_thr_low: Optional[str] = None + expr_thr_high: Optional[str] = None + expr_thr_extreme_high: Optional[str] = None + @dataclass class VarInfo: @@ -498,7 +535,7 @@ class Poller(threading.Thread): class App(tk.Tk): def __init__(self) -> None: super().__init__() - self.title("Control Board Monitor — v1.10") + self.title("Control Board Monitor — v1.14") self.geometry("1280x860") # Canonical registry: lower-case key -> VarInfo @@ -1095,8 +1132,8 @@ class App(tk.Tk): continue # ostatnie 100 próbek - vals = list(vi.history)[-100:] if hasattr(vi, "history") else [] - dels = list(vi.history_delta)[-100:] if hasattr(vi, "history_delta") else [] + vals = list(vi.history)[PLOT_SCALE:] if hasattr(vi, "history") else [] + dels = list(vi.history_delta)[PLOT_SCALE:] if hasattr(vi, "history_delta") else [] # --- GÓRNY wykres: linia --- xs_v = list(range(len(vals))) @@ -1494,11 +1531,29 @@ class App(tk.Tk): # Bottom bar btns = ttk.Frame(dlg); btns.pack(fill=tk.X, padx=10, pady=10) def do_save(): + def _parse_threshold_field(var_or_entry) -> tuple[Optional[float], Optional[str]]: + # Przyjmujemy tk.StringVar / tk.Entry / str + if hasattr(var_or_entry, "get"): + s = var_or_entry.get().strip() + else: + s = str(var_or_entry).strip() + if s == "": + return None, None + try: + return float(s), None + except Exception: + # potraktuj jako wyrażenie (np. "x_avg - 5") + return None, s + + # UŻYJ POPRAWNYCH ZMIENNYCH: + dead_val, dead_expr = _parse_threshold_field(dead_low_var) + low_val, low_expr = _parse_threshold_field(low_var) + high_val, high_expr = _parse_threshold_field(high_var) + ext_val, ext_expr = _parse_threshold_field(extreme_high_var) nt = Thresholds( - dead_low=parse_first_float(dead_low_var.get() or None), - low=parse_first_float(low_var.get() or None), - high=parse_first_float(high_var.get() or None), - extreme_high=parse_first_float(extreme_high_var.get() or None), + dead_low=dead_val, low=low_val, high=high_val, extreme_high=ext_val, + expr_thr_dead_low=dead_expr, expr_thr_low=low_expr, + expr_thr_high=high_expr, expr_thr_extreme_high=ext_expr, alarm_dead_low=bool(alarm_dead_low.get()), alarm_low=bool(alarm_low.get()), alarm_high=bool(alarm_high.get()), @@ -1553,6 +1608,29 @@ class App(tk.Tk): x = parse_first_float(value) t = vi.thresholds + # Dynamic thresholds + stats_x = self.get_stats_for(vi.key) + stats_y = self.get_stats_for(getattr(t, "y_source", None)) + stats_z = self.get_stats_for(getattr(t, "z_source", None)) + + thr_dead = t.dead_low + thr_low = t.low + thr_high = t.high + thr_ext = t.extreme_high + + if t.expr_thr_dead_low: + v = eval_threshold_expr(t.expr_thr_dead_low, stats_x, stats_y, stats_z) + if v is not None: thr_dead = v + if t.expr_thr_low: + v = eval_threshold_expr(t.expr_thr_low, stats_x, stats_y, stats_z) + if v is not None: thr_low = v + if t.expr_thr_high: + v = eval_threshold_expr(t.expr_thr_high, stats_x, stats_y, stats_z) + if v is not None: thr_high = v + if t.expr_thr_extreme_high: + v = eval_threshold_expr(t.expr_thr_extreme_high, stats_x, stats_y, stats_z) + if v is not None: thr_ext = v + # Auto-defaults based on current value if thresholds are empty cur = parse_first_float(vi.last_value) auto_defaults = {} @@ -1567,13 +1645,14 @@ class App(tk.Tk): prev = vi.last_state state = "UNKNOWN" - if x is None or (t.low is None and t.high is None and t.dead_low is None and t.extreme_high is None): - state = "OPERATING" + no_thr = all(v is None for v in (thr_dead, thr_low, thr_high, thr_ext)) + if x is None or no_thr: + state = "OPERATING" else: - dl = t.dead_low if t.dead_low is not None else -float("inf") - lo = t.low if t.low is not None else -float("inf") - hi = t.high if t.high is not None else float("inf") - ex = t.extreme_high if t.extreme_high is not None else float("inf") + dl = thr_dead if thr_dead is not None else -float("inf") + lo = thr_low if thr_low is not None else -float("inf") + hi = thr_high if thr_high is not None else float("inf") + ex = thr_ext if thr_ext is not None else float("inf") if x < dl: state = "DEAD_LOW" @@ -1794,45 +1873,75 @@ class App(tk.Tk): pass return tag - def _state_color(self, vi: VarInfo, x: Optional[float]) -> str: + def _state_color(self, vi, x_value=None) -> str: + """Kolor tła w hex w oparciu o progi (także dynamiczne). + Bezpiecznie obsługuje brak wartości x (None).""" + # --- efektywne progi (uwzględniają expr_thr_*) --- t = vi.thresholds - # Auto-defaults based on current value if thresholds are empty - cur = parse_first_float(vi.last_value) - auto_defaults = {} - if cur is not None: - auto_defaults = { - "dead_low": round(cur * 0.8, 6), - "low": round(cur * 0.9, 6), - "high": round(cur * 1.1, 6), - "extreme_high": round(cur * 1.2, 6), - } + stats_x = self.get_stats_for(vi.key) + stats_y = self.get_stats_for(getattr(t, "y_source", None)) + stats_z = self.get_stats_for(getattr(t, "z_source", None)) + def _eff(thr_num, thr_expr): + if thr_expr: + v = eval_threshold_expr(thr_expr, stats_x, stats_y, stats_z) + if v is not None: + return v + return thr_num + + thr_dead = _eff(getattr(t, "dead_low", None), getattr(t, "expr_thr_dead_low", None)) + thr_low = _eff(getattr(t, "low", None), getattr(t, "expr_thr_low", None)) + thr_high = _eff(getattr(t, "high", None), getattr(t, "expr_thr_high", None)) + thr_ext = _eff(getattr(t, "extreme_high", None), getattr(t, "expr_thr_extreme_high", None)) + + # --- x może być None (np. świeży monitor / brak liczby w payloadzie) --- + try: + x = float(x_value) if x_value is not None else parse_first_float(vi.last_value) + except Exception: + x = None if x is None: - return "#f5f7fb" - def ci(v): return max(0, min(255, int(v))) - if t.low is not None and t.high is not None and t.dead_low is not None and t.extreme_high is not None: - if x < t.dead_low: - return "#FFC266" - elif x < t.low: - span = max(1e-9, t.low - t.dead_low) - frac = 1.0 - (x - t.dead_low) / span - r = 255 - g = 248 - frac * (248 - 226) - b = 204 - frac * (204 - 138) - return f"#{ci(r):02X}{ci(g):02X}{ci(b):02X}" - elif x < t.high: - return "#E6F5E6" - elif x < t.extreme_high: - span = max(1e-9, t.extreme_high - t.high) - frac = (x - t.high) / span - r = 255 - g = 214 - frac * (214 - 158) - b = 214 - frac * (214 - 158) - return f"#{ci(r):02X}{ci(g):02X}{ci(b):02X}" - else: - return "#FF6B6B" - return "#E6F5E6" + # neutralny szary – brak danych + return "#E9ECEF" + + # --- fallback progów kiedy część jest pusta --- + if thr_dead is None: + thr_dead = -float("inf") + if thr_low is None and thr_high is None: + # brak LOW/HIGH -> otocz x wąskim korytarzem, by dać 'zielony' + thr_low, thr_high = x - 1e-6, x + 1e-6 + if thr_low is None: + thr_low = thr_dead if thr_dead != -float("inf") else (x - 1e-6) + if thr_high is None: + thr_high = max(thr_low, x + 1e-6) + if thr_ext is None: + thr_ext = float("inf") + + # --- prosty lerp koloru w RGB --- + def _hex(c): return "#{:02X}{:02X}{:02X}".format(*c) + def _lerp(c1, c2, t): + t = 0.0 if t < 0 else 1.0 if t > 1 else t + return (int(c1[0] + (c2[0]-c1[0])*t), + int(c1[1] + (c2[1]-c1[1])*t), + int(c2[2] + (c2[2]-c1[2])*t)) # (uwaga: to tylko komentarz – kod niżej bez zmian) + + Y_LO = (255, 244, 178) + Y_HI = (255, 149, 0) + G_OK = (46, 204, 113) + R_LO = (255, 138, 128) + R_HI = (213, 0, 0) + + if x <= thr_low: + denom = max(1e-9, (thr_low - thr_dead)) if thr_low > thr_dead else 1.0 + t = (thr_low - x) / denom + return _hex(_lerp(Y_LO, Y_HI, t)) + + if x <= thr_high: + return _hex(G_OK) + + denom = max(1e-9, (thr_ext - thr_high)) if thr_ext > thr_high else 1.0 + t = (x - thr_high) / denom + return _hex(_lerp(R_LO, R_HI, t)) def refresh_tree(self) -> None: filt = self.filter_var.get().strip().lower() @@ -1927,19 +2036,6 @@ class App(tk.Tk): vals = [v for v in original if text.lower() in v.lower()] combo["values"] = vals if vals else original combo.bind("", on_key) - def _bind_mousewheel(self, widget): - def _mw(event): - if event.delta: - widget.yview_scroll(int(-1*(event.delta/120)), "units") - return "break" - def _mw_up(_e): - widget.yview_scroll(-1, "units"); return "break" - def _mw_down(_e): - widget.yview_scroll(1, "units"); return "break" - widget.bind("", _mw) - widget.bind("", _mw_up) - widget.bind("", _mw_down) - def _watch_refresh_interval(self): try: @@ -2125,6 +2221,11 @@ class App(tk.Tk): "expr_x_source_operating": t.expr_x_source_operating, "expr_x_source_high": t.expr_x_source_high, "expr_x_source_extreme_high": t.expr_x_source_extreme_high, + "expr_thr_dead_low": t.expr_thr_dead_low, + "expr_thr_low": t.expr_thr_low, + "expr_thr_high": t.expr_thr_high, + "expr_thr_extreme_high": t.expr_thr_extreme_high, + }, } def _deserialize_varinfo(self, key: str, data: dict) -> VarInfo: @@ -2151,6 +2252,10 @@ class App(tk.Tk): expr_x_source_operating=td.get("expr_x_source_operating","raw"), expr_x_source_high=td.get("expr_x_source_high","raw"), expr_x_source_extreme_high=td.get("expr_x_source_extreme_high","raw"), + expr_thr_dead_low=td.get("expr_thr_dead_low"), + expr_thr_low=td.get("expr_thr_low"), + expr_thr_high=td.get("expr_thr_high"), + expr_thr_extreme_high=td.get("expr_thr_extreme_high"), ) return VarInfo(key=key.lower(), display_name=name, thresholds=t) @@ -2194,6 +2299,22 @@ def parse_first_float(value: str) -> Optional[float]: return None return None +def safe_eval(expression: str, env: dict): + """ + Bezpieczna ewaluacja krótkich wyrażeń progowych. + Dostępne: math, min, max, abs, round, int, float. + Zmiennych szukamy w `env` (np. x, x_avg, dx, dx_avg, y, y_avg, ...). + """ + allowed_globals = { + "__builtins__": {}, + "math": math, "min": min, "max": max, + "abs": abs, "round": round, "int": int, "float": float, + } + # tylko 'eval' – bez snippetów wieloliniowych: + code = compile(expression, "", "eval") + return eval(code, allowed_globals, env) + + def eval_user_expression(expr: str, x: float, y: float | None = None, z: float | None = None): """Evaluate user expression/snippet with x available. Allowed: math.*, min, max, abs, round, int, float, clamp (custom). diff --git a/nucleares_monitor/mon.json b/nucleares_monitor/mon.json new file mode 100644 index 0000000..aaeb444 --- /dev/null +++ b/nucleares_monitor/mon.json @@ -0,0 +1,877 @@ +{ + "host": "localhost", + "port": 8785, + "refresh_interval": 1.0, + "variables_keys": [ + "condenser_volume", + "coolant_core_flow_reached_speed", + "coolant_core_flow_speed", + "core_iodine_cumulative", + "core_iodine_generation", + "core_state_criticality", + "core_temp", + "core_xenon_cumulative", + "core_xenon_generation", + "generator_0_kw", + "steam_turbine_0_pressure", + "steam_turbine_0_rpm", + "steam_turbine_0_temperature", + "coolant_sec_0_liquid_volume", + "coolant_sec_0_pressure", + "coolant_sec_0_temperature", + "coolant_sec_0_volume" + ], + "vars": { + "condenser_volume": { + "display_name": "CONDENSER_VOLUME", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_core_flow_reached_speed": { + "display_name": "COOLANT_CORE_FLOW_REACHED_SPEED", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_core_flow_speed": { + "display_name": "COOLANT_CORE_FLOW_SPEED", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_iodine_cumulative": { + "display_name": "CORE_IODINE_CUMULATIVE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_iodine_generation": { + "display_name": "CORE_IODINE_GENERATION", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_state_criticality": { + "display_name": "CORE_STATE_CRITICALITY", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_temp": { + "display_name": "CORE_TEMP", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_xenon_cumulative": { + "display_name": "CORE_XENON_CUMULATIVE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "core_xenon_generation": { + "display_name": "CORE_XENON_GENERATION", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "generator_0_kw": { + "display_name": "GENERATOR_0_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "steam_turbine_0_pressure": { + "display_name": "STEAM_TURBINE_0_PRESSURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "steam_turbine_0_rpm": { + "display_name": "STEAM_TURBINE_0_RPM", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "steam_turbine_0_temperature": { + "display_name": "STEAM_TURBINE_0_TEMPERATURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_sec_0_liquid_volume": { + "display_name": "COOLANT_SEC_0_LIQUID_VOLUME", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_sec_0_pressure": { + "display_name": "COOLANT_SEC_0_PRESSURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_sec_0_temperature": { + "display_name": "COOLANT_SEC_0_TEMPERATURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + }, + "coolant_sec_0_volume": { + "display_name": "COOLANT_SEC_0_VOLUME", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null, + "expr_x_source_dead_low": "raw", + "expr_x_source_low": "raw", + "expr_x_source_operating": "raw", + "expr_x_source_high": "raw", + "expr_x_source_extreme_high": "raw", + "expr_thr_dead_low": null, + "expr_thr_low": null, + "expr_thr_high": null, + "expr_thr_extreme_high": null + } + } + }, + "scheduled_tasks": [] +} \ No newline at end of file diff --git a/nucleares_monitor/stab_ion.json b/nucleares_monitor/stab_ion.json new file mode 100644 index 0000000..a9c055c --- /dev/null +++ b/nucleares_monitor/stab_ion.json @@ -0,0 +1,2362 @@ +{ + "host": "localhost", + "port": 8785, + "refresh_interval": 1.0, + "variables_keys": [ + "condenser_volume", + "coolant_core_flow_in", + "coolant_core_flow_out", + "coolant_core_vessel_temperature", + "core_factor", + "core_factor_change", + "core_fuel_1_fissionable", + "core_fuel_2_fissionable", + "core_fuel_3_fissionable", + "core_fuel_4_fissionable", + "core_fuel_5_fissionable", + "core_fuel_6_fissionable", + "core_fuel_7_fissionable", + "core_fuel_8_fissionable", + "core_fuel_9_fissionable", + "core_fuel_avg_power_factor", + "core_iodine_generation", + "power_demand_mw", + "power_from_turbine_kw", + "core_temp", + "core_iodine_cumulative", + "core_state_criticality", + "core_xenon_cumulative", + "core_xenon_generation", + "coolant_core_flow_ordered_speed", + "core_fuel_1_power_factor", + "core_fuel_2_power_factor", + "core_fuel_3_power_factor", + "core_fuel_4_power_factor", + "core_fuel_5_power_factor", + "core_fuel_6_power_factor", + "core_fuel_7_power_factor", + "core_fuel_8_power_factor", + "core_fuel_9_power_factor", + "emergency_batteries_power_output_kw", + "emergency_generator_1_status", + "emergency_generator_2_status", + "emergency_generator_power_output_kw", + "generator_0_hertz", + "generator_0_kw", + "generator_1_hertz", + "generator_1_kw", + "generator_2_hertz", + "generator_2_kw", + "power_from_external_kw", + "steam_ejector_motive", + "steam_gen_0_status", + "steam_gen_1_status", + "steam_gen_2_status", + "steam_turbine_0_pressure", + "steam_turbine_0_torque", + "steam_turbine_1_pressure", + "steam_turbine_1_torque", + "steam_turbine_2_pressure", + "steam_turbine_2_torque", + "vacuum_retention_tank_volume" + ], + "vars": { + "condenser_volume": { + "display_name": "CONDENSER_VOLUME", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "coolant_core_flow_in": { + "display_name": "COOLANT_CORE_FLOW_IN", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "coolant_core_flow_out": { + "display_name": "COOLANT_CORE_FLOW_OUT", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "coolant_core_vessel_temperature": { + "display_name": "COOLANT_CORE_VESSEL_TEMPERATURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_factor": { + "display_name": "CORE_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_factor_change": { + "display_name": "CORE_FACTOR_CHANGE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_1_fissionable": { + "display_name": "CORE_FUEL_1_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_2_fissionable": { + "display_name": "CORE_FUEL_2_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_3_fissionable": { + "display_name": "CORE_FUEL_3_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_4_fissionable": { + "display_name": "CORE_FUEL_4_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_5_fissionable": { + "display_name": "CORE_FUEL_5_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_6_fissionable": { + "display_name": "CORE_FUEL_6_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_7_fissionable": { + "display_name": "CORE_FUEL_7_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_8_fissionable": { + "display_name": "CORE_FUEL_8_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_9_fissionable": { + "display_name": "CORE_FUEL_9_FISSIONABLE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_avg_power_factor": { + "display_name": "CORE_FUEL_AVG_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_iodine_generation": { + "display_name": "CORE_IODINE_GENERATION", + "thresholds": { + "dead_low": 3.7, + "low": 3.9, + "high": 4.5, + "extreme_high": 48.0, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 0.5, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 0.5, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": "y-0.1", + "expr_low": "y-0.1", + "expr_operating": null, + "expr_high": "y+0.1", + "expr_extreme_high": "y+0.1", + "expr_target_dead_low": "RODS_ALL_POS_ORDERED", + "expr_target_low": "RODS_ALL_POS_ORDERED", + "expr_target_operating": "RODS_ALL_POS_ORDERED", + "expr_target_high": "RODS_ALL_POS_ORDERED", + "expr_target_extreme_high": "RODS_ALL_POS_ORDERED", + "expr_operating_interval": 1.0, + "y_source": "RODS_POS_ACTUAL", + "z_source": null + } + }, + "power_demand_mw": { + "display_name": "POWER_DEMAND_MW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "power_from_turbine_kw": { + "display_name": "POWER_FROM_TURBINE_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_temp": { + "display_name": "CORE_TEMP", + "thresholds": { + "dead_low": 300.0, + "low": 320.0, + "high": 380.0, + "extreme_high": 430.0, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": "FUN_SHOW_MESSAGE", + "value_dead_low": "LOSING POWER", + "action_dead_low_interval": 1.0, + "action_low": "FUN_SHOW_MESSAGE", + "value_low": "TEMP ALERT L", + "action_low_interval": 1.0, + "action_high": "FUN_SHOW_MESSAGE", + "value_high": "TEMP ALERT H", + "action_high_interval": 1.0, + "action_extreme_high": "CORE_SCRAM_BUTTON", + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_iodine_cumulative": { + "display_name": "CORE_IODINE_CUMULATIVE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_state_criticality": { + "display_name": "CORE_STATE_CRITICALITY", + "thresholds": { + "dead_low": -0.2, + "low": -0.1, + "high": 0.4, + "extreme_high": 0.6, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 0.5, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 0.5, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": "y-0.1", + "expr_low": "y-0.1", + "expr_operating": null, + "expr_high": "y+0.1", + "expr_extreme_high": "y+0.1", + "expr_target_dead_low": "RODS_ALL_POS_ORDERED", + "expr_target_low": "RODS_ALL_POS_ORDERED", + "expr_target_operating": "RODS_ALL_POS_ORDERED", + "expr_target_high": "RODS_ALL_POS_ORDERED", + "expr_target_extreme_high": "RODS_ALL_POS_ORDERED", + "expr_operating_interval": 1.0, + "y_source": "RODS_POS_ACTUAL", + "z_source": null + } + }, + "core_xenon_cumulative": { + "display_name": "CORE_XENON_CUMULATIVE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_xenon_generation": { + "display_name": "CORE_XENON_GENERATION", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "coolant_core_flow_ordered_speed": { + "display_name": "COOLANT_CORE_FLOW_ORDERED_SPEED", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_1_power_factor": { + "display_name": "CORE_FUEL_1_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_2_power_factor": { + "display_name": "CORE_FUEL_2_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_3_power_factor": { + "display_name": "CORE_FUEL_3_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_4_power_factor": { + "display_name": "CORE_FUEL_4_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_5_power_factor": { + "display_name": "CORE_FUEL_5_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_6_power_factor": { + "display_name": "CORE_FUEL_6_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_7_power_factor": { + "display_name": "CORE_FUEL_7_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_8_power_factor": { + "display_name": "CORE_FUEL_8_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "core_fuel_9_power_factor": { + "display_name": "CORE_FUEL_9_POWER_FACTOR", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "emergency_batteries_power_output_kw": { + "display_name": "EMERGENCY_BATTERIES_POWER_OUTPUT_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "emergency_generator_1_status": { + "display_name": "EMERGENCY_GENERATOR_1_STATUS", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "emergency_generator_2_status": { + "display_name": "EMERGENCY_GENERATOR_2_STATUS", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "emergency_generator_power_output_kw": { + "display_name": "EMERGENCY_GENERATOR_POWER_OUTPUT_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_0_hertz": { + "display_name": "GENERATOR_0_HERTZ", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_0_kw": { + "display_name": "GENERATOR_0_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_1_hertz": { + "display_name": "GENERATOR_1_HERTZ", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_1_kw": { + "display_name": "GENERATOR_1_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_2_hertz": { + "display_name": "GENERATOR_2_HERTZ", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "generator_2_kw": { + "display_name": "GENERATOR_2_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "power_from_external_kw": { + "display_name": "POWER_FROM_EXTERNAL_KW", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_ejector_motive": { + "display_name": "STEAM_EJECTOR_MOTIVE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_gen_0_status": { + "display_name": "STEAM_GEN_0_STATUS", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_gen_1_status": { + "display_name": "STEAM_GEN_1_STATUS", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_gen_2_status": { + "display_name": "STEAM_GEN_2_STATUS", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_0_pressure": { + "display_name": "STEAM_TURBINE_0_PRESSURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_0_torque": { + "display_name": "STEAM_TURBINE_0_TORQUE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_1_pressure": { + "display_name": "STEAM_TURBINE_1_PRESSURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_1_torque": { + "display_name": "STEAM_TURBINE_1_TORQUE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_2_pressure": { + "display_name": "STEAM_TURBINE_2_PRESSURE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "steam_turbine_2_torque": { + "display_name": "STEAM_TURBINE_2_TORQUE", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + }, + "vacuum_retention_tank_volume": { + "display_name": "VACUUM_RETENTION_TANK_VOLUME", + "thresholds": { + "dead_low": null, + "low": null, + "high": null, + "extreme_high": null, + "alarm_dead_low": true, + "alarm_low": false, + "alarm_high": false, + "alarm_extreme_high": true, + "action_dead_low": null, + "value_dead_low": "1", + "action_dead_low_interval": 1.0, + "action_low": null, + "value_low": "1", + "action_low_interval": 1.0, + "action_high": null, + "value_high": "1", + "action_high_interval": 1.0, + "action_extreme_high": null, + "value_extreme_high": "1", + "action_extreme_high_interval": 1.0, + "action_operating": null, + "value_operating": "1", + "action_operating_interval": 1.0, + "expr_dead_low": null, + "expr_low": null, + "expr_operating": null, + "expr_high": null, + "expr_extreme_high": null, + "expr_target_dead_low": null, + "expr_target_low": null, + "expr_target_operating": null, + "expr_target_high": null, + "expr_target_extreme_high": null, + "expr_operating_interval": 1.0, + "y_source": null, + "z_source": null + } + } + }, + "scheduled_tasks": [] +} \ No newline at end of file