1
|
|
2
|
|
3
|
node AutoPilot ( HeadMode : real ; ailStick : real ; elevStick : real ; AltMode_Out1_41 : real ; FPAMode_Out1_51 : real ; ATMode_Out1_61 : real ; AltCmd_Out1_71 : real ; Altitude_Out1_81 : real ; CAS_Out1_91 : real ; CASCmdMCP_Out1_101 : real )
|
4
|
returns ( HeadEng : bool ; AltEng_In1_1039 : bool ; FPAEng_In1_1051 : bool ; ATEng_In1_1063 : bool ; CASCmd_In1_1075 : real ) ;
|
5
|
|
6
|
let
|
7
|
-- GUIDE-220
|
8
|
assert (HeadMode = 0.0) or (not (ailStick = 0.0)) or (not (elevStick = 0.0)) or (HeadEng = true);
|
9
|
tel
|
10
|
|
11
|
|
12
|
|
13
|
node HeadingControl ( HdgCmdMCP : real ; Heading : real ; psidot_Out1_39 : real ; Vt_Out1_49 : real ; Roll : real ; HeadEng : bool ; rollLimitinput : real; right : bool )
|
14
|
returns ( RollCmd : real ) ;
|
15
|
let
|
16
|
|
17
|
-- GUIDE-260
|
18
|
assert
|
19
|
(HeadEng = false) or
|
20
|
(HdgCmdMCP = Heading) or
|
21
|
((right = true) and ((RollCmd > Roll) or (RollCmd = rollLimitinput))) or
|
22
|
((right = false) and ((RollCmd < Roll) or (RollCmd = -rollLimitinput)));
|
23
|
|
24
|
tel
|
25
|
|
26
|
|
27
|
|
28
|
node top(HeadMode: real ; ailStick: real ; elevStick : real ; AltMode : real ; FPAMode : real ; ATMode : real ; AltCmd : real ; Altitude : real ; CAS : real ; CASCmdMCP : real; HdgCmdMCP: real ; Heading : real ; psidot : real ; Vt : real ; Roll : real ; rollLimitInput : real) returns (obs : bool);
|
29
|
var
|
30
|
HeadEng : bool ;
|
31
|
AltEng : bool;
|
32
|
FPAEng : bool ;
|
33
|
ATEng : bool ;
|
34
|
CASCmd : real;
|
35
|
RollCmd : real;
|
36
|
right : bool;
|
37
|
let
|
38
|
HeadEng, AltEng, FPAEng, ATEng, CASCmd= AutoPilot ( HeadMode, ailStick, elevStick, AltMode, FPAMode, ATMode, AltCmd, Altitude, CAS, CASCmdMCP);
|
39
|
|
40
|
RollCmd = HeadingControl ( HdgCmdMCP , Heading , psidot , Vt , Roll , HeadEng , rollLimitInput, right);
|
41
|
|
42
|
assert (not (HeadMode = 0.0));
|
43
|
assert (ailStick = 0.0);
|
44
|
assert (elevStick = 0.0);
|
45
|
assert (Heading >= 0) and (Heading < 360);
|
46
|
assert (HdgCmdMCP >= 0) and (HdgCmdMCP < 360);
|
47
|
assert (rollLimitInput > 0) and (rollLimitInput <= 30);
|
48
|
|
49
|
right = ((HdgCmdMCP - Heading > 0) and (HdgCmdMCP - Heading < 180)) or (Heading - HdgCmdMCP > 180);
|
50
|
|
51
|
obs = (HdgCmdMCP = Heading) or
|
52
|
((right = true) and ((RollCmd > Roll) or (RollCmd = rollLimitInput))) or
|
53
|
((right = false) and ((RollCmd < Roll) or (RollCmd = -rollLimitInput)));
|
54
|
|
55
|
--!MAIN : true;
|
56
|
--!PROPERTY: obs = true;
|
57
|
tel
|