#74 #86 removed redundant overridden field (use rps_tripped)

This commit is contained in:
Mikayla Fischler 2022-09-08 14:49:01 -04:00
parent 350370a084
commit 33695b2ed6
4 changed files with 14 additions and 20 deletions

View File

@ -139,10 +139,9 @@ function iocontrol.update_statuses(statuses)
unit.reactor_data.last_status_update = gen_status[1]
unit.reactor_data.control_state = gen_status[2]
unit.reactor_data.overridden = gen_status[3]
unit.reactor_data.degraded = gen_status[4]
unit.reactor_data.rps_tripped = gen_status[5]
unit.reactor_data.rps_trip_cause = gen_status[6]
unit.reactor_data.rps_tripped = gen_status[3]
unit.reactor_data.rps_trip_cause = gen_status[4]
unit.reactor_data.degraded = gen_status[5]
unit.reactor_data.rps_status = rps_status ---@type rps_status
unit.reactor_data.mek_status = mek_status ---@type mek_status

View File

@ -531,7 +531,7 @@ function plc.comms(id, version, modem, local_port, server_port, reactor, rps, co
local sys_status = {
util.time(), -- timestamp
(not self.scrammed), -- requested control state
rps.is_tripped(), -- overridden
rps.is_tripped(), -- rps_tripped
degraded, -- degraded
self.reactor.getHeatingRate(), -- heating rate
mek_data -- mekanism status data

View File

@ -86,7 +86,6 @@ function plc.new_session(id, for_reactor, in_queue, out_queue)
sDB = {
last_status_update = 0,
control_state = false,
overridden = false,
degraded = false,
rps_tripped = false,
rps_trip_cause = "ok", ---@type rps_trip_cause
@ -282,11 +281,9 @@ function plc.new_session(id, for_reactor, in_queue, out_queue)
if pkt.length >= 5 then
self.sDB.last_status_update = pkt.data[1]
self.sDB.control_state = pkt.data[2]
self.sDB.overridden = pkt.data[3]
self.sDB.rps_tripped = pkt.data[3]
self.sDB.degraded = pkt.data[4]
self.sDB.mek_status.heating_rate = pkt.data[5]
---@todo rps_tripped is redundant with overridden, rename overridden to rps_tripped globally
self.sDB.rps_tripped = pkt.data[4]
-- attempt to read mek_data table
if pkt.data[6] ~= nil then
@ -357,8 +354,7 @@ function plc.new_session(id, for_reactor, in_queue, out_queue)
end
elseif pkt.type == RPLC_TYPES.RPS_ALARM then
-- RPS alarm
self.sDB.overridden = true
if pkt.length == 8 then
if pkt.length == 10 then
self.sDB.rps_tripped = true
self.sDB.rps_trip_cause = pkt.data[1]
local status = pcall(_copy_rps_status, { table.unpack(pkt.data, 2, #pkt.length) })
@ -447,10 +443,9 @@ function plc.new_session(id, for_reactor, in_queue, out_queue)
return {
self.sDB.last_status_update,
self.sDB.control_state,
self.sDB.overridden,
self.sDB.degraded,
self.sDB.rps_tripped,
self.sDB.rps_trip_cause
self.sDB.rps_trip_cause,
self.sDB.degraded
}
end

View File

@ -125,7 +125,7 @@ function unit.new(for_reactor, num_boilers, num_turbines)
if self.plc_s ~= nil then
local plc_db = self.plc_i.get_db()
-- @todo Meknaism 10.1+ will change fuel/waste to need _amnt
---@todo Mekanism 10.1+ will change fuel/waste to need _amnt
_compute_dt(DT_KEYS.ReactorTemp, plc_db.mek_status.temp)
_compute_dt(DT_KEYS.ReactorFuel, plc_db.mek_status.fuel)
_compute_dt(DT_KEYS.ReactorWaste, plc_db.mek_status.waste)
@ -137,7 +137,7 @@ function unit.new(for_reactor, num_boilers, num_turbines)
local boiler = self.boilers[i] ---@type unit_session
local db = boiler.get_db() ---@type boiler_session_db
-- @todo Meknaism 10.1+ will change water/steam to need .amount
---@todo Mekanism 10.1+ will change water/steam to need .amount
_compute_dt(DT_KEYS.BoilerWater .. boiler.get_device_idx(), db.tanks.water)
_compute_dt(DT_KEYS.BoilerSteam .. boiler.get_device_idx(), db.tanks.steam)
_compute_dt(DT_KEYS.BoilerCCool .. boiler.get_device_idx(), db.tanks.ccool.amount)
@ -149,7 +149,7 @@ function unit.new(for_reactor, num_boilers, num_turbines)
local db = turbine.get_db() ---@type turbine_session_db
_compute_dt(DT_KEYS.TurbineSteam .. turbine.get_device_idx(), db.tanks.steam)
-- @todo Mekanism 10.1+ needed
---@todo Mekanism 10.1+ needed
-- _compute_dt(DT_KEYS.TurbinePower .. turbine.get_device_idx(), db.?)
end
end
@ -176,16 +176,16 @@ function unit.new(for_reactor, num_boilers, num_turbines)
end
-- update other annunciator fields
self.db.annunciator.ReactorSCRAM = plc_db.overridden
self.db.annunciator.ReactorSCRAM = plc_db.rps_tripped
self.db.annunciator.ManualReactorSCRAM = plc_db.rps_trip_cause == types.rps_status_t.manual
self.db.annunciator.RCPTrip = plc_db.rps_tripped and (plc_db.rps_status.ex_hcool or plc_db.rps_status.no_cool)
self.db.annunciator.RCSFlowLow = plc_db.mek_status.ccool_fill < 0.75 or plc_db.mek_status.hcool_fill > 0.25
self.db.annunciator.ReactorTempHigh = plc_db.mek_status.temp > 1000
self.db.annunciator.ReactorHighDeltaT = _get_dt(DT_KEYS.ReactorTemp) > 100
self.db.annunciator.FuelInputRateLow = _get_dt(DT_KEYS.ReactorFuel) < 0.0 or plc_db.mek_status.fuel_fill <= 0.01
-- @todo this is catagorized as not urgent, but the >= 0.99 is extremely urgent, revist this (RPS will kick in though)
---@todo this is catagorized as not urgent, but the >= 0.99 is extremely urgent, revist this (RPS will kick in though)
self.db.annunciator.WasteLineOcclusion = _get_dt(DT_KEYS.ReactorWaste) > 0.0 or plc_db.mek_status.waste_fill >= 0.99
-- @todo this is dependent on setup, i.e. how much coolant is buffered and the turbine setup
---@todo this is dependent on setup, i.e. how much coolant is buffered and the turbine setup
self.db.annunciator.HighStartupRate = not plc_db.control_state and plc_db.mek_status.burn_rate > 40
end