1
|
|
2
|
|
3
|
|
4
|
node HeadingControl ( HdgCmdMCP : real ; Heading : real ; psidot_Out1_39 : real ; Vt_Out1_49 : real ; Roll : real ; HeadEng : bool ; rollLimitinput : real )
|
5
|
returns ( RollCmd : real ) ;
|
6
|
var right : bool;
|
7
|
let
|
8
|
right = ((HdgCmdMCP - Heading > 0) and (HdgCmdMCP - Heading < 180)) or (Heading - HdgCmdMCP > 180);
|
9
|
|
10
|
-- GUIDE-260
|
11
|
assert
|
12
|
(HeadEng = false) or
|
13
|
(HdgCmdMCP = Heading) or
|
14
|
((right = true) and ((RollCmd > Roll) or (RollCmd = rollLimitinput))) or
|
15
|
((right = false) and ((RollCmd < Roll) or (RollCmd = -rollLimitinput)));
|
16
|
|
17
|
tel
|
18
|
|
19
|
|
20
|
|
21
|
|
22
|
|
23
|
node top ( HdgCmdMCP: real ; Heading : real ; psidot : real ; Vt : real ; Roll : real ; HeadEng : bool ; rollLimitInput : real )
|
24
|
returns (obs : bool);
|
25
|
var RollCmd : real;
|
26
|
let
|
27
|
|
28
|
RollCmd = HeadingControl ( HdgCmdMCP , Heading , psidot , Vt , Roll , HeadEng , rollLimitInput);
|
29
|
|
30
|
-- Put properties here
|
31
|
|
32
|
assert (rollLimitInput > 0) and (rollLimitInput <= 30);
|
33
|
assert (HeadEng = true);
|
34
|
|
35
|
obs = (HdgCmdMCP = Heading) or ((not (HdgCmdMCP = Heading)) and ((not (Roll = 0)) or (not (RollCmd = 0))));
|
36
|
|
37
|
--!MAIN : true;
|
38
|
--!PROPERTY: obs = true;
|
39
|
tel
|