;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File : CNet Knowledge-based System - RD 379A(V) ; ;; Start date : 8/14/97 ; ;; Programmers : John Coffey and Thomas Reichherzer ; ;; Expert : Lyn Loupe ; ;; Version : 1.0 finished 11/13/97 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftemplate goal (slot type) (slot value (default n)) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; START RULE ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule startup => (printout t RD379_Start) (assert (goal (type transports) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; BOTH TRANSPORT PROBLEMS ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b1 (goal (type transports) (value "both")) => (printout t RD379_b1) (assert (goal (type gooddirect) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Good Direct on all channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b2 (goal (type gooddirect) (value "Good direct audio on all channels")) => (printout t RD379_b2) (assert (goal (type goodrepro) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Good Direct on all channels, both decks ;; Reproduces on both transports, all channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b3 (goal (type goodrepro) (value "Reproduces both transports all channels")) => (printout t RD379_b3) (assert (goal (type bothTrgosafe) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; goes safe both transports, all channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b4 (goal (type bothTrgosafe) (value "All channels, both transports")) => (printout t RD379_b4) (assert (goal (type bothsafeChangesOver) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; changes over ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b5 (goal (type bothsafeChangesOver) (value "yes")) => (printout t RD379_b5) (assert (goal (type bothsafeclockgood) (value (readline)))) ) (defrule RD379_b6 (goal (type bothsafeclockgood) (value "yes")) => (printout t RD379_b6) (assert (goal (type bothsafeclockgoodDAIRgood) (value (readline)))) ) (defrule RD379_b7 (goal (type bothsafeclockgood) (value "no")) => (printout t RD379_b7) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b8 (goal (type bothsafeclockgoodDAIRgood) (value "yes")) => (printout t RD379_b8) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b9 (goal (type bothsafeclockgoodDAIRgood) (value "no")) => (printout t RD379_b9) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; will NOT change over ;; This rule will examine the clock and DAIR good ;; branch (above) if the adjustment fixes the ;; changeover problem. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b10 (goal (type bothsafeChangesOver) (value "no")) => (printout t RD379_b10) (reset) (assert (goal (type FailAndChangeOver) (value (readline)))) ) (defrule RD379_b11 (goal (type FailAndChangeOver) (value "yes")) => (assert (goal (type bothsafeChangesOver) (value "yes"))) ) (defrule RD379_b12 (goal (type FailAndChangeOver) (value "no")) => (printout t RD379_b12) (assert (goal (type TransistorQ755Good) (value (readline)))) ) (defrule RD379_b13 (goal (type TransistorQ755Good) (value "yes")) => (printout t RD379_b13) (assert (goal (type RY11Problem) (value (readline)))) ) (defrule RD379_b14 (goal (type RY11Problem) (value "no")) => (printout t RD379_b14) (assert (goal (type RY13Problem) (value (readline)))) ) (defrule RD379_b15 (goal (type RY13Problem) (value "no")) => (printout t RD379_b15) (assert (goal (type RY10Problem) (value (readline)))) ) (defrule RD379_b16 (goal (type RY10Problem) (value "no")) => (printout t RD379_b16) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b17 (goal (type TransistorQ755Good) (value "no")) => (printout t RD379_b17) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; goes safe both transports, SOME channels ;; ;; This rule is a quick fix to get from ;; both transports, some channels ;; to one transport, some channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379b_18 (goal (type bothTrgosafe) (value "Some channels on both transports")) => (reset) (assert (goal (type goesSafe) (value "safe on some channels"))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; no channel goes safe ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b19 (goal (type bothTrgosafe) (value "No channels at all")) => (printout t RD379_b19) (assert (goal (type AdjustFSGain) (value (readline)))) ) (defrule RD379_b20 (goal (type AdjustFSGain) (value "no")) => (printout t RD379_b20) (assert (goal (type GoodTPCheck) (value (readline)))) ) (defrule RD379_b21 (goal (type GoodTPCheck) (value "yes")) => (printout t RD379_b21) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b22 (goal (type GoodTPCheck) (value "no")) => (printout t RD379_b22) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Good Direct on all channels, both decks ;; Will not reproduce on either transport, any channel ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b23 (goal (type goodrepro) (value "Doesn't reproduce either transport any channel")) => (printout t RD379_b23) (assert (goal (type goodRY13) (value (readline)))) ) (defrule RD379_b24 (goal (type goodRY13) (value "yes")) => (printout t RD379_b24) (assert (goal (type goodofflinebiasosc) (value (readline)))) ) (defrule RD379_b25 (goal (type goodRY13) (value "no")) => (printout t RD379_b25) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b26 (goal (type goodofflinebiasosc) (value "yes")) => (printout t RD379_b26) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b27 (goal (type goodofflinebiasosc) (value "no")) => (printout t RD379_b27) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Good Direct on all channels, both decks ;; Will not reproduce any channel on one transport ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b28 (goal (type goodrepro) (value "Doesn't reproduce any channel one transport")) => (printout t RD379_b28) (assert (goal (type repampproblemmoves) (value (readline)))) ) (defrule RD379_b29 (goal (type repampproblemmoves) (value "yes")) => (printout t RD379_b29) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b30 (goal (type repampproblemmoves) (value "no")) => (printout t RD379_b30) (assert (goal (type offlinebiasoscgood) (value (readline)))) ) (defrule RD379_b31 (goal (type offlinebiasoscgood) (value "yes")) => (printout t RD379_b31) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b32 (goal (type offlinebiasoscgood) (value "no")) => (printout t RD379_b32) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Good Direct on all channels, both decks ;; Will not reproduce on one channel, both transports ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b33 (goal (type goodrepro) (value "Doesn't reproduce one channel both transports")) => (printout t RD379_b33) (assert (goal (type recampproblemmoves) (value (readline)))) ) (defrule RD379_b34 (goal (type recampproblemmoves) (value "yes")) => (printout t RD379_b34) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b35 (goal (type recampproblemmoves) (value "no")) => (printout t RD379_b35) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Bad Direct on one channel, both decks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b36 (goal (type gooddirect) (value "Bad direct audio on one channel")) => (printout t RD379_b36) (assert (goal (type GainAdjustFixed) (value (readline)))) ) (defrule RD379_b37 (goal (type GainAdjustFixed) (value "no")) => (printout t RD379_b37) (assert (goal (type swapRecAMov) (value (readline)))) ) (defrule RD379_b38 (goal (type swapRecAMov) (value "yes")) => (printout t RD379_b38) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b39 (goal (type swapRecAMov) (value "no")) => (printout t RD379_b39) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; No Direct Audio ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_b40 (goal (type gooddirect) (value "No direct audio on any channel")) => (printout t RD379_b40) (assert (goal (type goodIRIG_E) (value (readline)))) ) (defrule RD379_b41 (goal (type goodIRIG_E) (value "yes")) => (printout t RD379_b41) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_b42 (goal (type goodIRIG_E) (value "no")) => (printout t RD379_b42) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; ;; ONE TRANSPORT PROBLEMS ;; ;; ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o1 (goal (type transports) (value "one")) => (printout t RD379_o1) (assert (goal (type runs) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Transport Runs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o2 (goal (type runs) (value "yes")) => (printout t RD379_o2) (assert (goal (type ModesOK) (value (readline)))) ) (defrule RD379_o3 (goal (type ModesOK) (value "no")) => (printout t RD379_o3) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o4 (goal (type ModesOK) (value "yes")) => (printout t RD379_o4) (assert (goal (type records) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Transport records on all channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o5 (goal (type records) (value "all")) => (printout t RD379_o5) (assert (goal (type goesSafe) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Records on all but one channel ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o6 (goal (type records) (value "all but one")) => (printout t RD379_o6) (assert (goal (type goesSafeNRC) (value (readline)))) ) (defrule RD379_o7 (goal (type goesSafeNRC) (value "yes")) => (printout t RD379_o7) (assert (goal (type swapRAmpMov) (value (readline)))) ) (defrule RD379_o8 (goal (type goesSafeNRC) (value "no")) => (printout t RD379_o8) (assert (goal (type swapRAmpMov) (value (readline)))) ) (defrule RD379_o9 (goal (type swapRAmpMov) (value "yes")) => (printout t RD379_o9) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o10 (goal (type swapRAmpMov) (value "no")) => (printout t RD379_o10) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Doesn't record on any channel ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o11 (goal (type records) (value "none")) => (printout t RD379_o11) (assert (goal (type swapRecAmpMov) (value (readline)))) ) (defrule RD379_o12 (goal (type swapRecAmpMov) (value "yes")) => (printout t RD379_o12) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o13 (goal (type swapRecAmpMov) (value "no")) => (printout t RD379_o13) (assert (goal (type SwapRecHeadMov) (value (readline)))) ) (defrule RD379_o14 (goal (type SwapRecHeadMov) (value "yes")) => (printout t RD379_o14) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o15 (goal (type SwapRecHeadMov) (value "no")) => (printout t RD379_o15) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Transport goes safe on ALL channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o16 (goal (type goesSafe) (value "safe on all channels")) => (printout t RD379_o16) (assert (goal (type goodClockReadout) (value (readline)))) ) (defrule RD379_o17 (goal (type goodClockReadout) (value "yes")) => (printout t RD379_o17) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o18 (goal (type goodClockReadout) (value "no")) => (printout t RD379_o18) (assert (goal (type correctMSSetting) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Goes safe on SOME channels ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o19 (goal (type goesSafe) (value "safe on some channels")) => (printout t RD379_o19) (assert (goal (type goodMeter) (value (readline)))) ) (defrule RD379_o20 (goal (type goodMeter) (value "yes")) => (printout t RD379_o20) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o21 (goal (type goodMeter) (value "no")) => (printout t RD379_o21) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Doesn't go safe at all ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o22 (goal (type goesSafe) (value "does not go safe on any channel")) => (printout t RD379_o22) (assert (goal (type gainPotAdjust) (value (readline)))) ) (defrule RD379_o23 (goal (type gainPotAdjust) (value "no")) => (printout t RD379_o23) (assert (goal (type fixWithReproduceAmp) (value (readline)))) ) (defrule RD379_o24 (goal (type fixWithReproduceAmp) (value "yes")) => (printout t RD379_o24) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o25 (goal (type fixWithReproduceAmp) (value "no")) => (printout t RD379_o25) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o26 (goal (type correctMSSetting) (value "yes")) => (printout t RD379_o26) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o27 (goal (type correctMSSetting) (value "no")) => (printout t RD379_o27) (assert (goal (type finished) (value (readline)))) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Transport Won't Run ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defrule RD379_o28 (goal (type runs) (value "no")) => (printout t RD379_o28) (assert (goal (type pinchworks) (value (readline)))) ) (defrule RD379_o29 (goal (type pinchworks) (value "no")) => (printout t RD379_o32) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o30 (goal (type pinchworks) (value "yes")) => (printout t RD379_o30) (assert (goal (type brakesrelease) (value (readline)))) ) (defrule RD379_o31 (goal (type brakesrelease) (value "yes")) => (printout t RD379_o31) (assert (goal (type finished) (value (readline)))) ) (defrule RD379_o32 (goal (type brakesrelease) (value "no")) => (printout t RD379_o29) (assert (goal (type finished) (value (readline)))) )