Project

General

Profile

Download (6.8 KB) Statistics
| Branch: | Tag: | Revision:
1
node integrator_reset ( Fx  : real ; ResetLevel  : bool ; x0  : real  ) 
2
   returns ( ir_out  : real  ) ;
3
let
4
  ir_out  = x0 -> if ( ResetLevel  ) then x0 else ( Fx * 1.0) + pre ( ir_out  );
5
 tel 
6

    
7

    
8

    
9
node VariableLimitSaturation ( up_lim  : real ; Signal  : real ; lo_lim  : real  ) 
10
   returns ( out  : real  ) ;
11
var enforce_lo_lim : real ;
12
let
13
  enforce_lo_lim = if Signal >= lo_lim then Signal else lo_lim;
14
  out = if enforce_lo_lim <= up_lim then enforce_lo_lim else up_lim;
15
 tel 
16

    
17

    
18
node Saturation ( Signal  : real  ) 
19
   returns ( s_out  : real  ) ;
20
var enforce_lo_lim  : real ;
21
let
22
 enforce_lo_lim =  if 0.0001 >= Signal then 0.0001 else Signal;
23
 s_out = if 1000.0 <= enforce_lo_lim then 1000.0 else enforce_lo_lim; 
24
 tel 
25

    
26

    
27
node VariableRateLimit ( ratelim_Out1_334  : real ; input_Out1_344  : real ; ICtrig_Out1_354  : bool ; IC_Out1_364  : real  ) 
28
   returns ( output_In1_489  : real  ) ;
29
var Gain_Out1_373  : real ;
30
 Gain1_Out1_382  : real ;
31
 Integrator1_Out1_391  : real ;
32
 Sum2_Out1_401  : real ;
33
 Variable_Limit_Saturation_Out1_410  : real ;
34
 Gain_In1_372  : real ;
35
 Gain1_In1_381  : real ;
36
 Integrator1_In1_388  : real ;
37
 Integrator1_In2_389  : bool ;
38
 Integrator1_In3_390  : real ;
39
 Sum2_In1_399  : real ;
40
 Sum2_In2_400  : real ;
41
 Variable_Limit_Saturation_In1_407  : real ;
42
 Variable_Limit_Saturation_In2_408  : real ;
43
 Variable_Limit_Saturation_In3_409  : real ;
44
  
45
let
46
Gain_Out1_373  = 20.0 * Gain_In1_372;
47
Gain1_Out1_382  = -(Gain1_In1_381);
48
Integrator1_Out1_391  = Integrator1_In3_390 -> pre integrator_reset ( Integrator1_In1_388 , Integrator1_In2_389 , Integrator1_In3_390  );
49
Sum2_Out1_401  = Sum2_In1_399 + - Sum2_In2_400;
50
Variable_Limit_Saturation_Out1_410  = VariableLimitSaturation ( Variable_Limit_Saturation_In1_407 , Variable_Limit_Saturation_In2_408 , Variable_Limit_Saturation_In3_409  );
51
Gain_In1_372  = Sum2_Out1_401;
52
Variable_Limit_Saturation_In2_408  = Gain_Out1_373;
53
Gain1_In1_381  = ratelim_Out1_334;
54
Variable_Limit_Saturation_In1_407  = ratelim_Out1_334;
55
Variable_Limit_Saturation_In3_409  = Gain1_Out1_382;
56
Sum2_In2_400  = Integrator1_Out1_391;
57
output_In1_489  = Integrator1_Out1_391;
58
Sum2_In1_399  = input_Out1_344;
59
Integrator1_In2_389  = ICtrig_Out1_354;
60
Integrator1_In3_390  = IC_Out1_364;
61
Integrator1_In1_388  = Variable_Limit_Saturation_Out1_410;
62
 tel 
63

    
64
--@ requires AntEng_Out1_19 = 0.0;
65
--@ ensures altgammacmd_In1_661 = 0.0;
66
node AltitudeControl ( AntEng_Out1_19  : real ; AltCmd_Out1_29  : real ; Alt_Out1_39  : real ; GsKts_Out1_49  : real ; hdot_Out1_59  : real ; hdotChgRate_Out1_69  : real  ) 
67
   returns ( altgammacmd_In1_661  : real  ) ;
68
var Abs_Out1_144  : real ;
69
 Divide_Out1_184  : real ;
70
 Kh_Out1_193  : real ;
71
 Logical_Operator_Out1_198  : bool ;
72
 Mux_Out1_202_0  : real ;
73
 Mux_Out1_202_1  : real ;
74
 Mux1_Out1_206_0  : real ;
75
 Mux1_Out1_206_1  : real ;
76
 Saturation1_Out1_213  : real ;
77
 Sum_Out1_286  : real ;
78
 Sum3_Out1_296  : real ;
79
 Switch_Out1_305  : real ;
80
 Switch1_Out1_314  : real ;
81
 Variable__Rate_Limit_Out1_324  : real ;
82
 Variable_Limit_Saturation_0_Out1_509  : real ;
83
 k_Out1_585  : real ;
84
 kts2fps_Out1_594  : real ;
85
 r2d_Out1_603  : real ;
86
 Abs_In1_143  : real ;
87
 Divide_In1_182  : real ;
88
 Divide_In2_183  : real ;
89
 Kh_In1_192  : real ;
90
 Logical_Operator_In1_197  : bool ;
91
 Mux_In1_200  : real ;
92
 Mux_In2_201  : real ;
93
 Mux1_In1_204  : real ;
94
 Mux1_In2_205  : real ;
95
 Saturation1_In1_212  : real ;
96
 Sum_In1_284  : real ;
97
 Sum_In2_285  : real ;
98
 Sum3_In1_294  : real ;
99
 Sum3_In2_295  : real ;
100
 Switch_In1_302  : real ;
101
 Switch_In2_303  : bool ;
102
 Switch_In3_304  : real ;
103
 Switch1_In1_311  : real ;
104
 Switch1_In2_312  : bool ;
105
 Switch1_In3_313  : real ;
106
 Variable__Rate_Limit_In1_320  : real ;
107
 Variable__Rate_Limit_In2_321  : real ;
108
 Variable__Rate_Limit_In3_322  : bool ;
109
 Variable__Rate_Limit_In4_323  : real ;
110
 Variable_Limit_Saturation_0_In1_506  : real ;
111
 Variable_Limit_Saturation_0_In2_507  : real ;
112
 Variable_Limit_Saturation_0_In3_508  : real ;
113
 k_In1_584  : real ;
114
 kts2fps_In1_593  : real ;
115
 r2d_In1_602  : real ;
116
  
117
let
118
-- k induction proof
119
--!k:3;
120

    
121
Abs_Out1_144  = if Abs_In1_143 < 0.000000 then - Abs_In1_143 else Abs_In1_143;
122
--Divide_Out1_184  = Divide_In1_182 / Divide_In2_183;
123
Divide_Out1_184  = Divide_In1_182;
124
Kh_Out1_193  = 0.080000 * Kh_In1_192;
125
Logical_Operator_Out1_198  = not Logical_Operator_In1_197;
126
Mux_Out1_202_0  = Mux_In1_200;
127
Mux_Out1_202_1  = Mux_In2_201;
128
Mux1_Out1_206_0  = Mux1_In1_204;
129
Mux1_Out1_206_1  = Mux1_In2_205;
130
Saturation1_Out1_213  = Saturation( Saturation1_In1_212  );
131
Sum_Out1_286  = Sum_In1_284 + - Sum_In2_285;
132
Sum3_Out1_296  = Sum3_In1_294 + Sum3_In2_295;
133
Switch_Out1_305  = if Switch_In2_303 then Switch_In1_302 else Switch_In3_304;
134
Switch1_Out1_314  = if Switch1_In2_312 then Switch1_In1_311 else Switch1_In3_313;
135
Variable__Rate_Limit_Out1_324  = VariableRateLimit ( Variable__Rate_Limit_In1_320 , Variable__Rate_Limit_In2_321 , Variable__Rate_Limit_In3_322 , Variable__Rate_Limit_In4_323  );
136
Variable_Limit_Saturation_0_Out1_509  = VariableLimitSaturation( Variable_Limit_Saturation_0_In1_506 , Variable_Limit_Saturation_0_In2_507 , Variable_Limit_Saturation_0_In3_508  );
137
k_Out1_585  = - (k_In1_584);
138
kts2fps_Out1_594  = 1.687800 * kts2fps_In1_593;
139
r2d_Out1_603  = 57.295800 * r2d_In1_602;
140
altgammacmd_In1_661  = Switch1_Out1_314;
141
Sum_In1_284  = AltCmd_Out1_29;
142
Mux_In1_200  = AltCmd_Out1_29;
143
Sum_In2_285  = Alt_Out1_39;
144
Mux_In2_201  = Alt_Out1_39;
145
Variable__Rate_Limit_In4_323  = hdot_Out1_59;
146
Abs_In1_143  = hdot_Out1_59;
147
Switch1_In2_312  = if AntEng_Out1_19 = 0.000000 then false else true;
148
Switch_In2_303  = if AntEng_Out1_19 = 0.000000 then false else true;
149
Logical_Operator_In1_197  = if AntEng_Out1_19 = 0.000000 then false else true;
150
kts2fps_In1_593  = GsKts_Out1_49;
151
Variable__Rate_Limit_In1_320  = hdotChgRate_Out1_69;
152
Kh_In1_192  = Sum_Out1_286;
153
Sum3_In1_294  = Abs_Out1_144;
154
Sum3_In2_295  = 10.0;
155
Variable_Limit_Saturation_0_In3_508  = k_Out1_585;
156
k_In1_584  = Sum3_Out1_296;
157
Variable_Limit_Saturation_0_In1_506  = Sum3_Out1_296;
158
r2d_In1_602  = Divide_Out1_184;
159
Switch1_In1_311  = r2d_Out1_603;
160
Variable__Rate_Limit_In3_322  = Logical_Operator_Out1_198;
161
Variable__Rate_Limit_In2_321  = Variable_Limit_Saturation_0_Out1_509;
162
Mux1_In1_204  = Variable_Limit_Saturation_0_Out1_509;
163
Divide_In1_182  = Variable__Rate_Limit_Out1_324;
164
Mux1_In2_205  = Variable__Rate_Limit_Out1_324;
165
Saturation1_In1_212  = kts2fps_Out1_594;
166
Divide_In2_183  = Saturation1_Out1_213;
167
Variable_Limit_Saturation_0_In2_507  = Switch_Out1_305;
168
Switch_In1_302  = Kh_Out1_193;
169
Switch_In3_304  = 0.0 ;
170
Switch1_In3_313  = 0.0;
171
 tel 
172

    
173
(*
174
node top (AltEng : bool; AltCmd : real ; Altitude : real ; gskts  : real ; hdot  : real ; hdotChgRate : real ) 
175
   returns ( obs: bool) ;
176
  var altgammaCmd  : real;
177
    tempAlt : real;
178
let
179

    
180
  tempAlt = if AltEng then 1.0 else 0.0;
181
  altgammaCmd =  AltitudeControl (tempAlt, AltCmd,  Altitude, gskts, hdot, hdotChgRate);
182
  
183
  assert (not AltEng);
184
 
185
  obs = (altgammaCmd = 0.0); 
186
 
187
 --!MAIN : true;
188
--!PROPERTY: obs = true;
189

    
190
tel*)
191

    
(4-4/28)