mirror of
https://github.com/MikaylaFischler/cc-mek-scada.git
synced 2024-08-30 18:22:34 +00:00
#438 use reported polonium rate rather than an estimate
This commit is contained in:
parent
fb5a9d5d9e
commit
1bc4828010
@ -235,7 +235,10 @@ function iocontrol.init(conf, comms, temp_scale)
|
|||||||
control_state = false,
|
control_state = false,
|
||||||
burn_rate_cmd = 0.0,
|
burn_rate_cmd = 0.0,
|
||||||
radiation = types.new_zero_radiation_reading(),
|
radiation = types.new_zero_radiation_reading(),
|
||||||
sna_prod_rate = 0.0,
|
|
||||||
|
sna_peak_rate = 0.0,
|
||||||
|
sna_max_rate = 0.0,
|
||||||
|
sna_out_rate = 0.0,
|
||||||
|
|
||||||
waste_mode = types.WASTE_MODE.MANUAL_PLUTONIUM,
|
waste_mode = types.WASTE_MODE.MANUAL_PLUTONIUM,
|
||||||
waste_product = types.WASTE_PRODUCT.PLUTONIUM,
|
waste_product = types.WASTE_PRODUCT.PLUTONIUM,
|
||||||
@ -1064,12 +1067,14 @@ function iocontrol.update_unit_statuses(statuses)
|
|||||||
-- solar neutron activator status info
|
-- solar neutron activator status info
|
||||||
if type(rtu_statuses.sna) == "table" then
|
if type(rtu_statuses.sna) == "table" then
|
||||||
unit.num_snas = rtu_statuses.sna[1] ---@type integer
|
unit.num_snas = rtu_statuses.sna[1] ---@type integer
|
||||||
unit.sna_prod_rate = rtu_statuses.sna[2] ---@type number
|
unit.sna_peak_rate = rtu_statuses.sna[2] ---@type number
|
||||||
unit.sna_peak_rate = rtu_statuses.sna[3] ---@type number
|
unit.sna_max_rate = rtu_statuses.sna[3] ---@type number
|
||||||
|
unit.sna_out_rate = rtu_statuses.sna[4] ---@type number
|
||||||
|
|
||||||
unit.unit_ps.publish("sna_count", unit.num_snas)
|
unit.unit_ps.publish("sna_count", unit.num_snas)
|
||||||
unit.unit_ps.publish("sna_prod_rate", unit.sna_prod_rate)
|
|
||||||
unit.unit_ps.publish("sna_peak_rate", unit.sna_peak_rate)
|
unit.unit_ps.publish("sna_peak_rate", unit.sna_peak_rate)
|
||||||
|
unit.unit_ps.publish("sna_max_rate", unit.sna_max_rate)
|
||||||
|
unit.unit_ps.publish("sna_out_rate", unit.sna_out_rate)
|
||||||
|
|
||||||
sna_count_sum = sna_count_sum + unit.num_snas
|
sna_count_sum = sna_count_sum + unit.num_snas
|
||||||
else
|
else
|
||||||
@ -1217,7 +1222,7 @@ function iocontrol.update_unit_statuses(statuses)
|
|||||||
|
|
||||||
local u_spent_rate = waste_rate
|
local u_spent_rate = waste_rate
|
||||||
local u_pu_rate = util.trinary(is_pu, waste_rate, 0.0)
|
local u_pu_rate = util.trinary(is_pu, waste_rate, 0.0)
|
||||||
local u_po_rate = util.trinary(not is_pu, math.min(waste_rate, unit.sna_prod_rate), 0.0)
|
local u_po_rate = unit.sna_out_rate
|
||||||
|
|
||||||
unit.unit_ps.publish("pu_rate", u_pu_rate)
|
unit.unit_ps.publish("pu_rate", u_pu_rate)
|
||||||
unit.unit_ps.publish("po_rate", u_po_rate)
|
unit.unit_ps.publish("po_rate", u_po_rate)
|
||||||
@ -1225,14 +1230,15 @@ function iocontrol.update_unit_statuses(statuses)
|
|||||||
unit.unit_ps.publish("sna_in", util.trinary(is_pu, 0, burn_rate))
|
unit.unit_ps.publish("sna_in", util.trinary(is_pu, 0, burn_rate))
|
||||||
|
|
||||||
if unit.waste_product == types.WASTE_PRODUCT.POLONIUM then
|
if unit.waste_product == types.WASTE_PRODUCT.POLONIUM then
|
||||||
|
u_spent_rate = u_po_rate
|
||||||
unit.unit_ps.publish("po_pl_rate", u_po_rate)
|
unit.unit_ps.publish("po_pl_rate", u_po_rate)
|
||||||
unit.unit_ps.publish("po_am_rate", 0)
|
unit.unit_ps.publish("po_am_rate", 0)
|
||||||
po_pl_rate = po_pl_rate + u_po_rate
|
po_pl_rate = po_pl_rate + u_po_rate
|
||||||
elseif unit.waste_product == types.WASTE_PRODUCT.ANTI_MATTER then
|
elseif unit.waste_product == types.WASTE_PRODUCT.ANTI_MATTER then
|
||||||
|
u_spent_rate = 0
|
||||||
unit.unit_ps.publish("po_pl_rate", 0)
|
unit.unit_ps.publish("po_pl_rate", 0)
|
||||||
unit.unit_ps.publish("po_am_rate", u_po_rate)
|
unit.unit_ps.publish("po_am_rate", u_po_rate)
|
||||||
po_am_rate = po_am_rate + u_po_rate
|
po_am_rate = po_am_rate + u_po_rate
|
||||||
u_spent_rate = 0
|
|
||||||
else
|
else
|
||||||
unit.unit_ps.publish("po_pl_rate", 0)
|
unit.unit_ps.publish("po_pl_rate", 0)
|
||||||
unit.unit_ps.publish("po_am_rate", 0)
|
unit.unit_ps.publish("po_am_rate", 0)
|
||||||
|
@ -22,7 +22,7 @@ local sounder = require("coordinator.sounder")
|
|||||||
|
|
||||||
local apisessions = require("coordinator.session.apisessions")
|
local apisessions = require("coordinator.session.apisessions")
|
||||||
|
|
||||||
local COORDINATOR_VERSION = "v1.2.8"
|
local COORDINATOR_VERSION = "v1.2.9"
|
||||||
|
|
||||||
local CHUNK_LOAD_DELAY_S = 30.0
|
local CHUNK_LOAD_DELAY_S = 30.0
|
||||||
|
|
||||||
|
@ -181,10 +181,10 @@ local function make(parent, x, y, wide, unit)
|
|||||||
|
|
||||||
local waste_rate = DataIndicator{parent=waste,x=1,y=3,lu_colors=lu_c,label="",unit="mB/t",format="%7.2f",value=0,width=12,fg_bg=bw_fg_bg}
|
local waste_rate = DataIndicator{parent=waste,x=1,y=3,lu_colors=lu_c,label="",unit="mB/t",format="%7.2f",value=0,width=12,fg_bg=bw_fg_bg}
|
||||||
local pu_rate = DataIndicator{parent=waste,x=_wide(82,70),y=3,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
local pu_rate = DataIndicator{parent=waste,x=_wide(82,70),y=3,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
||||||
local po_rate = DataIndicator{parent=waste,x=_wide(52,45),y=6,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
local po_rate = DataIndicator{parent=waste,x=_wide(52,45),y=6,lu_colors=lu_c,label="",unit="mB/t",format="%7.2f",value=0,width=12,fg_bg=bw_fg_bg}
|
||||||
local popl_rate = DataIndicator{parent=waste,x=_wide(82,70),y=6,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
local popl_rate = DataIndicator{parent=waste,x=_wide(82,70),y=6,lu_colors=lu_c,label="",unit="mB/t",format="%7.2f",value=0,width=12,fg_bg=bw_fg_bg}
|
||||||
local poam_rate = DataIndicator{parent=waste,x=_wide(82,70),y=10,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
local poam_rate = DataIndicator{parent=waste,x=_wide(82,70),y=10,lu_colors=lu_c,label="",unit="mB/t",format="%7.2f",value=0,width=12,fg_bg=bw_fg_bg}
|
||||||
local spent_rate = DataIndicator{parent=waste,x=_wide(117,99),y=3,lu_colors=lu_c,label="",unit="mB/t",format="%7.3f",value=0,width=12,fg_bg=bw_fg_bg}
|
local spent_rate = DataIndicator{parent=waste,x=_wide(117,98),y=3,lu_colors=lu_c,label="",unit="mB/t",format="%8.3f",value=0,width=13,fg_bg=bw_fg_bg}
|
||||||
|
|
||||||
waste_rate.register(unit.unit_ps, "act_burn_rate", waste_rate.update)
|
waste_rate.register(unit.unit_ps, "act_burn_rate", waste_rate.update)
|
||||||
pu_rate.register(unit.unit_ps, "pu_rate", pu_rate.update)
|
pu_rate.register(unit.unit_ps, "pu_rate", pu_rate.update)
|
||||||
@ -214,7 +214,7 @@ local function make(parent, x, y, wide, unit)
|
|||||||
sna_act.register(unit.unit_ps, "po_rate", function (r) sna_act.update(r > 0) end)
|
sna_act.register(unit.unit_ps, "po_rate", function (r) sna_act.update(r > 0) end)
|
||||||
sna_cnt.register(unit.unit_ps, "sna_count", sna_cnt.update)
|
sna_cnt.register(unit.unit_ps, "sna_count", sna_cnt.update)
|
||||||
sna_pk.register(unit.unit_ps, "sna_peak_rate", sna_pk.update)
|
sna_pk.register(unit.unit_ps, "sna_peak_rate", sna_pk.update)
|
||||||
sna_max.register(unit.unit_ps, "sna_prod_rate", sna_max.update)
|
sna_max.register(unit.unit_ps, "sna_max_rate", sna_max.update)
|
||||||
sna_in.register(unit.unit_ps, "sna_in", sna_in.update)
|
sna_in.register(unit.unit_ps, "sna_in", sna_in.update)
|
||||||
|
|
||||||
return root
|
return root
|
||||||
|
@ -348,7 +348,7 @@ local function init(main)
|
|||||||
status.register(facility.sps_ps_tbl[1], "computed_status", status.update)
|
status.register(facility.sps_ps_tbl[1], "computed_status", status.update)
|
||||||
|
|
||||||
TextBox{parent=sps_box,x=2,y=3,text="Input Rate",height=1,width=10,fg_bg=style.label}
|
TextBox{parent=sps_box,x=2,y=3,text="Input Rate",height=1,width=10,fg_bg=style.label}
|
||||||
local sps_in = DataIndicator{parent=sps_box,x=2,label="",format="%15.3f",value=0,unit="mB/t",lu_colors=lu_col,width=20,fg_bg=bw_fg_bg}
|
local sps_in = DataIndicator{parent=sps_box,x=2,label="",format="%15.2f",value=0,unit="mB/t",lu_colors=lu_col,width=20,fg_bg=bw_fg_bg}
|
||||||
|
|
||||||
sps_in.register(facility.ps, "po_am_rate", sps_in.update)
|
sps_in.register(facility.ps, "po_am_rate", sps_in.update)
|
||||||
|
|
||||||
@ -370,8 +370,8 @@ local function init(main)
|
|||||||
TextBox{parent=main,x=145,y=21,text="PROC. WASTE",alignment=ALIGN.CENTER,width=19,height=1,fg_bg=wh_gray}
|
TextBox{parent=main,x=145,y=21,text="PROC. WASTE",alignment=ALIGN.CENTER,width=19,height=1,fg_bg=wh_gray}
|
||||||
local pr_waste = Rectangle{parent=main,x=145,y=22,border=border(1,colors.gray,true),width=19,height=5,thin=true,fg_bg=bw_fg_bg}
|
local pr_waste = Rectangle{parent=main,x=145,y=22,border=border(1,colors.gray,true),width=19,height=5,thin=true,fg_bg=bw_fg_bg}
|
||||||
local pu = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Pu",unit="mB/t",format="%9.3f",value=0,width=17}
|
local pu = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Pu",unit="mB/t",format="%9.3f",value=0,width=17}
|
||||||
local po = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Po",unit="mB/t",format="%9.3f",value=0,width=17}
|
local po = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="Po",unit="mB/t",format="%9.2f",value=0,width=17}
|
||||||
local popl = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="PoPl",unit="mB/t",format="%7.3f",value=0,width=17}
|
local popl = DataIndicator{parent=pr_waste,lu_colors=lu_col,label="PoPl",unit="mB/t",format="%7.2f",value=0,width=17}
|
||||||
|
|
||||||
pu.register(facility.ps, "pu_rate", pu.update)
|
pu.register(facility.ps, "pu_rate", pu.update)
|
||||||
po.register(facility.ps, "po_rate", po.update)
|
po.register(facility.ps, "po_rate", po.update)
|
||||||
|
@ -17,7 +17,7 @@ local max_distance = nil
|
|||||||
local comms = {}
|
local comms = {}
|
||||||
|
|
||||||
-- protocol/data version (protocol/data independent changes tracked by util.lua version)
|
-- protocol/data version (protocol/data independent changes tracked by util.lua version)
|
||||||
comms.version = "2.4.4"
|
comms.version = "2.4.5"
|
||||||
|
|
||||||
---@enum PROTOCOL
|
---@enum PROTOCOL
|
||||||
local PROTOCOL = {
|
local PROTOCOL = {
|
||||||
|
@ -21,7 +21,7 @@ local supervisor = require("supervisor.supervisor")
|
|||||||
|
|
||||||
local svsessions = require("supervisor.session.svsessions")
|
local svsessions = require("supervisor.session.svsessions")
|
||||||
|
|
||||||
local SUPERVISOR_VERSION = "v1.2.8"
|
local SUPERVISOR_VERSION = "v1.2.9"
|
||||||
|
|
||||||
local println = util.println
|
local println = util.println
|
||||||
local println_ts = util.println_ts
|
local println_ts = util.println_ts
|
||||||
|
@ -77,7 +77,6 @@ function unit.new(reactor_id, num_boilers, num_turbines)
|
|||||||
tanks = {},
|
tanks = {},
|
||||||
snas = {},
|
snas = {},
|
||||||
envd = {},
|
envd = {},
|
||||||
sna_prod_rate = 0,
|
|
||||||
-- redstone control
|
-- redstone control
|
||||||
io_ctl = nil, ---@type rs_controller
|
io_ctl = nil, ---@type rs_controller
|
||||||
valves = {}, ---@type unit_valves
|
valves = {}, ---@type unit_valves
|
||||||
@ -857,13 +856,15 @@ function unit.new(reactor_id, num_boilers, num_turbines)
|
|||||||
status.tanks[tank.get_device_idx()] = { tank.is_faulted(), db.formed, db.state, db.tanks }
|
status.tanks[tank.get_device_idx()] = { tank.is_faulted(), db.formed, db.state, db.tanks }
|
||||||
end
|
end
|
||||||
|
|
||||||
-- basic SNA statistical information
|
-- SNA statistical information
|
||||||
local total_peak = 0
|
local total_peak, total_avail, total_out = 0, 0, 0
|
||||||
for i = 1, #self.snas do
|
for i = 1, #self.snas do
|
||||||
local db = self.snas[i].get_db() ---@type sna_session_db
|
local db = self.snas[i].get_db() ---@type sna_session_db
|
||||||
total_peak = total_peak + db.state.peak_production
|
total_peak = total_peak + db.state.peak_production
|
||||||
|
total_avail = total_avail + db.state.production_rate
|
||||||
|
total_out = total_out + math.min(db.tanks.input.amount / 10, db.state.production_rate)
|
||||||
end
|
end
|
||||||
status.sna = { #self.snas, public.get_sna_rate(), total_peak }
|
status.sna = { #self.snas, total_peak, total_avail, total_out }
|
||||||
|
|
||||||
-- radiation monitors (environment detectors)
|
-- radiation monitors (environment detectors)
|
||||||
status.envds = {}
|
status.envds = {}
|
||||||
|
Loading…
Reference in New Issue
Block a user