Compare commits

..

7 Commits

Author SHA1 Message Date
Mikayla
bdbb3071b3 Merge pull request #294 from MikaylaFischler/devel
2023.07.19 Hotfix
2023-07-19 19:18:48 -04:00
Mikayla Fischler
def02a94d2 #293 fixed race condition with graphics element IDs 2023-07-19 11:27:33 -04:00
Mikayla Fischler
681bb0963e #291 RTU comms thread no longer yields every packet 2023-07-18 22:28:43 -04:00
Mikayla
8f7d7c3ead Merge pull request #288 from MikaylaFischler/devel
2023.07.17 Hotfix
2023-07-17 22:48:03 -04:00
Mikayla Fischler
c0f45cfb8b updated comments 2023-07-17 22:47:19 -04:00
Mikayla Fischler
455653074a #287 fixed coordinator not notifying supervisor of auto waste config 2023-07-17 22:09:21 -04:00
Mikayla Fischler
1202289fab #285 #286 mitigated false trips 2023-07-17 20:59:45 -04:00
11 changed files with 48 additions and 30 deletions

View File

@@ -75,6 +75,10 @@ function process.init(iocontrol, coord_comms)
end end
log.info("PROCESS: loaded auto control settings from coord.settings") log.info("PROCESS: loaded auto control settings from coord.settings")
-- notify supervisor of auto waste config
self.comms.send_fac_command(FAC_COMMAND.SET_WASTE_MODE, self.config.waste_product)
self.comms.send_fac_command(FAC_COMMAND.SET_PU_FB, self.config.pu_fallback)
end end
-- unit waste states -- unit waste states

View File

@@ -22,7 +22,7 @@ local sounder = require("coordinator.sounder")
local apisessions = require("coordinator.session.apisessions") local apisessions = require("coordinator.session.apisessions")
local COORDINATOR_VERSION = "v0.21.0" local COORDINATOR_VERSION = "v0.21.2"
local println = util.println local println = util.println
local println_ts = util.println_ts local println_ts = util.println_ts

View File

@@ -52,6 +52,8 @@ function pgi.delete_pkt_entry(session_id)
if not success then if not success then
log.error(util.c("PGI: failed to delete PKT entry (", result, ")"), true) log.error(util.c("PGI: failed to delete PKT entry (", result, ")"), true)
end end
else
log.debug(util.c("PGI: tried to delete unknown PKT entry ", session_id))
end end
end end

View File

@@ -7,7 +7,7 @@ local flasher = require("graphics.flasher")
local core = {} local core = {}
core.version = "1.0.1" core.version = "1.0.2"
core.flasher = flasher core.flasher = flasher
core.events = events core.events = events

View File

@@ -71,7 +71,8 @@ function element.new(args, child_offset_x, child_offset_y)
p_window = nil, ---@type table p_window = nil, ---@type table
position = { x = 1, y = 1 }, ---@type coordinate_2d position = { x = 1, y = 1 }, ---@type coordinate_2d
bounds = { x1 = 1, y1 = 1, x2 = 1, y2 = 1 }, ---@class element_bounds bounds = { x1 = 1, y1 = 1, x2 = 1, y2 = 1 }, ---@class element_bounds
next_y = 1, next_y = 1, -- next child y coordinate
next_id = 0, -- next child ID
subscriptions = {}, subscriptions = {},
mt = {} mt = {}
} }
@@ -352,13 +353,14 @@ function element.new(args, child_offset_x, child_offset_y)
local child_element = child.get() local child_element = child.get()
if key == nil then local id = key ---@type string|integer|nil
table.insert(protected.children, child_element) if id == nil then
return #protected.children id = self.next_id
else self.next_id = self.next_id + 1
protected.children[key] = child_element
return key
end end
protected.children[id] = child_element
return id
end end
-- remove a child element -- remove a child element

File diff suppressed because one or more lines are too long

View File

@@ -30,7 +30,7 @@ local sna_rtu = require("rtu.dev.sna_rtu")
local sps_rtu = require("rtu.dev.sps_rtu") local sps_rtu = require("rtu.dev.sps_rtu")
local turbinev_rtu = require("rtu.dev.turbinev_rtu") local turbinev_rtu = require("rtu.dev.turbinev_rtu")
local RTU_VERSION = "v1.5.4" local RTU_VERSION = "v1.5.5"
local RTU_UNIT_TYPE = types.RTU_UNIT_TYPE local RTU_UNIT_TYPE = types.RTU_UNIT_TYPE
local RTU_UNIT_HW_STATE = databus.RTU_UNIT_HW_STATE local RTU_UNIT_HW_STATE = databus.RTU_UNIT_HW_STATE

View File

@@ -308,7 +308,9 @@ function threads.thread__comms(smem)
-- thread loop -- thread loop
while true do while true do
-- check for messages in the message queue local handle_start = util.time()
-- check for messages in the message queue while not shut down
while comms_queue.ready() and not rtu_state.shutdown do while comms_queue.ready() and not rtu_state.shutdown do
local msg = comms_queue.pop() local msg = comms_queue.pop()
@@ -324,10 +326,16 @@ function threads.thread__comms(smem)
end end
end end
-- quick yield -- max 100ms spent processing queue
util.nop() if util.time() - handle_start > 100 then
log.warning("comms thread exceeded 100ms queue process limit")
break
end
end end
-- quick yield
util.nop()
-- check for termination request -- check for termination request
if rtu_state.shutdown then if rtu_state.shutdown then
rtu_comms.close(rtu_state) rtu_comms.close(rtu_state)
@@ -414,6 +422,12 @@ function threads.thread__unit_comms(smem, unit)
util.nop() util.nop()
end end
-- check for termination request
if rtu_state.shutdown then
log.info("rtu unit thread exiting -> " .. short_name)
break
end
-- check if multiblock is still formed if this is a multiblock -- check if multiblock is still formed if this is a multiblock
if unit.is_multiblock and (util.time_ms() - last_f_check > 250) then if unit.is_multiblock and (util.time_ms() - last_f_check > 250) then
local is_formed = unit.device.isFormed() local is_formed = unit.device.isFormed()
@@ -507,12 +521,6 @@ function threads.thread__unit_comms(smem, unit)
-- update hw status -- update hw status
databus.tx_unit_hw_status(unit.uid, unit.hw_state) databus.tx_unit_hw_status(unit.uid, unit.hw_state)
-- check for termination request
if rtu_state.shutdown then
log.info("rtu unit thread exiting -> " .. short_name)
break
end
-- delay before next check -- delay before next check
last_update = util.adaptive_delay(COMMS_SLEEP, last_update) last_update = util.adaptive_delay(COMMS_SLEEP, last_update)
end end

View File

@@ -60,6 +60,8 @@ function pgi.delete_rtu_entry(session_id)
if not success then if not success then
log.error(util.c("PGI: failed to delete RTU entry (", result, ")"), true) log.error(util.c("PGI: failed to delete RTU entry (", result, ")"), true)
end end
else
log.debug(util.c("PGI: tried to delete unknown RTU entry ", session_id))
end end
end end
@@ -87,6 +89,8 @@ function pgi.delete_pdg_entry(session_id)
if not success then if not success then
log.error(util.c("PGI: failed to delete PDG entry (", result, ")"), true) log.error(util.c("PGI: failed to delete PDG entry (", result, ")"), true)
end end
else
log.debug(util.c("PGI: tried to delete unknown PDG entry ", session_id))
end end
end end

View File

@@ -21,7 +21,7 @@ local supervisor = require("supervisor.supervisor")
local svsessions = require("supervisor.session.svsessions") local svsessions = require("supervisor.session.svsessions")
local SUPERVISOR_VERSION = "v0.20.2" local SUPERVISOR_VERSION = "v0.20.4"
local println = util.println local println = util.println
local println_ts = util.println_ts local println_ts = util.println_ts

View File

@@ -327,13 +327,14 @@ function logic.update_annunciator(self)
--[[ --[[
Generator Trip Generator Trip
a generator trip is when a generator suddenly and unexpectedly loses it's external load a generator trip is when a generator suddenly and unexpectedly loses it's external load, which occurs when a power plant
oftentimes this is when a power plant is disconnected from the grid for one reason or another is disconnected from the grid. in our case, this is when the turbine is disconnected, or what it's connected to becomes
in this case we just: fully charged. this is identified by detecting if:
- check if internal power storage of turbine is increasing - the internal power storage of the turbine is increasing AND
that means there is no external load and there will be a turbine trip soon if this is not resolved - there is at least 5% energy fill (preventing false trips with periodic power extraction from other mods)
this would then mean there is no external load and there will be a turbine trip soon if this is not resolved
]]-- ]]--
self.db.annunciator.GeneratorTrip[idx] = _get_dt(DT_KEYS.TurbinePower .. idx) > 0.0 self.db.annunciator.GeneratorTrip[idx] = (_get_dt(DT_KEYS.TurbinePower .. idx) > 0.0) and (db.tanks.energy_fill > 0.05)
--[[ --[[
Turbine Trip Turbine Trip
@@ -504,9 +505,6 @@ function logic.update_alarms(self)
local rcs_trans = any_low or any_over or gen_trip or annunc.RCPTrip or annunc.MaxWaterReturnFeed local rcs_trans = any_low or any_over or gen_trip or annunc.RCPTrip or annunc.MaxWaterReturnFeed
-- only care about RCS flow low early with boilers
if self.num_boilers > 0 then rcs_trans = rcs_trans or annunc.RCSFlowLow end
-- annunciator indicators for these states may not indicate a real issue when: -- annunciator indicators for these states may not indicate a real issue when:
-- > flow is ramping up right after reactor start -- > flow is ramping up right after reactor start
-- > flow is ramping down after reactor shutdown -- > flow is ramping down after reactor shutdown