% File "diagnosis": diagnostic support for the RCS % First Release date: 04/16/04 % % $Name: $ % % Observation Axioms % h(F,0) :- fluent(F), obs(F,0). nh(F,0) :- fluent(F), obs(neg(F),0). occurs(A,T) :- hpd(A,T). % % Reality Checks % :- fluent(F), time(T), % not nh(F,T), obs(neg(F),T). h(F,T), obs(neg(F),T). :- fluent(F), time(T), % not h(F,T), obs(F,T). nh(F,T), obs(F,T). diagnose. %1{ has_leak(V) : of_type(V,valve) }1 :- diagnose. %{ has_leak(V) : of_type(V,valve) } :- diagnose. %#minimize {has_leak(V) : of_type(V,valve)}. { has_leak(V) : of_type(V,valve), stuck(Sw) : of_type(Sw,v_switch), stuck(V) : of_typev(V,R,valve), bad_circuitry(V) : of_type(V,valve) } :- diagnose. %1{ has_leak(V) : of_type(V,valve), stuck(Sw) : of_type(Sw,v_switch), % stuck(V) : of_typev(V,R,valve), bad_circuitry(V) : of_type(V,valve) }1 :- diagnose. #minimize { has_leak(V) : of_type(V,valve), stuck(Sw) : of_type(Sw,v_switch), stuck(V) : of_typev(V,R,valve), bad_circuitry(V) : of_type(V,valve) }. :- has_leak(V), dummy_valve(V). :- bad_circuitry(V), dummy_valve(V). %%%%% For Typing Purposes only type_cc(closea_fi12). type_cc(closeb_ffi12). type_cc(closeb_foi12). type_cc(closea_li12). type_cc(closeb_lfi12). type_cc(closeb_loi12). type_cc(close_lx12). type_cc(close_lfx12). type_cc(close_lox12). type_cc(closea_ri12). type_cc(closeb_rfi12). type_cc(closeb_roi12). type_cc(close_rx12). type_cc(close_rfx12). type_cc(close_rox12). type_cc(opena_ffm5). type_cc(openb_ffm5). type_cc(opena_lfm5). type_cc(openb_lfm5). type_cc(opena_rfm5). type_cc(openb_rfm5). type_cc(closea_ffm5). type_cc(closeb_ffm5). type_cc(closea_lfm5). type_cc(closeb_lfm5). type_cc(closea_rfm5). type_cc(closeb_rfm5). %%%%%%%%%%%%%% Facts %%%%%%%%%%%%%%%%% % of_type(D,R,Dev) is true iff device D from RCS R is of type Dev. % Switches of_type(fha,fwd_rcs,v_switch). % fha = forward helium a of_type(fhb,fwd_rcs,v_switch). % fhb = forward helium b of_type(fi12,fwd_rcs,v_switch). % fi12 = forward isolation 12 of_type(fi345,fwd_rcs,v_switch). % fi345 = forward isolation 345 of_type(fm1,fwd_rcs,v_switch). % fm1 = forward manifold 1 of_type(fm2,fwd_rcs,v_switch). % fm2 = forward manifold 2 of_type(fm3,fwd_rcs,v_switch). % fm3 = forward manifold 3 of_type(fm4,fwd_rcs,v_switch). % fm4 = forward manifold 4 of_type(fm5,fwd_rcs,v_switch). % fm5 = forward manifold 5 of_type(lha,left_rcs,v_switch). % lha = left helium a of_type(lhb,left_rcs,v_switch). % lhb = left helium b of_type(li12,left_rcs,v_switch). % li12 = left isolation 12 of_type(li345a,left_rcs,v_switch). % li345a= left isolation 345a of_type(li345b,left_rcs,v_switch). % li345b= left isolation 345b of_type(lm1,left_rcs,v_switch). % lm1 = left manifold 1 of_type(lm2,left_rcs,v_switch). % lm2 = left manifold 2 of_type(lm3,left_rcs,v_switch). % lm3 = left manifold 3 of_type(lm4,left_rcs,v_switch). % lm4 = left manifold 4 of_type(lm5,left_rcs,v_switch). % lm5 = left manifold 5 of_type(lx12,left_rcs,v_switch). % lx12 = left cross-feed isolation 12 of_type(lx345,left_rcs,v_switch). % lx345 = left cross-feed isolation 345 of_type(rha,right_rcs,v_switch). % rha = right helium a of_type(rhb,right_rcs,v_switch). % rhb = right helium b of_type(ri12,right_rcs,v_switch). % ri12 = right isolation 12 of_type(ri345a,right_rcs,v_switch). % ri345a= right isolation 345a of_type(ri345b,right_rcs,v_switch). % ri345b= right isolation 345b of_type(rm1,right_rcs,v_switch). % rm1 = right manifold 1 of_type(rm2,right_rcs,v_switch). % rm2 = right manifold 2 of_type(rm3,right_rcs,v_switch). % rm3 = right manifold 3 of_type(rm4,right_rcs,v_switch). % rm4 = right manifold 4 of_type(rm5,right_rcs,v_switch). % rm5 = right manifold 5 of_type(rx12,right_rcs,v_switch). % rx12 = right cross-feed isolation 12 of_type(rx345,right_rcs,v_switch). % rx345 = right cross-feed isolation 345 % Valves of_typev(ffha,fwd_rcs,valve). of_typev(foha,fwd_rcs,valve). of_typev(ffhb,fwd_rcs,valve). of_typev(fohb,fwd_rcs,valve). of_typev(ffi12,fwd_rcs,valve). of_typev(foi12,fwd_rcs,valve). of_typev(ffi345,fwd_rcs,valve). of_typev(foi345,fwd_rcs,valve). of_typev(ffm1,fwd_rcs,valve). of_typev(fom1,fwd_rcs,valve). of_typev(ffm2,fwd_rcs,valve). of_typev(fom2,fwd_rcs,valve). of_typev(ffm3,fwd_rcs,valve). of_typev(fom3,fwd_rcs,valve). of_typev(ffm4,fwd_rcs,valve). of_typev(fom4,fwd_rcs,valve). of_typev(ffm5,fwd_rcs,valve). of_typev(fom5,fwd_rcs,valve). of_typev(lfha,left_rcs,valve). of_typev(loha,left_rcs,valve). of_typev(lfhb,left_rcs,valve). of_typev(lohb,left_rcs,valve). of_typev(lfi12,left_rcs,valve). of_typev(loi12,left_rcs,valve). of_typev(lfi345a,left_rcs,valve). of_typev(loi345a,left_rcs,valve). of_typev(lfi345b,left_rcs,valve). of_typev(loi345b,left_rcs,valve). of_typev(lfm1,left_rcs,valve). of_typev(lom1,left_rcs,valve). of_typev(lfm2,left_rcs,valve). of_typev(lom2,left_rcs,valve). of_typev(lfm3,left_rcs,valve). of_typev(lom3,left_rcs,valve). of_typev(lfm4,left_rcs,valve). of_typev(lom4,left_rcs,valve). of_typev(lfm5,left_rcs,valve). of_typev(lom5,left_rcs,valve). of_typev(lfx12,left_rcs,valve). of_typev(lox12,left_rcs,valve). of_typev(lfx345,left_rcs,valve). of_typev(lox345,left_rcs,valve). of_typev(rfha,right_rcs,valve). of_typev(roha,right_rcs,valve). of_typev(rfhb,right_rcs,valve). of_typev(rohb,right_rcs,valve). of_typev(rfi12,right_rcs,valve). of_typev(roi12,right_rcs,valve). of_typev(rfi345a,right_rcs,valve). of_typev(roi345a,right_rcs,valve). of_typev(rfi345b,right_rcs,valve). of_typev(roi345b,right_rcs,valve). of_typev(rfm1,right_rcs,valve). of_typev(rom1,right_rcs,valve). of_typev(rfm2,right_rcs,valve). of_typev(rom2,right_rcs,valve). of_typev(rfm3,right_rcs,valve). of_typev(rom3,right_rcs,valve). of_typev(rfm4,right_rcs,valve). of_typev(rom4,right_rcs,valve). of_typev(rfm5,right_rcs,valve). of_typev(rom5,right_rcs,valve). of_typev(rfx12,right_rcs,valve). of_typev(rox12,right_rcs,valve). of_typev(rfx345,right_rcs,valve). of_typev(rox345,right_rcs,valve). of_type(V,R,valve) :- of_typev(V,R,valve). of_type(V,R,valve) :- dummy_valve(V,R). % Dummy valves have been added between fuel/oxidizer tanks % and the following junction node in order to correctly % determine when the junction node is leaking. dummy_valve(ffdummy,fwd_rcs). dummy_valve(fodummy,fwd_rcs). dummy_valve(lfdummy,left_rcs). dummy_valve(lodummy,left_rcs). dummy_valve(rfdummy,right_rcs). dummy_valve(rodummy,right_rcs). %%%%%%%%%%%%%%%%%%%%%%%% End: Control Module %%%%%%%%%%%%%%%%%%%%%%%%% hide dummy_valve(X,Y). hide of_type(X,Y,Z). hide of_typev(X,Y,Z). hide type_cc(X).