Project

General

Profile

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

    
2
node integrator_reset ( Fx  : real ; ResetLevel  : bool ; x0  : real  ) 
3
   returns ( ir_out  : real  ) ;
4
 
5
let
6
ir_out  = x0 -> if ( ResetLevel  ) then x0 else ( Fx * 1.000000  ) + pre ( ir_out  );
7
 tel 
8

    
9
node DynamicSaturation ( up_Out1_148  : real ; u_Out1_158  : real ; lo_Out1_168  : real  ) 
10
   returns ( y1_In1_210  : real  ) ;
11
var LowerRelop1_Out1_174  : bool ;
12
 Switch_Out1_183  : real ;
13
 Switch2_Out1_192  : real ;
14
 UpperRelop_Out1_198  : bool ;
15
 LowerRelop1_In1_172  : real ;
16
 LowerRelop1_In2_173  : real ;
17
 Switch_In1_180  : real ;
18
 Switch_In2_181  : bool ;
19
 Switch_In3_182  : real ;
20
 Switch2_In1_189  : real ;
21
 Switch2_In2_190  : bool ;
22
 Switch2_In3_191  : real ;
23
 UpperRelop_In1_196  : real ;
24
 UpperRelop_In2_197  : real ;
25
  
26
let
27
LowerRelop1_Out1_174  = LowerRelop1_In1_172 > LowerRelop1_In2_173;
28
Switch_Out1_183  = if Switch_In2_181 then Switch_In1_180 else Switch_In3_182;
29
Switch2_Out1_192  = if Switch2_In2_190 then Switch2_In1_189 else Switch2_In3_191;
30
UpperRelop_Out1_198  = UpperRelop_In1_196 < UpperRelop_In2_197;
31
Switch2_In1_189  = up_Out1_148;
32
LowerRelop1_In2_173  = up_Out1_148;
33
Switch_In3_182  = u_Out1_158;
34
LowerRelop1_In1_172  = u_Out1_158;
35
UpperRelop_In1_196  = u_Out1_158;
36
Switch_In1_180  = lo_Out1_168;
37
UpperRelop_In2_197  = lo_Out1_168;
38
Switch2_In3_191  = Switch_Out1_183;
39
y1_In1_210  = Switch2_Out1_192;
40
Switch2_In2_190  = LowerRelop1_Out1_174;
41
Switch_In2_181  = UpperRelop_Out1_198;
42
 tel 
43

    
44
node VarLimInteg ( Input_Out1_545  : real ; Max_Out1_555  : real ; Min_Out1_565  : real ; ICtrig_Out1_575  : bool ; IC_Out1_585  : real  ) 
45
   returns ( Out_In1_681  : real  ) ;
46
var Integrator1_Out1_618  : real ;
47
 Logical_Operator1_Out1_624  : bool ;
48
 Logical_Operator2_Out1_630  : bool ;
49
 Logical_Operator3_Out1_636  : bool ;
50
 Relational_Operator1_Out1_642  : bool ;
51
 Relational_Operator2_Out1_648  : bool ;
52
 Relational_Operator3_Out1_654  : bool ;
53
 Relational_Operator4_Out1_660  : bool ;
54
 Switch1_Out1_669  : real ;
55
 Integrator1_In1_615  : real ;
56
 Integrator1_In2_616  : bool ;
57
 Integrator1_In3_617  : real ;
58
 Logical_Operator1_In1_622  : bool ;
59
 Logical_Operator1_In2_623  : bool ;
60
 Logical_Operator2_In1_628  : bool ;
61
 Logical_Operator2_In2_629  : bool ;
62
 Logical_Operator3_In1_634  : bool ;
63
 Logical_Operator3_In2_635  : bool ;
64
 Relational_Operator1_In1_640  : real ;
65
 Relational_Operator1_In2_641  : real ;
66
 Relational_Operator2_In1_646  : real ;
67
 Relational_Operator2_In2_647  : real ;
68
 Relational_Operator3_In1_652  : real ;
69
 -- Relational_Operator3_In2_653  : real ;
70
 Relational_Operator4_In1_658  : real ;
71
 -- Relational_Operator4_In2_659  : real ;
72
 -- Switch1_In1_666  : real ;
73
 Switch1_In2_667  : bool ;
74
 Switch1_In3_668  : real ;
75
  
76
let
77
Integrator1_Out1_618  = Integrator1_In3_617 -> pre integrator_reset ( Integrator1_In1_615 , Integrator1_In2_616 , Integrator1_In3_617  );
78
Logical_Operator1_Out1_624  = Logical_Operator1_In1_622 or Logical_Operator1_In2_623;
79
Logical_Operator2_Out1_630  = Logical_Operator2_In1_628 and Logical_Operator2_In2_629;
80
Logical_Operator3_Out1_636  = Logical_Operator3_In1_634 and Logical_Operator3_In2_635;
81
Relational_Operator1_Out1_642  = Relational_Operator1_In1_640 <= Relational_Operator1_In2_641;
82
Relational_Operator2_Out1_648  = Relational_Operator2_In1_646 >= Relational_Operator2_In2_647;
83
Relational_Operator3_Out1_654  = Relational_Operator3_In1_652 > 0.0;
84
Relational_Operator4_Out1_660  = Relational_Operator4_In1_658 < 0.0;
85
Switch1_Out1_669  = if Switch1_In2_667 then 0.0 else Switch1_In3_668;
86
Integrator1_In3_617  = IC_Out1_585;
87
Integrator1_In2_616  = ICtrig_Out1_575;
88
Relational_Operator1_In2_641  = Min_Out1_565;
89
Relational_Operator2_In2_647  = Max_Out1_555;
90
-- Relational_Operator4_In2_659  = 0.0;
91
Switch1_In3_668  = Input_Out1_545;
92
Relational_Operator3_In1_652  = Input_Out1_545;
93
Relational_Operator4_In1_658  = Input_Out1_545;
94
Logical_Operator1_In2_623  = Logical_Operator3_Out1_636;
95
Logical_Operator3_In2_635  = Relational_Operator4_Out1_660;
96
Logical_Operator3_In1_634  = Relational_Operator1_Out1_642;
97
-- Relational_Operator3_In2_653  = 0.0;
98
Logical_Operator1_In1_622  = Logical_Operator2_Out1_630;
99
Logical_Operator2_In2_629  = Relational_Operator3_Out1_654;
100
Logical_Operator2_In1_628  = Relational_Operator2_Out1_648;
101
Switch1_In2_667  = Logical_Operator1_Out1_624;
102
Relational_Operator2_In1_646  = Integrator1_Out1_618;
103
Relational_Operator1_In1_640  = Integrator1_Out1_618;
104
Out_In1_681  = Integrator1_Out1_618;
105
Integrator1_In1_615  = Switch1_Out1_669;
106
-- Switch1_In1_666  = 0.0;
107
 tel 
108

    
109

    
110
node EngageORzero ( engage  : bool ; signal  : real  ) 
111
   returns ( out : real  ) ;  
112
let
113
  out  = if engage then signal else 0.0;
114
 tel 
115

    
116
node ManualOverride (manual  : real ; auto : real  ) 
117
   returns ( manual_out  : real  ) ;
118
var 
119
  temp  : bool ;
120
let
121
  temp  = if manual = 0.000000 then false else true;
122
  manual_out = if temp then auto else manual;
123
tel
124

    
125

    
126
node AutoThrottle ( ATEng_Out1_19  : bool ; maxThrot_Out1_29  : real ; minThrot_Out1_39  : real ; leverThrot_Out1_49  : real ; Vgdotf_Out1_59  : real ; ICthrot_Out1_69  : real ; Ktas_Cas_Abstracted_Out1_79  : real ; phi_abstracted_Out1_89  : real  ) 
127
   returns ( ThrotCmd_In1_555  : real  ) ;
128
var DynamicSaturation_Out1_98  : real ;
129
 EngageORzero_Out1_189  : real ;
130
 Kr_Out1_267  : real ;
131
 Kr1_Out1_276  : real ;
132
 Logical_Operator_Out1_281  : bool ;
133
 ManualOverride_Out1_289  : real ;
134
 Sum1_Out1_345  : real ;
135
 Sum3_Out1_355  : real ;
136
 Sum5_Out1_365  : real ;
137
 VarLimIntegAT_Out1_376  : real ;
138
 DynamicSaturation_In1_95  : real ;
139
 DynamicSaturation_In2_96  : real ;
140
 DynamicSaturation_In3_97  : real ;
141
 EngageORzero_In1_187  : bool ;
142
 EngageORzero_In2_188  : real ;
143
 Kr_In1_266  : real ;
144
 Kr1_In1_275  : real ;
145
 Logical_Operator_In1_280  : bool ;
146
 ManualOverride_In1_287  : real ;
147
 ManualOverride_In2_288  : real ;
148
 Sum1_In1_342  : real ;
149
 Sum1_In2_343  : real ;
150
 Sum1_In3_344  : real ;
151
 Sum3_In1_353  : real ;
152
 Sum3_In2_354  : real ;
153
 Sum5_In1_363  : real ;
154
 Sum5_In2_364  : real ;
155
 VarLimIntegAT_In1_371  : real ;
156
 VarLimIntegAT_In2_372  : real ;
157
 VarLimIntegAT_In3_373  : real ;
158
 VarLimIntegAT_In4_374  : bool ;
159
 VarLimIntegAT_In5_375  : real ;
160
  
161
let
162
DynamicSaturation_Out1_98  = DynamicSaturation ( DynamicSaturation_In1_95 , DynamicSaturation_In2_96 , DynamicSaturation_In3_97  );
163
EngageORzero_Out1_189  = EngageORzero ( EngageORzero_In1_187 , EngageORzero_In2_188  );
164
Kr_Out1_267  = 2.500000 * Kr_In1_266;
165
Kr1_Out1_276  = 1.200000 * Kr1_In1_275;
166
Logical_Operator_Out1_281  = not Logical_Operator_In1_280;
167
ManualOverride_Out1_289  = ManualOverride ( ManualOverride_In1_287 , ManualOverride_In2_288  );
168
Sum1_Out1_345  = Sum1_In1_342 + ( Sum1_In2_343 + - Sum1_In3_344  );
169
Sum3_Out1_355  = Sum3_In1_353 + - Sum3_In2_354;
170
Sum5_Out1_365  = Sum5_In1_363 + - Sum5_In2_364;
171
VarLimIntegAT_Out1_376  = VarLimInteg ( VarLimIntegAT_In1_371 , VarLimIntegAT_In2_372 , VarLimIntegAT_In3_373 , VarLimIntegAT_In4_374 , VarLimIntegAT_In5_375  );
172
Kr_In1_266  = Sum1_Out1_345;
173
VarLimIntegAT_In1_371  = Kr_Out1_267;
174
Sum1_In3_344  = Vgdotf_Out1_59;
175
Kr1_In1_275  = Vgdotf_Out1_59;
176
Sum3_In2_354  = Kr1_Out1_276;
177
EngageORzero_In2_188  = Sum5_Out1_365;
178
VarLimIntegAT_In5_375  = ICthrot_Out1_69;
179
Sum5_In2_364  = ICthrot_Out1_69;
180
DynamicSaturation_In1_95  = maxThrot_Out1_29;
181
VarLimIntegAT_In2_372  = maxThrot_Out1_29;
182
VarLimIntegAT_In3_373  = minThrot_Out1_39;
183
DynamicSaturation_In3_97  = minThrot_Out1_39;
184
Sum3_In1_353  = VarLimIntegAT_Out1_376;
185
DynamicSaturation_In2_96  = Sum3_Out1_355;
186
Sum5_In1_363  = DynamicSaturation_Out1_98;
187
VarLimIntegAT_In4_374  = Logical_Operator_Out1_281;
188
EngageORzero_In1_187  = ATEng_Out1_19;
189
Logical_Operator_In1_280  = ATEng_Out1_19;
190
ManualOverride_In1_287  = leverThrot_Out1_49;
191
ThrotCmd_In1_555  = ManualOverride_Out1_289;
192
ManualOverride_In2_288  = EngageORzero_Out1_189;
193
Sum1_In2_343  = Ktas_Cas_Abstracted_Out1_79;
194
Sum1_In1_342  = phi_abstracted_Out1_89;
195
 tel 
196

    
197

    
198
node top ( ATEng : bool ; maxThrot : real ; minThrot : real ; leverThrot : real ; Vgdotf : real ;   ICthrot  : real ; Ktas_Cas_Abstracted: real ; Phi_Abstracted : real) 
199
   returns ( obs: bool) ;
200
  var ThrotCmd  : real;
201
    
202
let
203

    
204

    
205
  -- ICthrot = throt.bias
206
  -- KTas_Cas_Abstracted // abstracted in the model they talk about the calibrated speed
207
  ThrotCmd =   AutoThrottle (ATEng , maxThrot, minThrot, leverThrot, Vgdotf,  ICthrot , Ktas_Cas_Abstracted, Phi_Abstracted);
208

    
209

    
210
  assert ATEng = true;
211
  assert leverThrot = 0.0;
212
  assert maxThrot > (minThrot + 10.0);
213
  assert minThrot >= 0.0;
214
  assert maxThrot <= 100.0;
215
  assert true -> maxThrot = pre(maxThrot);
216
  assert true -> minThrot = pre(minThrot);
217
  assert ICthrot = 0.0;
218
  -- GUIDE 100
219
   
220
  obs =  true -> (Ktas_Cas_Abstracted >= pre (Ktas_Cas_Abstracted)) => (ThrotCmd <= pre(ThrotCmd)) and  (Ktas_Cas_Abstracted <= pre (Ktas_Cas_Abstracted)) => (ThrotCmd <= pre(ThrotCmd)); 
221
 
222
 --!MAIN : true;
223
--!PROPERTY: obs = true;
224

    
225
tel
(9-9/28)