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
|