#362 taking max of connected radiation monitors
This commit is contained in:
@@ -469,7 +469,7 @@ function iocontrol.record_unit_builds(builds)
|
||||
|
||||
-- note: if not all units and RTUs are connected, some will be nil
|
||||
for id, build in pairs(builds) do
|
||||
local unit = io.units[id] ---@type ioctl_unit
|
||||
local unit = io.units[id] ---@type ioctl_unit
|
||||
|
||||
local log_header = util.c("iocontrol.record_unit_builds[UNIT ", id, "]: ")
|
||||
|
||||
@@ -694,8 +694,8 @@ function iocontrol.update_facility_status(status)
|
||||
|
||||
for id, sps in pairs(rtu_statuses.sps) do
|
||||
if type(fac.sps_data_tbl[id]) == "table" then
|
||||
local data = fac.sps_data_tbl[id] ---@type sps_session_db
|
||||
local ps = fac.sps_ps_tbl[id] ---@type psil
|
||||
local data = fac.sps_data_tbl[id] ---@type sps_session_db
|
||||
local ps = fac.sps_ps_tbl[id] ---@type psil
|
||||
|
||||
local rtu_faulted = _record_multiblock_status(sps, data, ps)
|
||||
|
||||
@@ -732,8 +732,8 @@ function iocontrol.update_facility_status(status)
|
||||
|
||||
for id, tank in pairs(rtu_statuses.tanks) do
|
||||
if type(fac.tank_data_tbl[id]) == "table" then
|
||||
local data = fac.tank_data_tbl[id] ---@type dynamicv_session_db
|
||||
local ps = fac.tank_ps_tbl[id] ---@type psil
|
||||
local data = fac.tank_data_tbl[id] ---@type dynamicv_session_db
|
||||
local ps = fac.tank_ps_tbl[id] ---@type psil
|
||||
|
||||
local rtu_faulted = _record_multiblock_status(tank, data, ps)
|
||||
|
||||
@@ -762,12 +762,23 @@ function iocontrol.update_facility_status(status)
|
||||
-- environment detector status
|
||||
if type(rtu_statuses.rad_mon) == "table" then
|
||||
if #rtu_statuses.rad_mon > 0 then
|
||||
local rad_mon = rtu_statuses.rad_mon[1]
|
||||
local rtu_faulted = rad_mon[1] ---@type boolean
|
||||
fac.radiation = rad_mon[2] ---@type number
|
||||
local max_rad, max_reading, any_faulted = 0, types.new_zero_radiation_reading(), false
|
||||
|
||||
fac.ps.publish("rad_computed_status", util.trinary(rtu_faulted, 2, 3))
|
||||
fac.ps.publish("radiation", fac.radiation)
|
||||
for i = 1, #rtu_statuses.rad_mon do
|
||||
local rad_mon = rtu_statuses.rad_mon[i]
|
||||
local rtu_faulted = rad_mon[1] ---@type boolean
|
||||
local radiation = rad_mon[2] ---@type radiation_reading
|
||||
local rad_raw = rad_mon[3] ---@type number
|
||||
|
||||
any_faulted = any_faulted or rtu_faulted
|
||||
if rad_raw > max_rad then
|
||||
max_rad = rad_raw
|
||||
max_reading = radiation
|
||||
end
|
||||
end
|
||||
|
||||
fac.radiation = max_reading
|
||||
fac.ps.publish("rad_computed_status", util.trinary(any_faulted, 2, 3))
|
||||
else
|
||||
fac.radiation = types.new_zero_radiation_reading()
|
||||
fac.ps.publish("rad_computed_status", 1)
|
||||
@@ -776,6 +787,8 @@ function iocontrol.update_facility_status(status)
|
||||
log.debug(log_header .. "radiation monitor list not a table")
|
||||
valid = false
|
||||
end
|
||||
|
||||
fac.ps.publish("radiation", fac.radiation)
|
||||
else
|
||||
log.debug(log_header .. "rtu statuses not a table")
|
||||
valid = false
|
||||
@@ -917,8 +930,8 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
|
||||
for id, boiler in pairs(rtu_statuses.boilers) do
|
||||
if type(unit.boiler_data_tbl[id]) == "table" then
|
||||
local data = unit.boiler_data_tbl[id] ---@type boilerv_session_db
|
||||
local ps = unit.boiler_ps_tbl[id] ---@type psil
|
||||
local data = unit.boiler_data_tbl[id] ---@type boilerv_session_db
|
||||
local ps = unit.boiler_ps_tbl[id] ---@type psil
|
||||
|
||||
local rtu_faulted = _record_multiblock_status(boiler, data, ps)
|
||||
|
||||
@@ -960,8 +973,8 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
|
||||
for id, turbine in pairs(rtu_statuses.turbines) do
|
||||
if type(unit.turbine_data_tbl[id]) == "table" then
|
||||
local data = unit.turbine_data_tbl[id] ---@type turbinev_session_db
|
||||
local ps = unit.turbine_ps_tbl[id] ---@type psil
|
||||
local data = unit.turbine_data_tbl[id] ---@type turbinev_session_db
|
||||
local ps = unit.turbine_ps_tbl[id] ---@type psil
|
||||
|
||||
local rtu_faulted = _record_multiblock_status(turbine, data, ps)
|
||||
|
||||
@@ -1033,9 +1046,9 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
|
||||
-- solar neutron activator status info
|
||||
if type(rtu_statuses.sna) == "table" then
|
||||
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[3] ---@type number
|
||||
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[3] ---@type number
|
||||
|
||||
unit.unit_ps.publish("sna_count", unit.num_snas)
|
||||
unit.unit_ps.publish("sna_prod_rate", unit.sna_prod_rate)
|
||||
@@ -1049,12 +1062,22 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
|
||||
-- environment detector status
|
||||
if type(rtu_statuses.rad_mon) == "table" then
|
||||
if #rtu_statuses.rad_mon > 0 then
|
||||
local rad_mon = rtu_statuses.rad_mon[1]
|
||||
-- local rtu_faulted = rad_mon[1] ---@type boolean
|
||||
unit.radiation = rad_mon[2] ---@type number
|
||||
local max_rad, max_reading = 0, types.new_zero_radiation_reading()
|
||||
|
||||
unit.unit_ps.publish("radiation", unit.radiation)
|
||||
if #rtu_statuses.rad_mon > 0 then
|
||||
|
||||
for id = 1, #rtu_statuses.rad_mon do
|
||||
local rad_mon = rtu_statuses.rad_mon[id]
|
||||
local radiation = rad_mon[2] ---@type radiation_reading
|
||||
local rad_raw = rad_mon[3] ---@type number
|
||||
|
||||
if rad_raw > max_rad then
|
||||
max_rad = rad_raw
|
||||
max_reading = radiation
|
||||
end
|
||||
end
|
||||
|
||||
unit.radiation = max_reading
|
||||
else
|
||||
unit.radiation = types.new_zero_radiation_reading()
|
||||
end
|
||||
@@ -1062,6 +1085,8 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
log.debug(log_header .. "radiation monitor list not a table")
|
||||
valid = false
|
||||
end
|
||||
|
||||
unit.unit_ps.publish("radiation", unit.radiation)
|
||||
else
|
||||
log.debug(log_header .. "rtu list not a table")
|
||||
valid = false
|
||||
|
||||
Reference in New Issue
Block a user