@@ -29,7 +29,16 @@ function iocontrol.init(conf, comms)
|
||||
auto_active = false,
|
||||
auto_ramping = false,
|
||||
auto_saturated = false,
|
||||
|
||||
auto_scram = false,
|
||||
---@type ascram_status
|
||||
ascram_status = {
|
||||
matrix_dc = false,
|
||||
matrix_fill = false,
|
||||
crit_alarm = false,
|
||||
radiation = false,
|
||||
gen_fault = false
|
||||
},
|
||||
|
||||
radiation = types.new_zero_radiation_reading(),
|
||||
|
||||
@@ -278,15 +287,22 @@ function iocontrol.update_facility_status(status)
|
||||
|
||||
local ctl_status = status[1]
|
||||
|
||||
if type(ctl_status) == "table" and (#ctl_status == 9) then
|
||||
if type(ctl_status) == "table" and (#ctl_status == 14) then
|
||||
fac.all_sys_ok = ctl_status[1]
|
||||
fac.auto_ready = ctl_status[2]
|
||||
fac.auto_active = ctl_status[3] > 0
|
||||
fac.auto_ramping = ctl_status[4]
|
||||
fac.auto_saturated = ctl_status[5]
|
||||
|
||||
fac.auto_scram = ctl_status[6]
|
||||
fac.status_line_1 = ctl_status[7]
|
||||
fac.status_line_2 = ctl_status[8]
|
||||
fac.ascram_status.matrix_dc = ctl_status[7]
|
||||
fac.ascram_status.matrix_fill = ctl_status[8]
|
||||
fac.ascram_status.crit_alarm = ctl_status[9]
|
||||
fac.ascram_status.radiation = ctl_status[10]
|
||||
fac.ascram_status.gen_fault = ctl_status[11]
|
||||
|
||||
fac.status_line_1 = ctl_status[12]
|
||||
fac.status_line_2 = ctl_status[13]
|
||||
|
||||
fac.ps.publish("all_sys_ok", fac.all_sys_ok)
|
||||
fac.ps.publish("auto_ready", fac.auto_ready)
|
||||
@@ -294,10 +310,15 @@ function iocontrol.update_facility_status(status)
|
||||
fac.ps.publish("auto_ramping", fac.auto_ramping)
|
||||
fac.ps.publish("auto_saturated", fac.auto_saturated)
|
||||
fac.ps.publish("auto_scram", fac.auto_scram)
|
||||
fac.ps.publish("as_matrix_dc", fac.ascram_status.matrix_dc)
|
||||
fac.ps.publish("as_matrix_fill", fac.ascram_status.matrix_fill)
|
||||
fac.ps.publish("as_crit_alarm", fac.ascram_status.crit_alarm)
|
||||
fac.ps.publish("as_radiation", fac.ascram_status.radiation)
|
||||
fac.ps.publish("as_gen_fault", fac.ascram_status.gen_fault)
|
||||
fac.ps.publish("status_line_1", fac.status_line_1)
|
||||
fac.ps.publish("status_line_2", fac.status_line_2)
|
||||
|
||||
local group_map = ctl_status[9]
|
||||
local group_map = ctl_status[14]
|
||||
|
||||
if (type(group_map) == "table") and (#group_map == fac.num_units) then
|
||||
local names = { "Manual", "Primary", "Secondary", "Tertiary", "Backup" }
|
||||
@@ -382,11 +403,11 @@ function iocontrol.update_facility_status(status)
|
||||
local rtu_faulted = rad_mon[1] ---@type boolean
|
||||
fac.radiation = rad_mon[2] ---@type number
|
||||
|
||||
fac.ps.publish("RadMonOnline", util.trinary(rtu_faulted, 2, 3))
|
||||
fac.ps.publish("rad_computed_status", util.trinary(rtu_faulted, 2, 3))
|
||||
fac.ps.publish("radiation", fac.radiation)
|
||||
else
|
||||
fac.radiation = { radiation = 0, unit = "nSv" }
|
||||
fac.ps.publish("RadMonOnline", 1)
|
||||
fac.ps.publish("rad_computed_status", 1)
|
||||
end
|
||||
else
|
||||
log.debug(log_header .. "radiation monitor list not a table")
|
||||
@@ -605,11 +626,11 @@ function iocontrol.update_unit_statuses(statuses)
|
||||
local rtu_faulted = rad_mon[1] ---@type boolean
|
||||
unit.radiation = rad_mon[2] ---@type number
|
||||
|
||||
unit.unit_ps.publish("RadMonOnline", util.trinary(rtu_faulted, 2, 3))
|
||||
unit.unit_ps.publish("rad_computed_status", util.trinary(rtu_faulted, 2, 3))
|
||||
unit.unit_ps.publish("radiation", unit.radiation)
|
||||
else
|
||||
unit.radiation = { radiation = 0, unit = "nSv" }
|
||||
unit.unit_ps.publish("RadMonOnline", 1)
|
||||
unit.unit_ps.publish("rad_computed_status", 1)
|
||||
end
|
||||
else
|
||||
log.debug(log_header .. "radiation monitor list not a table")
|
||||
|
||||
@@ -19,7 +19,7 @@ local iocontrol = require("coordinator.iocontrol")
|
||||
local renderer = require("coordinator.renderer")
|
||||
local sounder = require("coordinator.sounder")
|
||||
|
||||
local COORDINATOR_VERSION = "beta-v0.9.11"
|
||||
local COORDINATOR_VERSION = "beta-v0.9.12"
|
||||
|
||||
local print = util.print
|
||||
local println = util.println
|
||||
|
||||
@@ -60,7 +60,7 @@ local function new_view(root, x, y)
|
||||
|
||||
facility.ps.subscribe("all_sys_ok", all_ok.update)
|
||||
facility.induction_ps_tbl[1].subscribe("computed_status", function (status) ind_mat.update(status > 1) end)
|
||||
facility.ps.subscribe("RadMonOnline", rad_mon.update)
|
||||
facility.ps.subscribe("rad_computed_status", rad_mon.update)
|
||||
|
||||
main.line_break()
|
||||
|
||||
@@ -76,13 +76,19 @@ local function new_view(root, x, y)
|
||||
|
||||
main.line_break()
|
||||
|
||||
local auto_scram = IndicatorLight{parent=main,label="Automatic SCRAM",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local _ = IndicatorLight{parent=main,label="Matrix Disconnected",colors=cpair(colors.yellow,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local _ = IndicatorLight{parent=main,label="Matrix Charge High",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local _ = IndicatorLight{parent=main,label="Unit Critical Alarm",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local _ = IndicatorLight{parent=main,label="Gen. Control Fault",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local auto_scram = IndicatorLight{parent=main,label="Automatic SCRAM",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local matrix_dc = IndicatorLight{parent=main,label="Matrix Disconnected",colors=cpair(colors.yellow,colors.gray),flash=true,period=period.BLINK_500_MS}
|
||||
local matrix_fill = IndicatorLight{parent=main,label="Matrix Charge High",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_500_MS}
|
||||
local unit_crit = IndicatorLight{parent=main,label="Unit Critical Alarm",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local fac_rad_h = IndicatorLight{parent=main,label="Facility Radiation High",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local gen_fault = IndicatorLight{parent=main,label="Gen. Control Fault",colors=cpair(colors.yellow,colors.gray),flash=true,period=period.BLINK_500_MS}
|
||||
|
||||
facility.ps.subscribe("auto_scram", auto_scram.update)
|
||||
facility.ps.subscribe("as_matrix_dc", matrix_dc.update)
|
||||
facility.ps.subscribe("as_matrix_fill", matrix_fill.update)
|
||||
facility.ps.subscribe("as_crit_alarm", unit_crit.update)
|
||||
facility.ps.subscribe("as_radiation", fac_rad_h.update)
|
||||
facility.ps.subscribe("as_gen_fault", gen_fault.update)
|
||||
|
||||
TextBox{parent=main,y=23,text="Radiation",height=1,width=21,fg_bg=style.label}
|
||||
local radiation = RadIndicator{parent=main,label="",format="%9.3f",lu_colors=lu_cpair,width=13,fg_bg=bw_fg_bg}
|
||||
|
||||
@@ -171,7 +171,7 @@ local function init(parent, id)
|
||||
u_ps.subscribe("PLCHeartbeat", plc_hbeat.update)
|
||||
u_ps.subscribe("status", r_active.update)
|
||||
u_ps.subscribe("AutoControl", r_auto.update)
|
||||
u_ps.subscribe("RadMonOnline", rad_mon.update)
|
||||
u_ps.subscribe("rad_computed_status", rad_mon.update)
|
||||
|
||||
annunciator.line_break()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user