Project

General

Profile

Download (4.6 KB) Statistics
| Branch: | Tag: | Revision:
1

    
2

    
3

    
4
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 ; adiff : bool ) 
5
   returns ( HeadEng  : bool ; AltEng  : bool ; FPAEng_In1_1051  : bool ; ATEng_In1_1063  : bool ; CASCmd_In1_1075  : real ) ;
6
let
7

    
8
  -- GUIDE-180
9
  assert (adiff = true) or (FPAMode_Out1_51 = 0.0) or (not (ailStick = 0.0)) or (not (elevStick = 0.0)) or (FPAEng_In1_1051 = true);
10

    
11
  -- ALT-1
12
  -- assert (not (AltMode_Out1_41 = 0.0)) or (AltEng = false);
13

    
14
  -- GUIDE-120
15
  assert ( ((adiff = true) or (FPAMode_Out1_51 = 0.0)) and (ailStick = 0.0) and (elevStick = 0.0)) or (AltEng = false);
16

    
17
  assert (adiff = false) or (AltMode_Out1_41 = 0.0) or (not (ailStick = 0.0)) or (not (elevStick = 0.0)) or ((FPAEng_In1_1051 = false) and (AltEng = true));
18

    
19
tel 
20

    
21

    
22

    
23
node AltitudeControl ( AltEng  : bool ; AltCmd_Out1_29  : real ; Alt_Out1_39  : real ; GsKts_Out1_49  : real ; hdot_Out1_59  : real ; hdotChgRate_Out1_69  : real ;   preAltGammaCmd : real; count : int ) 
24
   returns ( altgammacmd_In1_661  : real ) ;  
25
let
26

    
27
  -- ALT-2
28
  assert (AltEng = true) or (altgammacmd_In1_661 = 0.0);
29

    
30
  -- GUIDE-200
31
  assert true -> (count < 2) or (AltEng = false) or ((AltCmd_Out1_29 = Alt_Out1_39) or 
32
     ((AltCmd_Out1_29 > Alt_Out1_39) and ( (altgammacmd_In1_661 > pre(preAltGammaCmd)) or (altgammacmd_In1_661 > 0) )) or 
33
     ((AltCmd_Out1_29 < Alt_Out1_39) and ( (altgammacmd_In1_661 < pre(preAltGammaCmd)) or (altgammacmd_In1_661 < 0) )) );
34
 
35
tel 
36

    
37
node FPAControl ( engage  : bool ; gamcmd_Out1_25  : real ; gamma_Out1_35  : real ; thetadeg_Out1_45  : real ; VT_Out1_55  : real ; prePitch : real; count : int ) 
38
   returns ( PitchCmd_In1_487  : real) ;  
39
let
40

    
41
  -- GUIDE-120
42
  assert true -> (engage = false) or  (count < 2) or (gamcmd_Out1_25 =  gamma_Out1_35) 
43
    or ((gamcmd_Out1_25 > gamma_Out1_35) and  (PitchCmd_In1_487 >  pre(prePitch)))
44
    or  ((gamcmd_Out1_25 < gamma_Out1_35) and  (PitchCmd_In1_487 < pre(prePitch)));
45

    
46
 tel 
47

    
48

    
49

    
50
node top (HeadMode  : real ; ailStick  : real ; elevStick  : real ; AltMode  : real ; FPAMode  : real ; ATMode_Out1_61  : real ; CAS_Out1_91  : real ; CASCmdMCP_Out1_101  : real ; AltCmd : real ; Altitude : real ; gskts  : real ; hdot  : real;  hdot_change_rate  : real ; gamcmd_Out1_25  : real ; gamma_Out1_35  : real ; thetadeg_Out1_45  : real ; VT_Out1_55  : real ) 
51
   returns ( obs: bool) ;
52
  var 
53
    altgammaCmd  : real;
54
    fpain : real;
55
    tempAlt : real;
56
    tempFPA : real;
57
    HeadEng : bool;
58
    AltEng : bool;
59
    FPAEng : bool;
60
    ATEng : bool;
61
    CasCmd : real;
62
    PitchCmd : real;
63
    prePitch : real;
64
    preAltGammaCmd : real;
65
    count : int;
66
    guide200 : bool;
67
    guide120 : bool;
68
    adiff : bool;
69
 let
70

    
71
  HeadEng, AltEng, FPAEng, ATEng, CasCmd = AutoPilot(HeadMode, ailStick, elevStick, AltMode, FPAMode, ATMode_Out1_61, AltCmd, Altitude, CAS_Out1_91, CASCmdMCP_Out1_101, adiff);
72
     
73
  altgammaCmd =  AltitudeControl (AltEng, AltCmd,  Altitude, gskts, hdot, hdot_change_rate, preAltGammaCmd, count);
74
  
75
  -- FIXME: if we write this as code and not as assertion, the property cannot be proven, why??
76
  assert fpain = (altgammaCmd + gamcmd_Out1_25);
77
  prePitch = 3.0 -> pre(PitchCmd);
78
  count = 0 -> pre(count) + 1;
79
  preAltGammaCmd = 0.0 -> pre(altgammaCmd);
80
  adiff = (Altitude - AltCmd <= 200) and (Altitude - AltCmd >= -200);
81

    
82
  PitchCmd = FPAControl(FPAEng ,fpain ,gamma_Out1_35 , thetadeg_Out1_45, VT_Out1_55, prePitch, count);
83
  
84
  assert (not (AltMode = 0.0));
85
  assert (not (FPAMode = 0.0));
86
  assert (elevStick = 0.0);
87
  assert (ailStick = 0.0);
88

    
89
  assert true -> AltCmd = pre (AltCmd);
90
  assert AltCmd > 3000 ;
91
  assert true -> (Altitude = pre(Altitude) + pre (hdot));
92
  assert (-40.0 < hdot) and (hdot < 40.0);  
93
  assert (-100.0 > Altitude - AltCmd) or (100.0 < Altitude - AltCmd);
94
  assert (hdot_change_rate = 3.2);
95

    
96
  assert (AltCmd < Altitude -  300) -> true;
97
  assert (gamcmd_Out1_25 < -1.0) and (gamcmd_Out1_25 > -10.0);
98

    
99
  guide120 = true -> (count < 2) or (gamcmd_Out1_25 =  gamma_Out1_35) 
100
             or ((gamcmd_Out1_25 > gamma_Out1_35) and  (PitchCmd >  pre(prePitch)))
101
             or  ((gamcmd_Out1_25 < gamma_Out1_35) and  (PitchCmd < pre(prePitch)));
102

    
103
  guide200 = true -> (count < 2) or ((AltCmd = Altitude) or 
104
    ((AltCmd > Altitude) and ( (altgammaCmd > pre(preAltGammaCmd)) or (altgammaCmd > 0) )) or 
105
    ((AltCmd < Altitude) and ( (altgammaCmd < pre(preAltGammaCmd)) or (altgammaCmd < 0) )) );
106
 
107

    
108
  obs = ((adiff = true) and (guide200 = true)) or ((adiff = false) and (guide120 = true));
109

    
110

    
111
 --!MAIN : true;
112
--!PROPERTY: obs = true;
113

    
114
tel
(14-14/28)