fixed process controller assuming ramp complete if burn rate setpoint was identical to setpoint before process control start
This commit is contained in:
@@ -50,10 +50,21 @@ local function new_view(root, x, y)
|
||||
|
||||
facility.scram_ack = scram.on_response
|
||||
|
||||
local auto_act = IndicatorLight{parent=main,y=5,label="Auto Active",colors=cpair(colors.green,colors.gray)}
|
||||
local auto_ramp = IndicatorLight{parent=main,label="Auto Ramping",colors=cpair(colors.white,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local auto_scram = IndicatorLight{parent=main,label="Auto SCRAM",colors=cpair(colors.red,colors.gray),flash=true,period=period.BLINK_250_MS}
|
||||
local all_ok = IndicatorLight{parent=main,y=5,label="Unit Systems Online",colors=cpair(colors.green,colors.red)}
|
||||
local ind_mat = IndicatorLight{parent=main,label="Induction Matrix",colors=cpair(colors.green,colors.gray)}
|
||||
local rad_mon = IndicatorLight{parent=main,label="Radiation Monitor",colors=cpair(colors.green,colors.gray)}
|
||||
|
||||
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)
|
||||
|
||||
main.line_break()
|
||||
|
||||
local auto_ready = IndicatorLight{parent=main,label="Configured Units Ready",colors=cpair(colors.green,colors.red)}
|
||||
local auto_act = IndicatorLight{parent=main,label="Process Active",colors=cpair(colors.green,colors.gray)}
|
||||
local auto_ramp = IndicatorLight{parent=main,label="Process Ramping",colors=cpair(colors.white,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}
|
||||
|
||||
facility.ps.subscribe("auto_ready", auto_ready.update)
|
||||
facility.ps.subscribe("auto_active", auto_act.update)
|
||||
facility.ps.subscribe("auto_ramping", auto_ramp.update)
|
||||
facility.ps.subscribe("auto_scram", auto_scram.update)
|
||||
|
||||
@@ -354,7 +354,7 @@ local function init(parent, id)
|
||||
if (unit.reactor_data ~= nil) and (unit.reactor_data.mek_status ~= nil) then
|
||||
local can_start = (not unit.reactor_data.mek_status.status) and
|
||||
(not unit.reactor_data.rps_tripped) and
|
||||
(not unit.annunciator.AutoControl)
|
||||
(unit.a_group == 0)
|
||||
if can_start then start.enable() else start.disable() end
|
||||
end
|
||||
end
|
||||
@@ -459,7 +459,7 @@ local function init(parent, id)
|
||||
|
||||
local group = RadioButton{parent=auto_div,options=ctl_opts,callback=function()end,radio_colors=cpair(colors.blue,colors.white),radio_bg=colors.gray}
|
||||
|
||||
u_ps.subscribe("auto_group_id", group.set_value)
|
||||
u_ps.subscribe("auto_group_id", function (gid) group.set_value(gid + 1) end)
|
||||
|
||||
auto_div.line_break()
|
||||
|
||||
@@ -485,18 +485,27 @@ local function init(parent, id)
|
||||
a_stb.update(unit.annunciator.AutoControl and (not active))
|
||||
end)
|
||||
|
||||
-- enable and disable controls based on group assignment
|
||||
u_ps.subscribe("auto_group_id", function (gid)
|
||||
start_button_en_check()
|
||||
|
||||
if gid == 0 then
|
||||
burn_rate.enable()
|
||||
set_burn_btn.enable()
|
||||
else
|
||||
burn_rate.disable()
|
||||
set_burn_btn.disable()
|
||||
end
|
||||
end)
|
||||
|
||||
-- enable and disable controls based on auto control state (start button is handled separately)
|
||||
u_ps.subscribe("AutoControl", function (auto_active)
|
||||
start_button_en_check()
|
||||
|
||||
if auto_active then
|
||||
burn_rate.disable()
|
||||
set_burn_btn.disable()
|
||||
set_grp_btn.disable()
|
||||
a_stb.update(unit.reactor_data.mek_status.status == false)
|
||||
else
|
||||
burn_rate.enable()
|
||||
set_burn_btn.enable()
|
||||
set_grp_btn.enable()
|
||||
a_stb.update(false)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user