ADA165145

Download as pdf or txt
Download as pdf or txt
You are on page 1of 65

AD-AI65 145 R LISP-BASED EXPERT SYSTEM FOR DETECTING FAILURES IN 1/i

AIRCRAFT SVSTEMS (U) PRINCETON UNIV NJ DEPT OF


MECHANICAL AND AEROSPACE ENGINERRIN C Y HUANG
UNCLASSIFIED 38 JUN 84 MAE-1666 ARO-28i55 3-MA F/G 6/4 ML

llmllllllmlllI
EIIIIIIIEEEIII
EhEEE|EE
111
1 4. 128 12.5
'o111111-

B~B
.1 L1.8

11II111llli .liii ~.
11111.25 II

MICROCOPY RESOLUTION TEST CHART


NATONAL BUREAU OF STANDARDS1963-A

.|

- %
__ , @ -'~

Wf)
Princeton University

--1 --

.. d
I
: DTIC
• III~ELECTEml

-DTI

L- S%B N%NIjjV.

C Department of
LMechanical and
Aerospace Engineering

ISA!

4-.°

- - - .-- . - * *- i . - *
- -- - -
J,
~11TV
L ASS!FIED
CL. ASSIFICAT10m OF T I PA CE '~,~D' ,Id
/9/9 ' /H
PAGE BEFORE~ CO\IPLETriG FORM4
*REPORT NUMBER 2.GV CESI N1 3. RE' iPIN~T-5 CATALC-O NUM6 R

N/A I /A
A. TILE (nd Sutill) 5.TYPE OF REPORT 6 PERIOD COVERED

A LISP-BASED EXPERT SYSTEM FOR DETECTING TehialRpr


AICRAF SYSEMSJan.
FAILRES N 1/84 - June 30/84
FAILRESIN
IRCAFTSYSEMS6. PERFOR%IING ORG. REPORT NUMUPFR

7.~ AUTHORr.) 8. CONTRACT OR GRANT NUNaER(3)

Chien Huang DAAG29-84-K-004 8

9. PERFORMING ORGANIZATION NAME AND ADDRESS 10. PROGRAM ELEMENT. PROJECT. TASK
AREA & WORK UNIT NUMSERS
Princeton University
MAE Department N/A
Princeton, NJ 08544 ____________

11. CONTflOLLING OFFICE NAME AND ADDRESS 12. REPORT DATE

U. S. Army Research Office June 30, 1984


Post Office Box 12211 -13. NUMBER OF PAGES
Research Triangle Park, NC 27709 5
14. MONITORING AGEN NAME & AOORESS(Jf different trout Contrcolllng Ollie&) 15. SECURITY CLASS. (of this repoef)

Unclassi fied
IS.. DECLASSIFICATION/DOWNGRADING
SCH EDULE

41 6. OISTP.I'LuTION STATEMENT (of this Report)

Approved for public release; distribution unlimited.

I17. DISrRI 9.1TION STATEMENT (of the abstract entered In Block 20. 1! diffeent If*-" Report)

NA

IS1. SUPPLEMENTARY NOTES


The view, opinions, and/or findings contained in this report are
those of the author(s) and should not be construed as an official
Department of the Army position, policy, or decision, unless so
designated by other documentation.
,19. KEY WORDS (Continue on few"&*e side inocesararid Ident,1fy by- bock number)

7Artificial'Intelligence; Control Systems; Flight Control;


Cybernetics; Computer Systems; Systems Analysis,

M0 ASTRAcC&t
cu. revw. se~ It .e*
-cl euidewtly by block nurrbevj

An expert system that provides fault detection and limited


fault tolerance was designed for a generic aircraft model. A
"nbest-first" search among applicable rules was utilized, leading
to efficient recognition and processing of abnormal situations.
Results showed that such an expert system is feasible and that
it could contribute 'to increased reliability of aircraft system
prtion without a high dePre f cpmplexity. , -1,r_ .

1 7 i <,0-
rR - rfL-
D IF 0.4 1473 EOIrnoOFOI NOV 55IS 0115dtETE 8A U3NCLASS IF IFD

4. $scCUairy CL %,11I1C7ATt7T-CF THIS PA -E


1666-MAE

A LISP-BASED EXPERT SYSTEM FOR


DETECTING FAILURES IN AIRCRAFT SYSTEMS

Chien Y. Huang
0June 30, 1984

Interim Technical Report


U.S. ARMY RESEARCH OFFICE
Contract No. DAAG29-84-K-0048

PRINCETON UNIVERSITY
Department of Mechanical and Aerospace Engineering
Princeton, NJ 08544

Approved for Public Release;


Distribution Unlimited.

.,o.
THE VIEW, OPINIONS, AND/OR FINDINGS CONTAINED IN THIS REPORT ARE
THOSE OF THE AUTHOR(S) AND SHOULD NOT BE CONSTRUED AS AN OFFICIAL
DEPARTMENT OF THE ARMY POSITION, POLICY, OR DECISION, UNLESS SO
"5-.DESIGNATED BY OTHER DOCUMENTATION.

5.%
ABSTRACT
An expert system that provides fault detection and limited fault tol-

erance was designed for a generic aircraft model. A "best-first" search

among applicable rules was utilized, leading to efficient recognition and

processing of abnormal situations. Results showed that such an expert

system is feasible and that it could contribute to increased reliability of

aircraft system operation without a high degree of complexity.

Accesion For
NTIS CRA&
DTIC TAB 0
Unannqunced 5
Justification.

BY......................
.. .. .
Distribution I
A- Availability Codes
Avail and I or
Dist Spetal

",' ii-

', ','"" ." ."- .. . " . - .. - -- . -. . -, . .. . - . . -. . •, -. . . . - ,.4. . ., , . . - . . -


A"I
TABLE OFCONTENTS

Abstract. .. ...... ....... ...... ....... .. ii

~ .~ page

1. INTRODUCTION .. ... .... .. ...... ...... ... 1

2. SYSTEM BASELINE. .... ....... .......... .. 3


3. SYSTEM DATABASES .. ...... ...... ......... 6
4. THE RULE SPACE .. ... ....... ....... ..... 10
5. THE EXPERT SYSTEM (FDIES) ... ...... .........13
6. A SAMPLE RUN OF THE EXPERT SYSTEM .. .... ...... 17
7. CONCLUSIONS AND FUTURE WORK. ... ...... ..... 22

KBIBLIOGRAPHY .. ....... ...... ....... ..... 23

Appendix page

A. LIST OF DEVICES .. ... ....... ...... ...... 24


B. THE BULLETIN DATABASE . ....................... 26

C. THE TIGER.DATA DATABASE .. ... ....... ...... 28


D. PROGRAM LISTING OF THE RULES .. ...... ........47
E. THE FDIES SOURCE CODE. .. .... ...... ....... 49
LIST OF TABLES

Table page
1. The Rules. ... ...... ....... ...... ..... 12
2. Some Utility Procedures of FDIES. ..... ....... ... 16

LIST OF FIGURES

Figure page
1. Fault Detection and Identification Expert System ... ...... 3
2. The Generic Aircraft .. ..... ....... ...... .. 4
3. An Example of Output from BULLETIN. ..... ........ 6
4. An Example of Adding an Entry to TIGER.DATA .. ....... 7
5. Typical Entry of an Inter-equiv Table. ..... ........ 8
6. Searching in Rule Space. ...... .. .. ...... ...... 1
7. Flow Chart of FDIES. .... ...... ....... .... 14
8. Case 1: Faulty Tank. .... ....... ...... .... 19
9. Case 1I: Differing Readings. ....... ...... .... 20
10. Case III: Abnormal Engine .. ...... ....... .... 21

-iv-
1. INTRODUCTION

Modern aircraft systems are increasingly sophisticated in response to

demands for higher performance. This trend has resulted in the design

of complicated control modules whose continuous service is the key to a

safe and successful flight. The general strategy used to ensure online

operation of these units is to provide enough physical and analytical

redundancy so that individual component failures do not jeopardize a


* mission. Although it is crucial for the systems to have backups, it is

equally important to supply means to detect when they have suffered a

degradation or even loss of performance. Many sensors are added to

- accomplish these supervisory tasks, but in doing so we have only ac-

* centuated the need for more fault tolerance and detection.


An analysis of the situation shows that there is an information over-

load, which calls for an intelligent decision-maker that can oversee the

* status of each system and take appropriate actions based on the incom-

ing data. This requirement can be satisfactorily met by utilizing some of

the results from the emerging field of artificial intelligence (Al).

Artificial Intelligence is often associated with natural language pro-


cessing and mathematical theorem proving, but it has expanded in re-

cent years to include other areas, such as automated decision making

using expert systems. An expert system attempts to pool the knowledge


of experts into production rules, which are usually in the form of "if-

and-then" statements. Its purpose is to provide the users with a tool

to solve relatively complicated problems by comparing different courses

of action an ' choosing what appears to be the best.

-A

z'cm n- * I * ,. • * .. I -
i i i i i
l .. . . .*. n
L ,
+'iin . .=
The alternative that Al offers to the previous problem, therefore, is

to design a system which is sufficiently smart to figure out if a mal-

function has occurred and which is capable of taking remedial actions.

~,The
* long-term objectives of the present work are to develop and con-

figure necessary hardware and software for a system that will tackle

the issues just raised. The ultimate goal is to test the functionality

and robustness of such a system onboard airplanes or helicopters in a

realistic scenario. The short-term objectives are to ascertain the feasi-


bility of the Al approach as well as its complexity.

In the following text we describe the preliminary implementation of

an expert system, called FDIES (Fault Detection and Identification Ex-

• .pert System), which addresses some of the issues of fault-detection. A


block diagram of it is shown in Fig. 1 Section 2 outlines the baseline

for the generic aircraft used in our study. Section 3 describes the sys-

tem databases, which are the knowledge source for the expert system.

Section 4 explains the rules, which constitute the reasoning power of


FDIES. Section 5 details the operation of FDIES. Section 6 gives a

sample run of FDIES for three cases. Finally Section 7 contains the

conclusions and statements of the future work.


V

r4

-2-
Jpi.;6
" PILOT

THE EXPERT-
STATIC % SYSTEM DYNAI C
DATABASE DATABASE

RULE SPACE

CONTROLS

Figure 1: Fault Detection and Identification Expert System


Block Diagram

2. SYSTEM BASELINE

We chose to deal with a generic airplane model which has a set of

components that normally would be found in a modern aircraft. These

components are located in five sections of the aircraft: left wing, right

wing, nose, tail, and cockpit (Fig. 2). A sixth section, rotor, is

available when we are dealing with helicopters. A list of specific devices

assumed to be on the aircraft is found in Appendix A.

IN-
'A.
left wing

____. ,+ cockpit

right wing nose

Figure 2: The Generic Aircraft

Several assumptions were made: an airspeed-sensor plus a backup

are at the tip of the left-wing and at the nose. Static pressure sensors

are at the roots of the each wing. Engines are mounted on the wings as

-r well in the tail section. Ailerons are split into two independent sections,

one at tip and other at the mid-section of the wing. All control sur-

faces are driven by doubly redundant electric actuators; hydraulic ac-

tuators would be handled in similar fashion. All sensor outputs are

converted to digital format and checked by the onboard computer before

being displayed on CRTs in the cockpit. Many devices are physically

redundant, and a number of them have analytical equivalents as well.

The devices generally are linked or related to other devices. These

-4

S
'4

and other pertinent data are all available (as property lists) to the ex-
pert system in a database called TIGER.DATA. The current readings

and status of devices are posted in a separate database called

BULLETIN. These two databases are described in more detail in the

section that follows.

The programming language employed is LISP, which is widely used

by the Al community. Its advantages are ease 'of constructing and mod-

ifying the databases (in form of lists), as well as good symbolic manip-

ulation capability. The disadvantage is that running LISP may require

long processing time; with the current rate of increase in computation

speeds, this should soon be a minor issue.

-5-
|4
3. SYSTEM DATABASES

The expert system obtains information concerning the aircraft sys-

tem's current structure and status from two databases: one dynamic

(BULLETIN), and the other static (TIGER.DATA).

The dynamic database, BULLETIN (Appendix B), contains the read-

ings and status of all devices; it is constantly updated by a separate

front-end system which will be part of our implementation at a later

stage. BULLETIN also keeps a list of abnormal devices, that is, any

devices that are either faulty or "down." Any alert on the abnormal be-

haviour of a device is also posted here. This is similar to the "b'ack-

board" approach used in the HEARSAY system [1]. The format of

r BULLETIN is shown in Fig. 3 The section name is listed first, fol-


lowed by readings or status of all devices within that section. The last

entries under the heading of "abnormal-devices" are reserved for any

new alert and for keeping track of all faulty devices.

(left-wing
((airspeed-sensor self 50. phys-equiv 50. analy-equiv 50.)
(engine ok)...)
right-wing
((engine down)
(tank ok)...)

abnormal-devices
((left-wing aileron-1 new-alert)
(right-wing engine down)))

Figure 3: An Example of Output from BULLETIN

-6-

4. ': : : -'":,.':. -"i¢, ' "--. -. . - ;'- :". -'" ',.-., " ..... , :.:' -: .. , ,; :' .:£. ;,)-
The static database, TIGER.DATA, possesses a complete record of

sections' devices (see Appendix C). It is actually implemented by at-

taching facts concerning the device as the property-list of the section's

name under the device's name. This is fashioned after Minsky's frame

approach [2]. The database is built by calling the procedure DEVICE,

as illustrated in the next figure.

(device actuator-1
IN left-wing
((status ok)
(power-source batt-l-node)
(function actuator)
(location middle)
(same-location (engine temp-sensor rpm-sensor ...))
(related-devices (actuator-2))
*(gain 10.0)
(linked-to ((stick-1 stick-2) (aileron-i aileron-2)))
(physical-equiv actuator-2)))

Figure 4: An Example of Adding an Entry to TIGER.DATA

After the evaluation of the procedure DEVICE shown in Fig. 4,

FDIES will record the device "actuator-l" under the left-wing in its

database. Its default assumption is that the left-wing actuator-i's status

is "ok"; that its power source is "battery-i"; that it is located at the

middle of the left wing; that at the same location we find also "engine",

"temp-sensor",...; that it is linked forward to "stick-i" and "stick-2"

and backward to "aileron-l" and "aileron-2." In the event that a device

(actuator-I) is lost, the devices of the first list may still be able to

perform their functions if they have other links (actuator-2), but the

devices on the second-list are uncontrollable by the lost device (but are

certainly controllable by its physical equivalent). Thus, the devices in

-7

I',.-:';'' ' .:'...,..;. :''''' ". . ' "- . , ,.,'.". ",'r' ,",.",."- - "-." -'."-.'./ .". .'---".
the first list will be marked as "broken-link", whereas those on the

second list will be marked "unusable."

On many occasions a device in one section is connected to devices of

other sections. In our previous example, the left-wing's "actuator-i" is

connected to the cockpit's "stick-i" and "stick-2." Since it is not cor-

rect to declare devices for one section in other sections, yet it is cru-

cial for the expert system to know how devices are linked, we include a

special entry, "inter-equiv", under each section. It plays the role of an

interconnection map among different sections of the aircraft. This is il-

lustrated in Fig. 5

(device inter-equiv
'V, OF left-wing
((batt-1 (nose batt-i))
(batt-2 (nose batt-2))

(stick-1 (cockpit stick-i))

Figure 5: Typical Entry of an Inter-equiv Table

When searching through the database, if FDIES encounters any compo-

nent that is not explicitly declared within a section, it automatically

looks in the "inter-equiv" table to see if it is declared in another sec-

tion. The necessity of inter-equiv becomes apparent when we consider

the situation in which the expert system discovers that battery-1


X0 (which is resident in the nose section) is drained. It then must find all

devices (many of which are in other sections) and mark them "unusa-

ble". FDIES accomplishes this task by looking up battery-l's "link-to"

list and the inter-equiv table.

-8-

zed,
In summary, FDIES's knowledge is contained in BULLETIN and

~TIGER.DATA. By accessing them, it remains informed of the relation-

~ships among devices and of each device's status.

%.,
4..

'

-9-

K'
.4,

4. THE RULE SPACE

The expert system currently utilizes ten rules ,which are divided

into four groups, to handle failures. Group 1 consists of Rules #1, #2,

and #10. They are used to mark devices in the databases as "down" or

' faulty or to restore them to normal status, respectively. They also are

*, responsible for propagating the effects of the fault to the devices which

are linked to the failed one. Group 2 has Rules #3 and #4; they are

invoked when a device's reading differs from its equivalent device.

Group 3 consists of Rule #9 alone, whose application occurs when the

pilot makes an inquiry regarding, for instance, an ill-behaving device;

in this case FDIES simply responds to the pilot's commands. Finally,

Group 4 encompasses Rules #5 to Rule #8; these rules are evoked to

decipher any alert related to abnormal components. A complete program

listing of these rules can be found in Appendix D. A verbal description

of each rule is presented in Table 1

Note that we have implicitly guided our application of rules . When

a device is found abnormal, then Rule #5 is first checked to see if all

devices in the same location are also abnormal. If not, then Rule #6 is

called. It Rule #6 is not applicable, it will try Rule #7. Rule#8 will ap-

ply only when either Rule #5 or Rule #6 is satisfied. See Fig. 6

The "if" parts of these rules are not compared exhaustively against

the current alerts. FDIES retrieves and applies only those rules which

are pertinent to the situation. Usually one or two will suffice. This is a

simple form of "best-first" search, which is the technique that focuses


the attention of an expert system to the most promising node [3].

-10-

" ," "3"


"," "' " "....- . ..... .- - . .- *.--"'-"" .. '.." ".. , . ", - "*~**~
" "
""~*~ **''.
* '* '' . .'.
.0

Rule#V3 Rule#9 Rule#3

0C Rule#40-0
Ruleil1 Rule#2 RuleflO Rule#8 Ruie4!6

Ru1e#7

Figure 6-: Searching in Rule Space

-22
TABLE 1

The Rules

' RULE#1:
IF a device is alerted as down,
THEN mark it "down". This also has the side effect
., of marking the "linked-to" devices as "unusable" or
"broken-link."

" I RULE#2:
IF a device is alerted as faulty,
THEN mark it faulty.
~RU LE#3:
RIF a device's reading is different from that of its
- I equivalent,
THEN check both against the third equivalent's read-
ing (if it exists). If two agree, then the third one is
I declared faulty (by issuing an alert on the
-,, BULLETIN). If none are the same, then the rule
fails.

RULE#4:
IF a device's behavior is different from its analytical
"I equivalent,
THEN see if a new gain or bias can be found by ap-
- plying the routine "generate-and-test."
, RULE#5:
IF a device's reading is considered abnormal,
I.T7HEN check to see if other devices in the common lo-
, Ication are abnormal as well. If so, apply Rule #8;
R otherwise apply Rule #6.

IRULE#6:
IF a device's reading is considered abnormal, and it
I has been determined that some devices in the same
location are normal,
I THEN check to see if related devices are abnormal. If
I so, apply Rule #8; otherwise apply Rule #7.

-12-
2
r I1

I TABLE 1 (concluded)

I RULE#7:
IF a device's reading is abnormal, and some related
devices have been determined to be normal,
ITHEN the device is faulty; issue an alert to this ef-
_.fect. (Implicitly, this has the side-effect of removing
any action caused by the abnormality; e.g., an en-
I gine shutdown due to false reading of a temperature
sensor).
RULE#8:
IF devices common to a particular characteristic are
.I all found to be abnormal,
THEN declare all of them to be faulty and report the
nature of the problem.

RULE#9:
IF the alert is a request by the pilot to check a de-
vice's value,
THEN compare what the expert system knows to what
the pilot believes. This command is usually confined
to display devices that are in the cockpit.

RULE#10:
IF the alert says that a device has returned to nor-
mal,
THEN restore the status of the device to "ok" (in-
cluding its "linked-to" devices).

5. THE EXPERT SYSTEM (FDIES)

The expert system's primary task is to assure normal operation of

the aircraft. At present, it can only decide when an alert may be false,

when a device is faulty, or when parts of aircraft are damaged. Ulti-

mately, it will be able to produce new control strategies in the face of

abnormalities enabling the flight to continue in safety.

FDIES is made up of several key procedure calls (Appendix E). A

flow chart of the system is given in Fig. 7 The procedure

-13-

J ..
ISSUE
NECESSARY
ALERTS

CALL
REPORTER

APPLY
PRIORITYP ALERTS
0
RULES

NO RECONFIGURE
CONTROLS

*PRIORITY ALERTS YES APPLY


<4> RU LES

NO

Figure 7: Flow Chart of FDIES

-14-
REPORTER checks the BULLETIN database for irregularities and warn-

ings. If any are found, REPORTER issues an alert of the proper type

(which is placed on either the high-priority stack or the priority

stack). FDIES then "pops" the top alert off the stack and applies the

rules which belong to that particular alert (by using the procedure

APPLY-RULES). FDIES iterates to make sure that all alerts (which are
often issued within the rule being applied) are processed.

Other procedures of interest which are not directly utilized by

FDIES are listed in Table 2 . Some play important roles in connection

with successful application of rules (e.g. the procedure SIMILAR), and

others provide an interactive interface between the expert system and

the pilot (e.g., the procedure CHANGE-BULLETIN).

.0

-.. 1

50,,.
r
TABLE 2

, I Some Utility Procedures of FDIES


p I,
I ISSUE-ALERT: Places alert given on the stack.

-. IMARK-DEVICE: Marks the given device with proper value; i.e.,


it changes the status of the device (and its "linked-to" counter-
*-" parts) on BULLETIN and TIGER.DATA.

I CHANGE: Changes the value of a specified slot within a sec-


tion's device.

I CHANGE-BULLETIN: Changes an entry in BULLETIN.

IRETRIEVE: Returns the value of the slot of the given section


device presently in the TIGER.DATA.

DEVICE-DESCRIPTION: Returns the entire fact field pertaining


to a particular device.

- SIMILAR: Matches two patterns. It also sets any variable be-


* Iginning with "?" in one pattern to its corresponding value in the
other pattern.

RESTORE: Restores the device's status to "ok."

GENERATE-AND-TEST: Finds new gain or bias by trial and er-


I ror. Currently returns "true" for all calls.
L

16-

V...........................................................................-.-
% . --
*: 6. A SAMPLE RUN OF THE EXPERT SYSTEM

The following pages illustrate some examples of FDIES's functionali-

ty. We have divided the output roughly into three columns. The first

column shows the operator input to the system. The second one, in

which each entry is preceded by "W', contains the response from

- FDIES. The third column displays comments which are in capital letters

and are preceded by " . "

Three different kinds of failure and their ramifications are analyzed.

The first one is the simple case of a device (left wing tank) being

-
I found faulty (Fig. 8). In this situation, FDIES put the tank on the ab-

normal device list and declared its "link-to" devices (engine, level-sen-

sor) as "unusable." The second one (Fig. 9) dealt with a discrepancy

in readings of two equivalent devices (airspeed-sensor-1 and -2). A

check with their analytical equivalent showed that sensor-2 was faulty,

so FDIES issued an alert to put airspeed-sensor-2 on the abnormal de-

vice list. Finally the third one (Fig. 10) was concerned with a device

(left wing engine) being declared abnormal. Since there was no sup-

porting evidence that anything else was wrong, FDIES placed the en-

gine on the abnormal device list.

. ... . . . ilt,,=nlmm ,mamlN immm -. imm,,,l . n .-- . ., . t = ,m .,P-. .. ;,,a ,


SMLL
WO

wz 0

0 .-
o -
ow0
U. w w . )>zt
w w w 4. u A

IL 1- 0 le SM-

CL z 1.-< ;

0. E 4c

di W. - C W z w
4w (A -l 0W -O(.3
ad- t z a.. SM WC >Za

co > 4t. tQ I- a
4I w a I
CAC
U I LL B. in 90 1- x w

w 0 0
w 4
<-
-
KI-
x ~ o
N 4-
tR
-
0
IL
CI -j
~~SM~~ 34..-E W W-
~ 5 -) ----

k. SM le 0W4
win 1 c- a,
:It I' I xn U) in-X
W L V 5L
zM~ SM >- 0-i~ n M4

CIO >sS -e 0>- w4j <C~ u x rrC7 c


1 4~
w u~ u~do do C - WE
w Dr
o
w1--1-l
- I- - m
P.- Mi- -cs
wn c 4- 0 i ->

U) =-400- . E (A a.. -I z 0 41 m
'i-mm
U~ -C41C - LA J -z~ Z < ,-*m
>IW -
w CE S W0 A
XX
.J~p KU).. 5 m t4 z 2; -
0 5. - 0 1 0 Z aia 0 k%5 a.-
a 90 t tQ. x t C a- tQ t. 0 E 00

4 K -4~~~ ZNN.3.4
0 -- o CA
M
a
*4
E ~ Ol~'*C
Z4W'354
-
N-
C

*~~~~~ ~~~g Inewl~C a. 3 gS


. 4
a, >1 14-t+ C

>#-- C 4 - 06-nt

Cs N
v C
E 0SaIQ 0 0C 0 04
*CCQtQLC 4 J 0 -'- -

4J W w
-l 41 -W
e.C0 4- C )
mmt- 0- v - Vm
CLa.- I,
- 91 0)N 0.-.
41 C4N
in
L E0
X 3~.m Ul
0 LL -L U
on 1L 1
.34E1a L. . 00C O e

c c 41 L): 4- +)): 1

II
E 0 V.30~' L.3 CCL--
C
~ 41-
41-di
I
4)t
C ~
~410 c
~ ~ L ~ 4+ OCS4E
0. E~
0me~
43 03 E ~ .-
- C 3IV~) L 0 E4NVL L
43 43 LL 06L 1 0-
n5 0 5 M
. 00- C1 ,

* L.
CCL C S- +31

4 ~~ ~ ~ L mom44, 0. 414-
m
C
c0 N
5.m £1 C3
04) 0)

E .- 0 CC4+0 C.0 I
L 4J4 LC4I IOC L.C4 L
*0 C .0-. ~ 4.' 01-55 +3

41 . LL- .
- CIO- C- + t a

4.' VILIC--a CC

+1 V31 0

* NS s Se- Es 1
4) NVIS-0 W

49 0 6 CL

be-

'A
L&J

44

:1 0 4
<.1 0 0

in I-. 4 0 4
i-u z 0 -
W A ) 4 .- n 4)

Iu-A3 I- z 0 - - 0-
41 0 4- I- Z I-
W I.- U) woo tOI * W
w _* IIx4fL .. . 0 W .

N < Ule - WOU)4


I. . S >- .- LAJIZ0 W

uw m Z >W oz -
Tw N
C 0- w V) - (n 0-X 4J W
IuZ m an L w UMI- II " u
41 w 0 z CA a. Z W ) O- > .< 0
00W x 4- Wl m - OZX - -4)-x
L-
C u C Uw a) 04 WAZ W0 U)
S
:W0 4IQ 0 :I X44 <1) C c Up It
W03 (A 10 SL 0I- = 0- Z -z m d .- 0 w0 I
Wj1 l0 I ZO 0: 4c 4.3W ),a1W z tL 0

V0 -' 0 oUC ))4- 0 91 0W-I


- 04)- 5 3Z4 -. C4-~ 4
*-z 40 4) D W) 01 I 1OZ 0)
... *L.N -L 0) 4 uI 41U - 4J iZi.

LI~~~~> LL C .0 ) 44 0) 41))4
e 0.r.a4 L FA
0~ ) -CM ID44) .4o 0 v
4) 4 4 4) )0e 0. 0.aC M . m
4)4)4. Is
vU,.1 LO 0 - I -)0

4M
:CZ EIn0.L-O >#.. .)
0 1 -. 4) +)t II Q0Lmj0
0 4)4 1 )CEI L t014- - inI
0+
- L N 04) 0 . 0uC+
-L mm
2. -' 811 4 JJ
IC L - C 4)4.2 00: , _0
L n> 0- 00 L 4) . 0. tR) C- 0I. a -
-0 t) V- W C.SE '-,i 0 l 0 L L4) )
4 JLm -:I 4) .v
0~c. 4) 4100 R-J L *v L
C. IC- 0 ISD . - IL 3- 0-
o)vI '- 01 0 0-S- V L. E~0 Nt 0
)V1 C In

-D m0_.-x--S0 In in
C. 004-0 0-0 LOICt
am- >V C 10E IL l( m~ VI- I~- +4)0.V
Wl- X-) 0) 0. C C- L U.C 05
-. 01-- -i-m 0) L.- -O +'4
C IM OCZO Si-4)4) O -- no. C >0-
4 - a. CSE -,u41 0 5
do.. C. %) S ) :a
C -0 4J- cm-:3 4041 C 4.'
L)14~
0.E4JL.-iL-I;;
4)04) .4VC).C U ~ SI 0
CI-L~ X- L. I. I W)14
. l C 0 wl- W
MC-'
:;>. 00 W0- MJ1.
4) 4. LiaC0a,-
0 to :PC 3 04 0 0 - --- 1-mO min 4mm n -
0.0 +.J50W+ 0 .- v.Si- 4J 4CC4 .LL CA j .a- m-S
1- 0m- "a 1 9 J0a -Ci 1 4 C -* - 0 Vu4) *a.
- - SC
soM- L---o " - "m - .- ov
Ii +4) 0.0VJSL SO

LC~ UW .
IO)0 0 4V 4) S -01 0UI -V0
C 0 C CCIO C E01 iOS mE- a4S-
OC.'- >I- i- W) .i- -~
0.4Jl 00
4) 1))4
CO- L-0.. L..- 4- o C
-- m.7
4 i0V04)4JC
4) 0; E) 0C 41 ))).)
.g0.CU4J4 L.OC *J
E. 0. 0~ LL>V4 0Ia*iv
C- 00 vI4 mo a i-S -4J 4-V
C ) a- 0-
0 in- S 4)I v ~ 0) ). 44-+ 0 4)L

01)C C0S) C EV - at - a C) 0
Oa.'4 S-04 -a 0 L a a -a -a Ca 0
g- t- 0 - - -a) -a -a .80+'

4) 4v C 0 1- 1 Si

I-W CC

L L L
v 415
0d
o

-. >

-
0. .0

*.~...
.
-JL

LL. - w

1 4

:i L 0
(A 4Zcn
0. N 0- 0
(O CC I W< 0 u
WWL. L1- w i> wA -
cCA0 50u- 0 z
-3
_w z 01)Wm 0 w z
-ACIZ X M CL 4( w 0
"WW V)WX 0 * c
LL. . w-f 0 XI ... w 0~ 04
0 L'. W.. 0 LM04c 3a - (A
0- -1 . t- wA - 4 -
4t0 =J V.J A.C>( 7 . 0W U

0.43W Ot
4- w-i x -z -. ..- C
4W
z ox >CI 0 MI 4> x
ZU
x.- - 44 > W I
:101- > (A. ;./ t-O W/0 <
I.- I. -OL our 03 4 I- -
u - v 4( t j 0 0 Zo- 1 0
trI
WZ -. >1-
14- 0~t w 1 -4- -IZ *1

a UWI- 4 V - W xi " 0
ZI~ - C- - 0 Wme R
tw< tQ 0-g
a mIt .. z UIA.LZ tugmi t ).O z 03
*OmIA WO C M 0 www C * t Z Mu w
z W.
i nm0 tR Ct w l 0 _ Af(. tv -4
3 < -
t1
*et.g 0 4 *ae Is cg
- - g*~ ~ C C C CCW b-- LC C
i00n 0
-5 74- 4) 4- I
CL
.- Jc I. I L o CY CC
1- O
00 1 OIn 0 In1
>14 0E)C-go
L. Cj-46
06136~ ix C Rs
t 0s. - IWI>,- C) V .0(
tR IRm
a) 9LIQ 1 )E in (A4 L. L Ri
0 )I) . .L1 C Q ULc 41 -
.ccEE no - -.005r- 0) :1

v --
0 ~0X~ 00.
~ ~ ~ ~ ~ 4- 4a 4 cm
fM-Cm
Q
C-I
C
l
40-'
C1
V
v -i R- )0 Rt)

:I., -_--~ -4- 5 r00


C Io W WIIi -O 41 WC L U )In 4)C
LL - L-4.*C LL-
- - .- m1cm& CL 1 0s
0E1 0 - 0 0 L0
mo -O V0- )* OEai-~
50. We,L. Ie" SE)0. 1 0 ms s1
sI .
t1 V .-.-1mWC
nm0 4 vmV)w )0
mm 4)
0c C.~E
.in..
~ C -
0e 4) L
is; NOD >m
nn
L.
-NE)R
I W - on C - 1 Cm
1 -IN4-)0E)0 . 1A1)
C 4) R 19 r4- 0 J 'ID VC - I >%onE~ u scv .-C 4
LLwe . L 0. 1L DL I- 0 t W.I
1ci
3.C-L-I' . 0 C. 1-
C V ;Ja.-.
I'00-1l m50ormo m mU &
F5 .m .4J4 L-m
0
L.L>E0 ) 4 . ii
.L 0
Emi m
(mi 0 CUI*
0.00 IV 4 a- 41a.- 4 . In--e u~mca. I
-g>1m~~
O -.-Em~.
- u3 j 4)
1--1 SQ
f

LL~ESE 4J a.M in~E~


m.-uI.- ac-i
4030 -- ) 1 0 L
CID+) 3 a OC ~ 5
0.0
L'r r 0 U4J U-m306C
CI 'U. - E oE.
- E- r.
a. +A 0 -~ 01 w
4sL.RR co
UI C -- C 0C' -- 0 04 tR-.----

V.c 3 4- Cn 0 02 54) 4iC_"


-JU5 a0 a -a -a~ aE -a 0 3-
-4 .8 *a -a a .8 o6-

al 41 v al
S U -

0Ix

.0 'U A V
1%z

0 1
m W LI
90 w0 w
4c i 1-W

w 1- 4( L AI Wz> I-(
0 cow .- z C
Oa W W0- 5
0 z- .ca 0 =3. I. wA(
can V00 c 4i
.--
A~~ 4 W NI W cefl
LfC1 IV) w ) IIW- Z<<2
= _iuJ c=W00 0ww
4c - - >WO .-.
C 1 -, WW
X= W~ (A u CL 0

ILmoi x~ - .I-w i
-<0
o
w wZ WW> ~ V11 Li

W 0 4o UO-- vI 0
4wD <I-Z~
xuO Z-0 4W a uW I m ZI- 7
W-W3
; W w- 4 wujw :,( -00. C
X >lr 1.a00 - C 0.Z-4 0 _rnw

(A.C3,0I- .-ALw a: Z:
z0 me
W
4 OWWW ..- 00 W-16- ZZZ

z. w-w 0 0 0Jt0cx 4.00 <<L

lot
0 0.

4j 0. 4-- -

m tmin

CD a.62C00
23 >, C (

1 - 400
cN0 -f 43- -
m I
II- C-1
41 -o -43
m Q4-
02.'a.> 00 , 0
* Y 62. .3..J c-ODO26
0 L 4 434
-Noa ~21- 0
L. v6 2 I
0C %

14
.30 0. 03 - .x43 0
0 .&c 0 4)" 10i 0-
)in 62 414.C
0 C L L in
- . Im I C 0 4 L 0-
%-a. .043 -431 In m 0 L V)2
pLUI
*6 I CL %-in6U C
VU 4) 0C 6226 V3-4 M0IV

* 48
1 433 1 1 W-,'A

43 U216 . L C34E64E43
I 4J- 4 . 0.3 aa 00 0 262L V
c2 43%-%- a) 0 - ::243.gata 62:
C 6l .3a
tv~ LL Cn4

0-4I- 0 4 j6.41 04
0244 41 43 cU
-- --

C~7 E.E6.
3 L. >- 0
3 00 N~. 03

.3~
.0- -a- -aL-

I
43 I 6

0 0 4 . 0
>

4A-0
62 >14
-'~~

o 06
.0 I
6 43 .3 .

a o a.
7. CONCLUSIONS AND FUTURE WORK

An expert system that performs fault detection and displays some of

the features of fault tolerance has been developed. The former is ex-

emplified by the detection and identification of the discrepancy of

equivalent sensors; the latter is illustrated by the choice of the healthy

sensor in face of the discrepancy, thus avoiding the use of misleading

data.

In light of these results, we believe that our work has demonstrated

the feasibility of a fault-detection expert system, that it assesses the

degree of difficulty and complexity, and that it provides a prototype on

which future systems can be based.

Looking ahead, there is' a great deal of work yet to be done. Nota-
ble is the addition of the function that will be able to reconfigure the

aircraft's control system so as to minimize the effects of the fault. A

prime candidate for consideration is the multiple-model-estimation ap-

proach. Another important objective is to imbed in the system the ca-

pability to write new rules automatically when unknown situations are

encountered. This belongs to the area of machine learning. Finally, we

"1 also will study teaching methodologies that will enable experts to aug-
ment our knowledge base on fault detection. Implementation of these fa-

cilities will bring us closer to truly fault-tolerant systems.

-22-
I '.,.-% %-
BIBLIOGRAPHY

1. Erman L.D. and Lesser V.R. "The HEARSAY-Il Speech


Understanding System: A Tutorial," In Trends in Speech
* Recognition, W.Lea (Ed), Prentice-Hall, Englewood Cliffs, NJ, 1980,
pp. 361-381.

2. Minsky, M. "A Framework for Representing Knowledge." In The


Psychology of Computer Vision, P.Winston (Ed), McGraw-Hill Co.,
New York, 1975, pp. 211-277.

3. Rich, E. Artificial Intelligence, McGraw-Hill Inc., New York, 1983,


pp. 78-86.

- 3

I,
.' ~~ ~ ~ - ~ ~ peni A.- w-.'.-,--

This ~a~~ ~ ppendix Aotisals


fdvcsthtteepr ytmcr

rently recognizes.

LEFT-WING: ai rspeed- sensor-i1 airspeed-sensor-2 static-pressure-sen-

- sor-i static-pressure-sensor-2 aileron-i aileron-2 actua-

- tor-i actuator-2 tank level-sensor-i engine temp-sensor

rpm-sensor pressure-sensor batt-i -node batt-2-node.

RIGHT-WING: static- pressu re-sensor-i1 static-pressure-sensor-2 ailer-

on-i aileron-2 actuator-i actuator-2 tank level-sensor-i

engine temp-sensor rpm-sensor pressure-sensor

2 batt-i1 -node batt-2-node.


NOSE: airspeed-sensor-i airspeed-sensor-2 batt-i batt-2 gyro-i .1

gyro-1.2 gyro-1.3 gyro-2.i gyro-2.2 gyro-2.3 accelero-


* menter- 1 accelerometer-2 radar-i antenna.

TAIL: engine temp-sensor rpm-sensor pressure-sensor rudder ac-

'p tuator-i actuator-2 elevator-i elevator-2 actuator-3 actua-

tor-4 batt-i -node batt-2-node. COCKPIT: stick-i

stick-2 pedal-i pedal-2 radio-i airspeed-mnd-i airspeed-

ind-2 climb- rate-mnd-i climb- rate- ind-2 engines- rpm-mid-i1

engines- rpm- ind-2 manifold-pressure-mnd-i manifold-pres-

sure-ind-2 engines-temp-mnd-i engines-temp-ind-2 atmos-

-24-

Lt -t'.
'~pheric-pressure-ind-i atmospheric-pressure-ind-2 fuel-
V gauge-i fuel-gauge-2 horizon-ind-i horizon-ind-2 altitude-

ind-I altitude-ind-2 di splay-d river-i1 display-driver-2


A/Di-8 A/D9- 16 A/D17-24 A/D25-32 batt-i-node

batt-2-node.
ROTOR: main-rotor transmission engine tank level-sensor-i temp-
sensor rpm-sensor pressure-sensor swashplate

batt- I -node.

25-
Appendix B

THE BULLETIN DATABASE

This appendix contains the complete listing of the dynamic database


currently used by FOIES.

(setq bulletin
'Oeft-wing
((airspeed-sensor-I self 100.0 phys-equiv 100.0 analy-equiv 100.0)
airspeed-sensor-2 self 100.0 phys-equiv 100.0 analy-equiv 100.0)
static-sensor-I sell 12.0 phys-equiv 12.0 analy-equiv 12.5~
static-sensor-2 self 12.0 phys-equiv 12.0 analy-equiv 12.5)
level-sensor-i self 1000.0)
temp-sensor sell 500.0)
rpm-sensor sell 10000.0)
pressure-sensor 100.0)
aileron-i self ok)
aileron-2 self ok)
actuator-i sell ok)
actuator-2 self ok)
tank self ok)
4 engine Ok)
r5 batt-i-node sell 24.0)
batt-2-node self 24.0))
righ-wing
((stai-esrisl120py-qi120aay-qv125
(static-sensor-2 self 12.0 p hys-equiv 12.0 analy-equiv 12.5)
level-senisor-i self 1000.0)
temp-sensor self 500.0)
rpm--sensor self 10000.0)
pressure-sensor 100.0)
aileron-i self ok)
alleron-2 self ok)
actuator-I self ok)
actuator-2 self ok)
tank self ok)
engine self ok)
batt-i-node sell 24.0)
batt-2-node self 24.0))
nose
((airspeed-sensor-i sell 100.0 phys-equiv 100.0 analy-equlv 100.0)
airspeed-sensor-2 self 100.0 phys-equiv 100.0 analy-equiv 100.0)
batt-1 self 24.0)
batt-2 self 24.0)
gyro-i.i sel 1.0)_
gyro-1.2 self 2.1)
1gyro-1.3 sef05
gyro-2.i sel:f 10)
gyro-2.2 self 2.1)
RYro 2.3 self 0.5)
antenna self ok)
radar- I sell ok)
accelerometer-I sell 5.0)
accelerometer-2 self 2.0)
((temp-sensor self 500 0)
rpm--sensor self 10000.0)
pressure--sensor sell 100.0)
rudder sell ok)
lelevator-I self ok)

-26-
elevator-2 self ok)
actuator-I self ok)
actuator-2 self ok)
actuator-3 self ok)
actuator-4 self ok)
batt-1-node self 24.0)
* (batt-2-node self 24.0))
cockpit
((airspeed-ind-I self 100.0 phys-equiv 100.0)
airspeed-ind-2 self 100.0 phys-equiv 100.0)
climb-rate-ind -I self 0.5 phys-equiv 0.5
climb-rate-ind-2 self 0.5 phys-equiv 0.5
engines-rpm-ind-I self (10000.0 10000.0 10000.0) phys-equiv (10000.0 10000.0 10000.0))
engines-rpm-ind-2 self (10000.0 10000.0 10000.0) phys-equiv (10000.0 10000.0 10000.0))
manifold-pressure-ind-i self (100.0 100.0 100.0) phys-equiv (100.0 100.0 100.0))
manifold-pressure-ind-2 self (100.0 100.0 100.0) phys-equiv (100.0 100.0 100.0))
engines-temp-ind-I self (500.0 500.0 500.0) phys-equiv (500.0 500.0 500.0))
engines-temp-ind-2 self (500.0 500.0 500.0) phys-equiv (500.0 500.0 500.0))
atmospheric-pressure-ind-I self 11.5 phys-equiv 11.5)
atmospheric-pressure-ind-2 self 11.5 phys-equiv 11.5)
fuel-gauge-I self 1000.0 phys-equiv 1000.0)
fuel-gauge-2 self 1000.0 phys-equiv 1000.0)
altitude-ind-1 self 1000.0 phys-equiv 1000.0)
* sltitude-ind-2 self 1000.0 phys-equiv 1000.0)
stick-I self ok
stick-2 self ok)
pedal-I self ok)
pedal-2 self ok)
radio-I self ok)
horizon-ind-I self ok)
horizon-ind-2 self ok)
display-driver-I self ok)
display-driver-2 self ok)
A/DI-8 self ok)
A/D9-16 self ok)
A/D17-24 self ok)
A/D15-32 self ok)
batt-1-node self 24.0)
batt-2-node self 24.0))
rotor
((level-sensor-1 self 1000.0)
temp-sensor self 500.0)
rpm-sensor self 10000.0)
pressure-sensor self 100.0)
engine self ok)
,swashplate self ok)
main-rotor self ok)
batt-I-node self 24.0))
abnormal-devices
'-example (section-name device-name status (down, faulty or new-alert))
(nil)))

-27-

U-
Appendix C
THE TIGER.DATA DATABASE

This appendix contains the static database declarations which are made

before the expert system is *run.

'-this Mie contains the data for the FIES


"'first make known all the sections of the airplane
(sections left-wing right-wing tail nose cockpit rotor)
,.*99**9****~LEFT-WING *eS*

(device airspeed -sensor- I


INleft-wi'
((status ok)
power-source batt-i-node)
function sensor)
,location tip)
* same-location (airspeed -serisor-2 aileron-I))
related-devices (airspeed-sensor-2))
liniked-to ((A/Di)))
physical-equiv airspeed-sensor-2)
analytical-equiv if -needed -sensor)))
(device airspeed-sensor-2
IN left-win
((status ok)
power-source batt-2-node)
function sensor)
location tip)
Same-location (airspeed -sensor- I aileron-i))
related-devices (airspeed -sensor-i1))
linked-to ((A/i)2)))
physical-equiv airspeed-sensor-i)
analytical-equiv if-needed-sensor)))
(device static-pressure-sensor- I
IN left-win
((status ok)
power-source batt- i-node)
function sensor)
location root)
same-location (static-pressure--sensor-2 batt-i-node batt-2-node tank level-3ensor-I))
related-devices (static-pressure-sensor-2))
V. Linked-to ((A/D3)))
physical -eqwiv sitatic-pressure-sensor-2)
analytical -equiv iI-needed-..sensor2)))
(device static-pressure -sensor-2
IN left-wi*
((status ok)
power-source batt-2-node)
function sensor)
location root)
same-location (static-pressure-sensor- 1 batt- 1-node batt-2-node tank level--sensor-i1))
related-devices (static-pressure-sensor-i))
linked-to ((A/D4)))
physical-equiv tatic-pressure-sensor-i)
Ianalytical-equiv if -needed -sensor2)))

A -28-

P&l' &A &, -


<~
A,
K~~.'-v
Ls . r.u-
(device aileron-I
INeft-wing
Sfunction effector)
location tip)
same-location (airspeed -sensor- I airspeed-sensor-2))
related-devices (actuator-I actuator-2))
linked-to ((actuator-I actuator-2)))))
(device aileron-2
INleft-wing
((stat us ok)
funtion effector)
~location middle)
(same-location (engine temp-sensor rpm--sens3or pressure -sensor actuator-i
actuator-2))
(related-devices (actuator-I actuator-2))
(linked-to ((actuator-2)))))
(device actuator-i
INleft-wing
(power-source batt- 1-node)
(function actuator)
(location middle)
(same-location (engine temp-sensor rpm-sensor pressure-sensor alleron-2
actuator-2))
(related-devices (actuator-2))
(gain 10.0)
(linked-to ((stick-i stick-2) (aieron-I aileron-2)))
(hysical-equiv actuator-2)))
(device actuator-2
I'N left-wing
((status ok)
(power-source batt-2-node)
(function actuator)
'location middle)
Isame-location (engine temp-sensor rpm--sensor pressure-sensor alleron-2
actuator-i)
(related-devices (actuator-i))
(gain 10.0)
(linked-to ((stick-i stick-2) (aileron)))
(physical-equiv actuator-i)))
(device tank
INleft-wing
((status ok)
(function storage)
(location root)
(same-location (static-pressure-sensor- I xtatic-pressure-sensor-2
level-sensor-i batt- i-node batt-2-node))
(related-devices (level -sensor-i1))
(liked-to (0 (engine level-sensor-i)))))
(device level-sensor-i
IN left -wing
((status ok)
(power-source batt- i-node)
(function sensor)
(location root)
(same-location (static-pressure-sensor- I xtatic-pressure-sensor-2 tank
9 batt-1-node batt-2-node))
(linked-to ((tank A/D6)))))

-29-

%
(device engine
IN Ieft-win
((Status ok)
power-source batt-l-node)
Sfunction propulsion)
location middle)
same-location (temp-sensor rpm-sensor pressure-sensor aileron-2 actuator-I
actuator-2))
(linked-ta ((tank) (temp-sensor rpm-sensor pressure-sensor)))))
(device temp-sensor
IN left-wi*
.r: ((status ok)
(function sensor)
(location middle)
(same-location (engine rpm-sensor pressure-sensor aileron-2 actuator-I actuator-2))
(related-devices (rmp-sensor pressure-sensor))
(linked-to ((engine A/DO)))))
(device rpm-sensor
.9. IN left-wing
((status 0k)
* (power-source batt-l-node)
(function sensor)
(location middle)
(same-location (engine temp-sensor pressure-sensor aileron-2 actuator-i actuator-2))
(related-devices (temp-sensor pressure-sensor))
(linked-to ((engine A/D7)))))
(device pressure-sensor
IN left-wing
((status ok)
(power-source batt-l-node)
~function sensor)
Ilocation middle)
d (same-location (engine rpm-sensor pressure-sensor aileron-2 actuator-i actuator-2))
~related-devices (temp-sensor rpm-sensor))
Ilinked-to ((engine A/D5)))))
(device batt-I-node
IN left-win
((status okf
(function battery)
(location root)
(mie-location (static-press ure -sensor- I static-pressure--sensor-2 tank
level -sensor-I1))
(linked-to ((batt -1) (airspeed -sensor- I static-pressure--sensor- I actuator-I
engine level-sensor- I temp-sensor rpm-sensor pressure -sensor)))))
(device batt-2-node
INleft-wi

Slme-ocaion(sati- pessre-se nsor- I static- pressure -sensor- I tank


level -sen-sor-I1))
*(linked-to ((batt-2) (airspeed--se rso r-2 static-pressure-sensor-2 actuator-2)))))
(device lnter-equiv
OF left-wing
((batt-I (nose batt-l))
(batt-2 (nose batt-2))
~A/Dl (cockpit A/D1-8))
iA/D2 (cockpit AAJ25-32))

-30.

.4e ,
9...-
-' 9' , - -'r - L - . ,- l,-,. - ,' _. % .-.
A,1)3 (cockpit A/D 1-8))
A/D4 (cockpit A/D25-32))
A/D5 (cockpit A/D 1-8)
'A/D6 (cockpit A/D 1-8))
A/'D7 (cockpit A/D 1-8))
IAAD8 (cockpit A/D1-8))
stick-i (cockpit stick-i)
stick-2 (cockpit stick-2))

I3
RIGHT-WING ***

(device stat ic-pressure-sensor- 1


IN right-wing
((status ok)
power-source batt- I-node)
fuction sensor)
location root)
same-location (stat~ic-pressure-sensor-2 batt-1-node batt-2-node tank level-sensor-i))
related-devices (ztAtic-pressure-sensor-2))
finked-to ((A/D3)))
physical-equiv statc-pressure-sensor-2)
analytical-equiv iI-needed-sensor2)))
(device staic-pressure-sensor-2
IN right-wing
*((status ok) ebt-no)
function sensor)
location root)
same-location (static-pressure -sensor- I batt-l-node batt-2-node tank level -sensor-i1))
related-devices (static-pressure-sensor-1))
linked-to ((A/D4)))
physical-equiv static-pressure-sensor-i)
analytical-equiv if-needed-sensor2)))
(device ailerc-i-i
IN right-wing
((status ok)
cfuction effector)
1oato tip)
sam-e-location (airspeed-sensor-2))
related-devices (actuator-i actuator-2))
lIinked-to ((actuator-i actuator-2)))))
* (device aileron-2
IN right-wing
((status ok)
funtion effector)
location middle)
same-location (engine temp-sensor rpm-sensor pressure-sensor actuator-i
* actuator-2))
(related-devices (actuator-I actuator-2))
(linked-to ((actuator-2)))))
(device actuator-
IN right-wing
((status ok)
(power-source batt- 1-node)
(function actuator)
(location middle)
(name-location (engine temp-sensor rpm-sensor pressure -sensor aileron-2
actuator-2))
(related-devices (actuator-2))
(gain 10.0)
~linked-to ((stick-l stick-2) (aileron-I aileron-2)))
physical-equiv cutr2)
(device actuator-2
IN right-wing
((status ok)
power-source batt-2-node)
(function actuator)
(location middle)

-32-
(same-location (engine temp-sensor rpm-sensor pressure-sensor aileron-2
actuator-I))
(related-devices (actuator-i))
(gain 10.0)
(linked-to ((stick-i stick-2) (aileron)))
(physical-equiv actuator-I)))
(device tank
IN right-wing
((status ok)
(function storage)
(location root)
(same-location (static-pressure-sensor-1 satic-pressure-sensor-2
level-sensor-i batt-l-node batt-2-node))
(related-devices (level-sensor-1))
(linked-to (0 (engine level-sensor-i)))))
(device level-sensor-I
[N right-wing
((status ok)
(power-source batt-1-node)
(function sensor)
(location root)
(same-location (static-pressure -sensor-1 static-pressure-sensor-2 tank
* batt-l-node batt-2-node))
(linked-to ((tank A/D5)))))

(device engine
IN right-wing
((status ok)
(power-source batt- l-node)
function propulsion)
location middle)
.same-location (temp-sensor rpm-sensor pressure-sensor aileron-2 actuator-I
actuator-2))
(linked-to ((tank) (temp-sensor rpm-sensor pressure-sensor)))))
(device temp-sensor
IN right-wing
((status ok)
power-source batt- l-node)
function sensor)
location middle)
same-location (engine rpm-sensor pressure-sensor aileron-2 actuator-1 actuator-2))
related-devices (rmp-sensor pressure-sensor))
linked-to ((engine A/D6)))))
(device rpm-sensor
IN right-wing
((status ok)
power-source batt- 1-node)
function sensor)
location middle)
same-location (engine temp-sensor pressure-sensor aileron-2 actuator-I actuator-2))
related-devices (temp-sensor pressure-sensor))
linked-to ((engine A/D?)))))
(device pressure-senscr
IN right-wing
((status ok)
(power-source batt-i-node)
(function sensor)
(location middle)
(same-location (engine rpm-sensor pressure-sensor aileron-2 actuator-I actuator-2))
(related-devices (temp-sensor rpm-sensor))

-33-
(linked-to ((engine AA)8)))))
(device batt-i-node
IN right-wing
((status ok)
(function battery)
(location root)
(same -location (static-pressure -sensor-iI tatlc-pressure-sensor-2 tank
level-sensor-I))
(linked-to ((batt-i) (saaic--press ure -sensor- 1 actuator-i
engine level-sensor-i temp-sensor rpm--sensor pressure--sensor))
(device batt-2-node
IN right-wing
((status ok)
(function battery)
(same-location (xtatic-pressure -sensor- I static-pressure-sensor-i tank
level-sensor-I))
(linked-to ((batt-2) (airspeed-sensor-2 static-pressure-sensor-2 actuator-2)))))
(device inter-equiv
OF right-wing
((batt-I (nose batt-i))
batt-2 (nose batt-2))
A/D3 (cockpit A/fl1-8))
A/D4 (cockpit A/D25-32))
* A/fl5 (cockpit A/fl 1-8))
A/D6 (cockpit A/D9- 16)
'A/D7 (cockpit A/1)9-16))
A/fl8 (cockpit A/fl9-16)
stick-I (cockpit stick-I))
stick-2 (cockpit stick-2))))

7I..

-34-

-I
- -.-.-. - -I- - . . ..---.--
^**********$# NOSE SECTION

(device airspeed-sensor-i
* ~ IN nose
((status ok)
Spower-source batt-i)
function sensor)
same-location (airspeed -sensor-2 batt -1 batt-2 gyro- 1.1
gyro-l.2 gyro-l.3 gyro-2.i gyro-2.2 gyro-2.3 accelerometer-I
acceleromeler-2 radar-, antenna))
related-devices (airspeed-sensor-i))
~linked-to ((A/ni))
physical-equiv airpseed-sensor-2)
~analytical -equiv Jif-needed-sensori)))
(device airspeed--senisor-2
IN nose
((status ok)
power-source batt-2)
(flunction !qensor)
(same-locaticr (airspeed--sensor- I batt-i batt-2 gyro-1.i
gyro-1.2 gyro-i.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
* (related-devices (airspeed-sensor-i))
(linked-to ((A4)2)))
(physical-equwv airs pe ed-sensor-i1)
(analytical-equiv if-nieeded-sensori)))
(device batt-i
IN nose
((status ok)
function battery)
samne-location (airspeed-sensor-i airspeed-sensor-2 batt-2 gyro-i.i
gyro-i.2 gyro-i.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
(linked-to (0 (batt-i-wing batt-i-rwinig batt-i-tail batt-i-cockpit
batt- i-rotor airspeed -sensor-i1 gyro-I accelerometer radar-i)))))
(device batt-2
IN nose
* ((status ok)
(function battery)
(same-location (airspeed-sensor-i airspeed--sensor-2 batt-i gyro-i.1
gyro-i.2 gyro-1.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
(linked-to (0 (batt-2-lwing batt-2-rwing batt-2-tail batt-2-cockpit
airspeed-sensor-2 gyro-2)))))
(device gyro-i.i
IN nose
((status ok)
power-source batt-i)
function sensor)
isame-location (airspeed -sensor- I airspeed-sensor-2 batt-i bott-2
gyro-1.2 gyro-1.3 gyro-2.i gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
(related-devices (gyro-1.2 gyro-1.3))
(linked-to ((A/Do)))
(pysical-equiv gyro-2. 1)))
(device gyro-i.2
IN nose
((status ok)
(power-source batt-i)

* -35-
.7.'

.JV.
~functioni sensor)
same-location (airspeed-sensor-I airspeed-sensor-2 batt-I batt-2 gyro-l.l
gyro-i.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
related-devices (gy~ro-1.l gyro-1.3))
linked-to ((A/D4)))
pysical-equiv gyro-2.2)))
(device gyro- 1.3
[N nose
((status ok)
Spower-source batt-1)
function sensor)
isame-location (airspeed -sensor- I airspeed -sensor-2 batt-I batt-2 gyro-i.i
gyro- 1.2 gyro-2. I gyro-2.2 gyro-2.3 accelerometer-i
(reate-deice (accelerometer-2 radar-i antenna))
(relatd-devies (rro-1.1 gyro-i.2))
(lned-to ((AAI)5) )
(physical-equiv gyro- 2.3)))
(device gyro-2. I
IN nose
((status ok)
Spower-source batt-2)
function sensor)
* - same-location (airspeed-sensor-i airspeed-sensor-2 batt-i batt-2 gyro-i.1
* gyro-1.2 gyro-1.3 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i antenna))
irelated-devices (gy~ro-2.2 gyro-2.3))
(linked-to ((A/D6)))
r (physical-equiv gyro-1.1)))
(device gyro-2.2
IN nose
((status ok)
(power-source batt-2)
(function sensor)
(same-location (airspeed -sensor- I airspeed-sensor-2 batt-1 batt-2 gyro-i.I
gyro-1.2 gyro-1.3 gyro-2.i gyro-2.3 accelerometer-I
accelerometer-2 radar-i antenna))
(related-devices (yo-2.1 gyro-2.3))
* linked-to ((A/D7) )r
physical-equiv gyro- 1.2)))
(device gyro-2.3

I(power-source
IN nose
((status ok)
ifunction sensor)
batt-2)
(same-location (airspeed -sensor- I airspeed -sensor-2 batt-i batt-2 gyro-i.i

Irelated-devices gyro-1.2 gyro-iS3 gyro-2.i gyro-2.2 accelerometer-i


accelerometer-2 radar-i antenna))
(gyro-2. I gyro-2.2))
linked-to ((AA)8)))
physical-equiv gyro-i .3)))
* (device accelerometer-i
IN nose
((status ok)
(power-source batt-i)
(function sensor)
(sme-location (airspeed -sensor-I1 airspeed -sensor-2 batt-l batt-2 gyro-i.1
gyro-i.2 gyro-i.3 gyro-2.1 gyro-2.2 gyro-2.3
accelerorneter-2 radar-i antenna))
(related-devices (accelerometer-2))

-36-
(linked-to ((A/Dg)))))
(device accelerometer-2
IN nose
((status ok)'
(poer-source batt-2)
fuction sensor)
same-location (airspeed-sensor-i airspeed-sensor-2 batt- 1 batt-2 gyro- 1.1
gyro-1.2 gyro-i.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
radar-i antenna)
Srelated-devices (accelerometer-i1))
Ilinked-to ((A/D 10)))))
(device radar-i
IN nose
((status ok)
(ower-source batt- i)
(function sensolr) pe
sno-Iarpe
(same-location (arpe-esriarpe-sensor-2 batt- 1 batt-2 gyro- 1.1
gyro-1.2 gyro-1.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 antenna))
(linked-to ((parallel-input)))))
(device antenna
4 IN nose
((status ok)
function communication)
same-location (airspeed-sensor-i airspeed-sensor-2 batt- 1 batt-2 gyro- 1.1
gyro-1.2 gyro-1.3 gyro-2.1 gyro-2.2 gyro-2.3 accelerometer-i
accelerometer-2 radar-i))
(linked-to ((radio)))))
(device inter-equiv
OF nose
((batt-l-lwing (tail batt-i-node))
batt-i-rwing (ih-wing batt-1-node))
batt-i-i (tail batt-l-nde))
batt-i-cockpit (cockpit batt-i-node))
batt-i-rotor (rotor batt---node))
batt-2-wing (tail batt-2-node))
batt-2-rwi ng (right-wing batt-2-node))
-' batt-2-tail (tail batt-2-node))
batt-2-cockpit (cockpit batt-2-node))
AAD1 cockpit A/D9- 16))
A/*D2 cockpit A/9-16)
A/D3 cockpit A/Dg-16)
A/D4 cockpit AAD9- 16))
A/D5 Icockpit A,'D9- 16)
A/D6 cockpit A/D25:32)
A/V7 cockpit &/D25-32)
AA)8 cockpit A/D2) 3
A/D9 kcockpit A/D 17-24))
A%'I0 (cockpit A/D17-24))
radio (cockpit radio))
Iparalell-input (cockpit parallel-input))))
000 TAIL SECTION 000000000
(device engine
IN tail
((status ok)
(power-source batt-i-node)
(function propulsion)
(same-location (temp-sensor rpm-sensor pressure-sensor rudder actuator-i
actuator-2 actuator-3 actuator-4))

-37-
related-devices (temp-sensor rpm-sensor pressure-sensor))
Slinked-to ((tank) (temp-sensor rpm-sensor pressure-sensor)))))
(device temp-sensor
[N tail
((status ok)
4 (power-source batt-1-nodle)
(function sensor)
(samie-location (engine rpm-sensor pressure-sensor rudder actuator-I
actua*tor-2 actuator-3 actuator-4))
Srelated-devices (rpm-sensor pressure-sensor))
liked-to ((engine A/Di)))))
(device rpmn-sensor
IN tail
((status ok)
(power-source batt- 1-node)
(function sensor)
(same-location (engine temp-sensor pressure -sensor rudder actuator-i
actuator-2 actuator-3 actuator-4))
Srelated-devices (temp-sensor pressure-sensor))
ilinked-to ((engine A/D2)))))
* (device pressure-sensor
IN tail
* ((status ok)
( power-source batt- 1-node)
Sfunction sensor)
same-location (engine temp-sensor rpm--sensor rudder actuator-i
actuator-2 actuator-3 actuator-4))
(related-devices (temp-sensor rpm-sensor))
(linked-to ((engine A/D3)))))
(device rudder
IN tail
((status ok)
Sfunction effector)
same-location (engine temp--sensor rpm-sensor pressure-sensor actuator-I
actuator-2 actuator-3 actuator-4))
(linked-to ((actuator- 1 actuator-2)))))
(device actuator-i
IN tail
((status ok)
(power-source batt- 1-node)
fuain ac0.0) r
gaiunn actutor
Isame-location (engine temp--sensor rpm-sensor pressure-sensor rudder
actuator-2 actuator-3 actuator-4))
Slinked-to ((pedal-i pedal-2) (rudder)))
physical-equiv actuator-2)))))
* (device act uator-2
IN tail
((status ok)
hower-source batt-2-node)
function actuator)
gain 10.0)
raame-location (engine temp-sensor rpm-sensor pressure--sensor rudder

[
actuator-I actuator-3 actuator-4))
(linked-to ((pedal-i pedal-2) (rudder)))
(pysical-equiv actuator-i)))))
(device elevator-i
IN
tail -6

I3
((status ok)
(location right)
(function effector)
(lnked-to ((actuator-2)))))
-. - (device elev''or-2
IN tall
((status ok)
i location left)
function effector)
linked-to ((actuator-2)))))
(device actuator-3
IN tal
((ttsok)
=towr-source batt- i-node)
tfunction actuator)
tgain 10.0)
(same-location (engine temp--sensor rpm-sensor pressure-sensor rudder
-~ actuator-I actuator-2 actuator-4))
(linked-to ((stick-i stick-2) (elevator-i elevator-2)))
(pysical-equiv actuator-4)))))
(device actuator-4
IN tail
* ((status ok)
Spower-source batt-2-node)
function actuator)
gain 10.0)
Isame-location (engine temp-sensor rpm-sensor pressure-sensor rudder
actuator-i actuator-2 actuator-3))
(linked-to ((stick-I stick-2) (elevator-i elevator-2)))
(physical-equiv actuator-3)))))
(device batt-l-node
(sttus ok)
* (function battery)
(linked-to ((batt-i) (actuator-I actuator-3 engine temp-sensor rpm-sensor
pressure-sensor)))))
(device batt-2-node
h~J IN tail
((status ok)
(function battery)
(linked-to ((batt-2) (actuator-2 actuator-4)))))
(device inter-equiv
OF tUL
((batt-I-node (nose batt-l))
batt-2-node (nose batt-2))
AA)1 (cockpit A/fl17-24)
A/D2 (cockpit A/D 17-24)
A/D3 (cockpit A/fl17-24))
stick-I (cockpit stick-)
stick-2 (cockpit stick-2)
pedal-I (cockpit pedal-I)
pedal-2 (cockpit pedal-21)

pV.
- *****eeee~COCKPITSECION O*****~

(device stick-i
IN cockpit
((status ok)
(function control)
9 lnked-to (0 (actuator-I actuator-2 actuator-3 aetuator-4)))
hyxical-equiv stick-2)))
SN

(device peda-i
IN cockpit
((status ok)
(function control)
( linked-to (0 (actuator-I actuator-2 c))) r- ctaor4
(hyuical-equv sedal-2)))
(device pedal-2
IN cockpit
((status ok)
(function control)
4 (linked-to (Q (actuator--5 actuator-C)))
UphysicaI-equiv pedal-i)))
(device reai-I
IN cockpit
((status ok)
(function comnt cation
=inked-to (0 (antena)))))cuto-6)
* ~(device aie-md-
IN cockpit
((status ok)
(po'wer-source batt- i-node)
(function domsplaon
(linked-to ((d)spay-ier))))

L
* (device .Jrspeed-ind-I
IN cockpit
((status ok)
ower-source batt-2-node)
function display)
linked-to ((display-driver-)))
1hysical-equiv airspeed-ind-i)))
* (device cimrte-ind-i
IN cockpit
(status ok)
hower-source batt- I-node)
(function display)
(linked-to ((display-driver-I)))
(physical-equiv cimrte-ind-2)))
(device climb-rate-ind-2
IN cockpit
((status ok)
(ower-source batt-2-iode)

U dis-I0-

link...........................,*
dipa-d.e-1) d-to~ (.-.*****.tein
phyzicl-equi 2)))*.
(linked-to ((dispay-driver-2)))
(phyzical-.qulv atmospheic-prewir'e-ind-l)))
(device fuel-gauge-I
IN cockpit
(status ok)
~pwer-source batt- I-node)
function dis(PIaY)
bnked-to (display-driver-i
(physlral-equiv fuei-gauge-2M
(device fuel-gauge-2
IN cockpit
((status ok)
poe-ource batt-2-node)
fnc oniplay)
inked-to ((display-driver-2))M

(device horizon-iad-I
IN cockpit
((status ok)
$ower-source batt- I-node)
function didlay rvr-)
inked to ipa-rv-1)
*h iphysical-equiv horizon-ind-2)))
OW

(device horizon-tad-I
IN cockpit
(status ok)
(power-source batt-2-node)
(function display)
(linked-to ((dispiay-driver-2)))
(physical-equiv horizon-ind- 1)))

Lpower-source
(device altitude-ind-i
IN cockpit
((status ok)
batt- 1-node)
function display)
linked- to ((display-driver-i))
thysical-equiv altitude-mnd!))
(device altitude-ind-2
IN cockpit
(tatus ok)
(power-source batt-2-node)
(function display)
(linked-to ((display-driver-2)))
fphyslca]-equiv altitude -ind-I ,)
(device display-driver-I
*Di cockpit
(status ok)
(pwer-source batt-i-node)
(function driver)
(linaked-to ((000a-iot of devices 000)
(hysical-equiv display--driver-2)))
OW

(device dispiay-driver-2
IN cockpit
((status ok
Pover-source batt-2-node)
fcton driver)
Ilinked-to ( a lot of devices ~)

4 2-
lay)
"nk~ed-todis((display-drtver-2)))
Sfuncton
byuical-equiv climb-rate-ind-I)))
(device engines-rpm-lnd-l
[N cockpit
((status ok)
ower-zource batt- 1-node)
~ed-to ((diplay-driver-I)))
fiphysical-equiv engines-rpzn-ind-2)))
2 (device englnes-rpm-Ind-2
IN cockpit
((status ok) btt-uo)
function dIsplay)
linked-to ((display-driver-2)))
hysicai-equiv engines-rpm-Imd-i)))
(device manifold-pressure-IUnd-i
IN cockpit
((status ok)
(power-source batt- 1-node)
~function displ A
(linked-to ((diplay-driver-I)))
(phyuical-equiv rnanifold-pressu.-e-ind-2)))
(device znanifold-pressure-ind-2
[N cockpit
((Status ok)
(power-source batt-2-node)
(unction display)

(philysical-ec'ii ranilold-pressure-ind-I)))
(device engines-temp-Ind-I
IN cockpit
(powe=r-sonurce batt- 1-node)
(function display)
(linked-to ((display-driver-)))
(physical-equiv engines-temp-ind-2)))
(device englaes-temp-Ind-2
[N cockpit
((status ok)
(power -source batt-2-node)
* (function display)
~ed-to ((display-driver-2)))
(hysical-equlv engines-temp-ind-i)))
(device atmospheric-pressure-mnd-I
[N cockpit
((status ok)
(ower-source bat t- I-node)
(function display)
(nked-to ((M play-driver-I)))
1hyuical--equiv atxnospberc-preusure-ind-2)))
(device atniospberte-pressure-ind-2
IN cockpit
(sxtatus ok)
Spower-source lbatt-2-node)
ftunction display)

-41-

***_54 *%*--r-.'Z'.*
(phyuical-..quiv display-driver-i)))
(device A/D1-Oa
IN cockpit
((status ok)
rw-ource bett-i-node)
(linked-to ((sensor- 1 sensor-2 2ensor-S sensor-4 sensor-5 sensor-6 sensor-?
sensor-O)))
(device A/DQ-16
IN cockpit )
a -1 v d
k)
(status
~function converter)
(linked-to ((sensor-O sensor-lO sensor-11 sex-3or-12 sensor-iS sensor-14
.ensor-25 sensor- 16)))))
(device ",~17-24
IN cockpit
((status ok) bt--oe
(power-source atIne
(function converter)
(linked-to ((sensor-i? sensor-lB sensor-19 sensor-20 sensor-21 sensor-22
* sensor-23 sensor-24)))))
(device A"D25-32
IN cockpit
((statux ok)
Spower-2ource bett-2-iode)
function converter)
linked-to ((sensor-25 sensor-26 sensor-2? sensor-28 sensor-29 sensor-30
sensor-S I)))))
(device batt-l-node
IN cockpit
((status ok)
Sfunction battery)
ilinked-to ((batt-i) (radio-I airspeed-ind-I climb-rate-mad-I fuel-gauge-i
engines-rpm-mnd-I mnanifold-pressure-nd -1
engines-temp-ind-I horizon-id-I altitude-ind-I
display-driver-I A/Dl-fl A/D9-16 A/D17-24)))))
(device batt-2-node
IN cockpit
((status ok)
(linked-to ((batt-2) (airspeed-ind-2 climb-rate-ind-2 fuel-gauge-2
engines-rprn-ind-2 mnanifold -pressure-ind-2
engines-temp-lnd-2 horizon-ind-2 altitude-ind-2
display-driver-2 A/D25-32)))))
(device inter-quv
OF cockpit
(btt-I (nose batt-I))
batt-2 (nose batt-2))
actuator-I (left-wing actuator))
act uator-2 (right-wing actuator))
actuator-S (tail actuator-)
actuator-4 (tail act uator-2)
V.actuator-5 (tatil actuator-S)
V.. actuator-C (talJ-actuator-4)
*sensor-I Qeft-wing airpseed -sensor-I1))
sensr-2 left-wing static-pressure-sensor1)
sensor-3 (left-wing level--sensor-I1))
%&unsor-4 (eft-wing ternp-sensor))

-43-
--- --- --

sensor-5 (left-wing rpm-sensor))


sensor-8 (left-wing pressure-sensor))
sensor-7 (right-wing static-sensor- 1)
sensor-8 (right-wing level-senior- 1))
sensor-9 (right-wing temp-sensor)
*sensor-1O right-wing rpm-sensor)
sensor-il right-wing pressure-sensor))
sensor-12 nose airspeed--sensor-i))
sensor-13 nose gyro-I)
sensor-i4 nose gyro-i)
,sensor-15 Inose gyro-I)
sensor-l nose accelermeter))
".1 sensor-i7 nose accelerometer))
sensor-18 tail temp-sensor))
Pensor-19 tail rpm-sensor))
sensor-20 tail pressure--sensor))
sensor-21 rotor level-sensor-i))
sensor-22 rotor temp-sensor))
sensor-23 rotor rpm-sensor))
seasor-24 rotor pressure-sensor))
sensor-25 left-wing airspeed-sensor-2))
sensor-26 left-wing xtatic-pressure-sensor-2))
sensor-27 right-wing utaLic-presure-venaor-2))
sensor-28 nose airspeed -pressure -sensor-2))
sensor-29 nose gyo-2)
mensor-30 Inose go-2))
Sensor-31 nose gyo-2)
3antenna (nose antenna))))

Ai

44

A _".
MAIN-ROTOR (HELICOPTER ONLY) ***.*****

(device main-rotor
IN rotor
((status ok)

* (device transmission
1N rotor
((status ok)
* (function driver)
(linked-La ((engine) (main-rotor)))))
(device engine
[N rotor
((status ok)
Spower-source batt- 1-node)
funcition propulsion)
linked-to ((tank) (transmission temp-sensor rpm-sensor pressure--sensor)))))
(device tank
IN rotor
((status ok)
(function storage)
* (liked-to (Q(Jergine level-sensor-I)))))
(device level-sensor-i
IN rotor
(power-source batt-node-1)
(function sersor)
(linked-to ((ank A4)M)))))
(vice temp-sensor
[N rotor
((status ok)
(pwe-source batt-1-node)
(functio sensor)
(linked-to ((engine A'l6)))
0 (device rpm-sensor
IN rotor
((status ok)
powe-source batt- 1-node)
luc~nsensor)
linked-to ((engine A./D7)))))
(device pressure-sensor
IN rotor
((status ok)
Sp er-source batt-1-node)
fuction sensor)
linked-to ((engine AA)8)))))
(vice mwashplate
[N rotor
((status ok)
(function effector)
-: (linked-to ((collective-.stick)))))
* (device batt-1-node
IN rotor
((status ok)
(function battery)
V - 4.5-
4 (linked-La ((bttL-l) (engine level-sensor-I temp--sensor rpm-sensor
pressure-sensor)))))

IA/D5
(device inter-equlv
OF rotor
((batt-1 (nose. batt-l))
(cockpit A/l7-24)
A/D6 (cockpit U/D17-24~
A/f? cockpit A/D 17-24
jA/8
lockitA/)33-401
collective-stick (cockpit collective-stick-1)
(cockpit collective-stick-2))))

04
Appendix D

PROGRAM LISTING OF THE RULES

This appendix contains the source listing for the ten rules presently

installed in the FDIES.

(rules rule#l
F (down ?device)
THEN (mark-device (car ?device) (cadr ?device) 'down))
(rules rule2
IF (faulty ?device)
THEN (mark-device (car ?device) (cadr ?device) 'faulty)) Hff
(rules rule#3
IF (different ?device reading) IF
from its physical equivalent is implicit here.
THEN (prog (temp-then section device) THEN
' (setq section (car ?device))
(setq device (cadr ?device))
-the device must have analytical equivalent
(cond ((null (setq temp-then (ook-up section device 'analy-equiv)))
(print '(no analytical equiv present... rule#3 failed)))
"'f it does then check to see to which reading it is equal.
(t (cond ((same (look-up section device 'self) temp-then)
(mark-device section
(retrieve section device 'physical-equiv) 'faulty))
((same (look-up section device 'phys-equiv) temp-then)
(mark-device section device 'faulty))
(t (print '(no readings are the same... rule#3 failed))))))))
(rules rule#4
IF (different ?device behavior)
THEN (generate-and-test ?device))
(rules rule#5
IF (abnormal ?device reading)
THEN (prog (other-devices device-list) THIA
-'first find the other devices in the same location
"(etq other-devices (retrieve (car ?device) (cadr ?device) 'same-location))
-11fevery device is on the abnormal list then apply rule#8
(setq device-list other-devices)
loop
(cond ((null device-list)
(return (eval '(use-rule rule#8
(common ,(cons ?device other-devices) location)))))
((null (on-abnormal-list (list (car ?device) (car device-list))))
.. ,/ (return (eval '(use-rule rule#6
-.- (abnormal ,?device reading not-same-loc)))))
(t (setq device-list (cdr device-list))))
(go loop)))

*--
.
(rules rule#6
IF (abnormal ?device reading not-same-loc)
THEN (prog (other-devices device-list)
(setq other-devices (retrieve (car ?device) (cadr ?device) 'related-devices))
'f"irstL check if there are related devices. Most of cases it will.
-'If not apply rule#7
(cond ((null other-devices)
(return (eval '(use-rule rule#7 (abnormal ,?device reading no-related)
(setq device-list other-devices)

- 47 -
THEN
...
loop
"-all devices on the list must be abnormal list to declare that
'all related devices faulty.
(cond ((null device-list)
(return (eval '(use-rule rule#8
(abnormal ,Icons ?device other-devices) related-dev
((null (on-abnorma-list (list (car ?device) (car device-list))))
(return (eval '(use-rule rule#7 (abnormal ,?device reading no-related)
! . ,,,(,o (g l(t
loop)))(setq device-list (cdr device-list))))

(rules rule#7I
[F (abnormal ?device reading no-related) IF
-H"fairplane's behavior is also abnormal, something serious is happening
"-so many other rules will take care of the situation. Ignore the alert for now
THEN (cond ((on-abnormal-list 'airplane-behavior)) THEN
-otherwise declare the device faulty.
(t (issue-alert '(faulty ,?device)))))
(rules rule#8
IF (common ?device ?commonality)
THEN (do ((device-list ?device (cdr device-list)) THIK
(a-device (car ?device)))
-'after all devices have been declared faulty, report the
* -nature of the problem.
((null device-list)
(cond ((equal ?commonality 'location)
(setq temp (list (car a-device)
(retrieve (car a-device) (cadr a-device) 'location)))
(print '(structural damage in ,(car a-device) ,temp)))
((equal ?comrnionality 'related)
(print '(these related devices are down: .?device)))))
-,issue alert for each of the devices.
(issue-alert *(faulty ,(car device-lis.)))))
(rules rule#9
IF check ?device .%alue)
THEN (prog(temp) THff
(setq temp (car ?device))
-first check if the device is in the cockpit
(cond ((not (equal 'cockpit terip))
(return (print
'(check command must refer to a device in the cockpit))))
-'then check if the device is in bulletin
((null (setq temp (look-up temp (cadr ?device) 'self)))
(return (print '(carnot check the device in question))))
"'f nally check if the value is the same as reported.
((same .value temp)
(return (print '(.?device is OK))))
ark faulty if all fails
(t (issue-alert '(faulty ,?device))))))
PS

(rules rule#10
[F
THEN (normal
(restore ?device)
evice)) TH
''Put the rule number on the property list
defprop down (rule#l) rule-number)
defprop faulty (rule#2) rule-number)
" defprop different (rule#3 rule#4) rule-number)
* defprop abnormal (rule#5) rule-number)
% (defprop common (rule#8) rule-number)
defprop check (rule#9) rule-number)
defprop normal (rule# 10) rule-number)

- 48 -

. •- . =,•, - .°
. . . .. -. . . . . .-. . _
Appendix E

THE FDIES SOURCE CODE

This appendix contains the complete program listing for the FDIES. It

inc!udes the main procedure FDIES as well as all the available utility

procedures. Short comments on the purpose of each routine are given

in the beginning of each major file.

- This file contains executive procedure to run the FDIES


- plus a few routines.

'-ddies: this is the top-level executive routine


',reporter: checks the bulletin for abnormalities and issue proper alerts.
'-my-gc: - removes nil's from the abnormal-devices list.
-auxiliary functions: used to retrieve data from the bulletin.
'-issue-alert: places the alert on either the high-priority or priority stack.
'-push: pushes an element on a stack.
'-pop: pops an element of a stack.
'-apply-rules: finds and applies correct rule to the alert in question.
'-use-rule: the routine that actually does the rule-application.
(defun fdies 0
(prog (message top-alert)
'-frst some preliminaries
"setq message '(you are in input-mode. To run FDIES type "p"))
setq high-p-stack nil)
setq p-stack nil)
loop-1
(terpr)
Sprint -(no (more) alerts present)) (terpr)
(print '(to quit.. type q. Otherwise hit return)) (terpr)
'-Quit?
(cond ((equal 'q (readc)) (return 'done)))
'-oherisesitin pause until the operator is ready
(pause message)
,-,lrst check if there is any abnormalities
(reporter)
loop-2
'Any new alerts?
( (setq top-alert (pop 'high-priority))
'-if yes apply the rules'
(apply-rules top-alert)
0go loop-2)))
-. (defun reporter 0
(do ((news bulletin (cddr news))
(section))
((null news))
-
'-section name is usually the first item
. (uetq section (car news)
'-is it the abnormal-devices list? If yes take care of it.

-"49 -

.0 .
(cond ((equal section 'abnormal-devices)
i (do (device-list (cadr news) (cdr device-list)))
((null device-list))
"is this item a new alert?
(cond ((equal "new-alert (get-abnormal-status (car device-list)))
-f1 yes, issue the alert. Otherwise do nothing
setq section (get-abnormal-?device (car device-list)))
tissue-alert '(abnormal ,section reading))
'Once alert is issued remove it from the abnormal list.
('placa device-list nil)))))
"if this is a section name, check for differences
(t (do ((device-list (cadr news) (cdr device-list))
(phys-equiv-value) (self-value))
((null device-list))
'(does a physical equivalent exdst? If no do nothing
(cond ((null (setq phys-equiv-value (get-p-equv (car device-list)))))
-are they numbers. If no do nothing as well
((null (and (numbp (setqphys-equiv-value))))
(numbp self-value (get-s-value (car device-list))))
- Otherwise check ifself-value and equiv value are same
yes do nothing. If no issue alert.
-"if
(t (cond ( same self-value phys-equiv-value))
(issue-alert '(different ,(list section
(get-d-name (car device-list)))
reading)))))))))))
(defun my-gc 0
(do ((news bulletin (cddr news)))
((null news))
cond ((equal (car news) 'abnormal-devices)
(return (rplaca (cdr news) (remove nil (cadr news))))))))
'-Some auxiliary functions
(defun get-abnormal-status (a-list)
(car (reverse a-list)))
(defun get-abnormal-?device (a-list)
(reverse (cdr (reverse a-list))))
(defun get-p-equiv (a-list)
(cadr (member "phys-equiv a-list)))

(defun get-s-value (a-list)


(caddr a-list))
(defun get-d-name (a-list)
(car a-list))
(defun issue-alert (exp)
(prog (temp)
(setq temp (car exp))
-check to see if the alert is that of high-priority type
(cond ((or (equal temp "down) (equal temp 'faulty))
'if yes push the alert onto the high-priority stack
(return (push exp 'high-priority)))
'-otherwise push it on the priority stack
(t (return (push exp "priority))))))
(defun push (value stack-name)
'check to see which stack is to be used.

(cond (equal stack-name 'high-priority) (setq high-p-stack (cons value high-p-stack)))
(t (setq p-stack (cons value p-stack)))

-50-

It"€''9% "
(defun pop (stack-name)
-check which of the stack the value must be popped.
(cond ((equal stack-name 'high-priority)
(progl (car high-p-stack)
(setq high-p-stack (cdr high-p-stack))))
(t (progi (car p-stack)
(setq p-stack (cdr p-stack))))))
(defun apply-rules (alert)
"find out what rules are applicable
(do ((starting-rules (get (car alert) 'rule-number) (cdr starting-rules))
(?device) (?commonality) (?value))
"if no rules do nothing
((null starting-rules))
-apply use-rules iteratively until all rules are exhausted.
(eval '(use-rule ,(car starting-rules) ,alert))))
(defmacro use-rule (rule# alert)
R"frst check if the rule is applicable
(cond ((similar (get rule# "if) alert)
--if so get the then part and evaluate it on the return (due to macro)
(get rule# 'then))
(t (print *(,rule# does not apply)))))
OW

"-List of files:
"-sections: makes FDIES aware of sections being dealt.
"is-section: checks to see if an element is part of section database already.
-mark-device: marks device as well as those on the linked-to list to
whatever status specified.
~or
OW unusable.
-mark: used by mark-devices to accomplish its goal
-get-new-section: gets the section that the device really belongs to.

(declare special frames)


(setq frames 0)
* (defun sections macro (exp)
"-example (sections left-wing right-wing tail ....)
(do ((temp (cdr exp) (cdr temp)))
((null temp) ,frames)
-check if the section is known already. If not add the the global frames
(cond ((null (is-section (car temp))) (setq frames (cons (car temp) frames)))
-otherwise report existence and continue
(t (print '(,(car temp) is already known))))))
(defun is-section (xl)
(cond ((member xl frames) t)
(t 0)))

(defun mark-device (section device value)


"format is (mark-devices left-wing aileron down)
(let ((temp O) (value-1 'ok) (value-2 'ok))
"-first check if the given section and device exist. If they don't
-do nothing. If they do set temp to the value of linked-to slot.
(cond ((null (setq temp (is-present-I section device 'linked-to))))
"Now iteratively change the status of the devices.
"-first add the device on abnormal-devices list.
(t (cond ((not (equal value 'ok))
(eval '(add-abnormal-devices ,section ,device ,value))
(setq value-1 'broken-link)
(setq value-2 'unusable)))
"then change its status on the bulletin and database.
,* (eval '(change-bulletin ,section ,device self ,value))

-51-

' , ;i , .%, . N
., ,..,,.., -.. . .. .-. ,.-.-:..,....-. ... . ..
(eval '(change ,section ,device status to ,value))
'-finally mark the devices on the first list of linked-to devices
-as broken-link
(mark section (caar temp) value-i)
-and the devices on the second list as unusable.
(mark section (cadar temp) value-2)))))

(defun mark (current-section device-list new-status)


(do ((tempt device-list (cdr templ))
(section-temp) (device-temp))
(null temp1))
(etq device-temp (car templ))
-check if the device is in another section. If so change
'-the current section temporarily.
(cond ((member device-temp (get-all-devices current-section))
(setq section-temp current-section))
(t (setq section-temp (get-new-section current-section device-temp))))
eval *(change ,section-temp ,device-temp status to ,new-status))
eva '(change-bulletin ,section-temp ,device-temp self ,new-status))))

* (defun get-new-section (section device)


-(cadar (find-value (get section 'inter-equiv) device)))

'-iUst of files
'device: specifies the characteristics(facts) of a device. The facts
are attached to the property list of the section under
the name of the device.
~change: changes the value of the facts known.
"-find-value: finds the value of the given slot.
'-what-is: returns the value of the fact presently in the system.
'-retrieve: same as what-is except not a macro.
'-add-fact: apppends additional facts about a particular device.
-is-present-i: checks the presence of given section, device and slot. If
'- true returns the slot as specified. Otherwise returns nil.
"is-present-2: checks the presence of given section and device. If true
returns the facts associated with the device.
-add-value: add value to the existing slot given the section and device.
~device-description: returns the "frame" or description of the device given.
'-get-all-devices: returns all devices attached to the section.

(defmacro device (device-name in section-name facts)


-example (device engine IN right-wing (facts))
'-simply put on the property list of the section.
'(detprop ,section-name ,facts device-name))

(defmacro change (section device slot to value)


-example (change left-wing airpseed-sensor-I status to down)
'. prog (temp)
'-now make sure that the section. device and slot are known
(cond ((null (setq temp (is-present-i section device slot))))
'-if they are make the change.
(t (return (rplaca temp value))))))
(defun find-value (facts slot)
'-example (find-value (specs) status)
(do ((temp facts (cdr temp))
(tempcar))
((null temp))
'-"set tempcar to the first item in the fact list
cond tempar
i setq ((equal (car teup)) slot) (return (cdr tempcar))))))
(car tempcar)

tp52

,..
(defmacro what-is (section device slot)
-example (what-is left-wing engine linked-to)
,(car (find-value (get section device) slot)))

" (defun retrieve (section device slot)


(car (flnd-value (get section device) slot)))

(detmacro add-fact (section device fact)


"-example (add-fact tail *engine (some useful spec))
(let ((temp 0))
-check if the section and device exist. If yes retrieve the facts
(cond ((null (setq temp (is-present-2 section device))))
"-now check if the new fact is already present. If so warn the user
((find-value temp (car fact)) (print '(fact already exists. Try change or add-value)))
'-if alright try add the new fact
(t -(nconc temp (list fact))))))

(defun is-present-I (section device slot)


'call is-present-2 which checks if section and device are present
(prog (temp)
(cond ((null (setq temp (is-present-2 section device))))
S(null (setq temp (find-value temp slot))) (return (print '(no such slct))))
t (return temp)))))

(defun is-present-2 (section device)


'-first check if section is present
(cond ((null (is-secticn section)) (print '(no such section)))
'check if device is known. If so return the facts associated with it.
((get section device))
'-otherwise print warning.
(t (print '(no such device)))))

(defmacro add-value (section device slot value)


'-example (add-value cockpit airspeed-ind-I linked-to airspeed-sensor-I)
(let ((temp 0))
'-now check if section, device and slot are present. f not print warning
(cond ((null (setq temp (is-present-i section device slot))) (print
*(value cannot be added to a nonexisting slot)))
'-if they do then destructively append the new value.
(t .(nconc (car temp) (list value))))))

* (defun device-description macro (exp)


'example (device-description tail rudder)
(let ((section (cadr exp))
(device (caddr exp)))
,(get section device))

(defun get-all-devices (section)


'-example (get-all-devices cockpit)
'-first set templist to entire property list of the section
(do ((templist (plist section) (cddr templist))
(answer ()))
((null templist) answer)
S-now form the list containing just the devices.
(setq answer (cons (car templist) answer))))

'-List of files
'rules: inserts rules on the property list according to their
rule number.
-similar: Checks whether two patterns are similar. Has side-effect
of setting variables preceded by ? to prope: values.
'-check-list: used by "similar" to check two lists for similarity.
'-change-bulletin: command used to make changes on the bulletin.

-53-
I.'':' , . -t . -. - .. - -. - . . -. - . -. - .. . . . . . . ..

, -'
. -"
,e ,'
-' ' ." .- ., , . *. . .. . , , ,.,.
. , ., ., . . . . , , . . *. *,
. . . . . .. . , . . . .
-generate-and-test: right now does nothing. Supposed to find if a device can
be salvaged by a different gain or bias.
-look-up: looks up the entry specified in the database
',restore: restores the device's condition to normal (or ok)
..same: compares two values. Return true if they are within 10. of
the larger value.
-add-abnormal-devices: used in monitor mode to add new abnormal alerts on the
bulletin.
,-on-abnormal-list: checks if the device given is on the abnormal--devices list.
(defmacro rules (rule-number if if-part then then-part)
" ,example (rules rule#l if (whatever premises) then (whatever conclusions))
(putprop rule-number if-part 'if)
(defprop ,rule-number ,then-part then))

(defun similar (pattern match)


-example (similar (some stored pattern) (other pattern being matched))
(do ((pattern-temp pattern (cdr pattern-temp))
(match-temp match (cdr match-temp)))
-stop when nothing is left to be compared
((and (null pattern-temp) (null match-temp)) t)
, -check each element
(cond ((check-list (car pattern-temp) (car match-temp)))
(t (return nil)))))

(defun check-list (one two)


-example (check-list "(1 2 3) '(1 2 (3 4)))
i both are null lists return true.
(cond ((and (null one) (null two)) t)
-otherwise are they identical atoms?
((atom cne) (cond ((equal one two))
-does the first atom begin with . If so set them
((equal '? (car (explode one))) (set one two))
totherwise return nil
(t nil)))
-9 not atoms recurse on their sub-lists
(t (and (check-list (car one) (car two))
(check-list (cdr one) (cdr two))))))

- (defmacro change-bulletin (section device type new-value)


-example (change left-wing airpseed-sensor-I self 100.0)
(do ((temp-bulletin bulletin (cddr temp-bulletin)))
((null temp-bulletin) (print '(no such section name)))
f" rst match the section
(cond ((equal section (car temp-bulletin))
-if found match the device
(return (do ((temp-device (cadr temp-bulletin) (cdr temp-device)))
((null temp-device) (print '(no such device name)))
(cond ((equal device (caar temp-device))
-i found match the type
(return
(do ((temp-type (cdar temp-device) (cddr temp-type)))
(null temp-type) (print '(no such type name)))
tcond ((equal type (car temp-type))
* 'If found replace the associated value
(return "' ,(rplaca (cdr temp-type) new-value)))))))

(defun generate-and-test macro (exp)


-do nothing
t)
(defun look-up (section-name device-name type)
(do ((news bulletin (cddr news))
(temp))
-ifno entry found, return nil

p.'. - 54

6%
((null news) nil)
'_otherwise look for it!
(cond ((equal (car news) section-name)
(return (do ((device-list (cadr news) (cdr device-list)))
'-again if the entry is not found, return nil
((null device-list) (return nil))
--same section. find the matching device name!
(cond ((equal (get-d-name (car device-list)) device-name)
'Found it! return the value. Otherwise do nothing.
(return (cadr (member type (car device-list))))))))))))
(defun restore (section-device)
fIrst remove the device from the abnormal-devices list
(do ((device-list (cadr (member 'abnormal-devices bulletin)) (cdr device-list)))
-if the device is not found, do nothing
((null device-list))
'-Otherwise set the entry to nil which will be removed later by a
'garbage-collector-like procedure.
(cond ((equal section--device (get-abnormal-?device (car device-list)))
(rplaca deice-list 0))))
-now change the status of the device in the bulletin and in the database.
(mark-device (car section-device) (cadr section-device) 'ok))
(defun same (value-i value-2)
'-if equal then they are certainly the same.
(cond ((equal value-i value-2) t)
'-otherwise it better be within 10% of the larger one.
((greaterp value-I value-2)
(greaterp 0.1 (quotient (diff value-I value-2) value-i)))
(t (greaterp 0.1 (quotient (diff value-2 value-i) value-2)))))
(deftnacro add-abnormal-devices (section device status-quo)
(prof (device-list)
(setq device-list (cadr (member 'abnormal-devices bulletin)))
return " (nconc device-list (list (list section device status-quo))))))
(defun on-abnormal-list (section-de ice)
(do ((a-list (cadr (member 'abnormal-devices bulletin)) (cdr a-list)))
-if it is not on the abnormal-devices list, return nil
((null a-list) nil)
'-check each entry for equality. Return true if found, otherwise keep looking.
(cond ((null (car a-list)))
((equal (get-abnormal-?device (car a-list)) section-device)
(return t)))))

- 55 -

..... . ... .. . .
-T I(

You might also like