1 /*
2 * File: controlMCUSlugsMKII.c
3 *
4 * Real-Time Workshop code generated for Simulink model controlMCUSlugsMKII.
5 *
6 * Model version : 1.714
7 * Real-Time Workshop file version : 7.5 (R2010a) 25-Jan-2010
8 * Real-Time Workshop file generated on : Tue Nov 23 13:12:51 2010
9 * TLC version : 7.5 (Jan 19 2010)
10 * C source code generated on : Tue Nov 23 13:12:52 2010
11 *--------------------------------------------------------------
12 * Embedded Coder for Microchip dsPIC family. |
13 * Generate .c and .h files from your Matlab/simulink model |
14 * and compile the diagram to .hex and .coff file that can be |
15 * downloaded directly into the microcontroller |
16 * |
17 * Licence Accorded to Blake Mills |
18 * University of Colorado-Boulder |
19 * |
20 * Written by Lubin KERHUEL - http://www.kerhuel.eu |
21 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
22 * Version 3.3a 22-Nov-2010 |
23 * For Matlab 7.10 R2010a |
24 *--------------------------------------------------------------
25 */
26
27 #include "controlMCUSlugsMKII.h"
28 #include "controlMCUSlugsMKII_private.h"
29
30 /* Block signals (auto storage) */
31 BlockIO_controlMCUSlugsMKII controlMCUSlugsMKII_B;
32
33 /* Block states (auto storage) */
34 D_Work_controlMCUSlugsMKII controlMCUSlugsMKII_DWork;
35
36 /* Previous zero-crossings (trigger) states */
37 PrevZCSigStates_controlMCUSlugs controlMCUSlugsM_PrevZCSigState;
38
39 /* Real-time model */
40 RT_MODEL_controlMCUSlugsMKII controlMCUSlugsMKII_M_;
41 RT_MODEL_controlMCUSlugsMKII *controlMCUSlugsMKII_M = &controlMCUSlugsMKII_M_;
42 static void rate_monotonic_scheduler(void);
43
44 /*
45 * Set which subrates need to run this base step (base rate always runs).
46 * This function must be called prior to calling the model step function
47 * in order to "remember" which rates need to run this base step. The
48 * buffering of events allows for overlapping preemption.
49 */
50 void controlMCUSlugsMKII_SetEventsForThisBaseStep(boolean_T *eventFlags)
51 {
52 /* Task runs when its counter is zero, computed via rtmStepTask macro */
53 eventFlags[1] = ((boolean_T)rtmStepTask(controlMCUSlugsMKII_M, 1));
54 }
55
56 /*
57 * This function updates active task flag for each subrate
58 * and rate transition flags for tasks that exchagne data.
59 * The function assumes rate-monotonic multitasking scheduler.
60 * The function must be called at model base rate so that
61 * the generated code self-manages all its subrates and rate
62 * transition flags.
63 */
64 static void rate_monotonic_scheduler(void)
65 {
66 /* Compute which subrates run during the next base time step. Subrates
67 * are an integer multiple of the base rate counter. Therefore, the subtask
68 * counter is reset when it reaches its limit (zero means run).
69 */
70 (controlMCUSlugsMKII_M->Timing.TaskCounters.TID[1])++;
71 if ((controlMCUSlugsMKII_M->Timing.TaskCounters.TID[1]) > 99) {/* Sample time: [1.0s, 0.0s] */
72 controlMCUSlugsMKII_M->Timing.TaskCounters.TID[1] = 0;
73 }
74 }
75
76 /*
77 * Initial conditions for atomic system:
78 * '<S45>/Embedded MATLAB Function'
79 * '<S88>/Embedded MATLAB Function'
80 * '<S89>/Embedded MATLAB Function'
81 * '<S90>/Embedded MATLAB Function'
82 */
83 void EmbeddedMATLABFunction_Init(rtDW_EmbeddedMATLABFunction_con *localDW)
84 {
85 /* InitializeConditions for Embedded MATLAB: '<S45>/Embedded MATLAB Function' */
86 localDW->a_not_empty = FALSE;
87 }
88
89 /*
90 * Output and update for atomic system:
91 * '<S45>/Embedded MATLAB Function'
92 * '<S88>/Embedded MATLAB Function'
93 * '<S89>/Embedded MATLAB Function'
94 * '<S90>/Embedded MATLAB Function'
95 */
96 void cont_EmbeddedMATLABFunction(real32_T rtu_u, real_T rtu_T, real_T rtu_f,
97 rtB_EmbeddedMATLABFunction_cont *localB, rtDW_EmbeddedMATLABFunction_con
98 *localDW)
99 {
100 real_T eml_omega;
101
102 /* Embedded MATLAB: '<S45>/Embedded MATLAB Function' */
103 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Lateral Channel/0.5 sec tau/Embedded MATLAB Function': '<S61>:1' */
104 /* This block supports an embeddable subset of the MATLAB language. */
105 /* See the help menu for details. */
106 if (!localDW->a_not_empty) {
107 /* '<S61>:1:9' */
108 /* tf = [T*omega/(2+T*omega) T*omega/(2+T*omega)],[1 (T*omega-2)/(T*omega+2)] */
109 /* tf = [a a],[1 -b] */
110 /* '<S61>:1:12' */
111 eml_omega = 6.2831853071795862E+000 * rtu_f;
112
113 /* '<S61>:1:13' */
114 localDW->a = rtu_T * eml_omega / (rtu_T * eml_omega + 2.0);
115 localDW->a_not_empty = TRUE;
116
117 /* '<S61>:1:14' */
118 localDW->b = (-(rtu_T * eml_omega - 2.0)) / (rtu_T * eml_omega + 2.0);
119
120 /* '<S61>:1:15' */
121 localDW->y_km1 = rtu_u;
122
123 /* '<S61>:1:16' */
124 localDW->u_km1 = rtu_u;
125 }
126
127 /* '<S61>:1:19' */
128 localB->y = (rtu_u + localDW->u_km1) * (real32_T)localDW->a + (real32_T)
129 localDW->b * localDW->y_km1;
130
131 /* '<S61>:1:20' */
132 localDW->y_km1 = localB->y;
133
134 /* '<S61>:1:21' */
135 localDW->u_km1 = rtu_u;
136 }
137
138 /*
139 * Output and update for atomic system:
140 * '<S70>/negprotect'
141 * '<S113>/negprotect'
142 * '<S149>/negprotect'
143 * '<S188>/negprotect'
144 * '<S214>/negprotect'
145 * '<S221>/negprotect'
146 * '<S247>/negprotect'
147 * '<S237>/negprotect'
148 * '<S255>/negprotect'
149 * '<S264>/negprotect'
150 * '<S239>/negprotect1'
151 */
152 void controlMCUSlugsM_negprotect(real32_T rtu_val,
153 rtB_negprotect_controlMCUSlugsM *localB)
154 {
155 /* Embedded MATLAB: '<S70>/negprotect' */
156 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Lateral Channel/Sideslip Compensation/Bank to Psi Dot/negprotect': '<S75>:1' */
157 /* This block supports an embeddable subset of the MATLAB language. */
158 /* See the help menu for details. */
159 if (rtu_val >= 1.000000047E-003F) {
160 /* '<S75>:1:5' */
161 /* '<S75>:1:6' */
162 localB->zpVal = rtu_val;
163 } else {
164 /* '<S75>:1:8' */
165 localB->zpVal = 1.000000047E-003F;
166 }
167 }
168
169 /*
170 * Output and update for atomic system:
171 * '<S14>/myMux Fun1'
172 * '<S16>/myMux Fun1'
173 * '<S2>/myMux Fun2'
174 */
175 void controlMCUSlugsMK_myMuxFun1(real32_T rtu_u1, real32_T rtu_u2, real32_T
176 rtu_u3, rtB_myMuxFun1_controlMCUSlugsMK *localB)
177 {
178 /* Embedded MATLAB: '<S14>/myMux Fun1' */
179 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Lateral Channel/myMux Fun1': '<S58>:1' */
180 /* This block supports an embeddable subset of the MATLAB language. */
181 /* See the help menu for details. */
182 /* '<S58>:1:5' */
183 localB->y[0] = rtu_u1;
184 localB->y[1] = rtu_u2;
185 localB->y[2] = rtu_u3;
186 }
187
188 /*
189 * Output and update for atomic system:
190 * '<S129>/Embedded MATLAB Function'
191 * '<S183>/Embedded MATLAB Function'
192 */
193 void co_EmbeddedMATLABFunction_m(const real32_T rtu_x[3], const real32_T rtu_y[3],
194 rtB_EmbeddedMATLABFunction_co_p *localB)
195 {
196 /* Embedded MATLAB: '<S129>/Embedded MATLAB Function' */
197 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute Lateral Error/Subsystem3/Embedded MATLAB Function': '<S130>:1' */
198 /* This block supports an embeddable subset of the MATLAB language. */
199 /* See the help menu for details. */
200 /* '<S130>:1:5' */
201 localB->xDoty = (rtu_x[0] * rtu_y[0] + rtu_x[1] * rtu_y[1]) + rtu_x[2] *
202 rtu_y[2];
203 }
204
205 /*
206 * Output and update for atomic system:
207 * '<S150>/Embedded MATLAB Function'
208 * '<S189>/Embedded MATLAB Function'
209 * '<S215>/Embedded MATLAB Function'
210 * '<S222>/Embedded MATLAB Function'
211 * '<S248>/Embedded MATLAB Function'
212 */
213 void co_EmbeddedMATLABFunction_a(const real32_T rtu_x[3],
214 rtB_EmbeddedMATLABFunction_co_e *localB)
215 {
216 /* Embedded MATLAB: '<S150>/Embedded MATLAB Function' */
217 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/Compute P/Compute T in Frenet/Normalize Vector/Norm/Subsystem3/Embedded MATLAB Function': '<S153>:1' */
218 /* This block supports an embeddable subset of the MATLAB language. */
219 /* See the help menu for details. */
220 /* '<S153>:1:5' */
221 localB->xDoty = (rtu_x[0] * rtu_x[0] + rtu_x[1] * rtu_x[1]) + rtu_x[2] *
222 rtu_x[2];
223 }
224
225 /*
226 * Initial conditions for atomic system:
227 * '<S276>/Buffer IC Channel'
228 * '<S276>/Buffer IC Channel1'
229 * '<S276>/Buffer IC Channel2'
230 * '<S276>/Buffer IC Channel3'
231 */
232 void contro_BufferICChannel_Init(rtDW_BufferICChannel_controlMCU *localDW)
233 {
234 int16_T tmp;
235
236 /* InitializeConditions for Embedded MATLAB: '<S276>/Buffer IC Channel' */
237 for (tmp = 0; tmp < 7; tmp++) {
238 localDW->oldValues[tmp] = 0U;
239 }
240 }
241
242 /*
243 * Output and update for atomic system:
244 * '<S276>/Buffer IC Channel'
245 * '<S276>/Buffer IC Channel1'
246 * '<S276>/Buffer IC Channel2'
247 * '<S276>/Buffer IC Channel3'
248 */
249 void controlMCUS_BufferICChannel(uint16_T rtu_latest,
250 rtB_BufferICChannel_controlMCUS *localB, rtDW_BufferICChannel_controlMCU
251 *localDW)
252 {
253 int16_T eml_i;
254
255 /* Embedded MATLAB: '<S276>/Buffer IC Channel' */
256 /* Embedded MATLAB Function 'Trim Vals/Bufffer IC/Buffer IC Channel': '<S281>:1' */
257 /* This block supports an embeddable subset of the MATLAB language. */
258 /* See the help menu for details. */
259 /* '<S281>:1:11' */
260 for (eml_i = 0; eml_i < 7; eml_i++) {
261 localB->history[eml_i] = 0U;
262 }
263
264 /* '<S281>:1:13' */
265 for (eml_i = 7; eml_i > 1; eml_i += -1) {
266 /* '<S281>:1:13' */
267 /* '<S281>:1:14' */
268 localDW->oldValues[eml_i - 1] = localDW->oldValues[eml_i - 2];
269
270 /* '<S281>:1:15' */
271 localB->history[eml_i - 1] = localDW->oldValues[eml_i - 2];
272 }
273
274 /* '<S281>:1:18' */
275 localDW->oldValues[0] = rtu_latest;
276
277 /* '<S281>:1:19' */
278 localB->history[0] = rtu_latest;
279 }
280
281 /*
282 * Output and update for atomic system:
283 * '<S293>/myMux Fun1'
284 * '<S296>/myMux Fun1'
285 * '<S294>/myMux Fun1'
286 * '<S295>/myMux Fun1'
287 */
288 void controlMCUSlugs_myMuxFun1_a(uint16_T rtu_u1, uint16_T rtu_u2, uint16_T
289 rtu_u3, uint16_T rtu_u4, uint16_T rty_y[4])
290 {
291 /* Embedded MATLAB: '<S293>/myMux Fun1' */
292 /* Embedded MATLAB Function 'Update PWM Commands and Send Telemetry/Generate PWM Signals Based on the Control Type/If Control Type Is Manual/myMux Fun1': '<S297>:1' */
293 /* This block supports an embeddable subset of the MATLAB language. */
294 /* See the help menu for details. */
295 /* '<S297>:1:5' */
296 rty_y[0] = rtu_u1;
297 rty_y[1] = rtu_u2;
298 rty_y[2] = rtu_u3;
299 rty_y[3] = rtu_u4;
300 }
301
302 /*
303 * Output and update for atomic system:
304 * '<S333>/myMux Fun1'
305 * '<S350>/myMux Fun1'
306 */
307 void controlMCUSlugs_myMuxFun1_n(real32_T rtu_u1, real32_T rtu_u2, real32_T
308 rtu_u3, real32_T rtu_u4, real32_T rtu_u5, real32_T rtu_u6, real32_T rtu_u7,
309 real32_T rtu_u8, real32_T rtu_u9, rtB_myMuxFun1_controlMCUSlugs_p *localB)
310 {
311 /* Embedded MATLAB: '<S333>/myMux Fun1' */
312 /* Embedded MATLAB Function 'get Nav Vars/Euler Angles to Direction Cosine Matrix1/Create Transformation Matrix/myMux Fun1': '<S335>:1' */
313 /* This block supports an embeddable subset of the MATLAB language. */
314 /* See the help menu for details. */
315 /* '<S335>:1:5' */
316 localB->y[0] = rtu_u1;
317 localB->y[1] = rtu_u2;
318 localB->y[2] = rtu_u3;
319 localB->y[3] = rtu_u4;
320 localB->y[4] = rtu_u5;
321 localB->y[5] = rtu_u6;
322 localB->y[6] = rtu_u7;
323 localB->y[7] = rtu_u8;
324 localB->y[8] = rtu_u9;
325 }
326
327 /*
328 * Output and update for atomic system:
329 * '<S334>/myMux Fun1'
330 * '<S334>/myMux Fun2'
331 * '<S351>/myMux Fun1'
332 * '<S351>/myMux Fun2'
333 * '<S9>/myMux Fun1'
334 */
335 void controlMCUSlugs_myMuxFun1_o(real32_T rtu_u1, real32_T rtu_u2, real32_T
336 rtu_u3, rtB_myMuxFun1_controlMCUSlugs_b *localB)
337 {
338 /* Embedded MATLAB: '<S334>/myMux Fun1' */
339 /* Embedded MATLAB Function 'get Nav Vars/Euler Angles to Direction Cosine Matrix1/Subsystem5/myMux Fun1': '<S339>:1' */
340 /* This block supports an embeddable subset of the MATLAB language. */
341 /* See the help menu for details. */
342 /* '<S339>:1:5' */
343 localB->y[0] = rtu_u1;
344 localB->y[1] = rtu_u2;
345 localB->y[2] = rtu_u3;
346 }
347
348 /* Model step function for TID0 */
349 void controlMCUSlugsMKII_step0(void) /* Sample time: [0.01s, 0.0s] */
350 {
351 /* local block i/o variables */
352 real32_T rtb_u5u6;
353 real32_T rtb_Sum;
354 real32_T rtb_Sum_o;
355 real32_T rtb_u3u5;
356 real32_T rtb_Sum_oz;
357 real32_T rtb_Sum_m;
358 real32_T rtb_Gain2;
359 real32_T rtb_u1u3_g;
360 real32_T rtb_u4u5;
361 real32_T rtb_u5u6_l;
362 real32_T rtb_Sum_od;
363 real32_T rtb_Sum_i;
364 real32_T rtb_u3u5_b;
365 real32_T rtb_Sum_p;
366 real32_T rtb_Sum_pu;
367 real32_T rtb_Gain2_m;
368 real32_T rtb_u1u3_l;
369 real32_T rtb_u4u5_a;
370 real32_T rtb_y_d;
371 real32_T rtb_u45;
372 real32_T rtb_Add_id[3];
373 real32_T rtb_Product_c;
374 real32_T rtb_Subtract[3];
375 real32_T rtb_xDoty;
376 real32_T rtb_Add_f[3];
377 real32_T rtb_N[3];
378 real32_T rtb_Add_d[3];
379 real32_T rtb_Add_k[3];
380 real32_T rtb_Divide2;
381 real32_T rtb_Switch_d;
382 real32_T rtb_BankLimitCommand;
383 real32_T rtb_u020_g;
384 uint16_T rtb_Switch_k;
385 uint16_T rtb_Switch1_b;
386 uint16_T rtb_Switch2_l;
387 uint16_T rtb_Switch3;
388 uint16_T rtb_Gain_pn;
389 uint16_T rtb_Gain1_c;
390 uint16_T rtb_Gain2_d;
391 uint16_T rtb_Gain3_p;
392 uint16_T rtb_DataTypeConversion_k;
393 uint16_T rtb_DataTypeConversion_o;
394 uint16_T rtb_DataTypeConversion_o5;
395 uint16_T rtb_DataTypeConversion_j;
396 uint16_T rtb_Gain_fi;
397 uint16_T rtb_Gain1_cp;
398 uint16_T rtb_Gain2_f;
399 uint16_T rtb_Gain3_j;
400 uint16_T rtb_y_n[5];
401 ZCEventType zcEvent;
402 real32_T rtb_Abs2;
403 real_T rtb_DataTypeConversion;
404 boolean_T rtb_IntegerDelay2_m;
405 real32_T rtb_u020;
406 real32_T rtb_Product2_cp[3];
407 real32_T rtb_u525[3];
408 real32_T rtb_Divide4_k;
409 int16_T rtb_IC1;
410 uint8_T rtb_Add1_i;
411 real32_T rtb_cosphi;
412 real32_T rtb_sinphi;
413 real32_T rtb_Deg2R1;
414 real32_T rtb_Sum2;
415 real32_T rtb_Ze;
416 real32_T rtb_Product1_m;
417 real32_T rtb_MathFunction[9];
418 int16_T tmp;
419 real32_T tmp_0[9];
420 real32_T tmp_1[3];
421 real32_T rtb_Deg2R_o_idx;
422 real32_T rtb_Deg2R_o_idx_0;
423 uint16_T tmp_2;
424 uint8_T tmp_3;
425 uint32_T tmp_4;
426
427 { /* Sample time: [0.01s, 0.0s] */
428 rate_monotonic_scheduler();
429 }
430
431 /* S-Function "dsPIC_PWM_IC" Block: <S277>/Input Capture */
432 controlMCUSlugsMKII_B.InputCapture_o1 = ic2up;
433 controlMCUSlugsMKII_B.InputCapture_o2 = ic3up;
434 controlMCUSlugsMKII_B.InputCapture_o3 = ic4up;
435 controlMCUSlugsMKII_B.InputCapture_o4 = ic5up;
436 controlMCUSlugsMKII_B.InputCapture_o5 = ic8up;
437
438 /* Embedded MATLAB: '<S277>/myMux Fun5' */
439 /* Embedded MATLAB Function 'Trim Vals/Control Surface Input/myMux Fun5': '<S285>:1' */
440 /* This block supports an embeddable subset of the MATLAB language. */
441 /* See the help menu for details. */
442 /* '<S285>:1:5' */
443 rtb_y_n[0] = controlMCUSlugsMKII_B.InputCapture_o1;
444 rtb_y_n[1] = controlMCUSlugsMKII_B.InputCapture_o2;
445 rtb_y_n[2] = controlMCUSlugsMKII_B.InputCapture_o3;
446 rtb_y_n[3] = controlMCUSlugsMKII_B.InputCapture_o4;
447 rtb_y_n[4] = controlMCUSlugsMKII_B.InputCapture_o5;
448
449 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Get Control Type [navSupport.c] */
450 controlMCUSlugsMKII_B.GetControlTypenavSupportc = getApControlType();
451
452 /* S-Function "UART_RX" Block: <S11>/Calculus Time Step */
453 controlMCUSlugsMKII_B.CalculusTimeStep_o1 = CalculusTimeStep;
454 controlMCUSlugsMKII_B.CalculusTimeStep_o2 = PR1;
455
456 /* DataTypeConversion: '<S11>/Data Type Conversion12' incorporates:
457 * DataTypeConversion: '<S11>/Data Type Conversion3'
458 * DataTypeConversion: '<S11>/Data Type Conversion4'
459 * Gain: '<S11>/Gain'
460 * Product: '<S11>/Divide'
461 * Rounding: '<S11>/Rounding Function'
462 */
463 rtb_DataTypeConversion = floor((real_T)
464 controlMCUSlugsMKII_B.CalculusTimeStep_o1 / (real_T)
465 controlMCUSlugsMKII_B.CalculusTimeStep_o2 * 100.0);
466 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion)) {
467 rtb_DataTypeConversion = 0.0;
468 } else {
469 rtb_DataTypeConversion = fmod(rtb_DataTypeConversion, 256.0);
470 }
471
472 controlMCUSlugsMKII_B.DataTypeConversion12 = (uint8_T)(rtb_DataTypeConversion <
473 0.0 ? (int16_T)(uint8_T)(int8_T)(-((int8_T)(uint8_T)(-rtb_DataTypeConversion)))
474 : (int16_T)(uint8_T)rtb_DataTypeConversion);
475
476 /* S-Function "dsPIC_C_function_Call" Block: <S1>/Data from GS [groundStationDriver.c] */
477 gsRead(&controlMCUSlugsMKII_B.DatafromGSgroundStationDriverc[0]);
478
479 /* S-Function "dsPIC_C_function_Call" Block: <S1>/Data from IPC [interProcCommSlave.c] */
480 readIpc(&controlMCUSlugsMKII_B.DatafromIPCinterProcCommSlavec[0]);
481
482 /* S-Function "dsPIC_C_function_Call" Block: <S7>/Parser//Decoder [protDecoder.c] */
483 protParseDecode(controlMCUSlugsMKII_B.DatafromIPCinterProcCommSlavec);
484
485 /* S-Function "dsPIC_C_function_Call" Block: <S7>/GS Messages Parser//Decoder [groundStationDriver.c] */
486 protParseDecodeGS(controlMCUSlugsMKII_B.DatafromGSgroundStationDriverc);
487
488 /* S-Function "dsPIC_C_function_Call" Block: <S7>/update Load of Control MCU [groundStationDriver.c] */
489 updateLoad(controlMCUSlugsMKII_B.DataTypeConversion12);
490
491 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Get MidLevel Commands [navSupport.c] */
492 getMidLevelCommands(&controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[0]);
493
494 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Get Dynamic P [navSupport.c] */
495 controlMCUSlugsMKII_B.GetDynamicPnavSupportc = getDynamic();
496
497 /* S-Function "dsPIC_C_function_Call" Block: <S3>/Get Pid according to Index */
498 getPidIdx(((uint8_T)0U),&controlMCUSlugsMKII_B.GetPidaccordingtoIndex[0]);
499
500 /* Embedded MATLAB: '<S276>/Buffer IC Channel' */
501 controlMCUS_BufferICChannel(rtb_y_n[0],
502 &controlMCUSlugsMKII_B.sf_BufferICChannel,
503 &controlMCUSlugsMKII_DWork.sf_BufferICChannel);
504
505 /* Embedded MATLAB: '<S276>/Buffer IC Channel1' */
506 controlMCUS_BufferICChannel(rtb_y_n[1],
507 &controlMCUSlugsMKII_B.sf_BufferICChannel1,
508 &controlMCUSlugsMKII_DWork.sf_BufferICChannel1);
509
510 /* Embedded MATLAB: '<S276>/Buffer IC Channel2' */
511 controlMCUS_BufferICChannel(rtb_y_n[3],
512 &controlMCUSlugsMKII_B.sf_BufferICChannel2,
513 &controlMCUSlugsMKII_DWork.sf_BufferICChannel2);
514
515 /* Embedded MATLAB: '<S276>/Buffer IC Channel3' */
516 controlMCUS_BufferICChannel(rtb_y_n[2],
517 &controlMCUSlugsMKII_B.sf_BufferICChannel3,
518 &controlMCUSlugsMKII_DWork.sf_BufferICChannel3);
519
520 /* S-Function (sfix_udelay): '<S6>/Integer Delay' */
521 controlMCUSlugsMKII_B.IntegerDelay =
522 controlMCUSlugsMKII_DWork.IntegerDelay_X_p;
523
524 /* S-Function (sfix_udelay): '<S278>/Integer Delay2' */
525 rtb_IntegerDelay2_m = controlMCUSlugsMKII_DWork.IntegerDelay2_X_k;
526
527 /* S-Function "dsPIC_C_function_Call" Block: <S6>/Manual or Auto? [navSupport.c] */
528 controlMCUSlugsMKII_B.ManualorAutonavSupportc = isApManual();
529
530 /* DataTypeConversion: '<S278>/Data Type Conversion' */
531 rtb_DataTypeConversion = (real_T)controlMCUSlugsMKII_B.ManualorAutonavSupportc;
532
533 /* HitCross: '<S278>/Hit Crossing' */
534 zcEvent = rt_ZCFcn(FALLING_ZERO_CROSSING,
535 &controlMCUSlugsM_PrevZCSigState.HitCrossing_Input_ZCE,
536 (rtb_DataTypeConversion - 0.5));
537 if (controlMCUSlugsMKII_DWork.HitCrossing_MODE == 0) {
538 if (zcEvent != NO_ZCEVENT) {
539 controlMCUSlugsMKII_B.HitCrossing = !controlMCUSlugsMKII_B.HitCrossing;
540 controlMCUSlugsMKII_DWork.HitCrossing_MODE = 1;
541 } else {
542 if (controlMCUSlugsMKII_B.HitCrossing && (rtb_DataTypeConversion != 0.5))
543 {
544 controlMCUSlugsMKII_B.HitCrossing = FALSE;
545 }
546 }
547 } else {
548 if (rtb_DataTypeConversion != 0.5) {
549 controlMCUSlugsMKII_B.HitCrossing = FALSE;
550 }
551
552 controlMCUSlugsMKII_DWork.HitCrossing_MODE = 0;
553 }
554
555 /* InitialCondition: '<S278>/IC' */
556 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime) {
557 controlMCUSlugsMKII_DWork.IC_FirstOutputTime = FALSE;
558 controlMCUSlugsMKII_B.IC_c = TRUE;
559 } else {
560 controlMCUSlugsMKII_B.IC_c = controlMCUSlugsMKII_B.HitCrossing;
561 }
562
563 /* Outputs for enable SubSystem: '<S6>/Grab I.C.' incorporates:
564 * EnablePort: '<S279>/Enable'
565 * Sum: '<S278>/Add'
566 */
567 if ((int16_T)rtb_IntegerDelay2_m + (int16_T)controlMCUSlugsMKII_B.IC_c > 0) {
568 /* S-Function "dsPIC_C_function_Call" Block: <S279>/Choose the Median [navSupport.c] */
569 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc = meanFilter5
570 (controlMCUSlugsMKII_B.sf_BufferICChannel.history);
571
572 /* DataTypeConversion: '<S286>/Data Type Conversion' incorporates:
573 * Constant: '<S286>/Constant1'
574 * Constant: '<S286>/Constant2'
575 * Product: '<S286>/Divide'
576 * Sum: '<S286>/Add'
577 */
578 controlMCUSlugsMKII_B.DataTypeConversion = (real32_T)((real_T)
579 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc * 3.9246467817896354E-004
580 + -2.4929356357927763E+000);
581
582 /* S-Function "dsPIC_C_function_Call" Block: <S279>/Choose the Median [navSupport.c]1 */
583 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc1 = meanFilter5
584 (controlMCUSlugsMKII_B.sf_BufferICChannel1.history);
585
586 /* DataTypeConversion: '<S287>/Data Type Conversion' incorporates:
587 * Constant: '<S287>/Constant1'
588 * Constant: '<S287>/Constant2'
589 * Product: '<S287>/Divide'
590 * Sum: '<S287>/Add'
591 */
592 controlMCUSlugsMKII_B.DataTypeConversion_f = (real32_T)((real_T)
593 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc1 *
594 1.4565320234764749E-004 + -1.0755448613356997E+000);
595
596 /* S-Function "dsPIC_C_function_Call" Block: <S279>/Choose the Median [navSupport.c]2 */
597 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc2 = meanFilter5
598 (controlMCUSlugsMKII_B.sf_BufferICChannel2.history);
599
600 /* DataTypeConversion: '<S288>/Data Type Conversion' incorporates:
601 * Constant: '<S288>/Constant1'
602 * Constant: '<S288>/Constant2'
603 * Product: '<S288>/Divide'
604 * Sum: '<S288>/Add'
605 */
606 controlMCUSlugsMKII_B.DataTypeConversion_b = (real32_T)((real_T)
607 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc2 *
608 1.7474741230625272E-004 + -1.3006200258793954E+000);
609
610 /* S-Function "dsPIC_C_function_Call" Block: <S279>/Choose the Median [navSupport.c]3 */
611 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc3 = meanFilter5
612 (controlMCUSlugsMKII_B.sf_BufferICChannel3.history);
613
614 /* DataTypeConversion: '<S289>/Data Type Conversion' incorporates:
615 * Constant: '<S289>/Constant1'
616 * Constant: '<S289>/Constant2'
617 * Product: '<S289>/Divide'
618 * Sum: '<S289>/Add'
619 */
620 controlMCUSlugsMKII_B.DataTypeConversion_c = (real32_T)((real_T)
621 controlMCUSlugsMKII_B.ChoosetheMediannavSupportc3 *
622 1.2648319566552186E-004 + -9.5530950783373414E-001);
623
624 /* S-Function "dsPIC_C_function_Call" Block: <S279>/Set Current Height and Airspeed as Commands [navSupport.c] */
625 setCurrentCommands(controlMCUSlugsMKII_B.IntegerDelay);
626 }
627
628 /* end of Outputs for SubSystem: '<S6>/Grab I.C.' */
629 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Get XYZ [navSupport.c] */
630 getXYZ(&controlMCUSlugsMKII_B.GetXYZnavSupportc[0]);
631
632 /* Switch: '<S17>/Switch3' incorporates:
633 * RelationalOperator: '<S17>/Relational Operator2'
634 * S-Function (sfix_udelay): '<S17>/Integer Delay3'
635 */
636 if ((controlMCUSlugsMKII_B.GetXYZnavSupportc[2] ==
637 controlMCUSlugsMKII_B.GetXYZnavSupportc[2]) > 0) {
638 controlMCUSlugsMKII_B.Switch3_ov = controlMCUSlugsMKII_B.GetXYZnavSupportc[2];
639 } else {
640 controlMCUSlugsMKII_B.Switch3_ov =
641 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j5;
642 }
643
644 /* Saturate: '<S2>/[-20 20]' */
645 rtb_u020 = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_ov, 170.0F, 350.0F);
646
647 /* S-Function "dsPIC_C_function_Call" Block: <S3>/Get Pid according to Index1 */
648 getPidIdx(((uint8_T)1U),&controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[0]);
649
650 /* S-Function "dsPIC_C_function_Call" Block: <S9>/[navSupport.c] */
651 getPidIdx(((uint8_T)7U),&controlMCUSlugsMKII_B.navSupportc[0]);
652
653 /* Gain: '<S309>/Unit Conversion' */
654 controlMCUSlugsMKII_B.UnitConversion[0] = 1.745329238E-002F *
655 controlMCUSlugsMKII_B.navSupportc[0];
656 controlMCUSlugsMKII_B.UnitConversion[1] = 1.745329238E-002F *
657 controlMCUSlugsMKII_B.navSupportc[1];
658 controlMCUSlugsMKII_B.UnitConversion[2] = 1.745329238E-002F *
659 controlMCUSlugsMKII_B.navSupportc[2];
660
661 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call1 */
662 controlMCUSlugsMKII_B.CFunctionCall1 = myCos
663 (controlMCUSlugsMKII_B.UnitConversion[0]);
664
665 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call4 */
666 controlMCUSlugsMKII_B.CFunctionCall4 = myCos
667 (controlMCUSlugsMKII_B.UnitConversion[1]);
668
669 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call5 */
670 controlMCUSlugsMKII_B.CFunctionCall5 = myCos
671 (controlMCUSlugsMKII_B.UnitConversion[2]);
672
673 /* Embedded MATLAB: '<S334>/myMux Fun2' */
674 controlMCUSlugs_myMuxFun1_o(controlMCUSlugsMKII_B.CFunctionCall1,
675 controlMCUSlugsMKII_B.CFunctionCall4, controlMCUSlugsMKII_B.CFunctionCall5,
676 &controlMCUSlugsMKII_B.sf_myMuxFun2);
677
678 /* Product: '<S324>/u(5)*u(6)' */
679 rtb_u5u6 = controlMCUSlugsMKII_B.sf_myMuxFun2.y[1] *
680 controlMCUSlugsMKII_B.sf_myMuxFun2.y[2];
681
682 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call */
683 controlMCUSlugsMKII_B.CFunctionCall = mySin
684 (controlMCUSlugsMKII_B.UnitConversion[0]);
685
686 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call2 */
687 controlMCUSlugsMKII_B.CFunctionCall2 = mySin
688 (controlMCUSlugsMKII_B.UnitConversion[1]);
689
690 /* S-Function "dsPIC_C_function_Call" Block: <S334>/C Function Call3 */
691 controlMCUSlugsMKII_B.CFunctionCall3 = mySin
692 (controlMCUSlugsMKII_B.UnitConversion[2]);
693
694 /* Embedded MATLAB: '<S334>/myMux Fun1' */
695 controlMCUSlugs_myMuxFun1_o(controlMCUSlugsMKII_B.CFunctionCall,
696 controlMCUSlugsMKII_B.CFunctionCall2, controlMCUSlugsMKII_B.CFunctionCall3,
697 &controlMCUSlugsMKII_B.sf_myMuxFun1);
698
699 /* Sum: '<S327>/Sum' incorporates:
700 * Product: '<S327>/u(3)*u(4)'
701 * Product: '<S327>/u(6)*u(1)*u(2)'
702 */
703 rtb_Sum = controlMCUSlugsMKII_B.sf_myMuxFun2.y[2] *
704 controlMCUSlugsMKII_B.sf_myMuxFun1.y[0] *
705 controlMCUSlugsMKII_B.sf_myMuxFun1.y[1] -
706 controlMCUSlugsMKII_B.sf_myMuxFun1.y[2] *
707 controlMCUSlugsMKII_B.sf_myMuxFun2.y[0];
708
709 /* Sum: '<S330>/Sum' incorporates:
710 * Product: '<S330>/u(1)*u(3)'
711 * Product: '<S330>/u(2)*u(4)*u(6)'
712 */
713 rtb_Sum_o = controlMCUSlugsMKII_B.sf_myMuxFun1.y[1] *
714 controlMCUSlugsMKII_B.sf_myMuxFun2.y[0] *
715 controlMCUSlugsMKII_B.sf_myMuxFun2.y[2] +
716 controlMCUSlugsMKII_B.sf_myMuxFun1.y[0] *
717 controlMCUSlugsMKII_B.sf_myMuxFun1.y[2];
718
719 /* Product: '<S325>/u(3)*u(5)' */
720 rtb_u3u5 = controlMCUSlugsMKII_B.sf_myMuxFun1.y[2] *
721 controlMCUSlugsMKII_B.sf_myMuxFun2.y[1];
722
723 /* Sum: '<S328>/Sum' incorporates:
724 * Product: '<S328>/u(1)*u(2)*u(3)'
725 * Product: '<S328>/u(4)*u(6)'
726 */
727 rtb_Sum_oz = controlMCUSlugsMKII_B.sf_myMuxFun1.y[0] *
728 controlMCUSlugsMKII_B.sf_myMuxFun1.y[1] *
729 controlMCUSlugsMKII_B.sf_myMuxFun1.y[2] +
730 controlMCUSlugsMKII_B.sf_myMuxFun2.y[0] *
731 controlMCUSlugsMKII_B.sf_myMuxFun2.y[2];
732
733 /* Sum: '<S331>/Sum' incorporates:
734 * Product: '<S331>/u(1)*u(6)'
735 * Product: '<S331>/u(2)*u(3)*u(4)'
736 */
737 rtb_Sum_m = controlMCUSlugsMKII_B.sf_myMuxFun1.y[1] *
738 controlMCUSlugsMKII_B.sf_myMuxFun1.y[2] *
739 controlMCUSlugsMKII_B.sf_myMuxFun2.y[0] -
740 controlMCUSlugsMKII_B.sf_myMuxFun2.y[2] *
741 controlMCUSlugsMKII_B.sf_myMuxFun1.y[0];
742
743 /* Gain: '<S326>/Gain2' */
744 rtb_Gain2 = -1.0F * controlMCUSlugsMKII_B.sf_myMuxFun1.y[1];
745
746 /* Product: '<S329>/u(1)*u(3)' */
747 rtb_u1u3_g = controlMCUSlugsMKII_B.sf_myMuxFun1.y[0] *
748 controlMCUSlugsMKII_B.sf_myMuxFun2.y[1];
749
750 /* Product: '<S332>/u(4)*u(5)' */
751 rtb_u4u5 = controlMCUSlugsMKII_B.sf_myMuxFun2.y[0] *
752 controlMCUSlugsMKII_B.sf_myMuxFun2.y[1];
753
754 /* Embedded MATLAB: '<S333>/myMux Fun1' */
755 controlMCUSlugs_myMuxFun1_n(rtb_u5u6, rtb_Sum, rtb_Sum_o, rtb_u3u5, rtb_Sum_oz,
756 rtb_Sum_m, rtb_Gain2, rtb_u1u3_g, rtb_u4u5,
757 &controlMCUSlugsMKII_B.sf_myMuxFun1_n);
758
759 /* Math: '<S9>/Math Function' */
760 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
761 rtb_MathFunction[3 * rtb_IC1] =
762 controlMCUSlugsMKII_B.sf_myMuxFun1_n.y[rtb_IC1];
763 rtb_MathFunction[1 + 3 * rtb_IC1] =
764 controlMCUSlugsMKII_B.sf_myMuxFun1_n.y[rtb_IC1 + 3];
765 rtb_MathFunction[2 + 3 * rtb_IC1] =
766 controlMCUSlugsMKII_B.sf_myMuxFun1_n.y[rtb_IC1 + 6];
767 }
768
769 /* S-Function "dsPIC_C_function_Call" Block: <S9>/Get Attitude [navSupport.c] */
770 getAttitude(&controlMCUSlugsMKII_B.GetAttitudenavSupportc[0]);
771
772 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call1 */
773 controlMCUSlugsMKII_B.CFunctionCall1_g = myCos
774 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[0]);
775
776 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call4 */
777 controlMCUSlugsMKII_B.CFunctionCall4_a = myCos
778 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[1]);
779
780 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call5 */
781 controlMCUSlugsMKII_B.CFunctionCall5_d = myCos
782 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[2]);
783
784 /* Embedded MATLAB: '<S351>/myMux Fun2' */
785 controlMCUSlugs_myMuxFun1_o(controlMCUSlugsMKII_B.CFunctionCall1_g,
786 controlMCUSlugsMKII_B.CFunctionCall4_a,
787 controlMCUSlugsMKII_B.CFunctionCall5_d,
788 &controlMCUSlugsMKII_B.sf_myMuxFun2_c);
789
790 /* Product: '<S341>/u(5)*u(6)' */
791 rtb_u5u6_l = controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[1] *
792 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2];
793
794 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call */
795 controlMCUSlugsMKII_B.CFunctionCall_i = mySin
796 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[0]);
797
798 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call2 */
799 controlMCUSlugsMKII_B.CFunctionCall2_e = mySin
800 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[1]);
801
802 /* S-Function "dsPIC_C_function_Call" Block: <S351>/C Function Call3 */
803 controlMCUSlugsMKII_B.CFunctionCall3_i = mySin
804 (controlMCUSlugsMKII_B.GetAttitudenavSupportc[2]);
805
806 /* Embedded MATLAB: '<S351>/myMux Fun1' */
807 controlMCUSlugs_myMuxFun1_o(controlMCUSlugsMKII_B.CFunctionCall_i,
808 controlMCUSlugsMKII_B.CFunctionCall2_e,
809 controlMCUSlugsMKII_B.CFunctionCall3_i,
810 &controlMCUSlugsMKII_B.sf_myMuxFun1_a);
811
812 /* Sum: '<S344>/Sum' incorporates:
813 * Product: '<S344>/u(3)*u(4)'
814 * Product: '<S344>/u(6)*u(1)*u(2)'
815 */
816 rtb_Sum_od = controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2] *
817 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0] *
818 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1] -
819 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2] *
820 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0];
821
822 /* Sum: '<S347>/Sum' incorporates:
823 * Product: '<S347>/u(1)*u(3)'
824 * Product: '<S347>/u(2)*u(4)*u(6)'
825 */
826 rtb_Sum_i = controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1] *
827 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0] *
828 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2] +
829 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0] *
830 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2];
831
832 /* Product: '<S342>/u(3)*u(5)' */
833 rtb_u3u5_b = controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2] *
834 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[1];
835
836 /* Sum: '<S345>/Sum' incorporates:
837 * Product: '<S345>/u(1)*u(2)*u(3)'
838 * Product: '<S345>/u(4)*u(6)'
839 */
840 rtb_Sum_p = controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0] *
841 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1] *
842 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2] +
843 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0] *
844 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2];
845
846 /* Sum: '<S348>/Sum' incorporates:
847 * Product: '<S348>/u(1)*u(6)'
848 * Product: '<S348>/u(2)*u(3)*u(4)'
849 */
850 rtb_Sum_pu = controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1] *
851 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2] *
852 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0] -
853 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2] *
854 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0];
855
856 /* Gain: '<S343>/Gain2' */
857 rtb_Gain2_m = -1.0F * controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1];
858
859 /* Product: '<S346>/u(1)*u(3)' */
860 rtb_u1u3_l = controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0] *
861 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[1];
862
863 /* Product: '<S349>/u(4)*u(5)' */
864 rtb_u4u5_a = controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0] *
865 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[1];
866
867 /* Embedded MATLAB: '<S350>/myMux Fun1' */
868 controlMCUSlugs_myMuxFun1_n(rtb_u5u6_l, rtb_Sum_od, rtb_Sum_i, rtb_u3u5_b,
869 rtb_Sum_p, rtb_Sum_pu, rtb_Gain2_m, rtb_u1u3_l, rtb_u4u5_a,
870 &controlMCUSlugsMKII_B.sf_myMuxFun1_m);
871
872 /* Product: '<S9>/Product' */
873 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
874 for (tmp = 0; tmp < 3; tmp++) {
875 controlMCUSlugsMKII_B.Product[rtb_IC1 + 3 * tmp] = 0.0F;
876 controlMCUSlugsMKII_B.Product[rtb_IC1 + 3 * tmp] =
877 controlMCUSlugsMKII_B.Product[3 * tmp + rtb_IC1] +
878 controlMCUSlugsMKII_B.sf_myMuxFun1_m.y[3 * tmp] *
879 rtb_MathFunction[rtb_IC1];
880 controlMCUSlugsMKII_B.Product[rtb_IC1 + 3 * tmp] =
881 controlMCUSlugsMKII_B.sf_myMuxFun1_m.y[3 * tmp + 1] *
882 rtb_MathFunction[rtb_IC1 + 3] + controlMCUSlugsMKII_B.Product[3 * tmp +
883 rtb_IC1];
884 controlMCUSlugsMKII_B.Product[rtb_IC1 + 3 * tmp] =
885 controlMCUSlugsMKII_B.sf_myMuxFun1_m.y[3 * tmp + 2] *
886 rtb_MathFunction[rtb_IC1 + 6] + controlMCUSlugsMKII_B.Product[3 * tmp +
887 rtb_IC1];
888 }
889 }
890
891 /* S-Function "dsPIC_C_function_Call" Block: <S317>/C Function Call */
892 controlMCUSlugsMKII_B.CFunctionCall_i0 = myAtan2
893 (controlMCUSlugsMKII_B.Product[7],controlMCUSlugsMKII_B.Product[8]);
894
895 /* Gain: '<S323>/Gain2' */
896 rtb_Abs2 = -1.0F * controlMCUSlugsMKII_B.Product[6];
897
898 /* Saturate: '<S318>/[-1,1]' */
899 controlMCUSlugsMKII_B.u1 = rt_SATURATE(rtb_Abs2, -9.990000129E-001F,
900 9.998999834E-001F);
901
902 /* S-Function "dsPIC_C_function_Call" Block: <S318>/C Function Call */
903 controlMCUSlugsMKII_B.CFunctionCall_c = myAsin(controlMCUSlugsMKII_B.u1);
904
905 /* S-Function "dsPIC_C_function_Call" Block: <S316>/C Function Call */
906 controlMCUSlugsMKII_B.CFunctionCall_c5 = myAtan2
907 (controlMCUSlugsMKII_B.Product[3],controlMCUSlugsMKII_B.Product[0]);
908
909 /* Embedded MATLAB: '<S9>/Embedded MATLAB Function' */
910 /* Embedded MATLAB Function 'get Nav Vars/Embedded MATLAB Function': '<S311>:1' */
911 /* This block supports an embeddable subset of the MATLAB language. */
912 /* See the help menu for details. */
913 if ((real_T)controlMCUSlugsMKII_B.CFunctionCall_c5 < 0.0) {
914 /* '<S311>:1:5' */
915 /* '<S311>:1:6' */
916 rtb_y_d = controlMCUSlugsMKII_B.CFunctionCall_c5 + 6.283185482E+000F;
917 } else {
918 /* '<S311>:1:8' */
919 rtb_y_d = controlMCUSlugsMKII_B.CFunctionCall_c5;
920 }
921
922 /* Embedded MATLAB: '<S9>/myMux Fun1' */
923 controlMCUSlugs_myMuxFun1_o(controlMCUSlugsMKII_B.CFunctionCall_i0,
924 controlMCUSlugsMKII_B.CFunctionCall_c, rtb_y_d,
925 &controlMCUSlugsMKII_B.sf_myMuxFun1_e);
926
927 /* Embedded MATLAB: '<S9>/myMux Fun2' */
928 /* Embedded MATLAB Function 'get Nav Vars/myMux Fun2': '<S315>:1' */
929 /* This block supports an embeddable subset of the MATLAB language. */
930 /* See the help menu for details. */
931 /* '<S315>:1:5' */
932 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
933 /* Product: '<S9>/Product1' */
934 controlMCUSlugsMKII_B.Product1[rtb_IC1] = 0.0F;
935 controlMCUSlugsMKII_B.Product1[rtb_IC1] = rtb_MathFunction[rtb_IC1] *
936 controlMCUSlugsMKII_B.GetAttitudenavSupportc[3] +
937 controlMCUSlugsMKII_B.Product1[rtb_IC1];
938 controlMCUSlugsMKII_B.Product1[rtb_IC1] = rtb_MathFunction[rtb_IC1 + 3] *
939 controlMCUSlugsMKII_B.GetAttitudenavSupportc[4] +
940 controlMCUSlugsMKII_B.Product1[rtb_IC1];
941 controlMCUSlugsMKII_B.Product1[rtb_IC1] = rtb_MathFunction[rtb_IC1 + 6] *
942 controlMCUSlugsMKII_B.GetAttitudenavSupportc[5] +
943 controlMCUSlugsMKII_B.Product1[rtb_IC1];
944 controlMCUSlugsMKII_B.y[rtb_IC1] =
945 controlMCUSlugsMKII_B.sf_myMuxFun1_e.y[rtb_IC1];
946 }
947
948 controlMCUSlugsMKII_B.y[3] = controlMCUSlugsMKII_B.Product1[0];
949 controlMCUSlugsMKII_B.y[4] = controlMCUSlugsMKII_B.Product1[1];
950 controlMCUSlugsMKII_B.y[5] = controlMCUSlugsMKII_B.Product1[2];
951
952 /* S-Function "dsPIC_C_function_Call" Block: <S3>/Get Pid according to Index2 */
953 getPidIdx(((uint8_T)2U),&controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[0]);
954
955 /* S-Function "dsPIC_C_function_Call" Block: <Root>/wp Fly? [navSupport.c] */
956 controlMCUSlugsMKII_B.wpFlynavSupportc = isWpFly();
957
958 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Get Max WP [navSupport.c] */
959 controlMCUSlugsMKII_B.GetMaxWPnavSupportc = getMaxWp();
960
961 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Get Vned [navSupport.c] */
962 getVned(&controlMCUSlugsMKII_B.GetVnednavSupportc[0]);
963
964 /* S-Function "dsPIC_C_function_Call" Block: <Root>/[navSupport.c] */
965 getPidIdx(((uint8_T)5U),&controlMCUSlugsMKII_B.navSupportc_o[0]);
966
967 /* Outputs for atomic SubSystem: '<S2>/Navigation' */
968
969 /* Saturate: '<S260>/[-25 25]' */
970 rtb_u525[0] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[0], -25.0F,
971 25.0F);
972 rtb_u525[1] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[1], -25.0F,
973 25.0F);
974 rtb_u525[2] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[2], -25.0F,
975 25.0F);
976
977 /* Embedded MATLAB: '<S263>/Embedded MATLAB Function' */
978 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Park, Deyst & How Lat Accel Cmd/GainSchedule L2 and Get Groundspeed/Norm /Square Vx and Vy Only. Vz is not considered CAREFUL/Embedded MATLAB Function': '<S265>:1' */
979 /* This block supports an embeddable subset of the MATLAB language. */
980 /* See the help menu for details. */
981 /* '<S265>:1:5' */
982 rtb_xDoty = rtb_u525[0] * rtb_u525[0] + rtb_u525[1] * rtb_u525[1];
983
984 /* Embedded MATLAB: '<S264>/negprotect' */
985 controlMCUSlugsM_negprotect(rtb_xDoty, &controlMCUSlugsMKII_B.sf_negprotect_h);
986
987 /* S-Function "dsPIC_C_function_Call" Block: <S264>/C Function Call */
988 controlMCUSlugsMKII_B.CFunctionCall_a = mySqrt
989 (controlMCUSlugsMKII_B.sf_negprotect_h.zpVal);
990
991 /* Embedded MATLAB: '<S239>/negprotect1' */
992 controlMCUSlugsM_negprotect(controlMCUSlugsMKII_B.CFunctionCall_a,
993 &controlMCUSlugsMKII_B.sf_negprotect1);
994
995 /* Switch: '<S261>/Switch3' incorporates:
996 * RelationalOperator: '<S261>/Relational Operator2'
997 * S-Function (sfix_udelay): '<S261>/Integer Delay3'
998 */
999 if ((controlMCUSlugsMKII_B.sf_negprotect1.zpVal ==
1000 controlMCUSlugsMKII_B.sf_negprotect1.zpVal) > 0) {
1001 controlMCUSlugsMKII_B.Switch3_h = controlMCUSlugsMKII_B.sf_negprotect1.zpVal;
1002 } else {
1003 controlMCUSlugsMKII_B.Switch3_h =
1004 controlMCUSlugsMKII_DWork.IntegerDelay3_X_lj;
1005 }
1006
1007 /* Saturate: '<S239>/[0 45]' */
1008 rtb_u45 = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_h, 0.0F, 45.0F);
1009
1010 /* Product: '<S239>/Divide4' */
1011 rtb_Divide4_k = controlMCUSlugsMKII_B.navSupportc_o[0] * rtb_u45;
1012
1013 /* Saturate: '<S237>/[-25 25]' */
1014 rtb_u525[0] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[0], -25.0F,
1015 25.0F);
1016 rtb_u525[1] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[1], -25.0F,
1017 25.0F);
1018 rtb_u525[2] = rt_SATURATE(controlMCUSlugsMKII_B.GetVnednavSupportc[2], -25.0F,
1019 25.0F);
1020
1021 /* S-Function (sfix_udelay): '<S124>/Integer Delay2' */
1022 rtb_DataTypeConversion = controlMCUSlugsMKII_DWork.IntegerDelay2_X;
1023
1024 /* S-Function (sfix_udelay): '<S138>/Integer Delay1' */
1025 rtb_IntegerDelay2_m = controlMCUSlugsMKII_DWork.IntegerDelay1_X_p;
1026
1027 /* InitialCondition: '<S124>/IC1' incorporates:
1028 * DataTypeConversion: '<S124>/Data Type Conversion1'
1029 */
1030 if (controlMCUSlugsMKII_DWork.IC1_FirstOutputTime) {
1031 controlMCUSlugsMKII_DWork.IC1_FirstOutputTime = FALSE;
1032 rtb_IC1 = 0;
1033 } else {
1034 rtb_IC1 = controlMCUSlugsMKII_B.wpFlynavSupportc;
1035 }
1036
1037 /* HitCross: '<S138>/Hit Crossing1' */
1038 zcEvent = rt_ZCFcn(RISING_ZERO_CROSSING,
1039 &controlMCUSlugsM_PrevZCSigState.HitCrossing1_Input_ZCE,
1040 ((real_T)rtb_IC1 - 0.3));
1041 if (controlMCUSlugsMKII_DWork.HitCrossing1_MODE == 0) {
1042 if (zcEvent != NO_ZCEVENT) {
1043 controlMCUSlugsMKII_B.HitCrossing1 = !controlMCUSlugsMKII_B.HitCrossing1;
1044 controlMCUSlugsMKII_DWork.HitCrossing1_MODE = 1;
1045 } else {
1046 if (controlMCUSlugsMKII_B.HitCrossing1 && ((real_T)rtb_IC1 != 0.3)) {
1047 controlMCUSlugsMKII_B.HitCrossing1 = FALSE;
1048 }
1049 }
1050 } else {
1051 if ((real_T)rtb_IC1 != 0.3) {
1052 controlMCUSlugsMKII_B.HitCrossing1 = FALSE;
1053 }
1054
1055 controlMCUSlugsMKII_DWork.HitCrossing1_MODE = 0;
1056 }
1057
1058 /* Sum: '<S138>/Add1' */
1059 rtb_Add1_i = (uint8_T)((int16_T)rtb_IntegerDelay2_m + (int16_T)
1060 controlMCUSlugsMKII_B.HitCrossing1);
1061
1062 /* Embedded MATLAB: '<S124>/Embedded MATLAB Function' incorporates:
1063 * Constant: '<Root>/Constant1'
1064 */
1065 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/Embedded MATLAB Function': '<S134>:1' */
1066 /* Declare static variables */
1067 /* initialize the static variables */
1068 if (!controlMCUSlugsMKII_DWork.fromWP_not_empty) {
1069 /* '<S134>:1:9' */
1070 /* '<S134>:1:10' */
1071 controlMCUSlugsMKII_DWork.fromWP = 1U;
1072 controlMCUSlugsMKII_DWork.fromWP_not_empty = TRUE;
1073
1074 /* '<S134>:1:11' */
1075 tmp_2 = (uint16_T)(controlMCUSlugsMKII_DWork.fromWP + 1);
1076 if (tmp_2 > 255U) {
1077 controlMCUSlugsMKII_DWork.toWP = MAX_uint8_T;
1078 } else {
1079 controlMCUSlugsMKII_DWork.toWP = (uint8_T)tmp_2;
1080 }
1081
1082 /* check if there are more than 2 WPs */
1083 tmp_2 = (uint16_T)(controlMCUSlugsMKII_DWork.toWP + 1);
1084 if (tmp_2 > 255U) {
1085 tmp_3 = MAX_uint8_T;
1086 } else {
1087 tmp_3 = (uint8_T)tmp_2;
1088 }
1089
1090 if (controlMCUSlugsMKII_B.GetMaxWPnavSupportc > tmp_3) {
1091 /* '<S134>:1:13' */
1092 /* '<S134>:1:14' */
1093 tmp_2 = (uint16_T)(controlMCUSlugsMKII_DWork.toWP + 1);
1094 if (tmp_2 > 255U) {
1095 controlMCUSlugsMKII_DWork.totoWP = MAX_uint8_T;
1096 } else {
1097 controlMCUSlugsMKII_DWork.totoWP = (uint8_T)tmp_2;
1098 }
1099 } else {
1100 /* '<S134>:1:16' */
1101 controlMCUSlugsMKII_DWork.totoWP = controlMCUSlugsMKII_DWork.fromWP;
1102 }
1103 }
1104
1105 /* if WP Nav was just enabled */
1106 if (rtb_Add1_i == 1) {
1107 /* '<S134>:1:21' */
1108 /* '<S134>:1:22' */
1109 controlMCUSlugsMKII_DWork.fromWP = 0U;
1110
1111 /* '<S134>:1:23' */
1112 controlMCUSlugsMKII_DWork.toWP = 1U;
1113
1114 /* '<S134>:1:24' */
1115 controlMCUSlugsMKII_DWork.totoWP = 2U;
1116 }
1117
1118 /* if there is a change of wp */
1119 if (rtb_DataTypeConversion == 1.0) {
1120 /* '<S134>:1:28' */
1121 /* '<S134>:1:29' */
1122 controlMCUSlugsMKII_DWork.fromWP = controlMCUSlugsMKII_DWork.toWP;
1123
1124 /* '<S134>:1:30' */
1125 controlMCUSlugsMKII_DWork.toWP = controlMCUSlugsMKII_DWork.totoWP;
1126
1127 /* '<S134>:1:31' */
1128 tmp_2 = (uint16_T)(controlMCUSlugsMKII_DWork.totoWP + 1);
1129 if (tmp_2 > 255U) {
1130 controlMCUSlugsMKII_DWork.totoWP = MAX_uint8_T;
1131 } else {
1132 controlMCUSlugsMKII_DWork.totoWP = (uint8_T)tmp_2;
1133 }
1134
1135 if (controlMCUSlugsMKII_DWork.totoWP >
1136 controlMCUSlugsMKII_B.GetMaxWPnavSupportc) {
1137 /* '<S134>:1:32' */
1138 /* '<S134>:1:33' */
1139 controlMCUSlugsMKII_DWork.totoWP = 1U;
1140 }
1141 }
1142
1143 /* '<S134>:1:37' */
1144 controlMCUSlugsMKII_B.wp0 = controlMCUSlugsMKII_DWork.fromWP;
1145
1146 /* '<S134>:1:38' */
1147 controlMCUSlugsMKII_B.wp1 = controlMCUSlugsMKII_DWork.toWP;
1148
1149 /* '<S134>:1:39' */
1150 controlMCUSlugsMKII_B.wp2 = controlMCUSlugsMKII_DWork.totoWP;
1151
1152 /* Outputs for enable SubSystem: '<S124>/Grab IC' incorporates:
1153 * EnablePort: '<S136>/Enable'
1154 */
1155 if (rtb_Add1_i > 0) {
1156 /* Inport: '<S136>/UAV Pos' */
1157 controlMCUSlugsMKII_B.UAVPos[0] = controlMCUSlugsMKII_B.GetXYZnavSupportc[0];
1158 controlMCUSlugsMKII_B.UAVPos[1] = controlMCUSlugsMKII_B.GetXYZnavSupportc[1];
1159 controlMCUSlugsMKII_B.UAVPos[2] = controlMCUSlugsMKII_B.GetXYZnavSupportc[2];
1160
1161 /* S-Function "dsPIC_C_function_Call" Block: <S174>/C Function Call */
1162 getWP(((uint8_T)11U),&controlMCUSlugsMKII_B.CFunctionCall_aj[0]);
1163
1164 /* Gain: '<S175>/Deg2R' */
1165 rtb_cosphi = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_aj[0];
1166
1167 /* Trigonometry: '<S175>/sin(phi)' */
1168 rtb_sinphi = (real32_T)sin(rtb_cosphi);
1169
1170 /* Sum: '<S175>/Sum1' incorporates:
1171 * Constant: '<S175>/const'
1172 * Product: '<S175>/Product1'
1173 * Product: '<S175>/sin(phi)^2'
1174 */
1175 rtb_Abs2 = 1.0F - rtb_sinphi * rtb_sinphi *
1176 controlMCUSlugsMKII_ConstB.Sum5_lj;
1177
1178 /* Fcn: '<S175>/f' */
1179 if (rtb_Abs2 < 0.0F) {
1180 rtb_Abs2 = -((real32_T)sqrt(-rtb_Abs2));
1181 } else {
1182 rtb_Abs2 = (real32_T)sqrt(rtb_Abs2);
1183 }
1184
1185 /* Product: '<S175>/Rh' incorporates:
1186 * Constant: '<S175>/Re=equatorial radius'
1187 */
1188 rtb_Abs2 = 6.378137E+006F / rtb_Abs2;
1189
1190 /* Sum: '<S175>/Sum2' */
1191 rtb_Sum2 = controlMCUSlugsMKII_B.CFunctionCall_aj[2] + rtb_Abs2;
1192
1193 /* Trigonometry: '<S175>/cos(phi)' */
1194 rtb_cosphi = (real32_T)cos(rtb_cosphi);
1195
1196 /* Gain: '<S175>/Deg2R1' */
1197 rtb_Deg2R1 = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_aj[1];
1198
1199 /* Product: '<S175>/(Rh+h)cos(phi)*cos(lamb)=Xe' incorporates:
1200 * Trigonometry: '<S175>/cos(lamb)'
1201 */
1202 controlMCUSlugsMKII_B.RhhcosphicoslambXe = rtb_Sum2 * rtb_cosphi * (real32_T)
1203 cos(rtb_Deg2R1);
1204
1205 /* Product: '<S175>/(Rh+h)cos(phi)*sin(lamb)=Ye' incorporates:
1206 * Trigonometry: '<S175>/sin(lamb)'
1207 */
1208 controlMCUSlugsMKII_B.RhhcosphisinlambYe = rtb_Sum2 * rtb_cosphi * (real32_T)
1209 sin(rtb_Deg2R1);
1210
1211 /* Product: '<S175>/Ze' incorporates:
1212 * Product: '<S175>/Rh(1-e^2)'
1213 * Sum: '<S175>/Sum4'
1214 */
1215 controlMCUSlugsMKII_B.Ze = (controlMCUSlugsMKII_ConstB.e2_i * rtb_Abs2 +
1216 controlMCUSlugsMKII_B.CFunctionCall_aj[2]) * rtb_sinphi;
1217 }
1218
1219 /* end of Outputs for SubSystem: '<S124>/Grab IC' */
1220
1221 /* InitialCondition: '<S139>/IC' */
1222 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_i) {
1223 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_i = FALSE;
1224 controlMCUSlugsMKII_B.IC = 1.0;
1225 } else {
1226 controlMCUSlugsMKII_B.IC = rtb_DataTypeConversion;
1227 }
1228
1229 /* Logic: '<S124>/Logical Operator' incorporates:
1230 * S-Function (sfix_udelay): '<S139>/Integer Delay2'
1231 * Sum: '<S139>/Add'
1232 */
1233 rtb_IntegerDelay2_m = ((controlMCUSlugsMKII_DWork.IntegerDelay2_X_l +
1234 controlMCUSlugsMKII_B.IC != 0.0) || (rtb_Add1_i != 0));
1235
1236 /* Outputs for enable SubSystem: '<S16>/Get Wps Compute Frenet' incorporates:
1237 * EnablePort: '<S125>/Enable'
1238 */
1239 if (rtb_IntegerDelay2_m) {
1240 /* S-Function "dsPIC_C_function_Call" Block: <S208>/C Function Call */
1241 getWP(controlMCUSlugsMKII_B.wp0,&controlMCUSlugsMKII_B.CFunctionCall_d[0]);
1242
1243 /* Switch: '<S125>/Switch' incorporates:
1244 * Fcn: '<S235>/11'
1245 * Fcn: '<S235>/12'
1246 * Fcn: '<S235>/13'
1247 * Fcn: '<S235>/21'
1248 * Fcn: '<S235>/22'
1249 * Fcn: '<S235>/23'
1250 * Fcn: '<S235>/31'
1251 * Fcn: '<S235>/32'
1252 * Fcn: '<S235>/33'
1253 * Gain: '<S207>/UEN 2 NEU'
1254 * Product: '<S232>/Product1'
1255 * SignalConversion: '<S232>/TmpSignal ConversionAtProduct1Inport1'
1256 * Sum: '<S207>/Sum1'
1257 */
1258 if (controlMCUSlugsMKII_B.wp0 > 0) {
1259 /* Gain: '<S233>/Deg2R' */
1260 rtb_cosphi = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_d[0];
1261
1262 /* Trigonometry: '<S233>/sin(phi)' */
1263 rtb_sinphi = (real32_T)sin(rtb_cosphi);
1264
1265 /* Sum: '<S233>/Sum1' incorporates:
1266 * Constant: '<S233>/const'
1267 * Product: '<S233>/Product1'
1268 * Product: '<S233>/sin(phi)^2'
1269 */
1270 rtb_Abs2 = 1.0F - rtb_sinphi * rtb_sinphi *
1271 controlMCUSlugsMKII_ConstB.Sum5;
1272
1273 /* Fcn: '<S233>/f' */
1274 if (rtb_Abs2 < 0.0F) {
1275 rtb_Abs2 = -((real32_T)sqrt(-rtb_Abs2));
1276 } else {
1277 rtb_Abs2 = (real32_T)sqrt(rtb_Abs2);
1278 }
1279
1280 /* Product: '<S233>/Rh' incorporates:
1281 * Constant: '<S233>/Re=equatorial radius'
1282 */
1283 rtb_Abs2 = 6.378137E+006F / rtb_Abs2;
1284
1285 /* Product: '<S233>/Ze' incorporates:
1286 * Product: '<S233>/Rh(1-e^2)'
1287 * Sum: '<S233>/Sum4'
1288 */
1289 rtb_sinphi *= controlMCUSlugsMKII_ConstB.e2 * rtb_Abs2 +
1290 controlMCUSlugsMKII_B.CFunctionCall_d[2];
1291
1292 /* Gain: '<S233>/Deg2R1' */
1293 rtb_Sum2 = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_d[1];
1294
1295 /* Trigonometry: '<S233>/cos(phi)' */
1296 rtb_cosphi = (real32_T)cos(rtb_cosphi);
1297
1298 /* Sum: '<S233>/Sum2' */
1299 rtb_Abs2 += controlMCUSlugsMKII_B.CFunctionCall_d[2];
1300
1301 /* Product: '<S233>/(Rh+h)cos(phi)*sin(lamb)=Ye' incorporates:
1302 * Trigonometry: '<S233>/sin(lamb)'
1303 */
1304 rtb_Deg2R1 = rtb_Abs2 * rtb_cosphi * (real32_T)sin(rtb_Sum2);
1305
1306 /* Product: '<S233>/(Rh+h)cos(phi)*cos(lamb)=Xe' incorporates:
1307 * Trigonometry: '<S233>/cos(lamb)'
1308 */
1309 rtb_Abs2 = rtb_Abs2 * rtb_cosphi * (real32_T)cos(rtb_Sum2);
1310
1311 /* Gain: '<S232>/Deg2R' */
1312 rtb_Deg2R_o_idx = 1.745329238E-002F *
1313 controlMCUSlugsMKII_B.CFunctionCall_aj[1];
1314 rtb_Deg2R_o_idx_0 = 1.745329238E-002F *
1315 controlMCUSlugsMKII_B.CFunctionCall_aj[0];
1316 tmp_0[0L] = (real32_T)cos(rtb_Deg2R_o_idx) * (real32_T)cos
1317 (rtb_Deg2R_o_idx_0);
1318 tmp_0[1L] = -((real32_T)sin(rtb_Deg2R_o_idx));
1319 tmp_0[2L] = (-((real32_T)sin(rtb_Deg2R_o_idx_0))) * (real32_T)cos
1320 (rtb_Deg2R_o_idx);
1321 tmp_0[3L] = (real32_T)sin(rtb_Deg2R_o_idx) * (real32_T)cos
1322 (rtb_Deg2R_o_idx_0);
1323 tmp_0[4L] = (real32_T)cos(rtb_Deg2R_o_idx);
1324 tmp_0[5L] = (-((real32_T)sin(rtb_Deg2R_o_idx))) * (real32_T)sin
1325 (rtb_Deg2R_o_idx_0);
1326 tmp_0[6L] = (real32_T)sin(rtb_Deg2R_o_idx_0);
1327 tmp_0[7L] = 0.0F;
1328 tmp_0[8L] = (real32_T)cos(rtb_Deg2R_o_idx_0);
1329 rtb_Deg2R_o_idx_0 = rtb_Abs2 - controlMCUSlugsMKII_B.RhhcosphicoslambXe;
1330 rtb_Deg2R_o_idx = rtb_Deg2R1 - controlMCUSlugsMKII_B.RhhcosphisinlambYe;
1331 rtb_cosphi = rtb_sinphi - controlMCUSlugsMKII_B.Ze;
1332 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
1333 tmp_1[rtb_IC1] = tmp_0[rtb_IC1 + 6] * rtb_cosphi + (tmp_0[rtb_IC1 + 3] *
1334 rtb_Deg2R_o_idx + tmp_0[rtb_IC1] * rtb_Deg2R_o_idx_0);
1335 }
1336
1337 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
1338 controlMCUSlugsMKII_B.Switch[rtb_IC1] = 0.0F;
1339 controlMCUSlugsMKII_B.Switch[rtb_IC1] =
1340 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1] * tmp_1[0] +
1341 controlMCUSlugsMKII_B.Switch[rtb_IC1];
1342 controlMCUSlugsMKII_B.Switch[rtb_IC1] =
1343 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 3] * tmp_1[1] +
1344 controlMCUSlugsMKII_B.Switch[rtb_IC1];
1345 controlMCUSlugsMKII_B.Switch[rtb_IC1] =
1346 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 6] * tmp_1[2] +
1347 controlMCUSlugsMKII_B.Switch[rtb_IC1];
1348 }
1349 } else {
1350 controlMCUSlugsMKII_B.Switch[0] = controlMCUSlugsMKII_B.UAVPos[0];
1351 controlMCUSlugsMKII_B.Switch[1] = controlMCUSlugsMKII_B.UAVPos[1];
1352 controlMCUSlugsMKII_B.Switch[2] = controlMCUSlugsMKII_B.UAVPos[2];
1353 }
1354
1355 /* Gain: '<S227>/Deg2R' */
1356 rtb_Deg2R_o_idx = 1.745329238E-002F *
1357 controlMCUSlugsMKII_B.CFunctionCall_aj[1];
1358 rtb_Deg2R_o_idx_0 = 1.745329238E-002F *
1359 controlMCUSlugsMKII_B.CFunctionCall_aj[0];
1360
1361 /* S-Function "dsPIC_C_function_Call" Block: <S209>/C Function Call */
1362 getWP(controlMCUSlugsMKII_B.wp1,&controlMCUSlugsMKII_B.CFunctionCall_a1[0]);
1363
1364 /* Gain: '<S228>/Deg2R' */
1365 rtb_sinphi = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_a1[0];
1366
1367 /* Trigonometry: '<S228>/sin(phi)' */
1368 rtb_Ze = (real32_T)sin(rtb_sinphi);
1369
1370 /* Sum: '<S228>/Sum1' incorporates:
1371 * Constant: '<S228>/const'
1372 * Product: '<S228>/Product1'
1373 * Product: '<S228>/sin(phi)^2'
1374 */
1375 rtb_Abs2 = 1.0F - rtb_Ze * rtb_Ze * controlMCUSlugsMKII_ConstB.Sum5_l;
1376
1377 /* Fcn: '<S228>/f' */
1378 if (rtb_Abs2 < 0.0F) {
1379 rtb_Abs2 = -((real32_T)sqrt(-rtb_Abs2));
1380 } else {
1381 rtb_Abs2 = (real32_T)sqrt(rtb_Abs2);
1382 }
1383
1384 /* Product: '<S228>/Rh' incorporates:
1385 * Constant: '<S228>/Re=equatorial radius'
1386 */
1387 rtb_Abs2 = 6.378137E+006F / rtb_Abs2;
1388
1389 /* Sum: '<S228>/Sum2' */
1390 rtb_Sum2 = controlMCUSlugsMKII_B.CFunctionCall_a1[2] + rtb_Abs2;
1391
1392 /* Trigonometry: '<S228>/cos(phi)' */
1393 rtb_sinphi = (real32_T)cos(rtb_sinphi);
1394
1395 /* Gain: '<S228>/Deg2R1' */
1396 rtb_Deg2R1 = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_a1[1];
1397
1398 /* Product: '<S228>/(Rh+h)cos(phi)*cos(lamb)=Xe' incorporates:
1399 * Trigonometry: '<S228>/cos(lamb)'
1400 */
1401 rtb_cosphi = rtb_Sum2 * rtb_sinphi * (real32_T)cos(rtb_Deg2R1);
1402
1403 /* Product: '<S228>/(Rh+h)cos(phi)*sin(lamb)=Ye' incorporates:
1404 * Trigonometry: '<S228>/sin(lamb)'
1405 */
1406 rtb_Sum2 = rtb_Sum2 * rtb_sinphi * (real32_T)sin(rtb_Deg2R1);
1407
1408 /* Product: '<S228>/Ze' incorporates:
1409 * Product: '<S228>/Rh(1-e^2)'
1410 * Sum: '<S228>/Sum4'
1411 */
1412 rtb_Ze *= controlMCUSlugsMKII_ConstB.e2_c * rtb_Abs2 +
1413 controlMCUSlugsMKII_B.CFunctionCall_a1[2];
1414
1415 /* Reshape: '<S206>/Reshape1' incorporates:
1416 * Fcn: '<S230>/11'
1417 * Fcn: '<S230>/12'
1418 * Fcn: '<S230>/13'
1419 * Fcn: '<S230>/21'
1420 * Fcn: '<S230>/22'
1421 * Fcn: '<S230>/23'
1422 * Fcn: '<S230>/31'
1423 * Fcn: '<S230>/32'
1424 * Fcn: '<S230>/33'
1425 * Gain: '<S206>/UEN 2 NEU'
1426 * Product: '<S227>/Product1'
1427 * SignalConversion: '<S227>/TmpSignal ConversionAtProduct1Inport1'
1428 * Sum: '<S206>/Sum1'
1429 */
1430 tmp_0[0L] = (real32_T)cos(rtb_Deg2R_o_idx) * (real32_T)cos(rtb_Deg2R_o_idx_0);
1431 tmp_0[1L] = -((real32_T)sin(rtb_Deg2R_o_idx));
1432 tmp_0[2L] = (-((real32_T)sin(rtb_Deg2R_o_idx_0))) * (real32_T)cos
1433 (rtb_Deg2R_o_idx);
1434 tmp_0[3L] = (real32_T)sin(rtb_Deg2R_o_idx) * (real32_T)cos(rtb_Deg2R_o_idx_0);
1435 tmp_0[4L] = (real32_T)cos(rtb_Deg2R_o_idx);
1436 tmp_0[5L] = (-((real32_T)sin(rtb_Deg2R_o_idx))) * (real32_T)sin
1437 (rtb_Deg2R_o_idx_0);
1438 tmp_0[6L] = (real32_T)sin(rtb_Deg2R_o_idx_0);
1439 tmp_0[7L] = 0.0F;
1440 tmp_0[8L] = (real32_T)cos(rtb_Deg2R_o_idx_0);
1441 rtb_Deg2R_o_idx_0 = rtb_cosphi - controlMCUSlugsMKII_B.RhhcosphicoslambXe;
1442 rtb_Deg2R_o_idx = rtb_Sum2 - controlMCUSlugsMKII_B.RhhcosphisinlambYe;
1443 rtb_cosphi = rtb_Ze - controlMCUSlugsMKII_B.Ze;
1444 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
1445 tmp_1[rtb_IC1] = tmp_0[rtb_IC1 + 6] * rtb_cosphi + (tmp_0[rtb_IC1 + 3] *
1446 rtb_Deg2R_o_idx + tmp_0[rtb_IC1] * rtb_Deg2R_o_idx_0);
1447 }
1448
1449 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
1450 controlMCUSlugsMKII_B.Reshape1[rtb_IC1] = 0.0F;
1451 controlMCUSlugsMKII_B.Reshape1[rtb_IC1] =
1452 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1] * tmp_1[0] +
1453 controlMCUSlugsMKII_B.Reshape1[rtb_IC1];
1454 controlMCUSlugsMKII_B.Reshape1[rtb_IC1] =
1455 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 3] * tmp_1[1] +
1456 controlMCUSlugsMKII_B.Reshape1[rtb_IC1];
1457 controlMCUSlugsMKII_B.Reshape1[rtb_IC1] =
1458 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 6] * tmp_1[2] +
1459 controlMCUSlugsMKII_B.Reshape1[rtb_IC1];
1460
1461 /* Sum: '<S205>/Add' */
1462 rtb_Add_f[rtb_IC1] = controlMCUSlugsMKII_B.Reshape1[rtb_IC1] -
1463 controlMCUSlugsMKII_B.Switch[rtb_IC1];
1464 }
1465
1466 /* Embedded MATLAB: '<S215>/Embedded MATLAB Function' */
1467 co_EmbeddedMATLABFunction_a(rtb_Add_f,
1468 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_hk);
1469
1470 /* Embedded MATLAB: '<S214>/negprotect' */
1471 controlMCUSlugsM_negprotect
1472 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_hk.xDoty,
1473 &controlMCUSlugsMKII_B.sf_negprotect_g);
1474
1475 /* S-Function "dsPIC_C_function_Call" Block: <S214>/C Function Call */
1476 controlMCUSlugsMKII_B.CFunctionCall_b = mySqrt
1477 (controlMCUSlugsMKII_B.sf_negprotect_g.zpVal);
1478
1479 /* Saturate: '<S210>/Zero Bound' */
1480 rtb_Abs2 = rt_MAXf_snf(controlMCUSlugsMKII_B.CFunctionCall_b,
1481 1.000000047E-003F);
1482
1483 /* Product: '<S210>/Divide' */
1484 controlMCUSlugsMKII_B.Divide_n[0] = rtb_Add_f[0] / rtb_Abs2;
1485 controlMCUSlugsMKII_B.Divide_n[1] = rtb_Add_f[1] / rtb_Abs2;
1486 controlMCUSlugsMKII_B.Divide_n[2] = rtb_Add_f[2] / rtb_Abs2;
1487
1488 /* Embedded MATLAB: '<S205>/Select N Terms' */
1489 /* Embedded MATLAB Function 'Navigation/Compute Frenet/Select N Terms': '<S212>:1' */
1490 /* This block supports an embeddable subset of the MATLAB language. */
1491 /* See the help menu for details. */
1492 /* '<S212>:1:5' */
1493 rtb_N[0] = -controlMCUSlugsMKII_B.Divide_n[1];
1494 rtb_N[1] = controlMCUSlugsMKII_B.Divide_n[0];
1495 rtb_N[2] = 0.0F;
1496
1497 /* Embedded MATLAB: '<S222>/Embedded MATLAB Function' */
1498 co_EmbeddedMATLABFunction_a(rtb_N,
1499 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_or);
1500
1501 /* Embedded MATLAB: '<S221>/negprotect' */
1502 controlMCUSlugsM_negprotect
1503 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_or.xDoty,
1504 &controlMCUSlugsMKII_B.sf_negprotect_bp);
1505
1506 /* S-Function "dsPIC_C_function_Call" Block: <S221>/C Function Call */
1507 controlMCUSlugsMKII_B.CFunctionCall_c0 = mySqrt
1508 (controlMCUSlugsMKII_B.sf_negprotect_bp.zpVal);
1509
1510 /* Saturate: '<S211>/Zero Bound' */
1511 rtb_Abs2 = rt_MAXf_snf(controlMCUSlugsMKII_B.CFunctionCall_c0,
1512 1.000000047E-003F);
1513
1514 /* Product: '<S211>/Divide' */
1515 controlMCUSlugsMKII_B.Divide_p[0] = rtb_N[0] / rtb_Abs2;
1516 controlMCUSlugsMKII_B.Divide_p[1] = rtb_N[1] / rtb_Abs2;
1517 controlMCUSlugsMKII_B.Divide_p[2] = rtb_N[2] / rtb_Abs2;
1518 }
1519
1520 /* end of Outputs for SubSystem: '<S16>/Get Wps Compute Frenet' */
1521
1522 /* Sum: '<S123>/Add' */
1523 rtb_Add_id[0] = controlMCUSlugsMKII_B.Reshape1[0] -
1524 controlMCUSlugsMKII_B.GetXYZnavSupportc[0];
1525 rtb_Add_id[1] = controlMCUSlugsMKII_B.Reshape1[1] -
1526 controlMCUSlugsMKII_B.GetXYZnavSupportc[1];
1527 rtb_Add_id[2] = controlMCUSlugsMKII_B.Reshape1[2] -
1528 controlMCUSlugsMKII_B.GetXYZnavSupportc[2];
1529
1530 /* Embedded MATLAB: '<S129>/Embedded MATLAB Function' */
1531 co_EmbeddedMATLABFunction_m(controlMCUSlugsMKII_B.Divide_p, rtb_Add_id,
1532 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_m);
1533
1534 /* Switch: '<S132>/Switch3' incorporates:
1535 * RelationalOperator: '<S132>/Relational Operator2'
1536 * S-Function (sfix_udelay): '<S132>/Integer Delay3'
1537 */
1538 if ((controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_m.xDoty ==
1539 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_m.xDoty) > 0) {
1540 controlMCUSlugsMKII_B.Switch3_nn =
1541 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_m.xDoty;
1542 } else {
1543 controlMCUSlugsMKII_B.Switch3_nn =
1544 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b3;
1545 }
1546
1547 /* Gain: '<S238>/Gain' */
1548 rtb_Abs2 = -controlMCUSlugsMKII_B.Switch3_nn;
1549
1550 /* Product: '<S238>/Divide2' */
1551 rtb_Deg2R_o_idx = controlMCUSlugsMKII_B.Divide_p[0] * rtb_Abs2;
1552 rtb_Deg2R_o_idx_0 = controlMCUSlugsMKII_B.Divide_p[1] * rtb_Abs2;
1553 rtb_cosphi = controlMCUSlugsMKII_B.Divide_p[2] * rtb_Abs2;
1554
1555 /* Sum: '<S238>/Add' incorporates:
1556 * Product: '<S238>/Divide'
1557 * Product: '<S238>/Divide1'
1558 */
1559 controlMCUSlugsMKII_B.Add = rtb_Divide4_k * rtb_Divide4_k -
1560 controlMCUSlugsMKII_B.Switch3_nn * controlMCUSlugsMKII_B.Switch3_nn;
1561
1562 /* S-Function "dsPIC_C_function_Call" Block: <S256>/C Function Call */
1563 controlMCUSlugsMKII_B.CFunctionCall_o = myAbs(controlMCUSlugsMKII_B.Add);
1564
1565 /* Embedded MATLAB: '<S255>/negprotect' */
1566 controlMCUSlugsM_negprotect(controlMCUSlugsMKII_B.CFunctionCall_o,
1567 &controlMCUSlugsMKII_B.sf_negprotect_f);
1568
1569 /* S-Function "dsPIC_C_function_Call" Block: <S255>/C Function Call */
1570 controlMCUSlugsMKII_B.CFunctionCall_f = mySqrt
1571 (controlMCUSlugsMKII_B.sf_negprotect_f.zpVal);
1572
1573 /* Sum: '<S238>/Add2' incorporates:
1574 * Product: '<S238>/Divide3'
1575 */
1576 controlMCUSlugsMKII_B.L1_vec[0] = controlMCUSlugsMKII_B.Divide_n[0] *
1577 controlMCUSlugsMKII_B.CFunctionCall_f - rtb_Deg2R_o_idx;
1578 controlMCUSlugsMKII_B.L1_vec[1] = controlMCUSlugsMKII_B.Divide_n[1] *
1579 controlMCUSlugsMKII_B.CFunctionCall_f - rtb_Deg2R_o_idx_0;
1580 controlMCUSlugsMKII_B.L1_vec[2] = controlMCUSlugsMKII_B.Divide_n[2] *
1581 controlMCUSlugsMKII_B.CFunctionCall_f - rtb_cosphi;
1582
1583 /* Product: '<S245>/j x k' */
1584 rtb_Abs2 = rtb_u525[1] * controlMCUSlugsMKII_B.L1_vec[2];
1585
1586 /* Product: '<S245>/k x i' */
1587 rtb_Sum2 = rtb_u525[2] * controlMCUSlugsMKII_B.L1_vec[0];
1588
1589 /* Product: '<S245>/i x j' */
1590 rtb_Deg2R1 = rtb_u525[0] * controlMCUSlugsMKII_B.L1_vec[1];
1591
1592 /* Product: '<S246>/k x j' */
1593 rtb_cosphi = rtb_u525[2] * controlMCUSlugsMKII_B.L1_vec[1];
1594
1595 /* Product: '<S246>/i x k' */
1596 rtb_sinphi = rtb_u525[0] * controlMCUSlugsMKII_B.L1_vec[2];
1597
1598 /* Product: '<S246>/j x i' */
1599 rtb_Ze = rtb_u525[1] * controlMCUSlugsMKII_B.L1_vec[0];
1600
1601 /* Embedded MATLAB: '<S248>/Embedded MATLAB Function' */
1602 co_EmbeddedMATLABFunction_a(controlMCUSlugsMKII_B.L1_vec,
1603 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_d);
1604
1605 /* Embedded MATLAB: '<S247>/negprotect' */
1606 controlMCUSlugsM_negprotect
1607 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_d.xDoty,
1608 &controlMCUSlugsMKII_B.sf_negprotect_b);
1609
1610 /* S-Function "dsPIC_C_function_Call" Block: <S247>/C Function Call */
1611 controlMCUSlugsMKII_B.CFunctionCall_m = mySqrt
1612 (controlMCUSlugsMKII_B.sf_negprotect_b.zpVal);
1613
1614 /* Embedded MATLAB: '<S237>/negprotect' */
1615 controlMCUSlugsM_negprotect(controlMCUSlugsMKII_B.CFunctionCall_m,
1616 &controlMCUSlugsMKII_B.sf_negprotect_fm);
1617
1618 /* Product: '<S237>/Divide5' incorporates:
1619 * Sum: '<S241>/Sum'
1620 */
1621 rtb_u525[0] = (rtb_Abs2 - rtb_cosphi) /
1622 controlMCUSlugsMKII_B.sf_negprotect_fm.zpVal / rtb_u45;
1623 rtb_u525[1] = (rtb_Sum2 - rtb_sinphi) /
1624 controlMCUSlugsMKII_B.sf_negprotect_fm.zpVal / rtb_u45;
1625 rtb_u525[2] = (rtb_Deg2R1 - rtb_Ze) /
1626 controlMCUSlugsMKII_B.sf_negprotect_fm.zpVal / rtb_u45;
1627
1628 /* Switch: '<S254>/Switch3' incorporates:
1629 * RelationalOperator: '<S254>/Relational Operator2'
1630 * S-Function (sfix_udelay): '<S254>/Integer Delay3'
1631 */
1632 if ((rtb_u525[2] == rtb_u525[2]) > 0) {
1633 controlMCUSlugsMKII_B.Switch3_a = rtb_u525[2];
1634 } else {
1635 controlMCUSlugsMKII_B.Switch3_a =
1636 controlMCUSlugsMKII_DWork.IntegerDelay3_X_g;
1637 }
1638
1639 /* Saturate: '<S243>/[-1,1]' */
1640 controlMCUSlugsMKII_B.u1_h = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_a,
1641 -9.990000129E-001F, 9.998999834E-001F);
1642
1643 /* S-Function "dsPIC_C_function_Call" Block: <S243>/C Function Call */
1644 controlMCUSlugsMKII_B.CFunctionCall_h = myAsin(controlMCUSlugsMKII_B.u1_h);
1645
1646 /* S-Function "dsPIC_C_function_Call" Block: <S269>/C Function Call */
1647 controlMCUSlugsMKII_B.CFunctionCall_e = mySin
1648 (controlMCUSlugsMKII_B.CFunctionCall_h);
1649
1650 /* Product: '<S240>/Product' incorporates:
1651 * Constant: '<S240>/Constant'
1652 */
1653 rtb_Ze = (real32_T)((real_T)(rtb_u45 * rtb_u45) * 2.0) / rtb_Divide4_k *
1654 controlMCUSlugsMKII_B.CFunctionCall_e;
1655
1656 /* Switch: '<S268>/Switch3' incorporates:
1657 * RelationalOperator: '<S268>/Relational Operator2'
1658 * S-Function (sfix_udelay): '<S268>/Integer Delay3'
1659 */
1660 if ((rtb_Ze == rtb_Ze) > 0) {
1661 controlMCUSlugsMKII_B.Switch3_m = rtb_Ze;
1662 } else {
1663 controlMCUSlugsMKII_B.Switch3_m =
1664 controlMCUSlugsMKII_DWork.IntegerDelay3_X_f;
1665 }
1666
1667 /* Product: '<S126>/Product' incorporates:
1668 * Saturate: '<S240>/[-25,25]'
1669 */
1670 rtb_Product_c = controlMCUSlugsMKII_B.navSupportc_o[2] * rt_SATURATE
1671 (controlMCUSlugsMKII_B.Switch3_m, -25.0F, 25.0F);
1672
1673 /* Embedded MATLAB: '<S16>/myMux Fun1' */
1674 controlMCUSlugsMK_myMuxFun1(rtb_Product_c, rtb_u45,
1675 controlMCUSlugsMKII_B.Switch3_nn, &controlMCUSlugsMKII_B.sf_myMuxFun1_o);
1676
1677 /* S-Function "dsPIC_C_function_Call" Block: <S16>/Set Log Floats 4-6 [navSupport.c] */
1678 setLogFloat2(controlMCUSlugsMKII_B.sf_myMuxFun1_o.y);
1679
1680 /* Switch: '<S140>/1st WP' incorporates:
1681 * Constant: '<S140>/Switch Distance WP0'
1682 * Constant: '<S177>/Constant'
1683 * RelationalOperator: '<S177>/Compare'
1684 * S-Function (sfix_udelay): '<S124>/Integer Delay3'
1685 * S-Function (sfix_udelay): '<S140>/Integer Delay1'
1686 */
1687 if ((controlMCUSlugsMKII_DWork.IntegerDelay1_X_fi > 0) > 0) {
1688 rtb_Sum2 = controlMCUSlugsMKII_DWork.IntegerDelay3_X_a;
1689 } else {
1690 rtb_Sum2 = 100.0F;
1691 }
1692
1693 /* S-Function (sfix_udelay): '<S180>/Integer Delay1' */
1694 rtb_Ze = controlMCUSlugsMKII_DWork.IntegerDelay1_X_i;
1695
1696 /* S-Function (sfix_udelay): '<S180>/Integer Delay2' */
1697 rtb_sinphi = controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[0];
1698
1699 /* Sum: '<S196>/Diff' incorporates:
1700 * UnitDelay: '<S196>/UD'
1701 */
1702 controlMCUSlugsMKII_B.Diff = controlMCUSlugsMKII_B.Switch[0] -
1703 controlMCUSlugsMKII_DWork.UD_DSTATE;
1704
1705 /* S-Function "dsPIC_C_function_Call" Block: <S197>/C Function Call */
1706 controlMCUSlugsMKII_B.CFunctionCall_j = myAbs(controlMCUSlugsMKII_B.Diff);
1707
1708 /* Saturate: '<S193>/Saturation1' */
1709 rtb_Abs2 = rt_SATURATE(controlMCUSlugsMKII_B.CFunctionCall_j, 0.0F, 1.0F);
1710
1711 /* Sum: '<S199>/Diff' incorporates:
1712 * UnitDelay: '<S199>/UD'
1713 */
1714 controlMCUSlugsMKII_B.Diff_o = controlMCUSlugsMKII_B.Switch[1] -
1715 controlMCUSlugsMKII_DWork.UD_DSTATE_e;
1716
1717 /* S-Function "dsPIC_C_function_Call" Block: <S200>/C Function Call */
1718 controlMCUSlugsMKII_B.CFunctionCall_l = myAbs(controlMCUSlugsMKII_B.Diff_o);
1719
1720 /* Saturate: '<S194>/Saturation1' */
1721 rtb_Deg2R1 = rt_SATURATE(controlMCUSlugsMKII_B.CFunctionCall_l, 0.0F, 1.0F);
1722
1723 /* Sum: '<S202>/Diff' incorporates:
1724 * UnitDelay: '<S202>/UD'
1725 */
1726 controlMCUSlugsMKII_B.Diff_a = controlMCUSlugsMKII_B.Switch[2] -
1727 controlMCUSlugsMKII_DWork.UD_DSTATE_h;
1728
1729 /* S-Function "dsPIC_C_function_Call" Block: <S203>/C Function Call */
1730 controlMCUSlugsMKII_B.CFunctionCall_ep = myAbs(controlMCUSlugsMKII_B.Diff_a);
1731
1732 /* Sum: '<S181>/Sum' incorporates:
1733 * Saturate: '<S195>/Saturation1'
1734 */
1735 rtb_cosphi = (rtb_Abs2 + rtb_Deg2R1) + rt_SATURATE
1736 (controlMCUSlugsMKII_B.CFunctionCall_ep, 0.0F, 1.0F);
1737
1738 /* Saturate: '<S181>/Saturation1' */
1739 rtb_cosphi = rt_SATURATE(rtb_cosphi, 0.0F, 1.0F);
1740
1741 /* InitialCondition: '<S180>/IC' */
1742 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_b) {
1743 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_b = FALSE;
1744 controlMCUSlugsMKII_B.IC_e = 1.0F;
1745 } else {
1746 controlMCUSlugsMKII_B.IC_e = rtb_cosphi;
1747 }
1748
1749 /* Sum: '<S180>/Add'/
1750 rtb_Ze = (rtb_Ze + rtb_sinphi) + controlMCUSlugsMKII_B.IC_e;
1751
1752 /* InitialCondition: '<S140>/IC' */
1753 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_d) {
1754 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_d = FALSE;
1755 rtb_Ze = 1.0F;
1756 }
1757
1758 /* Outputs for enable SubSystem: '<S140>/Compute Total Run' incorporates:
1759 * EnablePort: '<S179>/Enable'
1760 */
1761 if (rtb_Ze > 0.0F) {
1762 /* Sum: '<S185>/Add' */
1763 rtb_Add_d[0] = controlMCUSlugsMKII_B.Switch[0] -
1764 controlMCUSlugsMKII_B.Reshape1[0];
1765 rtb_Add_d[1] = controlMCUSlugsMKII_B.Switch[1] -
1766 controlMCUSlugsMKII_B.Reshape1[1];
1767 rtb_Add_d[2] = controlMCUSlugsMKII_B.Switch[2] -
1768 controlMCUSlugsMKII_B.Reshape1[2];
1769
1770 /* Embedded MATLAB: '<S189>/Embedded MATLAB Function' */
1771 co_EmbeddedMATLABFunction_a(rtb_Add_d,
1772 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_mg);
1773
1774 /* Embedded MATLAB: '<S188>/negprotect' */
1775 controlMCUSlugsM_negprotect
1776 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_mg.xDoty,
1777 &controlMCUSlugsMKII_B.sf_negprotect_l);
1778
1779 /* S-Function "dsPIC_C_function_Call" Block: <S188>/C Function Call */
1780 controlMCUSlugsMKII_B.CFunctionCall_fg = mySqrt
1781 (controlMCUSlugsMKII_B.sf_negprotect_l.zpVal);
1782
1783 /* Sum: '<S179>/Subtract1' */
1784 rtb_Abs2 = controlMCUSlugsMKII_B.CFunctionCall_fg - rtb_Sum2;
1785
1786 /* Switch: '<S186>/Switch3' incorporates:
1787 * RelationalOperator: '<S186>/Relational Operator2'
1788 * S-Function (sfix_udelay): '<S186>/Integer Delay3'
1789 */
1790 if ((rtb_Abs2 == rtb_Abs2) > 0) {
1791 controlMCUSlugsMKII_B.Switch3_mv = rtb_Abs2;
1792 } else {
1793 controlMCUSlugsMKII_B.Switch3_mv =
1794 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ft;
1795 }
1796
1797 /* Update for S-Function (sfix_udelay): '<S186>/Integer Delay3' */
1798 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ft =
1799 controlMCUSlugsMKII_B.Switch3_mv;
1800 }
1801
1802 /* end of Outputs for SubSystem: '<S140>/Compute Total Run' */
1803
1804 /* Sum: '<S178>/Subtract' */
1805 rtb_Subtract[0] = controlMCUSlugsMKII_B.GetXYZnavSupportc[0] -
1806 controlMCUSlugsMKII_B.Switch[0];
1807 rtb_Subtract[1] = controlMCUSlugsMKII_B.GetXYZnavSupportc[1] -
1808 controlMCUSlugsMKII_B.Switch[1];
1809 rtb_Subtract[2] = controlMCUSlugsMKII_B.GetXYZnavSupportc[2] -
1810 controlMCUSlugsMKII_B.Switch[2];
1811
1812 /* Embedded MATLAB: '<S183>/Embedded MATLAB Function' */
1813 co_EmbeddedMATLABFunction_m(rtb_Subtract, controlMCUSlugsMKII_B.Divide_n,
1814 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_n);
1815
1816 /* Switch: '<S182>/Switch3' incorporates:
1817 * RelationalOperator: '<S182>/Relational Operator2'
1818 * S-Function (sfix_udelay): '<S182>/Integer Delay3'
1819 */
1820 if ((controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_n.xDoty ==
1821 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_n.xDoty) > 0) {
1822 controlMCUSlugsMKII_B.Switch3 =
1823 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_n.xDoty;
1824 } else {
1825 controlMCUSlugsMKII_B.Switch3 = controlMCUSlugsMKII_DWork.IntegerDelay3_X;
1826 }
1827
1828 /* Embedded MATLAB: '<S124>/myMux Fun2' incorporates:
1829 * DataTypeConversion: '<S124>/Data Type Conversion'
1830 * DataTypeConversion: '<S124>/Data Type Conversion2'
1831 */
1832 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/myMux Fun2': '<S141>:1' */
1833 /* This block supports an embeddable subset of the MATLAB language. */
1834 /* See the help menu for details. */
1835 /* '<S141>:1:5' */
1836 controlMCUSlugsMKII_B.y_e[0] = controlMCUSlugsMKII_B.Switch3_mv;
1837 controlMCUSlugsMKII_B.y_e[1] = (real32_T)controlMCUSlugsMKII_B.Switch3;
1838 controlMCUSlugsMKII_B.y_e[2] = (real32_T)controlMCUSlugsMKII_B.wp0;
1839 controlMCUSlugsMKII_B.y_e[3] = (real32_T)controlMCUSlugsMKII_B.wp1;
1840
1841 /* S-Function "dsPIC_C_function_Call" Block: <S124>/Set The Nav Vals [navSupport.c] */
1842 setNavNav(controlMCUSlugsMKII_B.y_e);
1843
1844 /* Outputs for enable SubSystem: '<S124>/Compute P' incorporates:
1845 * EnablePort: '<S133>/Enable'
1846 */
1847 if (rtb_IntegerDelay2_m) {
1848 /* Product: '<S133>/Product1' */
1849 rtb_Product1_m = controlMCUSlugsMKII_B.navSupportc_o[1] * rtb_u45;
1850
1851 /* S-Function (sfix_udelay): '<S133>/Integer Delay1' */
1852 controlMCUSlugsMKII_B.IntegerDelay1[0] =
1853 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[0];
1854 controlMCUSlugsMKII_B.IntegerDelay1[1] =
1855 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[1];
1856 controlMCUSlugsMKII_B.IntegerDelay1[2] =
1857 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[2];
1858
1859 /* S-Function "dsPIC_C_function_Call" Block: <S167>/C Function Call */
1860 controlMCUSlugsMKII_B.CFunctionCall_l0 = myAtan2
1861 (controlMCUSlugsMKII_B.IntegerDelay1[1],
1862 controlMCUSlugsMKII_B.IntegerDelay1[0]);
1863
1864 /* Sum: '<S143>/Add' incorporates:
1865 * S-Function (sfix_udelay): '<S133>/Integer Delay2'
1866 */
1867 rtb_Add_k[0] = controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[0] -
1868 controlMCUSlugsMKII_B.Reshape1[0];
1869 rtb_Add_k[1] = controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[1] -
1870 controlMCUSlugsMKII_B.Reshape1[1];
1871 rtb_Add_k[2] = controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[2] -
1872 controlMCUSlugsMKII_B.Reshape1[2];
1873
1874 /* Embedded MATLAB: '<S150>/Embedded MATLAB Function' */
1875 co_EmbeddedMATLABFunction_a(rtb_Add_k,
1876 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_a);
1877
1878 /* Embedded MATLAB: '<S149>/negprotect' */
1879 controlMCUSlugsM_negprotect
1880 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_a.xDoty,
1881 &controlMCUSlugsMKII_B.sf_negprotect_e);
1882
1883 /* S-Function "dsPIC_C_function_Call" Block: <S149>/C Function Call */
1884 controlMCUSlugsMKII_B.CFunctionCall_mb = mySqrt
1885 (controlMCUSlugsMKII_B.sf_negprotect_e.zpVal);
1886
1887 /* Saturate: '<S147>/Zero Bound' */
1888 rtb_Abs2 = rt_MAXf_snf(controlMCUSlugsMKII_B.CFunctionCall_mb,
1889 1.000000047E-003F);
1890
1891 /* Product: '<S147>/Divide' */
1892 controlMCUSlugsMKII_B.Divide_l[0] = rtb_Add_k[0] / rtb_Abs2;
1893 controlMCUSlugsMKII_B.Divide_l[1] = rtb_Add_k[1] / rtb_Abs2;
1894 controlMCUSlugsMKII_B.Divide_l[2] = rtb_Add_k[2] / rtb_Abs2;
1895
1896 /* S-Function "dsPIC_C_function_Call" Block: <S166>/C Function Call */
1897 controlMCUSlugsMKII_B.CFunctionCall_ir = myAtan2
1898 (controlMCUSlugsMKII_B.Divide_l[1],controlMCUSlugsMKII_B.Divide_l[0]);
1899
1900 /* Sum: '<S161>/Add' */
1901 rtb_Abs2 = controlMCUSlugsMKII_B.CFunctionCall_l0 -
1902 controlMCUSlugsMKII_B.CFunctionCall_ir;
1903
1904 /* Embedded MATLAB: '<S161>/Embedded MATLAB Function1' */
1905 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/Compute P/Get Circles/Compute CCW Angle From 2 Vectors/Embedded MATLAB Function1': '<S165>:1' */
1906 if ((real_T)rtb_Abs2 < 0.0) {
1907 /* '<S165>:1:3' */
1908 /* '<S165>:1:4' */
1909 rtb_Abs2 += 6.283185482E+000F;
1910 } else {
1911 /* '<S165>:1:6' */
1912 }
1913
1914 /* RelationalOperator: '<S145>/Larger than 180?' incorporates:
1915 * Constant: '<S145>/Constant5'
1916 */
1917 rtb_IntegerDelay2_m = (rtb_Abs2 >= 3.141592741E+000F);
1918
1919 /* Outputs for enable SubSystem: '<S145>/compute delta Right Turn' incorporates:
1920 * EnablePort: '<S164>/Enable'
1921 */
1922 if (rtb_IntegerDelay2_m) {
1923 /* Product: '<S164>/Divide' incorporates:
1924 * Constant: '<S164>/Constant1'
1925 * Constant: '<S164>/Constant5'
1926 * Sum: '<S164>/Add'
1927 */
1928 controlMCUSlugsMKII_B.Merge4 = (rtb_Abs2 - 3.141592741E+000F) / 2.0F;
1929 }
1930
1931 /* end of Outputs for SubSystem: '<S145>/compute delta Right Turn' */
1932
1933 /* Outputs for enable SubSystem: '<S145>/Compute delta Left Turn' incorporates:
1934 * EnablePort: '<S162>/Enable'
1935 * Logic: '<S145>/Logical Operator'
1936 */
1937 if (!rtb_IntegerDelay2_m) {
1938 /* Gain: '<S162>/Gain' incorporates:
1939 * Constant: '<S162>/Constant1'
1940 * Constant: '<S162>/Constant5'
1941 * Product: '<S162>/Divide'
1942 * Sum: '<S162>/Add'
1943 */
1944 controlMCUSlugsMKII_B.Merge4 = (3.141592741E+000F - rtb_Abs2) / 2.0F *
1945 -1.0F;
1946 }
1947
1948 /* end of Outputs for SubSystem: '<S145>/Compute delta Left Turn' */
1949 /* S-Function "dsPIC_C_function_Call" Block: <S163>/C Function Call */
1950 controlMCUSlugsMKII_B.CFunctionCall_hb = mySin(controlMCUSlugsMKII_B.Merge4);
1951
1952 /* S-Function "dsPIC_C_function_Call" Block: <S163>/C Function Call1 */
1953 controlMCUSlugsMKII_B.CFunctionCall1_i = myCos(controlMCUSlugsMKII_B.Merge4);
1954
1955 /* Embedded MATLAB: '<S145>/Compute Circles' incorporates:
1956 * Constant: '<S142>/gravity1'
1957 * Product: '<S142>/Product'
1958 * Product: '<S142>/Product1'
1959 */
1960 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/Compute P/Get Circles/Compute Circles': '<S160>:1' */
1961 /* This block supports an embeddable subset of the MATLAB language. */
1962 /* See the help menu for details. */
1963 /* rotate the vector delta degrees */
1964 /* '<S160>:1:6' */
1965 /* '<S160>:1:7' */
1966 /* '<S160>:1:8' */
1967 /* compute M */
1968 if ((real_T)controlMCUSlugsMKII_B.CFunctionCall_hb < 0.0) {
1969 /* '<S160>:1:29' */
1970 /* '<S160>:1:30' */
1971 rtb_Abs2 = -controlMCUSlugsMKII_B.CFunctionCall_hb;
1972 } else {
1973 /* '<S160>:1:32' */
1974 rtb_Abs2 = controlMCUSlugsMKII_B.CFunctionCall_hb;
1975 }
1976
1977 if ((real_T)rtb_Abs2 > 0.01) {
1978 /* '<S160>:1:11' */
1979 /* '<S160>:1:12' */
1980 rtb_Abs2 = controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[0] *
1981 controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[0] /
1982 9.814999580E+000F / controlMCUSlugsMKII_B.CFunctionCall_hb;
1983 if ((real_T)rtb_Abs2 < 0.0) {
1984 /* '<S160>:1:29' */
1985 /* '<S160>:1:30' */
1986 rtb_Abs2 = -rtb_Abs2;
1987 } else {
1988 /* '<S160>:1:32' */
1989 }
1990 } else {
1991 /* '<S160>:1:14' */
1992 rtb_Abs2 = 0.0F;
1993 }
1994
1995 /* find the distance from WP */
1996 /* '<S160>:1:18' */
1997 rtb_sinphi = rtb_Abs2 * controlMCUSlugsMKII_B.CFunctionCall1_i;
1998
1999 /* find the center of the circle */
2000 /* '<S160>:1:21' */
2001 /* find the tangent points */
2002 /* '<S160>:1:24' */
2003 /* '<S160>:1:25' */
2004
2005 /* Gain: '<S155>/Deg2R' */
2006 rtb_Deg2R_o_idx = 1.745329238E-002F *
2007 controlMCUSlugsMKII_B.CFunctionCall_aj[1];
2008 rtb_Deg2R_o_idx_0 = 1.745329238E-002F *
2009 controlMCUSlugsMKII_B.CFunctionCall_aj[0];
2010
2011 /* S-Function "dsPIC_C_function_Call" Block: <S146>/C Function Call */
2012 getWP(controlMCUSlugsMKII_B.wp2,&controlMCUSlugsMKII_B.CFunctionCall_ap[0]);
2013
2014 /* Gain: '<S156>/Deg2R' */
2015 rtb_Ze = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_ap[0];
2016
2017 /* Trigonometry: '<S156>/sin(phi)' */
2018 rtb_Divide4_k = (real32_T)sin(rtb_Ze);
2019
2020 /* Sum: '<S156>/Sum1' incorporates:
2021 * Constant: '<S156>/const'
2022 * Product: '<S156>/Product1'
2023 * Product: '<S156>/sin(phi)^2'
2024 */
2025 rtb_Abs2 = 1.0F - rtb_Divide4_k * rtb_Divide4_k *
2026 controlMCUSlugsMKII_ConstB.Sum5_c;
2027
2028 /* Fcn: '<S156>/f' */
2029 if (rtb_Abs2 < 0.0F) {
2030 rtb_Abs2 = -((real32_T)sqrt(-rtb_Abs2));
2031 } else {
2032 rtb_Abs2 = (real32_T)sqrt(rtb_Abs2);
2033 }
2034
2035 /* Product: '<S156>/Rh' incorporates:
2036 * Constant: '<S156>/Re=equatorial radius'
2037 */
2038 rtb_Abs2 = 6.378137E+006F / rtb_Abs2;
2039
2040 /* Sum: '<S156>/Sum2' */
2041 rtb_Sum2 = controlMCUSlugsMKII_B.CFunctionCall_ap[2] + rtb_Abs2;
2042
2043 /* Trigonometry: '<S156>/cos(phi)' */
2044 rtb_Ze = (real32_T)cos(rtb_Ze);
2045
2046 /* Gain: '<S156>/Deg2R1' */
2047 rtb_Deg2R1 = 1.745329238E-002F * controlMCUSlugsMKII_B.CFunctionCall_ap[1];
2048
2049 /* Product: '<S156>/(Rh+h)cos(phi)*cos(lamb)=Xe' incorporates:
2050 * Trigonometry: '<S156>/cos(lamb)'
2051 */
2052 rtb_cosphi = rtb_Sum2 * rtb_Ze * (real32_T)cos(rtb_Deg2R1);
2053
2054 /* Product: '<S156>/(Rh+h)cos(phi)*sin(lamb)=Ye' incorporates:
2055 * Trigonometry: '<S156>/sin(lamb)'
2056 */
2057 rtb_Sum2 = rtb_Sum2 * rtb_Ze * (real32_T)sin(rtb_Deg2R1);
2058
2059 /* Product: '<S156>/Ze' incorporates:
2060 * Product: '<S156>/Rh(1-e^2)'
2061 * Sum: '<S156>/Sum4'
2062 */
2063 rtb_Divide4_k *= controlMCUSlugsMKII_ConstB.e2_f * rtb_Abs2 +
2064 controlMCUSlugsMKII_B.CFunctionCall_ap[2];
2065
2066 /* Gain: '<S144>/UEN 2 NEU' incorporates:
2067 * Fcn: '<S158>/11'
2068 * Fcn: '<S158>/12'
2069 * Fcn: '<S158>/13'
2070 * Fcn: '<S158>/21'
2071 * Fcn: '<S158>/22'
2072 * Fcn: '<S158>/23'
2073 * Fcn: '<S158>/31'
2074 * Fcn: '<S158>/32'
2075 * Fcn: '<S158>/33'
2076 * Product: '<S155>/Product1'
2077 * SignalConversion: '<S155>/TmpSignal ConversionAtProduct1Inport1'
2078 * Sum: '<S144>/Sum1'
2079 */
2080 tmp_0[0L] = (real32_T)cos(rtb_Deg2R_o_idx) * (real32_T)cos(rtb_Deg2R_o_idx_0);
2081 tmp_0[1L] = -((real32_T)sin(rtb_Deg2R_o_idx));
2082 tmp_0[2L] = (-((real32_T)sin(rtb_Deg2R_o_idx_0))) * (real32_T)cos
2083 (rtb_Deg2R_o_idx);
2084 tmp_0[3L] = (real32_T)sin(rtb_Deg2R_o_idx) * (real32_T)cos(rtb_Deg2R_o_idx_0);
2085 tmp_0[4L] = (real32_T)cos(rtb_Deg2R_o_idx);
2086 tmp_0[5L] = (-((real32_T)sin(rtb_Deg2R_o_idx))) * (real32_T)sin
2087 (rtb_Deg2R_o_idx_0);
2088 tmp_0[6L] = (real32_T)sin(rtb_Deg2R_o_idx_0);
2089 tmp_0[7L] = 0.0F;
2090 tmp_0[8L] = (real32_T)cos(rtb_Deg2R_o_idx_0);
2091 rtb_Deg2R_o_idx_0 = rtb_cosphi - controlMCUSlugsMKII_B.RhhcosphicoslambXe;
2092 rtb_Deg2R_o_idx = rtb_Sum2 - controlMCUSlugsMKII_B.RhhcosphisinlambYe;
2093 rtb_cosphi = rtb_Divide4_k - controlMCUSlugsMKII_B.Ze;
2094 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
2095 tmp_1[rtb_IC1] = tmp_0[rtb_IC1 + 6] * rtb_cosphi + (tmp_0[rtb_IC1 + 3] *
2096 rtb_Deg2R_o_idx + tmp_0[rtb_IC1] * rtb_Deg2R_o_idx_0);
2097 }
2098
2099 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
2100 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1] = 0.0F;
2101 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1] =
2102 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1] * tmp_1[0] +
2103 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1];
2104 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1] =
2105 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 3] * tmp_1[1] +
2106 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1];
2107 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1] =
2108 controlMCUSlugsMKII_ConstP.pooled49[rtb_IC1 + 6] * tmp_1[2] +
2109 controlMCUSlugsMKII_B.UEN2NEU[rtb_IC1];
2110 }
2111
2112 /* InitialCondition: '<S133>/IC' incorporates:
2113 * Sum: '<S133>/Add'
2114 */
2115 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_k) {
2116 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_k = FALSE;
2117 controlMCUSlugsMKII_B.IC_l = 50.0F;
2118 } else {
2119 controlMCUSlugsMKII_B.IC_l = rtb_Product1_m + rtb_sinphi;
2120 }
2121
2122 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
2123 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[0] =
2124 controlMCUSlugsMKII_B.Divide_n[0];
2125
2126 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
2127 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[0] =
2128 controlMCUSlugsMKII_B.UEN2NEU[0];
2129
2130 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
2131 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[1] =
2132 controlMCUSlugsMKII_B.Divide_n[1];
2133
2134 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
2135 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[1] =
2136 controlMCUSlugsMKII_B.UEN2NEU[1];
2137
2138 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
2139 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[2] =
2140 controlMCUSlugsMKII_B.Divide_n[2];
2141
2142 /* Update for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
2143 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[2] =
2144 controlMCUSlugsMKII_B.UEN2NEU[2];
2145 }
2146
2147 /* end of Outputs for SubSystem: '<S124>/Compute P' */
2148
2149 /* RelationalOperator: '<S140>/Switch Distance Less than?' */
2150 rtb_Add1_i = (controlMCUSlugsMKII_B.Switch3 >= (real_T)
2151 controlMCUSlugsMKII_B.Switch3_mv);
2152
2153 /* Embedded MATLAB: '<S124>/Embedded MATLAB Function1' incorporates:
2154 * Constant: '<S124>/Switch Time Limit (in Samples)'
2155 */
2156 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Navigation/Compute WP Index/Embedded MATLAB Function1': '<S135>:1' */
2157 /* Declare static variables */
2158 /* initialize the static variables */
2159 /* '<S135>:1:14' */
2160 controlMCUSlugsMKII_B.swIncrement = 0.0;
2161
2162 /* if we just had a flip */
2163 if ((rtb_Add1_i == 1) && (controlMCUSlugsMKII_DWork.oldSw == 0) &&
2164 (controlMCUSlugsMKII_DWork.internalTimer > 300U)) {
2165 /* '<S135>:1:17' */
2166 /* if enough time has passed that another switch is valid */
2167 /* '<S135>:1:19' */
2168 /* '<S135>:1:20' */
2169 controlMCUSlugsMKII_B.swIncrement = 1.0;
2170
2171 /* '<S135>:1:21' */
2172 controlMCUSlugsMKII_DWork.internalTimer = 0U;
2173 }
2174
2175 /* '<S135>:1:25' */
2176 tmp_4 = (uint32_T)((int32_T)controlMCUSlugsMKII_DWork.internalTimer + 1L);
2177 if ((int32_T)tmp_4 > 65535L) {
2178 controlMCUSlugsMKII_DWork.internalTimer = MAX_uint16_T;
2179 } else {
2180 controlMCUSlugsMKII_DWork.internalTimer = (uint16_T)tmp_4;
2181 }
2182
2183 /* '<S135>:1:26' */
2184 controlMCUSlugsMKII_DWork.oldSw = rtb_Add1_i;
2185
2186 /* Switch: '<S137>/Switch3' incorporates:
2187 * RelationalOperator: '<S137>/Relational Operator2'
2188 * S-Function (sfix_udelay): '<S137>/Integer Delay3'
2189 */
2190 if ((controlMCUSlugsMKII_B.IC_l == controlMCUSlugsMKII_B.IC_l) > 0) {
2191 controlMCUSlugsMKII_B.Switch3_e = controlMCUSlugsMKII_B.IC_l;
2192 } else {
2193 controlMCUSlugsMKII_B.Switch3_e =
2194 controlMCUSlugsMKII_DWork.IntegerDelay3_X_n;
2195 }
2196
2197 /* S-Function "dsPIC_C_function_Call" Block: <S126>/Set Log Floats 1-3 [navSupport.c] */
2198 setLogFloat1(controlMCUSlugsMKII_B.L1_vec);
2199
2200 /* Product: '<S127>/Divide' incorporates:
2201 * Constant: '<S16>/Gravity'
2202 */
2203 controlMCUSlugsMKII_B.Divide = rtb_Product_c / 9.814999580E+000F;
2204
2205 /* S-Function (sfix_udelay): '<S271>/Integer Delay3' */
2206 rtb_Ze = controlMCUSlugsMKII_DWork.IntegerDelay3_X_ch;
2207
2208 /* S-Function "dsPIC_C_function_Call" Block: <S272>/C Function Call */
2209 controlMCUSlugsMKII_B.CFunctionCall_g = myAtan(controlMCUSlugsMKII_B.Divide);
2210
2211 /* Switch: '<S271>/Switch3' incorporates:
2212 * RelationalOperator: '<S271>/Relational Operator2'
2213 */
2214 if ((controlMCUSlugsMKII_B.CFunctionCall_g ==
2215 controlMCUSlugsMKII_B.CFunctionCall_g) > 0) {
2216 controlMCUSlugsMKII_B.Switch3_c = controlMCUSlugsMKII_B.CFunctionCall_g;
2217 } else {
2218 controlMCUSlugsMKII_B.Switch3_c = rtb_Ze;
2219 }
2220
2221 /* Update for S-Function (sfix_udelay): '<S261>/Integer Delay3' */
2222 controlMCUSlugsMKII_DWork.IntegerDelay3_X_lj = controlMCUSlugsMKII_B.Switch3_h;
2223
2224 /* Update for S-Function (sfix_udelay): '<S124>/Integer Delay2' */
2225 controlMCUSlugsMKII_DWork.IntegerDelay2_X = controlMCUSlugsMKII_B.swIncrement;
2226
2227 /* Update for S-Function (sfix_udelay): '<S138>/Integer Delay1' */
2228 controlMCUSlugsMKII_DWork.IntegerDelay1_X_p =
2229 controlMCUSlugsMKII_B.HitCrossing1;
2230
2231 /* Update for S-Function (sfix_udelay): '<S139>/Integer Delay2' */
2232 controlMCUSlugsMKII_DWork.IntegerDelay2_X_l = controlMCUSlugsMKII_B.IC;
2233
2234 /* Update for S-Function (sfix_udelay): '<S132>/Integer Delay3' */
2235 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b3 =
2236 controlMCUSlugsMKII_B.Switch3_nn;
2237
2238 /* Update for S-Function (sfix_udelay): '<S254>/Integer Delay3' */
2239 controlMCUSlugsMKII_DWork.IntegerDelay3_X_g = controlMCUSlugsMKII_B.Switch3_a;
2240
2241 /* Update for S-Function (sfix_udelay): '<S268>/Integer Delay3' */
2242 controlMCUSlugsMKII_DWork.IntegerDelay3_X_f = controlMCUSlugsMKII_B.Switch3_m;
2243
2244 /* Update for S-Function (sfix_udelay): '<S124>/Integer Delay3' */
2245 controlMCUSlugsMKII_DWork.IntegerDelay3_X_a = controlMCUSlugsMKII_B.Switch3_e;
2246
2247 /* Update for S-Function (sfix_udelay): '<S140>/Integer Delay1' */
2248 controlMCUSlugsMKII_DWork.IntegerDelay1_X_fi = controlMCUSlugsMKII_B.wp0;
2249
2250 /* Update for S-Function (sfix_udelay): '<S180>/Integer Delay1' */
2251 controlMCUSlugsMKII_DWork.IntegerDelay1_X_i = controlMCUSlugsMKII_B.IC_e;
2252
2253 /* Update for S-Function (sfix_udelay): '<S180>/Integer Delay2' */
2254 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[0] =
2255 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[1];
2256 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[1] = controlMCUSlugsMKII_B.IC_e;
2257
2258 /* Update for UnitDelay: '<S196>/UD' */
2259 controlMCUSlugsMKII_DWork.UD_DSTATE = controlMCUSlugsMKII_B.Switch[0];
2260
2261 /* Update for UnitDelay: '<S199>/UD' */
2262 controlMCUSlugsMKII_DWork.UD_DSTATE_e = controlMCUSlugsMKII_B.Switch[1];
2263
2264 /* Update for UnitDelay: '<S202>/UD' */
2265 controlMCUSlugsMKII_DWork.UD_DSTATE_h = controlMCUSlugsMKII_B.Switch[2];
2266
2267 /* Update for S-Function (sfix_udelay): '<S182>/Integer Delay3' */
2268 controlMCUSlugsMKII_DWork.IntegerDelay3_X = controlMCUSlugsMKII_B.Switch3;
2269
2270 /* Update for S-Function (sfix_udelay): '<S137>/Integer Delay3' */
2271 controlMCUSlugsMKII_DWork.IntegerDelay3_X_n = controlMCUSlugsMKII_B.Switch3_e;
2272
2273 /* Update for S-Function (sfix_udelay): '<S271>/Integer Delay3' */
2274 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ch = controlMCUSlugsMKII_B.Switch3_c;
2275
2276 /* end of Outputs for SubSystem: '<S2>/Navigation' */
2277 /* S-Function "dsPIC_C_function_Call" Block: <Root>/[navSupport.c] */
2278 getPidIdx(((uint8_T)8U),&controlMCUSlugsMKII_B.navSupportc_n[0]);
2279
2280 /* Outputs for atomic SubSystem: '<S2>/Longitudinal Channel' */
2281
2282 /* Sum: '<S91>/Add' incorporates:
2283 * Constant: '<S91>/Constant from Model'
2284 * Constant: '<S91>/Constant'
2285 * Gain: '<S107>/Unit Conversion'
2286 * Product: '<S91>/Divide'
2287 * Saturate: '<S91>/[0 1000]'
2288 */
2289 controlMCUSlugsMKII_B.Add_g = 1.0F - 3.280839920E+000F * rt_SATURATE(rtb_u020,
2290 0.0F, 1000.0F) / 145442.0F;
2291
2292 /* S-Function "dsPIC_C_function_Call" Block: <S108>/C Function Call */
2293 controlMCUSlugsMKII_B.CFunctionCall_ab = myPow(controlMCUSlugsMKII_B.Add_g,
2294 4.255876064F);
2295
2296 /* Product: '<S91>/Divide1' incorporates:
2297 * Constant: '<S91>/Rho_0 (Kg//m^3)'
2298 */
2299 rtb_cosphi = controlMCUSlugsMKII_B.CFunctionCall_ab * 1.225000024E+000F;
2300
2301 /* Product: '<S93>/Divide2' incorporates:
2302 * Constant: '<S93>/a'
2303 * Saturate: '<S93>/[ 0.01 50000]'
2304 */
2305 rtb_Divide2 = 2.0F * controlMCUSlugsMKII_B.GetDynamicPnavSupportc /
2306 rt_SATURATE(rtb_cosphi, 9.999999776E-003F, 50000.0F);
2307
2308 /* Embedded MATLAB: '<S113>/negprotect' */
2309 controlMCUSlugsM_negprotect(rtb_Divide2,
2310 &controlMCUSlugsMKII_B.sf_negprotect_c);
2311
2312 /* S-Function "dsPIC_C_function_Call" Block: <S113>/C Function Call */
2313 controlMCUSlugsMKII_B.CFunctionCall_m4 = mySqrt
2314 (controlMCUSlugsMKII_B.sf_negprotect_c.zpVal);
2315
2316 /* Switch: '<S99>/Switch3' incorporates:
2317 * RelationalOperator: '<S99>/Relational Operator2'
2318 * S-Function (sfix_udelay): '<S99>/Integer Delay3'
2319 */
2320 if ((controlMCUSlugsMKII_B.CFunctionCall_m4 ==
2321 controlMCUSlugsMKII_B.CFunctionCall_m4) > 0) {
2322 controlMCUSlugsMKII_B.Switch3_f = controlMCUSlugsMKII_B.CFunctionCall_m4;
2323 } else {
2324 controlMCUSlugsMKII_B.Switch3_f =
2325 controlMCUSlugsMKII_DWork.IntegerDelay3_X_i;
2326 }
2327
2328 /* Embedded MATLAB: '<S88>/Embedded MATLAB Function' */
2329 cont_EmbeddedMATLABFunction(controlMCUSlugsMKII_B.Switch3_f, 0.01, 0.5,
2330 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_p,
2331 &controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p);
2332
2333 /* RelationalOperator: '<S102>/Compare' incorporates:
2334 * Constant: '<S102>/Constant'
2335 */
2336 rtb_Add1_i = (controlMCUSlugsMKII_B.Switch3_f <= 10.0F);
2337
2338 /* Embedded MATLAB: '<S90>/Embedded MATLAB Function' */
2339 cont_EmbeddedMATLABFunction(controlMCUSlugsMKII_B.Switch3_f, 0.01, 0.032,
2340 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_i,
2341 &controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i);
2342
2343 /* Switch: '<S15>/Schedule LPF' */
2344 if (rtb_Add1_i > 0) {
2345 controlMCUSlugsMKII_B.ScheduleLPF =
2346 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_p.y;
2347 } else {
2348 controlMCUSlugsMKII_B.ScheduleLPF =
2349 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_i.y;
2350 }
2351
2352 /* Switch: '<S15>/Switch' incorporates:
2353 * Saturate: '<S2>/[-20 20]1'
2354 */
2355 if (controlMCUSlugsMKII_B.wpFlynavSupportc > 0) {
2356 rtb_cosphi = rt_SATURATE(controlMCUSlugsMKII_B.Reshape1[2], 170.0F, 350.0F);
2357 } else {
2358 rtb_cosphi = controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[1];
2359 }
2360
2361 /* RateLimiter: '<S15>/Rate Limiter' */
2362 rtb_Abs2 = rtb_cosphi - controlMCUSlugsMKII_DWork.PrevY;
2363 if (rtb_Abs2 > 7.000000030E-002F) {
2364 rtb_cosphi = controlMCUSlugsMKII_DWork.PrevY + 7.000000030E-002F;
2365 } else {
2366 if (rtb_Abs2 < -5.000000075E-002F) {
2367 rtb_cosphi = controlMCUSlugsMKII_DWork.PrevY + -5.000000075E-002F;
2368 }
2369 }
2370
2371 controlMCUSlugsMKII_DWork.PrevY = rtb_cosphi;
2372
2373 /* Sum: '<S15>/Add2' */
2374 rtb_cosphi -= rtb_u020;
2375
2376 /* Switch: '<S97>/Switch3' incorporates:
2377 * RelationalOperator: '<S97>/Relational Operator2'
2378 * S-Function (sfix_udelay): '<S97>/Integer Delay3'
2379 */
2380 if ((rtb_cosphi == rtb_cosphi) > 0) {
2381 controlMCUSlugsMKII_B.Switch3_c1 = rtb_cosphi;
2382 } else {
2383 controlMCUSlugsMKII_B.Switch3_c1 =
2384 controlMCUSlugsMKII_DWork.IntegerDelay3_X_m;
2385 }
2386
2387 /* Product: '<S94>/Product1' */
2388 rtb_sinphi = controlMCUSlugsMKII_B.Switch3_c1 *
2389 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[0];
2390
2391 /* Sum: '<S94>/Sum2' incorporates:
2392 * Gain: '<S94>/Gain'
2393 * Memory: '<S94>/Memory1'
2394 * Product: '<S94>/Product4'
2395 */
2396 rtb_cosphi = (9.999999776E-003F * controlMCUSlugsMKII_B.Switch3_c1 *
2397 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[1] +
2398 controlMCUSlugsMKII_DWork.Memory1_PreviousInput) + rtb_sinphi;
2399
2400 /* Switch: '<S94>/AntiWindup' incorporates:
2401 * Constant: '<S94>/Constant5'
2402 * Logic: '<S94>/Logical Operator'
2403 * RelationalOperator: '<S94>/Relational Operator'
2404 * RelationalOperator: '<S94>/Relational Operator1'
2405 */
2406 if ((rtb_cosphi > controlMCUSlugsMKII_ConstB.Add4) && (rtb_cosphi <
2407 controlMCUSlugsMKII_ConstB.Add3)) {
2408 rtb_DataTypeConversion = controlMCUSlugsMKII_B.Switch3_c1;
2409 } else {
2410 rtb_DataTypeConversion = 0.0;
2411 }
2412
2413 /* Switch: '<S118>/Switch3' incorporates:
2414 * RelationalOperator: '<S118>/Relational Operator2'
2415 * S-Function (sfix_udelay): '<S118>/Integer Delay3'
2416 */
2417 if ((rtb_DataTypeConversion == rtb_DataTypeConversion) > 0) {
2418 controlMCUSlugsMKII_B.Switch3_n = rtb_DataTypeConversion;
2419 } else {
2420 controlMCUSlugsMKII_B.Switch3_n =
2421 controlMCUSlugsMKII_DWork.IntegerDelay3_X_c;
2422 }
2423
2424 /* Switch: '<S116>/Switch1' incorporates:
2425 * Constant: '<S116>/Constant'
2426 * Constant: '<S116>/Constant1'
2427 * Constant: '<S116>/Constant2'
2428 * Constant: '<S116>/Constant3'
2429 * Constant: '<S116>/Constant5'
2430 * Product: '<S116>/Product'
2431 * Product: '<S116>/Product1'
2432 * Product: '<S116>/Product2'
2433 * Product: '<S116>/Product3'
2434 * S-Function (sfix_udelay): '<S116>/Integer Delay'
2435 * S-Function (sfix_udelay): '<S116>/Integer Delay1'
2436 * S-Function (sfix_udelay): '<S116>/Integer Delay2'
2437 * Sum: '<S116>/Subtract'
2438 * Sum: '<S116>/Subtract1'
2439 */
2440 if (controlMCUSlugsMKII_B.ManualorAutonavSupportc > 0) {
2441 rtb_cosphi = 0.0F;
2442 } else {
2443 rtb_cosphi = (((real32_T)(controlMCUSlugsMKII_B.Switch3_n *
2444 3.3333334326744080E-001) + (real32_T)
2445 (controlMCUSlugsMKII_DWork.IntegerDelay_X *
2446 1.3333333730697632E+000)) + (real32_T)
2447 (controlMCUSlugsMKII_DWork.IntegerDelay1_X[0] *
2448 3.3333334326744080E-001)) * 4.999999888E-003F +
2449 controlMCUSlugsMKII_DWork.IntegerDelay2_X_lq;
2450 }
2451
2452 /* Switch: '<S117>/Switch3' incorporates:
2453 * RelationalOperator: '<S117>/Relational Operator2'
2454 * S-Function (sfix_udelay): '<S117>/Integer Delay3'
2455 */
2456 if ((rtb_cosphi == rtb_cosphi) > 0) {
2457 controlMCUSlugsMKII_B.Switch3_b = rtb_cosphi;
2458 } else {
2459 controlMCUSlugsMKII_B.Switch3_b =
2460 controlMCUSlugsMKII_DWork.IntegerDelay3_X_at;
2461 }
2462
2463 /* Sum: '<S94>/Add2' incorporates:
2464 * Product: '<S94>/Product'
2465 */
2466 rtb_Ze = controlMCUSlugsMKII_B.Switch3_b *
2467 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[1] + rtb_sinphi;
2468
2469 /* Switch: '<S115>/Switch2' incorporates:
2470 * RelationalOperator: '<S115>/LowerRelop1'
2471 */
2472 if (rtb_Ze > controlMCUSlugsMKII_ConstB.Add3) {
2473 rtb_Deg2R1 = controlMCUSlugsMKII_ConstB.Add3;
2474 } else {
2475 /* Switch: '<S115>/Switch' incorporates:
2476 * RelationalOperator: '<S115>/UpperRelop'
2477 */
2478 if (rtb_Ze < controlMCUSlugsMKII_ConstB.Add4) {
2479 rtb_Deg2R1 = controlMCUSlugsMKII_ConstB.Add4;
2480 } else {
2481 rtb_Deg2R1 = rtb_Ze;
2482 }
2483 }
2484
2485 /* Saturate: '<S15>/Theta_c Limit' */
2486 rtb_Abs2 = rt_SATURATE(rtb_Deg2R1, -3.490658402E-001F, 3.490658402E-001F);
2487
2488 /* Embedded MATLAB: '<S15>/myMux Fun1' */
2489 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Longitudinal Channel/myMux Fun1': '<S103>:1' */
2490 /* This block supports an embeddable subset of the MATLAB language. */
2491 /* See the help menu for details. */
2492 /* '<S103>:1:5' */
2493 controlMCUSlugsMKII_B.y_j[0] = controlMCUSlugsMKII_B.ScheduleLPF;
2494 controlMCUSlugsMKII_B.y_j[1] = rtb_Abs2;
2495
2496 /* S-Function "dsPIC_C_function_Call" Block: <S15>/Get XYZ [navSupport.c] */
2497 setNavLong(controlMCUSlugsMKII_B.y_j);
2498
2499 /* Switch: '<S100>/Switch3' incorporates:
2500 * RelationalOperator: '<S100>/Relational Operator2'
2501 * S-Function (sfix_udelay): '<S100>/Integer Delay3'
2502 */
2503 if ((controlMCUSlugsMKII_B.y[0] == controlMCUSlugsMKII_B.y[0]) > 0) {
2504 controlMCUSlugsMKII_B.Switch3_mx = controlMCUSlugsMKII_B.y[0];
2505 } else {
2506 controlMCUSlugsMKII_B.Switch3_mx =
2507 controlMCUSlugsMKII_DWork.IntegerDelay3_X_fk;
2508 }
2509
2510 /* Embedded MATLAB: '<S89>/Embedded MATLAB Function' */
2511 cont_EmbeddedMATLABFunction(controlMCUSlugsMKII_B.Switch3_mx, 0.01, 0.32,
2512 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_l,
2513 &controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l);
2514
2515 /* Sum: '<S15>/Add' */
2516 rtb_Deg2R1 = controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[0] -
2517 controlMCUSlugsMKII_B.ScheduleLPF;
2518
2519 /* Sum: '<S92>/Add3' incorporates:
2520 * Constant: '<S92>/SaturationLimit'
2521 */
2522 rtb_sinphi = 1.0F - controlMCUSlugsMKII_B.DataTypeConversion;
2523
2524 /* Switch: '<S96>/Switch3' incorporates:
2525 * RelationalOperator: '<S96>/Relational Operator2'
2526 * S-Function (sfix_udelay): '<S96>/Integer Delay3'
2527 */
2528 if ((rtb_Deg2R1 == rtb_Deg2R1) > 0) {
2529 controlMCUSlugsMKII_B.Switch3_kr = rtb_Deg2R1;
2530 } else {
2531 controlMCUSlugsMKII_B.Switch3_kr =
2532 controlMCUSlugsMKII_DWork.IntegerDelay3_X_e;
2533 }
2534
2535 /* Sum: '<S92>/Add1' incorporates:
2536 * Constant: '<S92>/delayTime'
2537 * Product: '<S92>/Product1'
2538 * Product: '<S92>/Product2'
2539 * Product: '<S92>/Product3'
2540 * S-Function (sfix_udelay): '<S92>/NDelays'
2541 * Sum: '<S92>/Sum'
2542 */
2543 rtb_Deg2R1 = (controlMCUSlugsMKII_B.Switch3_kr -
2544 controlMCUSlugsMKII_DWork.NDelays_X[0]) / 5.000000075E-002F *
2545 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[2] +
2546 controlMCUSlugsMKII_B.Switch3_kr *
2547 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[0];
2548
2549 /* Sum: '<S92>/Sum2' incorporates:
2550 * Gain: '<S92>/Gain'
2551 * Memory: '<S92>/Memory1'
2552 * Product: '<S92>/Product4'
2553 */
2554 rtb_cosphi = (9.999999776E-003F * controlMCUSlugsMKII_B.Switch3_kr *
2555 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[1] +
2556 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_e) + rtb_Deg2R1;
2557
2558 /* Sum: '<S92>/Add4' incorporates:
2559 * Constant: '<S92>/SaturationLimit1'
2560 */
2561 rtb_Sum2 = 0.0F - controlMCUSlugsMKII_B.DataTypeConversion;
2562
2563 /* Switch: '<S92>/AntiWindup' incorporates:
2564 * Constant: '<S92>/Constant5'
2565 * Logic: '<S92>/Logical Operator'
2566 * RelationalOperator: '<S92>/Relational Operator'
2567 * RelationalOperator: '<S92>/Relational Operator1'
2568 */
2569 if ((rtb_cosphi > rtb_Sum2) && (rtb_cosphi < rtb_sinphi)) {
2570 rtb_DataTypeConversion = controlMCUSlugsMKII_B.Switch3_kr;
2571 } else {
2572 rtb_DataTypeConversion = 0.0;
2573 }
2574
2575 /* Switch: '<S111>/Switch3' incorporates:
2576 * RelationalOperator: '<S111>/Relational Operator2'
2577 * S-Function (sfix_udelay): '<S111>/Integer Delay3'
2578 */
2579 if ((rtb_DataTypeConversion == rtb_DataTypeConversion) > 0) {
2580 controlMCUSlugsMKII_B.Switch3_k = rtb_DataTypeConversion;
2581 } else {
2582 controlMCUSlugsMKII_B.Switch3_k =
2583 controlMCUSlugsMKII_DWork.IntegerDelay3_X_l;
2584 }
2585
2586 /* Switch: '<S110>/Switch1' incorporates:
2587 * Constant: '<S110>/Constant'
2588 * Constant: '<S110>/Constant1'
2589 * Constant: '<S110>/Constant2'
2590 * Constant: '<S110>/Constant3'
2591 * Constant: '<S110>/Constant5'
2592 * Product: '<S110>/Product'
2593 * Product: '<S110>/Product1'
2594 * Product: '<S110>/Product2'
2595 * Product: '<S110>/Product3'
2596 * S-Function (sfix_udelay): '<S110>/Integer Delay'
2597 * S-Function (sfix_udelay): '<S110>/Integer Delay1'
2598 * S-Function (sfix_udelay): '<S110>/Integer Delay2'
2599 * Sum: '<S110>/Subtract'
2600 * Sum: '<S110>/Subtract1'
2601 */
2602 if (controlMCUSlugsMKII_B.ManualorAutonavSupportc > 0) {
2603 rtb_cosphi = 0.0F;
2604 } else {
2605 rtb_cosphi = (((real32_T)(controlMCUSlugsMKII_B.Switch3_k *
2606 3.3333334326744080E-001) + (real32_T)
2607 (controlMCUSlugsMKII_DWork.IntegerDelay_X_i *
2608 1.3333333730697632E+000)) + (real32_T)
2609 (controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[0] *
2610 3.3333334326744080E-001)) * 4.999999888E-003F +
2611 controlMCUSlugsMKII_DWork.IntegerDelay2_X_d;
2612 }
2613
2614 /* Switch: '<S112>/Switch3' incorporates:
2615 * RelationalOperator: '<S112>/Relational Operator2'
2616 * S-Function (sfix_udelay): '<S112>/Integer Delay3'
2617 */
2618 if ((rtb_cosphi == rtb_cosphi) > 0) {
2619 controlMCUSlugsMKII_B.Switch3_p = rtb_cosphi;
2620 } else {
2621 controlMCUSlugsMKII_B.Switch3_p =
2622 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ex;
2623 }
2624
2625 /* Sum: '<S92>/Add2' incorporates:
2626 * Product: '<S92>/Product'
2627 */
2628 rtb_Divide4_k = controlMCUSlugsMKII_B.Switch3_p *
2629 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[1] + rtb_Deg2R1;
2630
2631 /* Switch: '<S109>/Switch2' incorporates:
2632 * RelationalOperator: '<S109>/LowerRelop1'
2633 */
2634 if (!(rtb_Divide4_k > rtb_sinphi)) {
2635 /* Switch: '<S109>/Switch' incorporates:
2636 * RelationalOperator: '<S109>/UpperRelop'
2637 */
2638 if (!(rtb_Divide4_k < rtb_Sum2)) {
2639 rtb_Sum2 = rtb_Divide4_k;
2640 }
2641
2642 rtb_sinphi = rtb_Sum2;
2643 }
2644
2645 /* Sum: '<S15>/Add1' incorporates:
2646 * Product: '<S15>/Product2'
2647 */
2648 rtb_sinphi = (rtb_sinphi + controlMCUSlugsMKII_B.DataTypeConversion) +
2649 controlMCUSlugsMKII_B.navSupportc_n[0] * controlMCUSlugsMKII_B.y[1];
2650
2651 /* Sum: '<S15>/Add3' */
2652 rtb_Abs2 -= controlMCUSlugsMKII_B.y[1];
2653
2654 /* Sum: '<S95>/Add3' incorporates:
2655 * Constant: '<S95>/SaturationLimit'
2656 */
2657 rtb_Deg2R1 = 2.617993951E-001F - controlMCUSlugsMKII_B.DataTypeConversion_c;
2658
2659 /* Switch: '<S98>/Switch3' incorporates:
2660 * RelationalOperator: '<S98>/Relational Operator2'
2661 * S-Function (sfix_udelay): '<S98>/Integer Delay3'
2662 */
2663 if ((rtb_Abs2 == rtb_Abs2) > 0) {
2664 controlMCUSlugsMKII_B.Switch3_f3 = rtb_Abs2;
2665 } else {
2666 controlMCUSlugsMKII_B.Switch3_f3 =
2667 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nv;
2668 }
2669
2670 /* Sum: '<S95>/Add1' incorporates:
2671 * Constant: '<S95>/delayTime'
2672 * Product: '<S95>/Product1'
2673 * Product: '<S95>/Product2'
2674 * Product: '<S95>/Product3'
2675 * S-Function (sfix_udelay): '<S95>/NDelays'
2676 * Sum: '<S95>/Sum'
2677 */
2678 rtb_Abs2 = (controlMCUSlugsMKII_B.Switch3_f3 -
2679 controlMCUSlugsMKII_DWork.NDelays_X_c[0]) / 5.000000075E-002F *
2680 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[2] +
2681 controlMCUSlugsMKII_B.Switch3_f3 *
2682 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[0];
2683
2684 /* Sum: '<S95>/Sum2' incorporates:
2685 * Gain: '<S95>/Gain'
2686 * Memory: '<S95>/Memory1'
2687 * Product: '<S95>/Product4'
2688 */
2689 rtb_cosphi = (9.999999776E-003F * controlMCUSlugsMKII_B.Switch3_f3 *
2690 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[1] +
2691 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_f) + rtb_Abs2;
2692
2693 /* Sum: '<S95>/Add4' incorporates:
2694 * Constant: '<S95>/SaturationLimit1'
2695 */
2696 rtb_Sum2 = -2.617993951E-001F - controlMCUSlugsMKII_B.DataTypeConversion_c;
2697
2698 /* Switch: '<S95>/AntiWindup' incorporates:
2699 * Constant: '<S95>/Constant5'
2700 * Logic: '<S95>/Logical Operator'
2701 * RelationalOperator: '<S95>/Relational Operator'
2702 * RelationalOperator: '<S95>/Relational Operator1'
2703 */
2704 if ((rtb_cosphi > rtb_Sum2) && (rtb_cosphi < rtb_Deg2R1)) {
2705 rtb_DataTypeConversion = controlMCUSlugsMKII_B.Switch3_f3;
2706 } else {
2707 rtb_DataTypeConversion = 0.0;
2708 }
2709
2710 /* Switch: '<S121>/Switch3' incorporates:
2711 * RelationalOperator: '<S121>/Relational Operator2'
2712 * S-Function (sfix_udelay): '<S121>/Integer Delay3'
2713 */
2714 if ((rtb_DataTypeConversion == rtb_DataTypeConversion) > 0) {
2715 controlMCUSlugsMKII_B.Switch3_o = rtb_DataTypeConversion;
2716 } else {
2717 controlMCUSlugsMKII_B.Switch3_o =
2718 controlMCUSlugsMKII_DWork.IntegerDelay3_X_k;
2719 }
2720
2721 /* Switch: '<S120>/Switch1' incorporates:
2722 * Constant: '<S120>/Constant'
2723 * Constant: '<S120>/Constant1'
2724 * Constant: '<S120>/Constant2'
2725 * Constant: '<S120>/Constant3'
2726 * Constant: '<S120>/Constant5'
2727 * Product: '<S120>/Product'
2728 * Product: '<S120>/Product1'
2729 * Product: '<S120>/Product2'
2730 * Product: '<S120>/Product3'
2731 * S-Function (sfix_udelay): '<S120>/Integer Delay'
2732 * S-Function (sfix_udelay): '<S120>/Integer Delay1'
2733 * S-Function (sfix_udelay): '<S120>/Integer Delay2'
2734 * Sum: '<S120>/Subtract'
2735 * Sum: '<S120>/Subtract1'
2736 */
2737 if (controlMCUSlugsMKII_B.ManualorAutonavSupportc > 0) {
2738 rtb_cosphi = 0.0F;
2739 } else {
2740 rtb_cosphi = (((real32_T)(controlMCUSlugsMKII_B.Switch3_o *
2741 3.3333334326744080E-001) + (real32_T)
2742 (controlMCUSlugsMKII_DWork.IntegerDelay_X_g *
2743 1.3333333730697632E+000)) + (real32_T)
2744 (controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[0] *
2745 3.3333334326744080E-001)) * 4.999999888E-003F +
2746 controlMCUSlugsMKII_DWork.IntegerDelay2_X_n;
2747 }
2748
2749 /* Switch: '<S122>/Switch3' incorporates:
2750 * RelationalOperator: '<S122>/Relational Operator2'
2751 * S-Function (sfix_udelay): '<S122>/Integer Delay3'
2752 */
2753 if ((rtb_cosphi == rtb_cosphi) > 0) {
2754 controlMCUSlugsMKII_B.Switch3_el = rtb_cosphi;
2755 } else {
2756 controlMCUSlugsMKII_B.Switch3_el =
2757 controlMCUSlugsMKII_DWork.IntegerDelay3_X_p;
2758 }
2759
2760 /* Sum: '<S95>/Add2' incorporates:
2761 * Product: '<S95>/Product'
2762 */
2763 rtb_Abs2 += controlMCUSlugsMKII_B.Switch3_el *
2764 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[1];
2765
2766 /* Switch: '<S119>/Switch2' incorporates:
2767 * RelationalOperator: '<S119>/LowerRelop1'
2768 */
2769 if (!(rtb_Abs2 > rtb_Deg2R1)) {
2770 /* Switch: '<S119>/Switch' incorporates:
2771 * RelationalOperator: '<S119>/UpperRelop'
2772 */
2773 if (!(rtb_Abs2 < rtb_Sum2)) {
2774 rtb_Sum2 = rtb_Abs2;
2775 }
2776
2777 rtb_Deg2R1 = rtb_Sum2;
2778 }
2779
2780 /* Saturate: '<S15>/[-60 60]' */
2781 controlMCUSlugsMKII_B.u060 = rt_SATURATE
2782 (controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_l.y, -60.0F, 60.0F);
2783
2784 /* S-Function "dsPIC_C_function_Call" Block: <S101>/C Function Call1 */
2785 controlMCUSlugsMKII_B.CFunctionCall1_b = myCos(controlMCUSlugsMKII_B.u060);
2786
2787 /* Sum: '<S15>/Add4' incorporates:
2788 * Constant: '<S15>/Constant2'
2789 * Constant: '<S15>/Constant4'
2790 * Product: '<S15>/Product'
2791 * Product: '<S15>/Product1'
2792 * Sum: '<S15>/Add5'
2793 */
2794 rtb_Deg2R1 = (1.0F / controlMCUSlugsMKII_B.CFunctionCall1_b - 1.0F) *
2795 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[2] + (rtb_Deg2R1 +
2796 controlMCUSlugsMKII_B.DataTypeConversion_c);
2797
2798 /* Saturate: '<S15>/Elevator Limit' */
2799 rtb_u020 = rt_SATURATE(rtb_Deg2R1, -2.617993951E-001F, 2.617993951E-001F);
2800
2801 /* Saturate: '<S15>/Throttle Limit' */
2802 rtb_Product1_m = rt_SATURATE(rtb_sinphi, 0.0F, 1.0F);
2803
2804 /* Update for S-Function (sfix_udelay): '<S99>/Integer Delay3' */
2805 controlMCUSlugsMKII_DWork.IntegerDelay3_X_i = controlMCUSlugsMKII_B.Switch3_f;
2806
2807 /* Update for S-Function (sfix_udelay): '<S97>/Integer Delay3' */
2808 controlMCUSlugsMKII_DWork.IntegerDelay3_X_m = controlMCUSlugsMKII_B.Switch3_c1;
2809
2810 /* Update for S-Function (sfix_udelay): '<S116>/Integer Delay2' */
2811 controlMCUSlugsMKII_DWork.IntegerDelay2_X_lq = controlMCUSlugsMKII_B.Switch3_b;
2812
2813 /* Update for Memory: '<S94>/Memory1' */
2814 controlMCUSlugsMKII_DWork.Memory1_PreviousInput = rtb_Ze;
2815
2816 /* Update for S-Function (sfix_udelay): '<S118>/Integer Delay3' */
2817 controlMCUSlugsMKII_DWork.IntegerDelay3_X_c = controlMCUSlugsMKII_B.Switch3_n;
2818
2819 /* Update for S-Function (sfix_udelay): '<S116>/Integer Delay' */
2820 controlMCUSlugsMKII_DWork.IntegerDelay_X = controlMCUSlugsMKII_B.Switch3_n;
2821
2822 /* Update for S-Function (sfix_udelay): '<S116>/Integer Delay1' */
2823 controlMCUSlugsMKII_DWork.IntegerDelay1_X[0] =
2824 controlMCUSlugsMKII_DWork.IntegerDelay1_X[1];
2825 controlMCUSlugsMKII_DWork.IntegerDelay1_X[1] = controlMCUSlugsMKII_B.Switch3_n;
2826
2827 /* Update for S-Function (sfix_udelay): '<S117>/Integer Delay3' */
2828 controlMCUSlugsMKII_DWork.IntegerDelay3_X_at = controlMCUSlugsMKII_B.Switch3_b;
2829
2830 /* Update for S-Function (sfix_udelay): '<S100>/Integer Delay3' */
2831 controlMCUSlugsMKII_DWork.IntegerDelay3_X_fk =
2832 controlMCUSlugsMKII_B.Switch3_mx;
2833
2834 /* Update for S-Function (sfix_udelay): '<S96>/Integer Delay3' */
2835 controlMCUSlugsMKII_DWork.IntegerDelay3_X_e = controlMCUSlugsMKII_B.Switch3_kr;
2836
2837 /* Update for S-Function (sfix_udelay): '<S92>/NDelays' */
2838 controlMCUSlugsMKII_DWork.NDelays_X[0] = controlMCUSlugsMKII_DWork.NDelays_X[1];
2839 controlMCUSlugsMKII_DWork.NDelays_X[1] = controlMCUSlugsMKII_DWork.NDelays_X[2];
2840 controlMCUSlugsMKII_DWork.NDelays_X[2] = controlMCUSlugsMKII_DWork.NDelays_X[3];
2841 controlMCUSlugsMKII_DWork.NDelays_X[3] = controlMCUSlugsMKII_DWork.NDelays_X[4];
2842 controlMCUSlugsMKII_DWork.NDelays_X[4] = controlMCUSlugsMKII_B.Switch3_kr;
2843
2844 /* Update for S-Function (sfix_udelay): '<S110>/Integer Delay2' */
2845 controlMCUSlugsMKII_DWork.IntegerDelay2_X_d = controlMCUSlugsMKII_B.Switch3_p;
2846
2847 /* Update for Memory: '<S92>/Memory1' */
2848 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_e = rtb_Divide4_k;
2849
2850 /* Update for S-Function (sfix_udelay): '<S111>/Integer Delay3' */
2851 controlMCUSlugsMKII_DWork.IntegerDelay3_X_l = controlMCUSlugsMKII_B.Switch3_k;
2852
2853 /* Update for S-Function (sfix_udelay): '<S110>/Integer Delay' */
2854 controlMCUSlugsMKII_DWork.IntegerDelay_X_i = controlMCUSlugsMKII_B.Switch3_k;
2855
2856 /* Update for S-Function (sfix_udelay): '<S110>/Integer Delay1' */
2857 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[0] =
2858 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[1];
2859 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[1] =
2860 controlMCUSlugsMKII_B.Switch3_k;
2861
2862 /* Update for S-Function (sfix_udelay): '<S112>/Integer Delay3' */
2863 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ex = controlMCUSlugsMKII_B.Switch3_p;
2864
2865 /* Update for S-Function (sfix_udelay): '<S98>/Integer Delay3' */
2866 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nv =
2867 controlMCUSlugsMKII_B.Switch3_f3;
2868
2869 /* Update for S-Function (sfix_udelay): '<S95>/NDelays' */
2870 controlMCUSlugsMKII_DWork.NDelays_X_c[0] =
2871 controlMCUSlugsMKII_DWork.NDelays_X_c[1];
2872 controlMCUSlugsMKII_DWork.NDelays_X_c[1] =
2873 controlMCUSlugsMKII_DWork.NDelays_X_c[2];
2874 controlMCUSlugsMKII_DWork.NDelays_X_c[2] =
2875 controlMCUSlugsMKII_DWork.NDelays_X_c[3];
2876 controlMCUSlugsMKII_DWork.NDelays_X_c[3] =
2877 controlMCUSlugsMKII_DWork.NDelays_X_c[4];
2878 controlMCUSlugsMKII_DWork.NDelays_X_c[4] = controlMCUSlugsMKII_B.Switch3_f3;
2879
2880 /* Update for S-Function (sfix_udelay): '<S120>/Integer Delay2' */
2881 controlMCUSlugsMKII_DWork.IntegerDelay2_X_n = controlMCUSlugsMKII_B.Switch3_el;
2882
2883 /* Update for Memory: '<S95>/Memory1' */
2884 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_f = rtb_Abs2;
2885
2886 /* Update for S-Function (sfix_udelay): '<S121>/Integer Delay3' */
2887 controlMCUSlugsMKII_DWork.IntegerDelay3_X_k = controlMCUSlugsMKII_B.Switch3_o;
2888
2889 /* Update for S-Function (sfix_udelay): '<S120>/Integer Delay' */
2890 controlMCUSlugsMKII_DWork.IntegerDelay_X_g = controlMCUSlugsMKII_B.Switch3_o;
2891
2892 /* Update for S-Function (sfix_udelay): '<S120>/Integer Delay1' */
2893 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[0] =
2894 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[1];
2895 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[1] =
2896 controlMCUSlugsMKII_B.Switch3_o;
2897
2898 /* Update for S-Function (sfix_udelay): '<S122>/Integer Delay3' */
2899 controlMCUSlugsMKII_DWork.IntegerDelay3_X_p = controlMCUSlugsMKII_B.Switch3_el;
2900
2901 /* end of Outputs for SubSystem: '<S2>/Longitudinal Channel' */
2902 /* S-Function "dsPIC_C_function_Call" Block: <S3>/Get Pid according to Index3 */
2903 getPidIdx(((uint8_T)3U),&controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[0]);
2904
2905 /* S-Function "dsPIC_C_function_Call" Block: <S3>/[navSupport.c] */
2906 getPidIdx(((uint8_T)4U),&controlMCUSlugsMKII_B.navSupportc_k[0]);
2907
2908 /* S-Function "dsPIC_C_function_Call" Block: <S20>/[apUtils.c] */
2909 controlMCUSlugsMKII_B.apUtilsc = myCos(controlMCUSlugsMKII_B.y[0]);
2910
2911 /* Product: '<S12>/Product' */
2912 rtb_Abs2 = controlMCUSlugsMKII_B.y[5] * controlMCUSlugsMKII_B.apUtilsc;
2913
2914 /* S-Function "dsPIC_C_function_Call" Block: <S21>/[apUtils.c] */
2915 controlMCUSlugsMKII_B.apUtilsc_p = mySin(controlMCUSlugsMKII_B.y[0]);
2916
2917 /* Sum: '<S12>/Subtract' incorporates:
2918 * Product: '<S12>/Product1'
2919 */
2920 rtb_Abs2 += controlMCUSlugsMKII_B.y[4] * controlMCUSlugsMKII_B.apUtilsc_p;
2921
2922 /* Switch: '<S19>/Switch3' incorporates:
2923 * RelationalOperator: '<S19>/Relational Operator2'
2924 * S-Function (sfix_udelay): '<S19>/Integer Delay3'
2925 */
2926 if ((rtb_Abs2 == rtb_Abs2) > 0) {
2927 controlMCUSlugsMKII_B.Switch3_oe = rtb_Abs2;
2928 } else {
2929 controlMCUSlugsMKII_B.Switch3_oe =
2930 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b;
2931 }
2932
2933 /* S-Function "dsPIC_C_function_Call" Block: <Root>/[navSupport.c] */
2934 getPidIdx(((uint8_T)6U),&controlMCUSlugsMKII_B.navSupportc_g[0]);
2935
2936 /* Outputs for enable SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' incorporates:
2937 * EnablePort: '<S13>/Enable'
2938 */
2939 if (controlMCUSlugsMKII_B.navSupportc_g[2] > 0.0F) {
2940 if (!((int16_T)controlMCUSlugsMKII_DWork.L1OutputFeedbackControllerWithP !=
2941 0)) {
2942 /* InitializeConditions for UnitDelay: '<S33>/UD' */
2943 controlMCUSlugsMKII_DWork.UD_DSTATE_l = 0.0F;
2944
2945 /* InitializeConditions for S-Function (sfix_udelay): '<S24>/Integer Delay' */
2946 controlMCUSlugsMKII_DWork.IntegerDelay_X_d = 0.0F;
2947
2948 /* InitializeConditions for S-Function (sfix_udelay): '<S24>/Integer Delay1' */
2949 controlMCUSlugsMKII_DWork.IntegerDelay1_X_nc = 0.0F;
2950
2951 /* InitializeConditions for S-Function (sfix_udelay): '<S26>/Integer Delay3' */
2952 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cw = 0.0F;
2953
2954 /* InitializeConditions for UnitDelay: '<S42>/UD' */
2955 controlMCUSlugsMKII_DWork.UD_DSTATE_ld = 0.0F;
2956
2957 /* InitializeConditions for S-Function (sfix_udelay): '<S28>/Integer Delay' */
2958 controlMCUSlugsMKII_DWork.IntegerDelay_X_c = 0.0F;
2959
2960 /* InitializeConditions for S-Function (sfix_udelay): '<S28>/Integer Delay1' */
2961 controlMCUSlugsMKII_DWork.IntegerDelay1_X_a = 0.0F;
2962
2963 /* InitializeConditions for S-Function (sfix_udelay): '<S13>/Integer Delay' */
2964 controlMCUSlugsMKII_DWork.IntegerDelay_X_no = 0.0F;
2965
2966 /* InitializeConditions for S-Function (sfix_udelay): '<S13>/Integer Delay1' */
2967 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b = 0.0F;
2968
2969 /* InitializeConditions for Merge: '<S25>/Merge' */
2970 if (rtmIsFirstInitCond(controlMCUSlugsMKII_M)) {
2971 controlMCUSlugsMKII_B.Merge = 0.0F;
2972 }
2973
2974 /* InitializeConditions for S-Function (sfix_udelay): '<S27>/Integer Delay3' */
2975 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gww = 0.0F;
2976
2977 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay' */
2978 controlMCUSlugsMKII_DWork.IntegerDelay_X_f = 0.0F;
2979
2980 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay1' */
2981 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[0] = 0.0F;
2982 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[1] = 0.0F;
2983
2984 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay2' */
2985 controlMCUSlugsMKII_DWork.IntegerDelay2_X_m = 0.0F;
2986
2987 /* InitializeConditions for S-Function (sfix_udelay): '<S43>/Integer Delay3' */
2988 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe = 0.0F;
2989
2990 /* InitializeConditions for S-Function (sfix_udelay): '<S44>/Integer Delay3' */
2991 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe1 = 0.0F;
2992 controlMCUSlugsMKII_DWork.L1OutputFeedbackControllerWithP = TRUE;
2993 }
2994
2995 /* Abs: '<S31>/Abs1' incorporates:
2996 * Sum: '<S33>/Diff'
2997 * UnitDelay: '<S33>/UD'
2998 */
2999 rtb_Abs2 = (real32_T)fabs(controlMCUSlugsMKII_B.navSupportc_g[0] -
3000 controlMCUSlugsMKII_DWork.UD_DSTATE_l);
3001
3002 /* InitialCondition: '<S24>/IC' incorporates:
3003 * Saturate: '<S31>/Saturation1'
3004 */
3005 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_g) {
3006 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_g = FALSE;
3007 rtb_Abs2 = 1.0F;
3008 } else {
3009 rtb_Abs2 = rt_SATURATE(rtb_Abs2, 0.0F, 1.0F);
3010 }
3011
3012 /* Outputs for enable SubSystem: '<S24>/Compute Coef' incorporates:
3013 * EnablePort: '<S30>/Enable'
3014 */
3015 if (rtb_Abs2 > 0.0F) {
3016 /* Gain: '<S30>/-T' */
3017 controlMCUSlugsMKII_B.T_i = -9.999999776E-003F *
3018 controlMCUSlugsMKII_B.navSupportc_g[0];
3019
3020 /* S-Function "dsPIC_C_function_Call" Block: <S32>/C Function Call */
3021 controlMCUSlugsMKII_B.CFunctionCall_p = myExp(controlMCUSlugsMKII_B.T_i);
3022
3023 /* Sum: '<S30>/1-c' incorporates:
3024 * Constant: '<S30>/Constant'
3025 */
3026 controlMCUSlugsMKII_B.c_kt = (real32_T)(1.0 - (real_T)
3027 controlMCUSlugsMKII_B.CFunctionCall_p);
3028 }
3029
3030 /* end of Outputs for SubSystem: '<S24>/Compute Coef' */
3031
3032 /* Sum: '<S24>/Subtract' incorporates:
3033 * Product: '<S24>/Divide'
3034 * Product: '<S24>/Divide1'
3035 * S-Function (sfix_udelay): '<S24>/Integer Delay'
3036 * S-Function (sfix_udelay): '<S24>/Integer Delay1'
3037 */
3038 controlMCUSlugsMKII_B.Subtract_b = controlMCUSlugsMKII_B.c_kt *
3039 controlMCUSlugsMKII_DWork.IntegerDelay_X_d +
3040 controlMCUSlugsMKII_B.CFunctionCall_p *
3041 controlMCUSlugsMKII_DWork.IntegerDelay1_X_nc;
3042
3043 /* Switch: '<S26>/Switch3' incorporates:
3044 * RelationalOperator: '<S26>/Relational Operator2'
3045 * S-Function (sfix_udelay): '<S26>/Integer Delay3'
3046 */
3047 if ((controlMCUSlugsMKII_B.Switch3_oe == controlMCUSlugsMKII_B.Switch3_oe) >
3048 0) {
3049 controlMCUSlugsMKII_B.Switch3_cj = controlMCUSlugsMKII_B.Switch3_oe;
3050 } else {
3051 controlMCUSlugsMKII_B.Switch3_cj =
3052 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cw;
3053 }
3054
3055 /* Abs: '<S40>/Abs1' incorporates:
3056 * Sum: '<S42>/Diff'
3057 * UnitDelay: '<S42>/UD'
3058 */
3059 rtb_Abs2 = (real32_T)fabs(controlMCUSlugsMKII_B.navSupportc_g[1] -
3060 controlMCUSlugsMKII_DWork.UD_DSTATE_ld);
3061
3062 /* InitialCondition: '<S28>/IC' incorporates:
3063 * Saturate: '<S40>/Saturation1'
3064 */
3065 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_p) {
3066 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_p = FALSE;
3067 rtb_Abs2 = 1.0F;
3068 } else {
3069 rtb_Abs2 = rt_SATURATE(rtb_Abs2, 0.0F, 1.0F);
3070 }
3071
3072 /* Outputs for enable SubSystem: '<S28>/Compute Coef' incorporates:
3073 * EnablePort: '<S39>/Enable'
3074 */
3075 if (rtb_Abs2 > 0.0F) {
3076 /* Gain: '<S39>/-T' */
3077 controlMCUSlugsMKII_B.T = -9.999999776E-003F *
3078 controlMCUSlugsMKII_B.navSupportc_g[1];
3079
3080 /* S-Function "dsPIC_C_function_Call" Block: <S41>/C Function Call */
3081 controlMCUSlugsMKII_B.CFunctionCall_dr = myExp(controlMCUSlugsMKII_B.T);
3082
3083 /* Sum: '<S39>/1-c' incorporates:
3084 * Constant: '<S39>/Constant'
3085 */
3086 controlMCUSlugsMKII_B.c_i = (real32_T)(1.0 - (real_T)
3087 controlMCUSlugsMKII_B.CFunctionCall_dr);
3088 }
3089
3090 /* end of Outputs for SubSystem: '<S28>/Compute Coef' */
3091
3092 /* Sum: '<S28>/Subtract' incorporates:
3093 * Product: '<S28>/Divide'
3094 * Product: '<S28>/Divide1'
3095 * S-Function (sfix_udelay): '<S28>/Integer Delay'
3096 * S-Function (sfix_udelay): '<S28>/Integer Delay1'
3097 */
3098 controlMCUSlugsMKII_B.Subtract_c = controlMCUSlugsMKII_B.c_i *
3099 controlMCUSlugsMKII_DWork.IntegerDelay_X_c +
3100 controlMCUSlugsMKII_B.CFunctionCall_dr *
3101 controlMCUSlugsMKII_DWork.IntegerDelay1_X_a;
3102
3103 /* Gain: '<S13>/Gain' incorporates:
3104 * Sum: '<S13>/Sum3'
3105 */
3106 rtb_Abs2 = (controlMCUSlugsMKII_B.Subtract_c -
3107 controlMCUSlugsMKII_B.Switch3_cj) * -1.0F;
3108
3109 /* Product: '<S38>/Divide4' incorporates:
3110 * Constant: '<S38>/Constant'
3111 * S-Function (sfix_udelay): '<S13>/Integer Delay1'
3112 */
3113 rtb_Deg2R1 = 1.0F / controlMCUSlugsMKII_ConstB.Divide2 *
3114 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b * 2.0F;
3115
3116 /* Product: '<S38>/Divide3' incorporates:
3117 * Product: '<S38>/Divide'
3118 * S-Function (sfix_udelay): '<S13>/Integer Delay1'
3119 * Sum: '<S38>/Subtract'
3120 */
3121 rtb_Sum2 = (controlMCUSlugsMKII_DWork.IntegerDelay1_X_b *
3122 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b -
3123 controlMCUSlugsMKII_ConstB.Divide1) /
3124 controlMCUSlugsMKII_ConstB.Divide2;
3125
3126 /* Logic: '<S25>/Logical Operator2' incorporates:
3127 * Constant: '<S34>/Constant'
3128 * Constant: '<S35>/Constant'
3129 * Product: '<S25>/Divide2'
3130 * RelationalOperator: '<S34>/Compare'
3131 * RelationalOperator: '<S35>/Compare'
3132 */
3133 rtb_Add1_i = ((rtb_Deg2R1 * rtb_Abs2 > 0.0F) && (rtb_Sum2 >= 0.0F));
3134
3135 /* Outputs for enable SubSystem: '<S25>/Enabled Subsystem' incorporates:
3136 * EnablePort: '<S36>/Enable'
3137 * Logic: '<S25>/Logical Operator'
3138 */
3139 if (!(rtb_Add1_i != 0) > 0) {
3140 /* Inport: '<S36>/In1' */
3141 controlMCUSlugsMKII_B.Merge = rtb_Abs2;
3142 }
3143
3144 /* end of Outputs for SubSystem: '<S25>/Enabled Subsystem' */
3145
3146 /* Outputs for enable SubSystem: '<S25>/Enabled Subsystem1' incorporates:
3147 * EnablePort: '<S37>/Enable'
3148 */
3149 if (rtb_Add1_i > 0) {
3150 /* Product: '<S37>/Divide2' incorporates:
3151 * Constant: '<S37>/Constant'
3152 * Product: '<S37>/Divide1'
3153 * Signum: '<S37>/Sign'
3154 * Sum: '<S37>/Subtract'
3155 */
3156 controlMCUSlugsMKII_B.Merge = (1.0F - rtb_Sum2 * rt_SIGNf_snf(rtb_Deg2R1))
3157 * rtb_Abs2;
3158 }
3159
3160 /* end of Outputs for SubSystem: '<S25>/Enabled Subsystem1' */
3161
3162 /* Product: '<S13>/Projection' */
3163 rtb_Abs2 = controlMCUSlugsMKII_B.navSupportc_n[1] *
3164 controlMCUSlugsMKII_B.Merge;
3165
3166 /* Sum: '<S13>/Sum4' incorporates:
3167 * S-Function (sfix_udelay): '<S13>/Integer Delay'
3168 */
3169 rtb_Deg2R1 = controlMCUSlugsMKII_DWork.IntegerDelay_X_no -
3170 controlMCUSlugsMKII_B.Subtract_b;
3171
3172 /* Saturate: '<S13>/Psi Dot Limit' */
3173 controlMCUSlugsMKII_B.PsiDotLimit_g = rt_SATURATE(rtb_Deg2R1, -1.0F, 1.0F);
3174
3175 /* Sum: '<S13>/Sum2' incorporates:
3176 * S-Function (sfix_udelay): '<S13>/Integer Delay1'
3177 */
3178 rtb_Deg2R1 = controlMCUSlugsMKII_B.PsiDotLimit_g +
3179 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b;
3180
3181 /* Switch: '<S27>/Switch3' incorporates:
3182 * RelationalOperator: '<S27>/Relational Operator2'
3183 * S-Function (sfix_udelay): '<S27>/Integer Delay3'
3184 */
3185 if ((rtb_Deg2R1 == rtb_Deg2R1) > 0) {
3186 controlMCUSlugsMKII_B.Switch3_ae = rtb_Deg2R1;
3187 } else {
3188 controlMCUSlugsMKII_B.Switch3_ae =
3189 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gww;
3190 }
3191
3192 /* Switch: '<S43>/Switch3' incorporates:
3193 * RelationalOperator: '<S43>/Relational Operator2'
3194 * S-Function (sfix_udelay): '<S43>/Integer Delay3'
3195 */
3196 if ((rtb_Abs2 == rtb_Abs2) > 0) {
3197 controlMCUSlugsMKII_B.Switch3_gq = rtb_Abs2;
3198 } else {
3199 controlMCUSlugsMKII_B.Switch3_gq =
3200 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe;
3201 }
3202
3203 /* Sum: '<S29>/Subtract1' incorporates:
3204 * Constant: '<S29>/Constant'
3205 * Constant: '<S29>/Constant1'
3206 * Constant: '<S29>/Constant2'
3207 * Constant: '<S29>/Constant3'
3208 * Product: '<S29>/Product'
3209 * Product: '<S29>/Product1'
3210 * Product: '<S29>/Product2'
3211 * Product: '<S29>/Product3'
3212 * S-Function (sfix_udelay): '<S29>/Integer Delay'
3213 * S-Function (sfix_udelay): '<S29>/Integer Delay1'
3214 * S-Function (sfix_udelay): '<S29>/Integer Delay2'
3215 * Sum: '<S29>/Subtract'
3216 */
3217 rtb_Deg2R1 = ((controlMCUSlugsMKII_B.Switch3_gq * 3.333333433E-001F +
3218 controlMCUSlugsMKII_DWork.IntegerDelay_X_f *
3219 1.333333373E+000F) +
3220 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[0] *
3221 3.333333433E-001F) * 4.999999888E-003F +
3222 controlMCUSlugsMKII_DWork.IntegerDelay2_X_m;
3223
3224 /* Switch: '<S29>/Switch1' incorporates:
3225 * Constant: '<S29>/Constant5'
3226 * Logic: '<S13>/Logical Operator'
3227 * Saturate: '<S29>/[min max]'
3228 */
3229 if (!(controlMCUSlugsMKII_B.navSupportc_g[2] != 0.0F) > 0) {
3230 rtb_Deg2R1 = 0.0F;
3231 } else {
3232 rtb_Deg2R1 = rt_SATURATE(rtb_Deg2R1, -2.0F, 2.0F);
3233 }
3234
3235 /* Switch: '<S44>/Switch3' incorporates:
3236 * RelationalOperator: '<S44>/Relational Operator2'
3237 * S-Function (sfix_udelay): '<S44>/Integer Delay3'
3238 */
3239 if ((rtb_Deg2R1 == rtb_Deg2R1) > 0) {
3240 controlMCUSlugsMKII_B.Switch3_im = rtb_Deg2R1;
3241 } else {
3242 controlMCUSlugsMKII_B.Switch3_im =
3243 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe1;
3244 }
3245 } else {
3246 if ((int16_T)controlMCUSlugsMKII_DWork.L1OutputFeedbackControllerWithP) {
3247 controlMCUSlugsMKII_DWork.L1OutputFeedbackControllerWithP = FALSE;
3248 }
3249 }
3250
3251 /* end of Outputs for SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' */
3252 /* S-Function "dsPIC_C_function_Call" Block: <S9>/Get the Accelerometers [navSupport.c] */
3253 getAccels(&controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[0]);
3254
3255 /* Product: '<S9>/Product2' */
3256 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
3257 rtb_Product2_cp[rtb_IC1] = rtb_MathFunction[rtb_IC1 + 6] *
3258 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[2] +
3259 (rtb_MathFunction[rtb_IC1 + 3] *
3260 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[1] +
3261 rtb_MathFunction[rtb_IC1] *
3262 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[0]);
3263 }
3264
3265 /* S-Function "dsPIC_C_function_Call" Block: <S9>/Get the Accel Bias [navSupport.c] */
3266 getAccBias(&controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[0]);
3267
3268 /* Sum: '<S9>/Sum' incorporates:
3269 * Product: '<S9>/Product3'
3270 */
3271 for (rtb_IC1 = 0; rtb_IC1 < 3; rtb_IC1++) {
3272 rtb_u525[rtb_IC1] = rtb_Product2_cp[rtb_IC1] + (rtb_MathFunction[rtb_IC1 + 6]
3273 * controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[2] +
3274 (rtb_MathFunction[rtb_IC1 + 3] *
3275 controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[1] +
3276 rtb_MathFunction[rtb_IC1] *
3277 controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[0]));
3278 }
3279
3280 /* Outputs for atomic SubSystem: '<S2>/Lateral Channel' */
3281
3282 /* Switch: '<S62>/Switch3' incorporates:
3283 * RelationalOperator: '<S62>/Relational Operator2'
3284 * S-Function (sfix_udelay): '<S62>/Integer Delay3'
3285 */
3286 if ((controlMCUSlugsMKII_B.Switch3_c == controlMCUSlugsMKII_B.Switch3_c) > 0)
3287 {
3288 controlMCUSlugsMKII_B.Switch3_gn = controlMCUSlugsMKII_B.Switch3_c;
3289 } else {
3290 controlMCUSlugsMKII_B.Switch3_gn =
3291 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nc;
3292 }
3293
3294 /* Saturate: '<S49>/bank Limit' */
3295 controlMCUSlugsMKII_B.bankLimit = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_gn,
3296 -7.853981853E-001F, 7.853981853E-001F);
3297
3298 /* S-Function "dsPIC_C_function_Call" Block: <S64>/C Function Call */
3299 controlMCUSlugsMKII_B.CFunctionCall_in = myTan(controlMCUSlugsMKII_B.bankLimit);
3300
3301 /* Switch: '<S63>/Switch3' incorporates:
3302 * RelationalOperator: '<S63>/Relational Operator2'
3303 * S-Function (sfix_udelay): '<S63>/Integer Delay3'
3304 */
3305 if ((controlMCUSlugsMKII_B.ScheduleLPF == controlMCUSlugsMKII_B.ScheduleLPF) >
3306 0) {
3307 controlMCUSlugsMKII_B.Switch3_h4 = controlMCUSlugsMKII_B.ScheduleLPF;
3308 } else {
3309 controlMCUSlugsMKII_B.Switch3_h4 =
3310 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gw;
3311 }
3312
3313 /* Switch: '<S14>/Switch1' incorporates:
3314 * Constant: '<S49>/Constant1'
3315 * Product: '<S49>/Divide'
3316 * Product: '<S49>/Divide1'
3317 * Saturate: '<S49>/[0 40]'
3318 */
3319 if (controlMCUSlugsMKII_B.wpFlynavSupportc > 0) {
3320 rtb_cosphi = 1.0F / rt_SATURATE(controlMCUSlugsMKII_B.Switch3_h4, 0.0F,
3321 40.0F) * 9.806650162E+000F * controlMCUSlugsMKII_B.CFunctionCall_in;
3322 } else {
3323 rtb_cosphi = controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[2];
3324 }
3325
3326 /* Saturate: '<S14>/Psi Dot Limit' */
3327 controlMCUSlugsMKII_B.PsiDotLimit = rt_SATURATE(rtb_cosphi, -1.0F, 1.0F);
3328
3329 /* Switch: '<S14>/Switch' */
3330 if (controlMCUSlugsMKII_B.navSupportc_g[2] > 3.000000119E-001F) {
3331 rtb_Switch_d = controlMCUSlugsMKII_B.PsiDotLimit_g;
3332 } else {
3333 rtb_Switch_d = controlMCUSlugsMKII_B.PsiDotLimit;
3334 }
3335
3336 /* Outputs for enable SubSystem: '<S14>/Sideslip Compensation' incorporates:
3337 * EnablePort: '<S56>/Enable'
3338 */
3339 if (controlMCUSlugsMKII_B.navSupportc_n[2] > 0.0F) {
3340 if (!((int16_T)controlMCUSlugsMKII_DWork.SideslipCompensation_MODE != 0)) {
3341 /* InitializeConditions for UnitDelay: '<S79>/UD' */
3342 controlMCUSlugsMKII_DWork.UD_DSTATE_o = 0.0F;
3343
3344 /* InitializeConditions for S-Function (sfix_udelay): '<S71>/Integer Delay' */
3345 controlMCUSlugsMKII_DWork.IntegerDelay_X_b = 0.0F;
3346
3347 /* InitializeConditions for S-Function (sfix_udelay): '<S71>/Integer Delay1' */
3348 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f5 = 0.0;
3349
3350 /* InitializeConditions for S-Function (sfix_udelay): '<S72>/Integer Delay3' */
3351 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hc = 0.0F;
3352 controlMCUSlugsMKII_DWork.SideslipCompensation_MODE = TRUE;
3353 }
3354
3355 /* Embedded MATLAB: '<S70>/negprotect' */
3356 controlMCUSlugsM_negprotect(controlMCUSlugsMKII_B.ScheduleLPF,
3357 &controlMCUSlugsMKII_B.sf_negprotect);
3358
3359 /* Product: '<S70>/Divide' incorporates:
3360 * Constant: '<S70>/Constant1'
3361 */
3362 rtb_Sum2 = 1.0F / controlMCUSlugsMKII_B.sf_negprotect.zpVal *
3363 9.806650162E+000F;
3364
3365 /* Saturate: '<S70>/bank Limit' */
3366 controlMCUSlugsMKII_B.bankLimit_a = rt_SATURATE(controlMCUSlugsMKII_B.y[0],
3367 -7.853981853E-001F, 7.853981853E-001F);
3368
3369 /* S-Function "dsPIC_C_function_Call" Block: <S74>/C Function Call */
3370 controlMCUSlugsMKII_B.CFunctionCall_gd = myTan
3371 (controlMCUSlugsMKII_B.bankLimit_a);
3372
3373 /* Abs: '<S78>/Abs1' incorporates:
3374 * Constant: '<S56>/Constant'
3375 * Sum: '<S79>/Diff'
3376 * UnitDelay: '<S79>/UD'
3377 */
3378 rtb_Abs2 = (real32_T)fabs(3.000000119E-001F -
3379 controlMCUSlugsMKII_DWork.UD_DSTATE_o);
3380
3381 /* InitialCondition: '<S71>/IC' incorporates:
3382 * Saturate: '<S78>/Saturation1'
3383 */
3384 if (controlMCUSlugsMKII_DWork.IC_FirstOutputTime_e) {
3385 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_e = FALSE;
3386 rtb_Abs2 = 1.0F;
3387 } else {
3388 rtb_Abs2 = rt_SATURATE(rtb_Abs2, 0.0F, 1.0F);
3389 }
3390
3391 /* Outputs for enable SubSystem: '<S71>/Compute Coef' incorporates:
3392 * EnablePort: '<S77>/Enable'
3393 */
3394 if (rtb_Abs2 > 0.0F) {
3395 /* Math: '<S77>/Math Function' incorporates:
3396 * Constant: '<S56>/Constant'
3397 * Gain: '<S77>/-T'
3398 *
3399 * About '<S77>/Math Function':
3400 * Operator: exp
3401 */
3402 controlMCUSlugsMKII_B.c = 9.970045090E-001F;
3403
3404 /* Sum: '<S77>/1-c' incorporates:
3405 * Constant: '<S77>/Constant'
3406 */
3407 controlMCUSlugsMKII_B.c_k = (real32_T)(1.0 - (real_T)
3408 controlMCUSlugsMKII_B.c);
3409 }
3410
3411 /* end of Outputs for SubSystem: '<S71>/Compute Coef' */
3412
3413 /* Sum: '<S71>/Subtract' incorporates:
3414 * Product: '<S71>/Divide'
3415 * Product: '<S71>/Divide1'
3416 * S-Function (sfix_udelay): '<S71>/Integer Delay'
3417 * S-Function (sfix_udelay): '<S71>/Integer Delay1'
3418 */
3419 controlMCUSlugsMKII_B.Subtract = (real_T)(controlMCUSlugsMKII_B.c_k *
3420 controlMCUSlugsMKII_DWork.IntegerDelay_X_b) + (real_T)
3421 controlMCUSlugsMKII_B.c * controlMCUSlugsMKII_DWork.IntegerDelay1_X_f5;
3422
3423 /* S-Function (sfix_udelay): '<S72>/Integer Delay3' */
3424 rtb_Abs2 = controlMCUSlugsMKII_DWork.IntegerDelay3_X_hc;
3425
3426 /* Product: '<S73>/Divide' incorporates:
3427 * Constant: '<S73>/Constant1'
3428 * Product: '<S70>/Divide1'
3429 * Sum: '<S56>/Subtract'
3430 */
3431 controlMCUSlugsMKII_B.Divide_a = (controlMCUSlugsMKII_B.CFunctionCall_gd *
3432 rtb_Sum2 - controlMCUSlugsMKII_B.y[5]) * controlMCUSlugsMKII_B.ScheduleLPF
3433 / 9.806650162E+000F;
3434
3435 /* S-Function "dsPIC_C_function_Call" Block: <S80>/C Function Call */
3436 controlMCUSlugsMKII_B.CFunctionCall_id = myAtan
3437 (controlMCUSlugsMKII_B.Divide_a);
3438
3439 /* Switch: '<S72>/Switch3' incorporates:
3440 * RelationalOperator: '<S72>/Relational Operator2'
3441 */
3442 if ((controlMCUSlugsMKII_B.CFunctionCall_id ==
3443 controlMCUSlugsMKII_B.CFunctionCall_id) > 0) {
3444 controlMCUSlugsMKII_B.Switch3_pq = controlMCUSlugsMKII_B.CFunctionCall_id;
3445 } else {
3446 controlMCUSlugsMKII_B.Switch3_pq = rtb_Abs2;
3447 }
3448
3449 /* Update for UnitDelay: '<S79>/UD' incorporates:
3450 * Constant: '<S56>/Constant'
3451 */
3452 controlMCUSlugsMKII_DWork.UD_DSTATE_o = 3.000000119E-001F;
3453
3454 /* Update for S-Function (sfix_udelay): '<S71>/Integer Delay' */
3455 controlMCUSlugsMKII_DWork.IntegerDelay_X_b =
3456 controlMCUSlugsMKII_B.Switch3_pq;
3457
3458 /* Update for S-Function (sfix_udelay): '<S71>/Integer Delay1' */
3459 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f5 =
3460 controlMCUSlugsMKII_B.Subtract;
3461
3462 /* Update for S-Function (sfix_udelay): '<S72>/Integer Delay3' */
3463 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hc =
3464 controlMCUSlugsMKII_B.Switch3_pq;
3465 } else {
3466 if ((int16_T)controlMCUSlugsMKII_DWork.SideslipCompensation_MODE) {
3467 /* Disable for Outport: '<S56>/bankComp' */
3468 controlMCUSlugsMKII_B.Subtract = 0.0;
3469 controlMCUSlugsMKII_DWork.SideslipCompensation_MODE = FALSE;
3470 }
3471 }
3472
3473 /* end of Outputs for SubSystem: '<S14>/Sideslip Compensation' */
3474
3475 /* Product: '<S60>/Divide' incorporates:
3476 * Constant: '<S60>/Constant1'
3477 */
3478 controlMCUSlugsMKII_B.Divide_m = rtb_Switch_d *
3479 controlMCUSlugsMKII_B.ScheduleLPF / 9.806650162E+000F;
3480
3481 /* S-Function "dsPIC_C_function_Call" Block: <S86>/C Function Call */
3482 controlMCUSlugsMKII_B.CFunctionCall_i4 = myAtan(controlMCUSlugsMKII_B.Divide_m);
3483
3484 /* Sum: '<S14>/Add2' */
3485 rtb_cosphi = (real32_T)(controlMCUSlugsMKII_B.Subtract + (real_T)
3486 controlMCUSlugsMKII_B.CFunctionCall_i4);
3487
3488 /* Saturate: '<S14>/Bank Limit Command' */
3489 rtb_BankLimitCommand = rt_SATURATE(rtb_cosphi, -7.853981853E-001F,
3490 7.853981853E-001F);
3491
3492 /* Switch: '<S53>/Switch3' incorporates:
3493 * RelationalOperator: '<S53>/Relational Operator2'
3494 * S-Function (sfix_udelay): '<S53>/Integer Delay3'
3495 */
3496 if ((rtb_u525[1] == rtb_u525[1]) > 0) {
3497 controlMCUSlugsMKII_B.Switch3_pa = rtb_u525[1];
3498 } else {
3499 controlMCUSlugsMKII_B.Switch3_pa =
3500 controlMCUSlugsMKII_DWork.IntegerDelay3_X_h;
3501 }
3502
3503 /* Saturate: '<S14>/[-20 20]' */
3504 rtb_u020_g = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_pa, -20.0F, 20.0F);
3505
3506 /* Embedded MATLAB: '<S45>/Embedded MATLAB Function' */
3507 cont_EmbeddedMATLABFunction(rtb_u020_g, 0.01, 0.3183,
3508 &controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_h,
3509 &controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h);
3510
3511 /* S-Function "dsPIC_C_function_Call" Block: <S14>/[navSupport.c] */
3512 getPidIdx(((uint8_T)9U),&controlMCUSlugsMKII_B.navSupportc_l[0]);
3513
3514 /* Switch: '<S54>/Switch3' incorporates:
3515 * RelationalOperator: '<S54>/Relational Operator2'
3516 * S-Function (sfix_udelay): '<S54>/Integer Delay3'
3517 */
3518 if ((controlMCUSlugsMKII_B.y[5] == controlMCUSlugsMKII_B.y[5]) > 0) {
3519 controlMCUSlugsMKII_B.Switch3_fx = controlMCUSlugsMKII_B.y[5];
3520 } else {
3521 controlMCUSlugsMKII_B.Switch3_fx =
3522 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ae;
3523 }
3524
3525 /* Saturate: '<S14>/[-2 2]' */
3526 controlMCUSlugsMKII_B.u2 = rt_SATURATE(controlMCUSlugsMKII_B.Switch3_fx, -2.0F,
3527 2.0F);
3528
3529 /* Outputs for atomic SubSystem: '<S14>/High Pass (Washout) Filter' */
3530
3531 /* Sum: '<S50>/Subtract' incorporates:
3532 * Constant: '<S50>/Constant1'
3533 * Constant: '<S50>/Constant2'
3534 * Constant: '<S50>/Constant3'
3535 * Product: '<S50>/Product'
3536 * Product: '<S50>/Product1'
3537 * Product: '<S50>/Product2'
3538 * S-Function (sfix_udelay): '<S50>/Integer Delay'
3539 * S-Function (sfix_udelay): '<S50>/Integer Delay1'
3540 */
3541 rtb_Abs2 = (9.991999865E-001F * controlMCUSlugsMKII_B.u2 -
3542 controlMCUSlugsMKII_DWork.IntegerDelay_X_nm * 9.991999865E-001F) +
3543 controlMCUSlugsMKII_DWork.IntegerDelay1_X_l * 9.983000159E-001F;
3544
3545 /* Saturate: '<S50>/[-2 2]' */
3546 controlMCUSlugsMKII_B.u2_o = rt_SATURATE(rtb_Abs2, -2.0F, 2.0F);
3547
3548 /* Update for S-Function (sfix_udelay): '<S50>/Integer Delay' */
3549 controlMCUSlugsMKII_DWork.IntegerDelay_X_nm = controlMCUSlugsMKII_B.u2;
3550
3551 /* Update for S-Function (sfix_udelay): '<S50>/Integer Delay1' */
3552 controlMCUSlugsMKII_DWork.IntegerDelay1_X_l = controlMCUSlugsMKII_B.u2_o;
3553
3554 /* end of Outputs for SubSystem: '<S14>/High Pass (Washout) Filter' */
3555
3556 /* Switch: '<S14>/Switch2' incorporates:
3557 * Gain: '<S14>/Neg Feedback '
3558 * Gain: '<S14>/Neg Feedback'
3559 */
3560 if (controlMCUSlugsMKII_B.navSupportc_l[0] > 3.000000119E-001F) {
3561 rtb_cosphi = -controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_h.y;
3562 } else {
3563 rtb_cosphi = -controlMCUSlugsMKII_B.u2_o;
3564 }
3565
3566 /* Switch: '<S52>/Switch3' incorporates:
3567 * RelationalOperator: '<S52>/Relational Operator2'
3568 * S-Function (sfix_udelay): '<S52>/Integer Delay3'
3569 */
3570 if ((rtb_cosphi == rtb_cosphi) > 0) {
3571 controlMCUSlugsMKII_B.Switch3_my = rtb_cosphi;
3572 } else {
3573 controlMCUSlugsMKII_B.Switch3_my =
3574 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b5;
3575 }
3576
3577 /* Embedded MATLAB: '<S14>/myMux Fun1' */
3578 controlMCUSlugsMK_myMuxFun1(rtb_Switch_d, rtb_BankLimitCommand,
3579 controlMCUSlugsMKII_B.Switch3_my, &controlMCUSlugsMKII_B.sf_myMuxFun1_h);
3580
3581 /* S-Function "dsPIC_C_function_Call" Block: <S14>/Get XYZ [navSupport.c] */
3582 setNavLat(controlMCUSlugsMKII_B.sf_myMuxFun1_h.y);
3583
3584 /* Sum: '<S57>/Add3' incorporates:
3585 * Constant: '<S57>/SaturationLimit'
3586 */
3587 rtb_Abs2 = 1.745329201E-001F - controlMCUSlugsMKII_B.DataTypeConversion_b;
3588
3589 /* Sum: '<S57>/Add1' incorporates:
3590 * Constant: '<S57>/delayTime'
3591 * Product: '<S57>/Product1'
3592 * Product: '<S57>/Product2'
3593 * Product: '<S57>/Product3'
3594 * S-Function (sfix_udelay): '<S57>/NDelays'
3595 * Sum: '<S57>/Sum'
3596 */
3597 rtb_sinphi = (controlMCUSlugsMKII_B.Switch3_my -
3598 controlMCUSlugsMKII_DWork.NDelays_X_e[0]) / 5.000000075E-002F *
3599 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[2] +
3600 controlMCUSlugsMKII_B.Switch3_my *
3601 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[0];
3602
3603 /* Sum: '<S57>/Sum2' incorporates:
3604 * Gain: '<S57>/Gain'
3605 * Memory: '<S57>/Memory1'
3606 * Product: '<S57>/Product4'
3607 */
3608 rtb_cosphi = (9.999999776E-003F * controlMCUSlugsMKII_B.Switch3_my *
3609 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[1] +
3610 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_a) + rtb_sinphi;
3611
3612 /* Sum: '<S57>/Add4' incorporates:
3613 * Constant: '<S57>/SaturationLimit1'
3614 */
3615 rtb_Sum2 = -1.745329201E-001F - controlMCUSlugsMKII_B.DataTypeConversion_b;
3616
3617 /* Switch: '<S57>/AntiWindup' incorporates:
3618 * Constant: '<S57>/Constant5'
3619 * Logic: '<S57>/Logical Operator'
3620 * RelationalOperator: '<S57>/Relational Operator'
3621 * RelationalOperator: '<S57>/Relational Operator1'
3622 */
3623 if ((rtb_cosphi > rtb_Sum2) && (rtb_cosphi < rtb_Abs2)) {
3624 rtb_DataTypeConversion = controlMCUSlugsMKII_B.Switch3_my;
3625 } else {
3626 rtb_DataTypeConversion = 0.0;
3627 }
3628
3629 /* Switch: '<S84>/Switch3' incorporates:
3630 * RelationalOperator: '<S84>/Relational Operator2'
3631 * S-Function (sfix_udelay): '<S84>/Integer Delay3'
3632 */
3633 if ((rtb_DataTypeConversion == rtb_DataTypeConversion) > 0) {
3634 controlMCUSlugsMKII_B.Switch3_g = rtb_DataTypeConversion;
3635 } else {
3636 controlMCUSlugsMKII_B.Switch3_g =
3637 controlMCUSlugsMKII_DWork.IntegerDelay3_X_o;
3638 }
3639
3640 /* Switch: '<S83>/Switch1' incorporates:
3641 * Constant: '<S83>/Constant'
3642 * Constant: '<S83>/Constant1'
3643 * Constant: '<S83>/Constant2'
3644 * Constant: '<S83>/Constant3'
3645 * Constant: '<S83>/Constant5'
3646 * Product: '<S83>/Product'
3647 * Product: '<S83>/Product1'
3648 * Product: '<S83>/Product2'
3649 * Product: '<S83>/Product3'
3650 * S-Function (sfix_udelay): '<S83>/Integer Delay'
3651 * S-Function (sfix_udelay): '<S83>/Integer Delay1'
3652 * S-Function (sfix_udelay): '<S83>/Integer Delay2'
3653 * Sum: '<S83>/Subtract'
3654 * Sum: '<S83>/Subtract1'
3655 */
3656 if (controlMCUSlugsMKII_B.ManualorAutonavSupportc > 0) {
3657 rtb_cosphi = 0.0F;
3658 } else {
3659 rtb_cosphi = (((real32_T)(controlMCUSlugsMKII_B.Switch3_g *
3660 3.3333334326744080E-001) + (real32_T)
3661 (controlMCUSlugsMKII_DWork.IntegerDelay_X_i0 *
3662 1.3333333730697632E+000)) + (real32_T)
3663 (controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[0] *
3664 3.3333334326744080E-001)) * 4.999999888E-003F +
3665 controlMCUSlugsMKII_DWork.IntegerDelay2_X_g;
3666 }
3667
3668 /* Switch: '<S85>/Switch3' incorporates:
3669 * RelationalOperator: '<S85>/Relational Operator2'
3670 * S-Function (sfix_udelay): '<S85>/Integer Delay3'
3671 */
3672 if ((rtb_cosphi == rtb_cosphi) > 0) {
3673 controlMCUSlugsMKII_B.Switch3_pf = rtb_cosphi;
3674 } else {
3675 controlMCUSlugsMKII_B.Switch3_pf =
3676 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cn;
3677 }
3678
3679 /* Sum: '<S57>/Add2' incorporates:
3680 * Product: '<S57>/Product'
3681 */
3682 rtb_Ze = controlMCUSlugsMKII_B.Switch3_pf *
3683 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[1] + rtb_sinphi;
3684
3685 /* Switch: '<S14>/Switch3' incorporates:
3686 * Gain: '<S46>/Unit Conversion'
3687 * Sum: '<S14>/Add'
3688 */
3689 if (controlMCUSlugsMKII_B.navSupportc_l[1] > 3.000000119E-001F) {
3690 rtb_Abs2 = 1.745329238E-002F * controlMCUSlugsMKII_B.navSupportc_l[2];
3691 } else {
3692 /* Switch: '<S82>/Switch2' incorporates:
3693 * RelationalOperator: '<S82>/LowerRelop1'
3694 */
3695 if (rtb_Ze > rtb_Abs2) {
3696 rtb_Sum2 = rtb_Abs2;
3697 } else {
3698 /* Switch: '<S82>/Switch' incorporates:
3699 * RelationalOperator: '<S82>/UpperRelop'
3700 */
3701 if (!(rtb_Ze < rtb_Sum2)) {
3702 rtb_Sum2 = rtb_Ze;
3703 }
3704 }
3705
3706 rtb_Abs2 = rtb_Sum2 + controlMCUSlugsMKII_B.DataTypeConversion_b;
3707 }
3708
3709 /* Saturate: '<S14>/Rudder Limit' */
3710 rtb_Sum2 = rt_SATURATE(rtb_Abs2, -1.745329201E-001F, 1.745329201E-001F);
3711
3712 /* Embedded MATLAB: '<S14>/myMux Fun3' */
3713 /* Embedded MATLAB Function 'Inner Loop/ Navigation/Lateral Channel/myMux Fun3': '<S59>:1' */
3714 /* This block supports an embeddable subset of the MATLAB language. */
3715 /* See the help menu for details. */
3716 /* '<S59>:1:5' */
3717
3718 /* DataTypeConversion: '<S14>/Data Type Conversion2' incorporates:
3719 * Gain: '<S14>/Gain3'
3720 * Gain: '<S47>/Unit Conversion'
3721 * Gain: '<S48>/Unit Conversion'
3722 */
3723 rtb_cosphi = 5.729578018E+001F * rtb_Sum2 * 100.0F;
3724 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
3725 rtb_cosphi = 0.0F;
3726 } else {
3727 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
3728 }
3729
3730 controlMCUSlugsMKII_B.DataTypeConversion2[0] = rtb_cosphi < 0.0F ? -((int16_T)
3731 (uint16_T)(-rtb_cosphi)) : (int16_T)(uint16_T)rtb_cosphi;
3732 rtb_cosphi = 100.0F * controlMCUSlugsMKII_B.navSupportc_l[1];
3733 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
3734 rtb_cosphi = 0.0F;
3735 } else {
3736 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
3737 }
3738
3739 controlMCUSlugsMKII_B.DataTypeConversion2[1] = rtb_cosphi < 0.0F ? -((int16_T)
3740 (uint16_T)(-rtb_cosphi)) : (int16_T)(uint16_T)rtb_cosphi;
3741 rtb_cosphi = (real32_T)(5.7295779513082323E+001 *
3742 controlMCUSlugsMKII_B.Subtract) * 100.0F;
3743 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
3744 rtb_cosphi = 0.0F;
3745 } else {
3746 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
3747 }
3748
3749 controlMCUSlugsMKII_B.DataTypeConversion2[2] = rtb_cosphi < 0.0F ? -((int16_T)
3750 (uint16_T)(-rtb_cosphi)) : (int16_T)(uint16_T)rtb_cosphi;
3751
3752 /* S-Function "dsPIC_C_function_Call" Block: <S14>/Get XYZ [navSupport.c]2 */
3753 setDiagnosticShort(controlMCUSlugsMKII_B.DataTypeConversion2);
3754
3755 /* Sum: '<S14>/Add1' */
3756 rtb_Abs2 = rtb_BankLimitCommand - controlMCUSlugsMKII_B.y[0];
3757
3758 /* Sum: '<S55>/Add3' incorporates:
3759 * Constant: '<S55>/SaturationLimit'
3760 */
3761 rtb_sinphi = 2.792526782E-001F - controlMCUSlugsMKII_B.DataTypeConversion_f;
3762
3763 /* Switch: '<S51>/Switch3' incorporates:
3764 * RelationalOperator: '<S51>/Relational Operator2'
3765 * S-Function (sfix_udelay): '<S51>/Integer Delay3'
3766 */
3767 if ((rtb_Abs2 == rtb_Abs2) > 0) {
3768 controlMCUSlugsMKII_B.Switch3_i = rtb_Abs2;
3769 } else {
3770 controlMCUSlugsMKII_B.Switch3_i =
3771 controlMCUSlugsMKII_DWork.IntegerDelay3_X_mk;
3772 }
3773
3774 /* Sum: '<S55>/Add1' incorporates:
3775 * Constant: '<S55>/delayTime'
3776 * Product: '<S55>/Product1'
3777 * Product: '<S55>/Product2'
3778 * Product: '<S55>/Product3'
3779 * S-Function (sfix_udelay): '<S55>/NDelays'
3780 * Sum: '<S55>/Sum'
3781 */
3782 rtb_Abs2 = (controlMCUSlugsMKII_B.Switch3_i -
3783 controlMCUSlugsMKII_DWork.NDelays_X_m[0]) / 5.000000075E-002F *
3784 controlMCUSlugsMKII_B.navSupportc_k[2] + controlMCUSlugsMKII_B.Switch3_i *
3785 controlMCUSlugsMKII_B.navSupportc_k[0];
3786
3787 /* Sum: '<S55>/Sum2' incorporates:
3788 * Gain: '<S55>/Gain'
3789 * Memory: '<S55>/Memory1'
3790 * Product: '<S55>/Product4'
3791 */
3792 rtb_cosphi = (9.999999776E-003F * controlMCUSlugsMKII_B.Switch3_i *
3793 controlMCUSlugsMKII_B.navSupportc_k[1] +
3794 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_l) + rtb_Abs2;
3795
3796 /* Sum: '<S55>/Add4' incorporates:
3797 * Constant: '<S55>/SaturationLimit1'
3798 */
3799 rtb_Deg2R1 = -2.792526782E-001F - controlMCUSlugsMKII_B.DataTypeConversion_f;
3800
3801 /* Switch: '<S55>/AntiWindup' incorporates:
3802 * Constant: '<S55>/Constant5'
3803 * Logic: '<S55>/Logical Operator'
3804 * RelationalOperator: '<S55>/Relational Operator'
3805 * RelationalOperator: '<S55>/Relational Operator1'
3806 */
3807 if ((rtb_cosphi > rtb_Deg2R1) && (rtb_cosphi < rtb_sinphi)) {
3808 rtb_DataTypeConversion = controlMCUSlugsMKII_B.Switch3_i;
3809 } else {
3810 rtb_DataTypeConversion = 0.0;
3811 }
3812
3813 /* Switch: '<S68>/Switch3' incorporates:
3814 * RelationalOperator: '<S68>/Relational Operator2'
3815 * S-Function (sfix_udelay): '<S68>/Integer Delay3'
3816 */
3817 if ((rtb_DataTypeConversion == rtb_DataTypeConversion) > 0) {
3818 controlMCUSlugsMKII_B.Switch3_na = rtb_DataTypeConversion;
3819 } else {
3820 controlMCUSlugsMKII_B.Switch3_na =
3821 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j;
3822 }
3823
3824 /* Switch: '<S67>/Switch1' incorporates:
3825 * Constant: '<S67>/Constant'
3826 * Constant: '<S67>/Constant1'
3827 * Constant: '<S67>/Constant2'
3828 * Constant: '<S67>/Constant3'
3829 * Constant: '<S67>/Constant5'
3830 * Product: '<S67>/Product'
3831 * Product: '<S67>/Product1'
3832 * Product: '<S67>/Product2'
3833 * Product: '<S67>/Product3'
3834 * S-Function (sfix_udelay): '<S67>/Integer Delay'
3835 * S-Function (sfix_udelay): '<S67>/Integer Delay1'
3836 * S-Function (sfix_udelay): '<S67>/Integer Delay2'
3837 * Sum: '<S67>/Subtract'
3838 * Sum: '<S67>/Subtract1'
3839 */
3840 if (controlMCUSlugsMKII_B.ManualorAutonavSupportc > 0) {
3841 rtb_cosphi = 0.0F;
3842 } else {
3843 rtb_cosphi = (((real32_T)(controlMCUSlugsMKII_B.Switch3_na *
3844 3.3333334326744080E-001) + (real32_T)
3845 (controlMCUSlugsMKII_DWork.IntegerDelay_X_n *
3846 1.3333333730697632E+000)) + (real32_T)
3847 (controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[0] *
3848 3.3333334326744080E-001)) * 4.999999888E-003F +
3849 controlMCUSlugsMKII_DWork.IntegerDelay2_X_j;
3850 }
3851
3852 /* Switch: '<S69>/Switch3' incorporates:
3853 * RelationalOperator: '<S69>/Relational Operator2'
3854 * S-Function (sfix_udelay): '<S69>/Integer Delay3'
3855 */
3856 if ((rtb_cosphi == rtb_cosphi) > 0) {
3857 controlMCUSlugsMKII_B.Switch3_cv = rtb_cosphi;
3858 } else {
3859 controlMCUSlugsMKII_B.Switch3_cv =
3860 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hp;
3861 }
3862
3863 /* Sum: '<S55>/Add2' incorporates:
3864 * Product: '<S55>/Product'
3865 */
3866 rtb_Abs2 += controlMCUSlugsMKII_B.Switch3_cv *
3867 controlMCUSlugsMKII_B.navSupportc_k[1];
3868
3869 /* Switch: '<S66>/Switch2' incorporates:
3870 * RelationalOperator: '<S66>/LowerRelop1'
3871 */
3872 if (!(rtb_Abs2 > rtb_sinphi)) {
3873 /* Switch: '<S66>/Switch' incorporates:
3874 * RelationalOperator: '<S66>/UpperRelop'
3875 */
3876 if (!(rtb_Abs2 < rtb_Deg2R1)) {
3877 rtb_Deg2R1 = rtb_Abs2;
3878 }
3879
3880 rtb_sinphi = rtb_Deg2R1;
3881 }
3882
3883 /* Sum: '<S14>/Add3' */
3884 rtb_sinphi += controlMCUSlugsMKII_B.DataTypeConversion_f;
3885
3886 /* Update for S-Function (sfix_udelay): '<S62>/Integer Delay3' */
3887 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nc =
3888 controlMCUSlugsMKII_B.Switch3_gn;
3889
3890 /* Update for S-Function (sfix_udelay): '<S63>/Integer Delay3' */
3891 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gw =
3892 controlMCUSlugsMKII_B.Switch3_h4;
3893
3894 /* Update for S-Function (sfix_udelay): '<S53>/Integer Delay3' */
3895 controlMCUSlugsMKII_DWork.IntegerDelay3_X_h = controlMCUSlugsMKII_B.Switch3_pa;
3896
3897 /* Update for S-Function (sfix_udelay): '<S54>/Integer Delay3' */
3898 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ae =
3899 controlMCUSlugsMKII_B.Switch3_fx;
3900
3901 /* Update for S-Function (sfix_udelay): '<S52>/Integer Delay3' */
3902 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b5 =
3903 controlMCUSlugsMKII_B.Switch3_my;
3904
3905 /* Update for S-Function (sfix_udelay): '<S57>/NDelays' */
3906 controlMCUSlugsMKII_DWork.NDelays_X_e[0] =
3907 controlMCUSlugsMKII_DWork.NDelays_X_e[1];
3908 controlMCUSlugsMKII_DWork.NDelays_X_e[1] =
3909 controlMCUSlugsMKII_DWork.NDelays_X_e[2];
3910 controlMCUSlugsMKII_DWork.NDelays_X_e[2] =
3911 controlMCUSlugsMKII_DWork.NDelays_X_e[3];
3912 controlMCUSlugsMKII_DWork.NDelays_X_e[3] =
3913 controlMCUSlugsMKII_DWork.NDelays_X_e[4];
3914 controlMCUSlugsMKII_DWork.NDelays_X_e[4] = controlMCUSlugsMKII_B.Switch3_my;
3915
3916 /* Update for S-Function (sfix_udelay): '<S83>/Integer Delay2' */
3917 controlMCUSlugsMKII_DWork.IntegerDelay2_X_g = controlMCUSlugsMKII_B.Switch3_pf;
3918
3919 /* Update for Memory: '<S57>/Memory1' */
3920 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_a = rtb_Ze;
3921
3922 /* Update for S-Function (sfix_udelay): '<S84>/Integer Delay3' */
3923 controlMCUSlugsMKII_DWork.IntegerDelay3_X_o = controlMCUSlugsMKII_B.Switch3_g;
3924
3925 /* Update for S-Function (sfix_udelay): '<S83>/Integer Delay' */
3926 controlMCUSlugsMKII_DWork.IntegerDelay_X_i0 = controlMCUSlugsMKII_B.Switch3_g;
3927
3928 /* Update for S-Function (sfix_udelay): '<S83>/Integer Delay1' */
3929 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[0] =
3930 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[1];
3931 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[1] =
3932 controlMCUSlugsMKII_B.Switch3_g;
3933
3934 /* Update for S-Function (sfix_udelay): '<S85>/Integer Delay3' */
3935 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cn =
3936 controlMCUSlugsMKII_B.Switch3_pf;
3937
3938 /* Update for S-Function (sfix_udelay): '<S51>/Integer Delay3' */
3939 controlMCUSlugsMKII_DWork.IntegerDelay3_X_mk = controlMCUSlugsMKII_B.Switch3_i;
3940
3941 /* Update for S-Function (sfix_udelay): '<S55>/NDelays' */
3942 controlMCUSlugsMKII_DWork.NDelays_X_m[0] =
3943 controlMCUSlugsMKII_DWork.NDelays_X_m[1];
3944 controlMCUSlugsMKII_DWork.NDelays_X_m[1] =
3945 controlMCUSlugsMKII_DWork.NDelays_X_m[2];
3946 controlMCUSlugsMKII_DWork.NDelays_X_m[2] =
3947 controlMCUSlugsMKII_DWork.NDelays_X_m[3];
3948 controlMCUSlugsMKII_DWork.NDelays_X_m[3] =
3949 controlMCUSlugsMKII_DWork.NDelays_X_m[4];
3950 controlMCUSlugsMKII_DWork.NDelays_X_m[4] = controlMCUSlugsMKII_B.Switch3_i;
3951
3952 /* Update for S-Function (sfix_udelay): '<S67>/Integer Delay2' */
3953 controlMCUSlugsMKII_DWork.IntegerDelay2_X_j = controlMCUSlugsMKII_B.Switch3_cv;
3954
3955 /* Update for Memory: '<S55>/Memory1' */
3956 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_l = rtb_Abs2;
3957
3958 /* Update for S-Function (sfix_udelay): '<S68>/Integer Delay3' */
3959 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j = controlMCUSlugsMKII_B.Switch3_na;
3960
3961 /* Update for S-Function (sfix_udelay): '<S67>/Integer Delay' */
3962 controlMCUSlugsMKII_DWork.IntegerDelay_X_n = controlMCUSlugsMKII_B.Switch3_na;
3963
3964 /* Update for S-Function (sfix_udelay): '<S67>/Integer Delay1' */
3965 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[0] =
3966 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[1];
3967 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[1] =
3968 controlMCUSlugsMKII_B.Switch3_na;
3969
3970 /* Update for S-Function (sfix_udelay): '<S69>/Integer Delay3' */
3971 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hp =
3972 controlMCUSlugsMKII_B.Switch3_cv;
3973
3974 /* end of Outputs for SubSystem: '<S2>/Lateral Channel' */
3975
3976 /* Embedded MATLAB: '<Root>/myMux Fun1' incorporates:
3977 * Saturate: '<S14>/Aileron Limit'
3978 */
3979 /* Embedded MATLAB Function 'myMux Fun1': '<S10>:1' */
3980 /* This block supports an embeddable subset of the MATLAB language. */
3981 /* See the help menu for details. */
3982 /* '<S10>:1:5' */
3983 rtb_cosphi = rt_SATURATE(rtb_sinphi, -2.792526782E-001F, 2.792526782E-001F);
3984
3985 /* If: '<S291>/If' incorporates:
3986 * ActionPort: '<S293>/Action Port'
3987 * ActionPort: '<S294>/Action Port'
3988 * ActionPort: '<S295>/Action Port'
3989 * ActionPort: '<S296>/Action Port'
3990 * SubSystem: '<S291>/If Control Type Is Manual'
3991 * SubSystem: '<S291>/If Control Type Is Passthrough'
3992 * SubSystem: '<S291>/If Control Type Is Selective Passthrough'
3993 * SubSystem: '<S291>/If Control Type Is Wp Follow or Inner Cmds'
3994 */
3995 if (controlMCUSlugsMKII_B.GetControlTypenavSupportc == 1) {
3996 /* Gain: '<S293>/Gain' */
3997 rtb_Gain_fi = rtb_y_n[0] >> 1;
3998
3999 /* Gain: '<S293>/Gain1' */
4000 rtb_Gain1_cp = rtb_y_n[1] >> 1;
4001
4002 /* Gain: '<S293>/Gain2' */
4003 rtb_Gain2_f = rtb_y_n[3] >> 1;
4004
4005 /* Gain: '<S293>/Gain3' */
4006 rtb_Gain3_j = rtb_y_n[2] >> 1;
4007
4008 /* Embedded MATLAB: '<S293>/myMux Fun1' */
4009 controlMCUSlugs_myMuxFun1_a(rtb_Gain_fi, rtb_Gain1_cp, rtb_Gain2_f,
4010 rtb_Gain3_j, controlMCUSlugsMKII_B.Merge_n);
4011 } else if ((controlMCUSlugsMKII_B.GetControlTypenavSupportc == 2) ||
4012 (controlMCUSlugsMKII_B.GetControlTypenavSupportc == 3)) {
4013 /* DataTypeConversion: '<S304>/Data Type Conversion' incorporates:
4014 * Constant: '<S304>/Constant1'
4015 * Constant: '<S304>/Constant2'
4016 * Product: '<S304>/Divide'
4017 * Sum: '<S304>/Add'
4018 */
4019 rtb_DataTypeConversion = (real_T)rtb_u020 * 3.9411311193641609E+003 +
4020 3.7764285714285716E+003;
4021 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion)) {
4022 rtb_DataTypeConversion = 0.0;
4023 } else {
4024 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4025 }
4026
4027 rtb_DataTypeConversion_k = rtb_DataTypeConversion < 0.0 ? (uint16_T)
4028 (-((int16_T)(uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4029 rtb_DataTypeConversion;
4030
4031 /* DataTypeConversion: '<S305>/Data Type Conversion' incorporates:
4032 * Constant: '<S305>/Constant1'
4033 * Constant: '<S305>/Constant2'
4034 * Product: '<S305>/Divide'
4035 * Sum: '<S305>/Add'
4036 */
4037 rtb_DataTypeConversion = (real_T)rtb_Product1_m * 1274.0 + 3176.0;
4038 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion)) {
4039 rtb_DataTypeConversion = 0.0;
4040 } else {
4041 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4042 }
4043
4044 rtb_DataTypeConversion_o = rtb_DataTypeConversion < 0.0 ? (uint16_T)
4045 (-((int16_T)(uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4046 rtb_DataTypeConversion;
4047
4048 /* DataTypeConversion: '<S306>/Data Type Conversion' incorporates:
4049 * Constant: '<S306>/Constant1'
4050 * Constant: '<S306>/Constant2'
4051 * Product: '<S306>/Divide'
4052 * Sum: '<S306>/Add'
4053 */
4054 rtb_DataTypeConversion = (real_T)rtb_cosphi * 3.4254691037464213E+003 +
4055 3.6921428571428564E+003;
4056 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion)) {
4057 rtb_DataTypeConversion = 0.0;
4058 } else {
4059 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4060 }
4061
4062 rtb_DataTypeConversion_o5 = rtb_DataTypeConversion < 0.0 ? (uint16_T)
4063 (-((int16_T)(uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4064 rtb_DataTypeConversion;
4065
4066 /* DataTypeConversion: '<S307>/Data Type Conversion' incorporates:
4067 * Constant: '<S307>/Constant1'
4068 * Constant: '<S307>/Constant2'
4069 * Product: '<S307>/Divide'
4070 * Sum: '<S307>/Add'
4071 */
4072 rtb_DataTypeConversion = (real_T)rtb_Sum2 * 2.8579680495216057E+003 +
4073 3.7214285714285706E+003;
4074 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion)) {
4075 rtb_DataTypeConversion = 0.0;
4076 } else {
4077 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4078 }
4079
4080 rtb_DataTypeConversion_j = rtb_DataTypeConversion < 0.0 ? (uint16_T)
4081 (-((int16_T)(uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4082 rtb_DataTypeConversion;
4083
4084 /* Embedded MATLAB: '<S296>/myMux Fun1' */
4085 controlMCUSlugs_myMuxFun1_a(rtb_DataTypeConversion_o,
4086 rtb_DataTypeConversion_o5, rtb_DataTypeConversion_j,
4087 rtb_DataTypeConversion_k, controlMCUSlugsMKII_B.Merge_n);
4088 } else if (controlMCUSlugsMKII_B.GetControlTypenavSupportc == 4) {
4089 /* Gain: '<S294>/Gain' */
4090 rtb_Gain_pn = rtb_y_n[0] >> 1;
4091
4092 /* Gain: '<S294>/Gain1' */
4093 rtb_Gain1_c = rtb_y_n[1] >> 1;
4094
4095 /* Gain: '<S294>/Gain2' */
4096 rtb_Gain2_d = rtb_y_n[3] >> 1;
4097
4098 /* Gain: '<S294>/Gain3' */
4099 rtb_Gain3_p = rtb_y_n[2] >> 1;
4100
4101 /* Embedded MATLAB: '<S294>/myMux Fun1' */
4102 controlMCUSlugs_myMuxFun1_a(rtb_Gain_pn, rtb_Gain1_c, rtb_Gain2_d,
4103 rtb_Gain3_p, controlMCUSlugsMKII_B.Merge_n);
4104 } else {
4105 if (controlMCUSlugsMKII_B.GetControlTypenavSupportc == 5) {
4106 /* S-Function "dsPIC_C_function_Call" Block: <S295>/Get Pass Switches [navSupport.c] */
4107 getPassValues(&controlMCUSlugsMKII_B.GetPassSwitchesnavSupportc[0]);
4108
4109 /* Switch: '<S295>/Switch' incorporates:
4110 * Constant: '<S300>/Constant1'
4111 * Constant: '<S300>/Constant2'
4112 * DataTypeConversion: '<S300>/Data Type Conversion'
4113 * Gain: '<S295>/Gain'
4114 * Product: '<S300>/Divide'
4115 * Sum: '<S300>/Add'
4116 */
4117 if (controlMCUSlugsMKII_B.GetPassSwitchesnavSupportc[3] >= 1) {
4118 rtb_Switch_k = rtb_y_n[0] >> 1;
4119 } else {
4120 rtb_DataTypeConversion = (real_T)rtb_Product1_m * 1274.0 + 3176.0;
4121 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion))
4122 {
4123 rtb_DataTypeConversion = 0.0;
4124 } else {
4125 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4126 }
4127
4128 rtb_Switch_k = rtb_DataTypeConversion < 0.0 ? (uint16_T)(-((int16_T)
4129 (uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4130 rtb_DataTypeConversion;
4131 }
4132
4133 /* Switch: '<S295>/Switch1' incorporates:
4134 * Constant: '<S301>/Constant1'
4135 * Constant: '<S301>/Constant2'
4136 * DataTypeConversion: '<S301>/Data Type Conversion'
4137 * Gain: '<S295>/Gain1'
4138 * Product: '<S301>/Divide'
4139 * Sum: '<S301>/Add'
4140 */
4141 if (controlMCUSlugsMKII_B.GetPassSwitchesnavSupportc[2] >= 1) {
4142 rtb_Switch1_b = rtb_y_n[1] >> 1;
4143 } else {
4144 rtb_DataTypeConversion = (real_T)rtb_cosphi * 3.4254691037464213E+003 +
4145 3.6921428571428564E+003;
4146 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion))
4147 {
4148 rtb_DataTypeConversion = 0.0;
4149 } else {
4150 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4151 }
4152
4153 rtb_Switch1_b = rtb_DataTypeConversion < 0.0 ? (uint16_T)(-((int16_T)
4154 (uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4155 rtb_DataTypeConversion;
4156 }
4157
4158 /* Switch: '<S295>/Switch2' incorporates:
4159 * Constant: '<S302>/Constant1'
4160 * Constant: '<S302>/Constant2'
4161 * DataTypeConversion: '<S302>/Data Type Conversion'
4162 * Gain: '<S295>/Gain2'
4163 * Product: '<S302>/Divide'
4164 * Sum: '<S302>/Add'
4165 */
4166 if (controlMCUSlugsMKII_B.GetPassSwitchesnavSupportc[1] >= 1) {
4167 rtb_Switch2_l = rtb_y_n[3] >> 1;
4168 } else {
4169 rtb_DataTypeConversion = (real_T)rtb_Sum2 * 2.8579680495216057E+003 +
4170 3.7214285714285706E+003;
4171 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion))
4172 {
4173 rtb_DataTypeConversion = 0.0;
4174 } else {
4175 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4176 }
4177
4178 rtb_Switch2_l = rtb_DataTypeConversion < 0.0 ? (uint16_T)(-((int16_T)
4179 (uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4180 rtb_DataTypeConversion;
4181 }
4182
4183 /* Switch: '<S295>/Switch3' incorporates:
4184 * Constant: '<S299>/Constant1'
4185 * Constant: '<S299>/Constant2'
4186 * DataTypeConversion: '<S299>/Data Type Conversion'
4187 * Gain: '<S295>/Gain3'
4188 * Product: '<S299>/Divide'
4189 * Sum: '<S299>/Add'
4190 */
4191 if (controlMCUSlugsMKII_B.GetPassSwitchesnavSupportc[0] >= 1) {
4192 rtb_Switch3 = rtb_y_n[2] >> 1;
4193 } else {
4194 rtb_DataTypeConversion = (real_T)rtb_u020 * 3.9411311193641609E+003 +
4195 3.7764285714285716E+003;
4196 if (rtIsNaN(rtb_DataTypeConversion) || rtIsInf(rtb_DataTypeConversion))
4197 {
4198 rtb_DataTypeConversion = 0.0;
4199 } else {
4200 rtb_DataTypeConversion = fmod(floor(rtb_DataTypeConversion), 65536.0);
4201 }
4202
4203 rtb_Switch3 = rtb_DataTypeConversion < 0.0 ? (uint16_T)(-((int16_T)
4204 (uint16_T)(-rtb_DataTypeConversion))) : (uint16_T)
4205 rtb_DataTypeConversion;
4206 }
4207
4208 /* Embedded MATLAB: '<S295>/myMux Fun1' */
4209 controlMCUSlugs_myMuxFun1_a(rtb_Switch_k, rtb_Switch1_b, rtb_Switch2_l,
4210 rtb_Switch3, controlMCUSlugsMKII_B.Merge_n);
4211 }
4212 }
4213
4214 /* S-Function "dsPIC_PWM_motor" Block: <S8>/PWM Servo Output */
4215 PDC1 = controlMCUSlugsMKII_B.Merge_n[2] ;
4216 PDC2 = controlMCUSlugsMKII_B.Merge_n[3] ;
4217 PDC3 = controlMCUSlugsMKII_B.Merge_n[1] ;
4218 PDC4 = controlMCUSlugsMKII_B.Merge_n[0] ;
4219
4220 /* Embedded MATLAB: '<S8>/myMux Fun1' incorporates:
4221 * SignalConversion: '<S292>/TmpSignal ConversionAt SFunction Inport1'
4222 */
4223 /* Embedded MATLAB Function 'Update PWM Commands and Send Telemetry/myMux Fun1': '<S292>:1' */
4224 /* This block supports an embeddable subset of the MATLAB language. */
4225 /* See the help menu for details. */
4226 /* '<S292>:1:5' */
4227 controlMCUSlugsMKII_B.y_d[0] = controlMCUSlugsMKII_B.Merge_n[0];
4228 controlMCUSlugsMKII_B.y_d[1] = controlMCUSlugsMKII_B.Merge_n[1];
4229 controlMCUSlugsMKII_B.y_d[2] = controlMCUSlugsMKII_B.Merge_n[3];
4230 controlMCUSlugsMKII_B.y_d[3] = controlMCUSlugsMKII_B.Merge_n[2];
4231 controlMCUSlugsMKII_B.y_d[4] = rtb_y_n[4];
4232
4233 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Update PWM Commands [groundStationDriver.c] */
4234 updatePWM(controlMCUSlugsMKII_B.y_d);
4235
4236 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Update the Euler Angles [groundStationDriver.c] */
4237 updateEuler(controlMCUSlugsMKII_B.sf_myMuxFun1_e.y);
4238
4239 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Update PQR [groundStationDriver.c] */
4240 updatePQR(controlMCUSlugsMKII_B.Product1);
4241
4242 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Create Telemetry Sentence [groundStationDriver.c] */
4243 prepareTelemetry(&controlMCUSlugsMKII_B.CreateTelemetrySentencegroundSt[0]);
4244
4245 /* S-Function "dsPIC_C_function_Call" Block: <S8>/Send Data to Radio Modem [groundStationDriver.c] */
4246 send2GS(controlMCUSlugsMKII_B.CreateTelemetrySentencegroundSt);
4247
4248 /* Embedded MATLAB: '<S2>/myMux Fun2' */
4249 controlMCUSlugsMK_myMuxFun1(controlMCUSlugsMKII_B.Switch3_oe,
4250 controlMCUSlugsMKII_B.PsiDotLimit, controlMCUSlugsMKII_B.PsiDotLimit_g,
4251 &controlMCUSlugsMKII_B.sf_myMuxFun2_l);
4252
4253 /* S-Function "dsPIC_C_function_Call" Block: <S2>/Diagnostics [navSupport.c] */
4254 setDiagnosticFloat(controlMCUSlugsMKII_B.sf_myMuxFun2_l.y);
4255
4256 /* DataTypeConversion: '<S290>/Data Type Conversion4' */
4257 if (controlMCUSlugsMKII_ConstB.Gain4 < 65536.0) {
4258 if (controlMCUSlugsMKII_ConstB.Gain4 >= 0.0) {
4259 controlMCUSlugsMKII_B.DataTypeConversion4 = (uint16_T)
4260 controlMCUSlugsMKII_ConstB.Gain4;
4261 } else {
4262 controlMCUSlugsMKII_B.DataTypeConversion4 = 0U;
4263 }
4264 } else {
4265 controlMCUSlugsMKII_B.DataTypeConversion4 = MAX_uint16_T;
4266 }
4267
4268 /* S-Function "dsPIC_C_function_Call" Block: <S290>/Update PWM Commands4 */
4269 updatePWM2(controlMCUSlugsMKII_B.DataTypeConversion4,((uint8_T)4U));
4270
4271 /* DataTypeConversion: '<S280>/Data Type Conversion2' incorporates:
4272 * Abs: '<S6>/Abs4'
4273 * Gain: '<S6>/Gain4'
4274 */
4275 rtb_cosphi = (real32_T)fabs(100.0F * controlMCUSlugsMKII_B.DataTypeConversion);
4276 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
4277 rtb_cosphi = 0.0F;
4278 } else {
4279 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
4280 }
4281
4282 controlMCUSlugsMKII_B.DataTypeConversion2_e = rtb_cosphi < 0.0F ? (uint16_T)
4283 (-((int16_T)(uint16_T)(-rtb_cosphi))) : (uint16_T)rtb_cosphi;
4284
4285 /* S-Function "dsPIC_C_function_Call" Block: <S280>/Update PWM Commands1 */
4286 updatePWM2(controlMCUSlugsMKII_B.DataTypeConversion2_e,((uint8_T)0U));
4287
4288 /* DataTypeConversion: '<S280>/Data Type Conversion3' incorporates:
4289 * Abs: '<S6>/Abs'
4290 * Gain: '<S6>/Gain1'
4291 */
4292 rtb_cosphi = (real32_T)fabs(5729.578125F *
4293 controlMCUSlugsMKII_B.DataTypeConversion_f);
4294 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
4295 rtb_cosphi = 0.0F;
4296 } else {
4297 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
4298 }
4299
4300 controlMCUSlugsMKII_B.DataTypeConversion3 = rtb_cosphi < 0.0F ? (uint16_T)
4301 (-((int16_T)(uint16_T)(-rtb_cosphi))) : (uint16_T)rtb_cosphi;
4302
4303 /* S-Function "dsPIC_C_function_Call" Block: <S280>/Update PWM Commands2 */
4304 updatePWM2(controlMCUSlugsMKII_B.DataTypeConversion3,((uint8_T)1U));
4305
4306 /* DataTypeConversion: '<S280>/Data Type Conversion1' incorporates:
4307 * Abs: '<S6>/Abs1'
4308 * Gain: '<S6>/Gain3'
4309 */
4310 rtb_cosphi = (real32_T)fabs(5729.578125F *
4311 controlMCUSlugsMKII_B.DataTypeConversion_c);
4312 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
4313 rtb_cosphi = 0.0F;
4314 } else {
4315 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
4316 }
4317
4318 controlMCUSlugsMKII_B.DataTypeConversion1 = rtb_cosphi < 0.0F ? (uint16_T)
4319 (-((int16_T)(uint16_T)(-rtb_cosphi))) : (uint16_T)rtb_cosphi;
4320
4321 /* S-Function "dsPIC_C_function_Call" Block: <S280>/Update PWM Commands3 */
4322 updatePWM2(controlMCUSlugsMKII_B.DataTypeConversion1,((uint8_T)2U));
4323
4324 /* DataTypeConversion: '<S280>/Data Type Conversion4' incorporates:
4325 * Abs: '<S6>/Abs2'
4326 * Gain: '<S6>/Gain2'
4327 */
4328 rtb_cosphi = (real32_T)fabs(5729.578125F *
4329 controlMCUSlugsMKII_B.DataTypeConversion_b);
4330 if (rtIsNaNF(rtb_cosphi) || rtIsInfF(rtb_cosphi)) {
4331 rtb_cosphi = 0.0F;
4332 } else {
4333 rtb_cosphi = (real32_T)fmod((real32_T)floor(rtb_cosphi), 65536.0F);
4334 }
4335
4336 controlMCUSlugsMKII_B.DataTypeConversion4_p = rtb_cosphi < 0.0F ? (uint16_T)
4337 (-((int16_T)(uint16_T)(-rtb_cosphi))) : (uint16_T)rtb_cosphi;
4338
4339 /* S-Function "dsPIC_C_function_Call" Block: <S280>/Update PWM Commands4 */
4340 updatePWM2(controlMCUSlugsMKII_B.DataTypeConversion4_p,((uint8_T)3U));
4341
4342 /* S-Function "dsPIC_C_function_Call" Block: <S5>/GetFilterOnOff */
4343 controlMCUSlugsMKII_B.GetFilterOnOff = getFilterOnOff();
4344
4345 /* DataTypeConversion: '<S5>/Data Type Conversion1' */
4346 controlMCUSlugsMKII_B.DataTypeConversion1_e =
4347 (controlMCUSlugsMKII_B.GetFilterOnOff != 0);
4348
4349 /* S-Function "dsPIC_Digital_OutputWrite" Block: <S5>/HIL Attitude On//Off Switch */
4350 LATBbits.LATB6 = controlMCUSlugsMKII_B.DataTypeConversion1_e;
4351
4352 /* S-Function "dsPIC_Digital_OutputWrite" Block: <S5>/HIL On//Off Switch */
4353 LATEbits.LATE9 = controlMCUSlugsMKII_B.DataTypeConversion1_e;
4354
4355 /* Update for S-Function (sfix_udelay): '<S6>/Integer Delay' */
4356 controlMCUSlugsMKII_DWork.IntegerDelay_X_p = controlMCUSlugsMKII_B.ScheduleLPF;
4357
4358 /* Update for S-Function (sfix_udelay): '<S278>/Integer Delay2' */
4359 controlMCUSlugsMKII_DWork.IntegerDelay2_X_k = controlMCUSlugsMKII_B.IC_c;
4360
4361 /* Update for S-Function (sfix_udelay): '<S17>/Integer Delay3' */
4362 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j5 =
4363 controlMCUSlugsMKII_B.Switch3_ov;
4364
4365 /* Update for S-Function (sfix_udelay): '<S19>/Integer Delay3' */
4366 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b = controlMCUSlugsMKII_B.Switch3_oe;
4367
4368 /* Update for enable SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' incorporates:
4369 * Update for EnablePort: '<S13>/Enable'
4370 */
4371 if ((int16_T)controlMCUSlugsMKII_DWork.L1OutputFeedbackControllerWithP) {
4372 /* Update for UnitDelay: '<S33>/UD' */
4373 controlMCUSlugsMKII_DWork.UD_DSTATE_l = controlMCUSlugsMKII_B.navSupportc_g
4374 [0];
4375
4376 /* Update for S-Function (sfix_udelay): '<S24>/Integer Delay' */
4377 controlMCUSlugsMKII_DWork.IntegerDelay_X_d =
4378 controlMCUSlugsMKII_B.Switch3_im;
4379
4380 /* Update for S-Function (sfix_udelay): '<S24>/Integer Delay1' */
4381 controlMCUSlugsMKII_DWork.IntegerDelay1_X_nc =
4382 controlMCUSlugsMKII_B.Subtract_b;
4383
4384 /* Update for S-Function (sfix_udelay): '<S26>/Integer Delay3' */
4385 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cw =
4386 controlMCUSlugsMKII_B.Switch3_cj;
4387
4388 /* Update for UnitDelay: '<S42>/UD' */
4389 controlMCUSlugsMKII_DWork.UD_DSTATE_ld =
4390 controlMCUSlugsMKII_B.navSupportc_g[1];
4391
4392 /* Update for S-Function (sfix_udelay): '<S28>/Integer Delay' */
4393 controlMCUSlugsMKII_DWork.IntegerDelay_X_c =
4394 controlMCUSlugsMKII_B.Switch3_ae;
4395
4396 /* Update for S-Function (sfix_udelay): '<S28>/Integer Delay1' */
4397 controlMCUSlugsMKII_DWork.IntegerDelay1_X_a =
4398 controlMCUSlugsMKII_B.Subtract_c;
4399
4400 /* Update for S-Function (sfix_udelay): '<S13>/Integer Delay' */
4401 controlMCUSlugsMKII_DWork.IntegerDelay_X_no =
4402 controlMCUSlugsMKII_B.PsiDotLimit;
4403
4404 /* Update for S-Function (sfix_udelay): '<S13>/Integer Delay1' */
4405 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b =
4406 controlMCUSlugsMKII_B.Switch3_im;
4407
4408 /* Update for S-Function (sfix_udelay): '<S27>/Integer Delay3' */
4409 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gww =
4410 controlMCUSlugsMKII_B.Switch3_ae;
4411
4412 /* Update for S-Function (sfix_udelay): '<S29>/Integer Delay' */
4413 controlMCUSlugsMKII_DWork.IntegerDelay_X_f =
4414 controlMCUSlugsMKII_B.Switch3_gq;
4415
4416 /* Update for S-Function (sfix_udelay): '<S29>/Integer Delay1' */
4417 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[0] =
4418 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[1];
4419 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[1] =
4420 controlMCUSlugsMKII_B.Switch3_gq;
4421
4422 /* Update for S-Function (sfix_udelay): '<S29>/Integer Delay2' */
4423 controlMCUSlugsMKII_DWork.IntegerDelay2_X_m =
4424 controlMCUSlugsMKII_B.Switch3_im;
4425
4426 /* Update for S-Function (sfix_udelay): '<S43>/Integer Delay3' */
4427 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe =
4428 controlMCUSlugsMKII_B.Switch3_gq;
4429
4430 /* Update for S-Function (sfix_udelay): '<S44>/Integer Delay3' */
4431 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe1 =
4432 controlMCUSlugsMKII_B.Switch3_im;
4433 }
4434
4435 /* end of Update for SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' */
4436
4437 /* Update absolute time */
4438 /* The "clockTick0" counts the number of times the code of this task has
4439 * been executed. The resolution of this integer timer is 0.01, which is the step size
4440 * of the task. Size of "clockTick0" ensures timer will not overflow during the
4441 * application lifespan selected.
4442 */
4443 controlMCUSlugsMKII_M->Timing.clockTick0++;
4444 }
4445
4446 /* Model step function for TID1 */
4447 void controlMCUSlugsMKII_step1(void) /* Sample time: [1.0s, 0.0s] */
4448 {
4449 /* (no output/update code required) */
4450 }
4451
4452 void controlMCUSlugsMKII_step(int_T tid)
4453 {
4454 switch (tid) {
4455 case 0 :
4456 controlMCUSlugsMKII_step0();
4457 break;
4458
4459 case 1 :
4460 controlMCUSlugsMKII_step1();
4461 break;
4462
4463 default :
4464 break;
4465 }
4466 }
4467
4468 /* Model initialize function */
4469 void controlMCUSlugsMKII_initialize(boolean_T firstTime)
4470 {
4471 (void)firstTime;
4472
4473 /* Registration code */
4474
4475 /* initialize non-finites */
4476 rt_InitInfAndNaN(sizeof(real_T));
4477
4478 /* initialize real-time model */
4479 (void) memset((void *)controlMCUSlugsMKII_M, 0,
4480 sizeof(RT_MODEL_controlMCUSlugsMKII));
4481 rtmSetFirstInitCond(controlMCUSlugsMKII_M, 1);
4482
4483 /* block I/O */
4484 (void) memset(((void *) &controlMCUSlugsMKII_B), 0,
4485 sizeof(BlockIO_controlMCUSlugsMKII));
4486
4487 {
4488 int_T i;
4489 for (i = 0; i < 6; i++) {
4490 controlMCUSlugsMKII_B.GetAttitudenavSupportc[i] = 0.0F;
4491 }
4492
4493 for (i = 0; i < 9; i++) {
4494 controlMCUSlugsMKII_B.Product[i] = 0.0F;
4495 }
4496
4497 for (i = 0; i < 6; i++) {
4498 controlMCUSlugsMKII_B.y[i] = 0.0F;
4499 }
4500
4501 for (i = 0; i < 9; i++) {
4502 controlMCUSlugsMKII_B.sf_myMuxFun1_m.y[i] = 0.0F;
4503 }
4504
4505 for (i = 0; i < 9; i++) {
4506 controlMCUSlugsMKII_B.sf_myMuxFun1_n.y[i] = 0.0F;
4507 }
4508
4509 controlMCUSlugsMKII_B.IC = 0.0;
4510 controlMCUSlugsMKII_B.Switch3 = 0.0;
4511 controlMCUSlugsMKII_B.swIncrement = 0.0;
4512 controlMCUSlugsMKII_B.Switch3_n = 0.0;
4513 controlMCUSlugsMKII_B.Switch3_k = 0.0;
4514 controlMCUSlugsMKII_B.Switch3_o = 0.0;
4515 controlMCUSlugsMKII_B.Switch3_g = 0.0;
4516 controlMCUSlugsMKII_B.Switch3_na = 0.0;
4517 controlMCUSlugsMKII_B.Subtract = 0.0;
4518 controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[0] = 0.0F;
4519 controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[1] = 0.0F;
4520 controlMCUSlugsMKII_B.GetMidLevelCommandsnavSupportc[2] = 0.0F;
4521 controlMCUSlugsMKII_B.GetDynamicPnavSupportc = 0.0F;
4522 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[0] = 0.0F;
4523 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[1] = 0.0F;
4524 controlMCUSlugsMKII_B.GetPidaccordingtoIndex[2] = 0.0F;
4525 controlMCUSlugsMKII_B.IntegerDelay = 0.0F;
4526 controlMCUSlugsMKII_B.GetXYZnavSupportc[0] = 0.0F;
4527 controlMCUSlugsMKII_B.GetXYZnavSupportc[1] = 0.0F;
4528 controlMCUSlugsMKII_B.GetXYZnavSupportc[2] = 0.0F;
4529 controlMCUSlugsMKII_B.Switch3_ov = 0.0F;
4530 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[0] = 0.0F;
4531 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[1] = 0.0F;
4532 controlMCUSlugsMKII_B.GetPidaccordingtoIndex1[2] = 0.0F;
4533 controlMCUSlugsMKII_B.navSupportc[0] = 0.0F;
4534 controlMCUSlugsMKII_B.navSupportc[1] = 0.0F;
4535 controlMCUSlugsMKII_B.navSupportc[2] = 0.0F;
4536 controlMCUSlugsMKII_B.UnitConversion[0] = 0.0F;
4537 controlMCUSlugsMKII_B.UnitConversion[1] = 0.0F;
4538 controlMCUSlugsMKII_B.UnitConversion[2] = 0.0F;
4539 controlMCUSlugsMKII_B.CFunctionCall1 = 0.0F;
4540 controlMCUSlugsMKII_B.CFunctionCall4 = 0.0F;
4541 controlMCUSlugsMKII_B.CFunctionCall5 = 0.0F;
4542 controlMCUSlugsMKII_B.CFunctionCall = 0.0F;
4543 controlMCUSlugsMKII_B.CFunctionCall2 = 0.0F;
4544 controlMCUSlugsMKII_B.CFunctionCall3 = 0.0F;
4545 controlMCUSlugsMKII_B.CFunctionCall1_g = 0.0F;
4546 controlMCUSlugsMKII_B.CFunctionCall4_a = 0.0F;
4547 controlMCUSlugsMKII_B.CFunctionCall5_d = 0.0F;
4548 controlMCUSlugsMKII_B.CFunctionCall_i = 0.0F;
4549 controlMCUSlugsMKII_B.CFunctionCall2_e = 0.0F;
4550 controlMCUSlugsMKII_B.CFunctionCall3_i = 0.0F;
4551 controlMCUSlugsMKII_B.CFunctionCall_i0 = 0.0F;
4552 controlMCUSlugsMKII_B.u1 = 0.0F;
4553 controlMCUSlugsMKII_B.CFunctionCall_c = 0.0F;
4554 controlMCUSlugsMKII_B.CFunctionCall_c5 = 0.0F;
4555 controlMCUSlugsMKII_B.Product1[0] = 0.0F;
4556 controlMCUSlugsMKII_B.Product1[1] = 0.0F;
4557 controlMCUSlugsMKII_B.Product1[2] = 0.0F;
4558 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[0] = 0.0F;
4559 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[1] = 0.0F;
4560 controlMCUSlugsMKII_B.GetPidaccordingtoIndex2[2] = 0.0F;
4561 controlMCUSlugsMKII_B.GetVnednavSupportc[0] = 0.0F;
4562 controlMCUSlugsMKII_B.GetVnednavSupportc[1] = 0.0F;
4563 controlMCUSlugsMKII_B.GetVnednavSupportc[2] = 0.0F;
4564 controlMCUSlugsMKII_B.navSupportc_o[0] = 0.0F;
4565 controlMCUSlugsMKII_B.navSupportc_o[1] = 0.0F;
4566 controlMCUSlugsMKII_B.navSupportc_o[2] = 0.0F;
4567 controlMCUSlugsMKII_B.navSupportc_n[0] = 0.0F;
4568 controlMCUSlugsMKII_B.navSupportc_n[1] = 0.0F;
4569 controlMCUSlugsMKII_B.navSupportc_n[2] = 0.0F;
4570 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[0] = 0.0F;
4571 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[1] = 0.0F;
4572 controlMCUSlugsMKII_B.GetPidaccordingtoIndex3[2] = 0.0F;
4573 controlMCUSlugsMKII_B.navSupportc_k[0] = 0.0F;
4574 controlMCUSlugsMKII_B.navSupportc_k[1] = 0.0F;
4575 controlMCUSlugsMKII_B.navSupportc_k[2] = 0.0F;
4576 controlMCUSlugsMKII_B.apUtilsc = 0.0F;
4577 controlMCUSlugsMKII_B.apUtilsc_p = 0.0F;
4578 controlMCUSlugsMKII_B.Switch3_oe = 0.0F;
4579 controlMCUSlugsMKII_B.navSupportc_g[0] = 0.0F;
4580 controlMCUSlugsMKII_B.navSupportc_g[1] = 0.0F;
4581 controlMCUSlugsMKII_B.navSupportc_g[2] = 0.0F;
4582 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[0] = 0.0F;
4583 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[1] = 0.0F;
4584 controlMCUSlugsMKII_B.GettheAccelerometersnavSupportc[2] = 0.0F;
4585 controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[0] = 0.0F;
4586 controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[1] = 0.0F;
4587 controlMCUSlugsMKII_B.GettheAccelBiasnavSupportc[2] = 0.0F;
4588 controlMCUSlugsMKII_B.DataTypeConversion = 0.0F;
4589 controlMCUSlugsMKII_B.DataTypeConversion_f = 0.0F;
4590 controlMCUSlugsMKII_B.DataTypeConversion_b = 0.0F;
4591 controlMCUSlugsMKII_B.DataTypeConversion_c = 0.0F;
4592 controlMCUSlugsMKII_B.CFunctionCall_a = 0.0F;
4593 controlMCUSlugsMKII_B.Switch3_h = 0.0F;
4594 controlMCUSlugsMKII_B.Switch3_nn = 0.0F;
4595 controlMCUSlugsMKII_B.Add = 0.0F;
4596 controlMCUSlugsMKII_B.CFunctionCall_o = 0.0F;
4597 controlMCUSlugsMKII_B.CFunctionCall_f = 0.0F;
4598 controlMCUSlugsMKII_B.L1_vec[0] = 0.0F;
4599 controlMCUSlugsMKII_B.L1_vec[1] = 0.0F;
4600 controlMCUSlugsMKII_B.L1_vec[2] = 0.0F;
4601 controlMCUSlugsMKII_B.CFunctionCall_m = 0.0F;
4602 controlMCUSlugsMKII_B.Switch3_a = 0.0F;
4603 controlMCUSlugsMKII_B.u1_h = 0.0F;
4604 controlMCUSlugsMKII_B.CFunctionCall_h = 0.0F;
4605 controlMCUSlugsMKII_B.CFunctionCall_e = 0.0F;
4606 controlMCUSlugsMKII_B.Switch3_m = 0.0F;
4607 controlMCUSlugsMKII_B.Diff = 0.0F;
4608 controlMCUSlugsMKII_B.CFunctionCall_j = 0.0F;
4609 controlMCUSlugsMKII_B.Diff_o = 0.0F;
4610 controlMCUSlugsMKII_B.CFunctionCall_l = 0.0F;
4611 controlMCUSlugsMKII_B.Diff_a = 0.0F;
4612 controlMCUSlugsMKII_B.CFunctionCall_ep = 0.0F;
4613 controlMCUSlugsMKII_B.IC_e = 0.0F;
4614 controlMCUSlugsMKII_B.Switch3_e = 0.0F;
4615 controlMCUSlugsMKII_B.Divide = 0.0F;
4616 controlMCUSlugsMKII_B.CFunctionCall_g = 0.0F;
4617 controlMCUSlugsMKII_B.Switch3_c = 0.0F;
4618 controlMCUSlugsMKII_B.CFunctionCall_d[0] = 0.0F;
4619 controlMCUSlugsMKII_B.CFunctionCall_d[1] = 0.0F;
4620 controlMCUSlugsMKII_B.CFunctionCall_d[2] = 0.0F;
4621 controlMCUSlugsMKII_B.Switch[0] = 0.0F;
4622 controlMCUSlugsMKII_B.Switch[1] = 0.0F;
4623 controlMCUSlugsMKII_B.Switch[2] = 0.0F;
4624 controlMCUSlugsMKII_B.CFunctionCall_a1[0] = 0.0F;
4625 controlMCUSlugsMKII_B.CFunctionCall_a1[1] = 0.0F;
4626 controlMCUSlugsMKII_B.CFunctionCall_a1[2] = 0.0F;
4627 controlMCUSlugsMKII_B.Reshape1[0] = 0.0F;
4628 controlMCUSlugsMKII_B.Reshape1[1] = 0.0F;
4629 controlMCUSlugsMKII_B.Reshape1[2] = 0.0F;
4630 controlMCUSlugsMKII_B.CFunctionCall_b = 0.0F;
4631 controlMCUSlugsMKII_B.Divide_n[0] = 0.0F;
4632 controlMCUSlugsMKII_B.Divide_n[1] = 0.0F;
4633 controlMCUSlugsMKII_B.Divide_n[2] = 0.0F;
4634 controlMCUSlugsMKII_B.CFunctionCall_c0 = 0.0F;
4635 controlMCUSlugsMKII_B.Divide_p[0] = 0.0F;
4636 controlMCUSlugsMKII_B.Divide_p[1] = 0.0F;
4637 controlMCUSlugsMKII_B.Divide_p[2] = 0.0F;
4638 controlMCUSlugsMKII_B.y_e[0] = 0.0F;
4639 controlMCUSlugsMKII_B.y_e[1] = 0.0F;
4640 controlMCUSlugsMKII_B.y_e[2] = 0.0F;
4641 controlMCUSlugsMKII_B.y_e[3] = 0.0F;
4642 controlMCUSlugsMKII_B.CFunctionCall_fg = 0.0F;
4643 controlMCUSlugsMKII_B.Switch3_mv = 0.0F;
4644 controlMCUSlugsMKII_B.UAVPos[0] = 0.0F;
4645 controlMCUSlugsMKII_B.UAVPos[1] = 0.0F;
4646 controlMCUSlugsMKII_B.UAVPos[2] = 0.0F;
4647 controlMCUSlugsMKII_B.CFunctionCall_aj[0] = 0.0F;
4648 controlMCUSlugsMKII_B.CFunctionCall_aj[1] = 0.0F;
4649 controlMCUSlugsMKII_B.CFunctionCall_aj[2] = 0.0F;
4650 controlMCUSlugsMKII_B.RhhcosphicoslambXe = 0.0F;
4651 controlMCUSlugsMKII_B.RhhcosphisinlambYe = 0.0F;
4652 controlMCUSlugsMKII_B.Ze = 0.0F;
4653 controlMCUSlugsMKII_B.IntegerDelay1[0] = 0.0F;
4654 controlMCUSlugsMKII_B.IntegerDelay1[1] = 0.0F;
4655 controlMCUSlugsMKII_B.IntegerDelay1[2] = 0.0F;
4656 controlMCUSlugsMKII_B.CFunctionCall_l0 = 0.0F;
4657 controlMCUSlugsMKII_B.CFunctionCall_mb = 0.0F;
4658 controlMCUSlugsMKII_B.Divide_l[0] = 0.0F;
4659 controlMCUSlugsMKII_B.Divide_l[1] = 0.0F;
4660 controlMCUSlugsMKII_B.Divide_l[2] = 0.0F;
4661 controlMCUSlugsMKII_B.CFunctionCall_ir = 0.0F;
4662 controlMCUSlugsMKII_B.Merge4 = 0.0F;
4663 controlMCUSlugsMKII_B.CFunctionCall_hb = 0.0F;
4664 controlMCUSlugsMKII_B.CFunctionCall1_i = 0.0F;
4665 controlMCUSlugsMKII_B.CFunctionCall_ap[0] = 0.0F;
4666 controlMCUSlugsMKII_B.CFunctionCall_ap[1] = 0.0F;
4667 controlMCUSlugsMKII_B.CFunctionCall_ap[2] = 0.0F;
4668 controlMCUSlugsMKII_B.UEN2NEU[0] = 0.0F;
4669 controlMCUSlugsMKII_B.UEN2NEU[1] = 0.0F;
4670 controlMCUSlugsMKII_B.UEN2NEU[2] = 0.0F;
4671 controlMCUSlugsMKII_B.IC_l = 0.0F;
4672 controlMCUSlugsMKII_B.Add_g = 0.0F;
4673 controlMCUSlugsMKII_B.CFunctionCall_ab = 0.0F;
4674 controlMCUSlugsMKII_B.CFunctionCall_m4 = 0.0F;
4675 controlMCUSlugsMKII_B.Switch3_f = 0.0F;
4676 controlMCUSlugsMKII_B.ScheduleLPF = 0.0F;
4677 controlMCUSlugsMKII_B.Switch3_c1 = 0.0F;
4678 controlMCUSlugsMKII_B.Switch3_b = 0.0F;
4679 controlMCUSlugsMKII_B.Switch3_mx = 0.0F;
4680 controlMCUSlugsMKII_B.Switch3_kr = 0.0F;
4681 controlMCUSlugsMKII_B.Switch3_p = 0.0F;
4682 controlMCUSlugsMKII_B.Switch3_f3 = 0.0F;
4683 controlMCUSlugsMKII_B.Switch3_el = 0.0F;
4684 controlMCUSlugsMKII_B.u060 = 0.0F;
4685 controlMCUSlugsMKII_B.CFunctionCall1_b = 0.0F;
4686 controlMCUSlugsMKII_B.y_j[0] = 0.0F;
4687 controlMCUSlugsMKII_B.y_j[1] = 0.0F;
4688 controlMCUSlugsMKII_B.Switch3_gn = 0.0F;
4689 controlMCUSlugsMKII_B.bankLimit = 0.0F;
4690 controlMCUSlugsMKII_B.CFunctionCall_in = 0.0F;
4691 controlMCUSlugsMKII_B.Switch3_h4 = 0.0F;
4692 controlMCUSlugsMKII_B.PsiDotLimit = 0.0F;
4693 controlMCUSlugsMKII_B.Divide_m = 0.0F;
4694 controlMCUSlugsMKII_B.CFunctionCall_i4 = 0.0F;
4695 controlMCUSlugsMKII_B.Switch3_pa = 0.0F;
4696 controlMCUSlugsMKII_B.navSupportc_l[0] = 0.0F;
4697 controlMCUSlugsMKII_B.navSupportc_l[1] = 0.0F;
4698 controlMCUSlugsMKII_B.navSupportc_l[2] = 0.0F;
4699 controlMCUSlugsMKII_B.Switch3_fx = 0.0F;
4700 controlMCUSlugsMKII_B.u2 = 0.0F;
4701 controlMCUSlugsMKII_B.Switch3_my = 0.0F;
4702 controlMCUSlugsMKII_B.Switch3_pf = 0.0F;
4703 controlMCUSlugsMKII_B.Switch3_i = 0.0F;
4704 controlMCUSlugsMKII_B.Switch3_cv = 0.0F;
4705 controlMCUSlugsMKII_B.bankLimit_a = 0.0F;
4706 controlMCUSlugsMKII_B.CFunctionCall_gd = 0.0F;
4707 controlMCUSlugsMKII_B.Divide_a = 0.0F;
4708 controlMCUSlugsMKII_B.CFunctionCall_id = 0.0F;
4709 controlMCUSlugsMKII_B.Switch3_pq = 0.0F;
4710 controlMCUSlugsMKII_B.c = 0.0F;
4711 controlMCUSlugsMKII_B.c_k = 0.0F;
4712 controlMCUSlugsMKII_B.u2_o = 0.0F;
4713 controlMCUSlugsMKII_B.Subtract_b = 0.0F;
4714 controlMCUSlugsMKII_B.Switch3_cj = 0.0F;
4715 controlMCUSlugsMKII_B.Subtract_c = 0.0F;
4716 controlMCUSlugsMKII_B.Merge = 0.0F;
4717 controlMCUSlugsMKII_B.PsiDotLimit_g = 0.0F;
4718 controlMCUSlugsMKII_B.Switch3_ae = 0.0F;
4719 controlMCUSlugsMKII_B.Switch3_gq = 0.0F;
4720 controlMCUSlugsMKII_B.Switch3_im = 0.0F;
4721 controlMCUSlugsMKII_B.T = 0.0F;
4722 controlMCUSlugsMKII_B.CFunctionCall_dr = 0.0F;
4723 controlMCUSlugsMKII_B.c_i = 0.0F;
4724 controlMCUSlugsMKII_B.T_i = 0.0F;
4725 controlMCUSlugsMKII_B.CFunctionCall_p = 0.0F;
4726 controlMCUSlugsMKII_B.c_kt = 0.0F;
4727 controlMCUSlugsMKII_B.sf_myMuxFun1_e.y[0] = 0.0F;
4728 controlMCUSlugsMKII_B.sf_myMuxFun1_e.y[1] = 0.0F;
4729 controlMCUSlugsMKII_B.sf_myMuxFun1_e.y[2] = 0.0F;
4730 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[0] = 0.0F;
4731 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[1] = 0.0F;
4732 controlMCUSlugsMKII_B.sf_myMuxFun2_c.y[2] = 0.0F;
4733 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[0] = 0.0F;
4734 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[1] = 0.0F;
4735 controlMCUSlugsMKII_B.sf_myMuxFun1_a.y[2] = 0.0F;
4736 controlMCUSlugsMKII_B.sf_myMuxFun2.y[0] = 0.0F;
4737 controlMCUSlugsMKII_B.sf_myMuxFun2.y[1] = 0.0F;
4738 controlMCUSlugsMKII_B.sf_myMuxFun2.y[2] = 0.0F;
4739 controlMCUSlugsMKII_B.sf_myMuxFun1.y[0] = 0.0F;
4740 controlMCUSlugsMKII_B.sf_myMuxFun1.y[1] = 0.0F;
4741 controlMCUSlugsMKII_B.sf_myMuxFun1.y[2] = 0.0F;
4742 controlMCUSlugsMKII_B.sf_myMuxFun2_l.y[0] = 0.0F;
4743 controlMCUSlugsMKII_B.sf_myMuxFun2_l.y[1] = 0.0F;
4744 controlMCUSlugsMKII_B.sf_myMuxFun2_l.y[2] = 0.0F;
4745 controlMCUSlugsMKII_B.sf_myMuxFun1_o.y[0] = 0.0F;
4746 controlMCUSlugsMKII_B.sf_myMuxFun1_o.y[1] = 0.0F;
4747 controlMCUSlugsMKII_B.sf_myMuxFun1_o.y[2] = 0.0F;
4748 controlMCUSlugsMKII_B.sf_negprotect1.zpVal = 0.0F;
4749 controlMCUSlugsMKII_B.sf_negprotect_h.zpVal = 0.0F;
4750 controlMCUSlugsMKII_B.sf_negprotect_f.zpVal = 0.0F;
4751 controlMCUSlugsMKII_B.sf_negprotect_fm.zpVal = 0.0F;
4752 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_d.xDoty = 0.0F;
4753 controlMCUSlugsMKII_B.sf_negprotect_b.zpVal = 0.0F;
4754 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_or.xDoty = 0.0F;
4755 controlMCUSlugsMKII_B.sf_negprotect_bp.zpVal = 0.0F;
4756 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_hk.xDoty = 0.0F;
4757 controlMCUSlugsMKII_B.sf_negprotect_g.zpVal = 0.0F;
4758 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_mg.xDoty = 0.0F;
4759 controlMCUSlugsMKII_B.sf_negprotect_l.zpVal = 0.0F;
4760 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_n.xDoty = 0.0F;
4761 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_a.xDoty = 0.0F;
4762 controlMCUSlugsMKII_B.sf_negprotect_e.zpVal = 0.0F;
4763 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_m.xDoty = 0.0F;
4764 controlMCUSlugsMKII_B.sf_negprotect_c.zpVal = 0.0F;
4765 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_i.y = 0.0F;
4766 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_l.y = 0.0F;
4767 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_p.y = 0.0F;
4768 controlMCUSlugsMKII_B.sf_myMuxFun1_h.y[0] = 0.0F;
4769 controlMCUSlugsMKII_B.sf_myMuxFun1_h.y[1] = 0.0F;
4770 controlMCUSlugsMKII_B.sf_myMuxFun1_h.y[2] = 0.0F;
4771 controlMCUSlugsMKII_B.sf_negprotect.zpVal = 0.0F;
4772 controlMCUSlugsMKII_B.sf_EmbeddedMATLABFunction_h.y = 0.0F;
4773 }
4774
4775 /* states (dwork) */
4776 (void) memset((void *)&controlMCUSlugsMKII_DWork, 0,
4777 sizeof(D_Work_controlMCUSlugsMKII));
4778 controlMCUSlugsMKII_DWork.IntegerDelay2_X = 0.0;
4779 controlMCUSlugsMKII_DWork.IntegerDelay2_X_l = 0.0;
4780 controlMCUSlugsMKII_DWork.IntegerDelay3_X = 0.0;
4781 controlMCUSlugsMKII_DWork.IntegerDelay3_X_c = 0.0;
4782 controlMCUSlugsMKII_DWork.IntegerDelay_X = 0.0;
4783 controlMCUSlugsMKII_DWork.IntegerDelay1_X[0] = 0.0;
4784 controlMCUSlugsMKII_DWork.IntegerDelay1_X[1] = 0.0;
4785 controlMCUSlugsMKII_DWork.IntegerDelay3_X_l = 0.0;
4786 controlMCUSlugsMKII_DWork.IntegerDelay_X_i = 0.0;
4787 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[0] = 0.0;
4788 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[1] = 0.0;
4789 controlMCUSlugsMKII_DWork.IntegerDelay3_X_k = 0.0;
4790 controlMCUSlugsMKII_DWork.IntegerDelay_X_g = 0.0;
4791 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[0] = 0.0;
4792 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[1] = 0.0;
4793 controlMCUSlugsMKII_DWork.IntegerDelay3_X_o = 0.0;
4794 controlMCUSlugsMKII_DWork.IntegerDelay_X_i0 = 0.0;
4795 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[0] = 0.0;
4796 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[1] = 0.0;
4797 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j = 0.0;
4798 controlMCUSlugsMKII_DWork.IntegerDelay_X_n = 0.0;
4799 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[0] = 0.0;
4800 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[1] = 0.0;
4801 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f5 = 0.0;
4802 controlMCUSlugsMKII_DWork.Add3_DWORK1 = 0.0;
4803 controlMCUSlugsMKII_DWork.IntegerDelay_X_p = 0.0F;
4804 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j5 = 0.0F;
4805 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b = 0.0F;
4806 controlMCUSlugsMKII_DWork.IntegerDelay3_X_lj = 0.0F;
4807 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b3 = 0.0F;
4808 controlMCUSlugsMKII_DWork.IntegerDelay3_X_g = 0.0F;
4809 controlMCUSlugsMKII_DWork.IntegerDelay3_X_f = 0.0F;
4810 controlMCUSlugsMKII_DWork.IntegerDelay3_X_a = 0.0F;
4811 controlMCUSlugsMKII_DWork.IntegerDelay1_X_i = 0.0F;
4812 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[0] = 0.0F;
4813 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[1] = 0.0F;
4814 controlMCUSlugsMKII_DWork.UD_DSTATE = 0.0F;
4815 controlMCUSlugsMKII_DWork.UD_DSTATE_e = 0.0F;
4816 controlMCUSlugsMKII_DWork.UD_DSTATE_h = 0.0F;
4817 controlMCUSlugsMKII_DWork.IntegerDelay3_X_n = 0.0F;
4818 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ch = 0.0F;
4819 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ft = 0.0F;
4820 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[0] = 0.0F;
4821 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[1] = 0.0F;
4822 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[2] = 0.0F;
4823 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[0] = 0.0F;
4824 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[1] = 0.0F;
4825 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[2] = 0.0F;
4826 controlMCUSlugsMKII_DWork.IntegerDelay3_X_i = 0.0F;
4827 controlMCUSlugsMKII_DWork.IntegerDelay3_X_m = 0.0F;
4828 controlMCUSlugsMKII_DWork.IntegerDelay2_X_lq = 0.0F;
4829 controlMCUSlugsMKII_DWork.IntegerDelay3_X_at = 0.0F;
4830 controlMCUSlugsMKII_DWork.IntegerDelay3_X_fk = 0.0F;
4831 controlMCUSlugsMKII_DWork.IntegerDelay3_X_e = 0.0F;
4832
4833 {
4834 int_T i;
4835 for (i = 0; i < 5; i++) {
4836 controlMCUSlugsMKII_DWork.NDelays_X[i] = 0.0F;
4837 }
4838 }
4839
4840 controlMCUSlugsMKII_DWork.IntegerDelay2_X_d = 0.0F;
4841 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ex = 0.0F;
4842 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nv = 0.0F;
4843
4844 {
4845 int_T i;
4846 for (i = 0; i < 5; i++) {
4847 controlMCUSlugsMKII_DWork.NDelays_X_c[i] = 0.0F;
4848 }
4849 }
4850
4851 controlMCUSlugsMKII_DWork.IntegerDelay2_X_n = 0.0F;
4852 controlMCUSlugsMKII_DWork.IntegerDelay3_X_p = 0.0F;
4853 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nc = 0.0F;
4854 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gw = 0.0F;
4855 controlMCUSlugsMKII_DWork.IntegerDelay3_X_h = 0.0F;
4856 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ae = 0.0F;
4857 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b5 = 0.0F;
4858
4859 {
4860 int_T i;
4861 for (i = 0; i < 5; i++) {
4862 controlMCUSlugsMKII_DWork.NDelays_X_e[i] = 0.0F;
4863 }
4864 }
4865
4866 controlMCUSlugsMKII_DWork.IntegerDelay2_X_g = 0.0F;
4867 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cn = 0.0F;
4868 controlMCUSlugsMKII_DWork.IntegerDelay3_X_mk = 0.0F;
4869
4870 {
4871 int_T i;
4872 for (i = 0; i < 5; i++) {
4873 controlMCUSlugsMKII_DWork.NDelays_X_m[i] = 0.0F;
4874 }
4875 }
4876
4877 controlMCUSlugsMKII_DWork.IntegerDelay2_X_j = 0.0F;
4878 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hp = 0.0F;
4879 controlMCUSlugsMKII_DWork.UD_DSTATE_o = 0.0F;
4880 controlMCUSlugsMKII_DWork.IntegerDelay_X_b = 0.0F;
4881 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hc = 0.0F;
4882 controlMCUSlugsMKII_DWork.IntegerDelay_X_nm = 0.0F;
4883 controlMCUSlugsMKII_DWork.IntegerDelay1_X_l = 0.0F;
4884 controlMCUSlugsMKII_DWork.UD_DSTATE_l = 0.0F;
4885 controlMCUSlugsMKII_DWork.IntegerDelay_X_d = 0.0F;
4886 controlMCUSlugsMKII_DWork.IntegerDelay1_X_nc = 0.0F;
4887 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cw = 0.0F;
4888 controlMCUSlugsMKII_DWork.UD_DSTATE_ld = 0.0F;
4889 controlMCUSlugsMKII_DWork.IntegerDelay_X_c = 0.0F;
4890 controlMCUSlugsMKII_DWork.IntegerDelay1_X_a = 0.0F;
4891 controlMCUSlugsMKII_DWork.IntegerDelay_X_no = 0.0F;
4892 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b = 0.0F;
4893 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gww = 0.0F;
4894 controlMCUSlugsMKII_DWork.IntegerDelay_X_f = 0.0F;
4895 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[0] = 0.0F;
4896 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[1] = 0.0F;
4897 controlMCUSlugsMKII_DWork.IntegerDelay2_X_m = 0.0F;
4898 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe = 0.0F;
4899 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe1 = 0.0F;
4900 controlMCUSlugsMKII_DWork.PrevY = 0.0F;
4901 controlMCUSlugsMKII_DWork.Memory1_PreviousInput = 0.0F;
4902 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_e = 0.0F;
4903 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_f = 0.0F;
4904 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_a = 0.0F;
4905 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_l = 0.0F;
4906 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i.a = 0.0;
4907 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i.b = 0.0;
4908 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i.y_km1 = 0.0F;
4909 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i.u_km1 = 0.0F;
4910 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l.a = 0.0;
4911 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l.b = 0.0;
4912 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l.y_km1 = 0.0F;
4913 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l.u_km1 = 0.0F;
4914 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p.a = 0.0;
4915 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p.b = 0.0;
4916 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p.y_km1 = 0.0F;
4917 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p.u_km1 = 0.0F;
4918 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h.a = 0.0;
4919 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h.b = 0.0;
4920 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h.y_km1 = 0.0F;
4921 controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h.u_km1 = 0.0F;
4922
4923 /* S-Function "dsPIC_MASTER" initialization Block: <Root>/Master */
4924 /* 1 testfcy */
4925 /* 4.0E+007 */
4926 /* CONFIG TIMER 1 for scheduling steps */
4927 ConfigIntTimer1(T1_INT_PRIOR_0 & T1_INT_OFF);
4928 T1CON = 0x8010 ; /* T1_PS_1_8 */
4929 PR1 = 49999;
4930
4931 /* Configuration TIMER 2 */
4932 ConfigIntTimer2(T2_INT_PRIOR_0 & T2_INT_OFF);
4933 OpenTimer2(T2_ON & T2_GATE_OFF &
4934 T2_PS_1_8 & T2_SOURCE_INT , 65535);
4935
4936 /* Configuration TRIS */
4937 TRISB = 65471;
4938 TRISE = 65023;
4939
4940 /* Configuration ADCHS */
4941 AD1PCFGL = (68U);
4942 AD2PCFGL = (68U);
4943 AD1PCFGH = ((32U) & 65535);
4944
4945 /* S-Function "dsPIC_PWM_IC" initialization Block: <S277>/Input Capture */
4946 /* Initialise Input Capture */
4947 /* config capture */
4948 OpenCapture2(IC_IDLE_CON & IC_TIMER2_SRC & IC_INT_1CAPTURE &
4949 IC_EVERY_RISE_EDGE);
4950 ConfigIntCapture2(IC_INT_ON & IC_INT_PRIOR_6);
4951
4952 /* config capture */
4953 OpenCapture3(IC_IDLE_CON & IC_TIMER2_SRC & IC_INT_1CAPTURE &
4954 IC_EVERY_RISE_EDGE);
4955 ConfigIntCapture3(IC_INT_ON & IC_INT_PRIOR_6);
4956
4957 /* config capture */
4958 OpenCapture4(IC_IDLE_CON & IC_TIMER2_SRC & IC_INT_1CAPTURE &
4959 IC_EVERY_RISE_EDGE);
4960 ConfigIntCapture4(IC_INT_ON & IC_INT_PRIOR_6);
4961
4962 /* config capture */
4963 OpenCapture5(IC_IDLE_CON & IC_TIMER2_SRC & IC_INT_1CAPTURE &
4964 IC_EVERY_RISE_EDGE);
4965 ConfigIntCapture5(IC_INT_ON & IC_INT_PRIOR_6);
4966
4967 /* config capture */
4968 OpenCapture8(IC_IDLE_CON & IC_TIMER2_SRC & IC_INT_1CAPTURE &
4969 IC_EVERY_RISE_EDGE);
4970 ConfigIntCapture8(IC_INT_ON & IC_INT_PRIOR_6);
4971
4972 /* Start for InitialCondition: '<S278>/IC' */
4973 controlMCUSlugsMKII_B.IC_c = TRUE;
4974 controlMCUSlugsMKII_DWork.IC_FirstOutputTime = TRUE;
4975
4976 /* Start for atomic SubSystem: '<S2>/Navigation' */
4977
4978 /* Start for InitialCondition: '<S124>/IC1' */
4979 controlMCUSlugsMKII_DWork.IC1_FirstOutputTime = TRUE;
4980
4981 /* Start for InitialCondition: '<S139>/IC' */
4982 controlMCUSlugsMKII_B.IC = 1.0;
4983 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_i = TRUE;
4984
4985 /* Start for InitialCondition: '<S180>/IC' */
4986 controlMCUSlugsMKII_B.IC_e = 1.0F;
4987 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_b = TRUE;
4988
4989 /* Start for InitialCondition: '<S140>/IC' */
4990 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_d = TRUE;
4991
4992 /* Start for enable SubSystem: '<S140>/Compute Total Run' */
4993
4994 /* InitializeConditions for S-Function (sfix_udelay): '<S186>/Integer Delay3' */
4995 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ft = 0.0F;
4996
4997 /* VirtualOutportStart for Outport: '<S179>/Tot Run' */
4998 controlMCUSlugsMKII_B.Switch3_mv = 150.0F;
4999
5000 /* end of Start for SubSystem: '<S140>/Compute Total Run' */
5001
5002 /* Start for enable SubSystem: '<S124>/Compute P' */
5003
5004 /* Start for InitialCondition: '<S133>/IC' */
5005 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_k = TRUE;
5006
5007 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
5008 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[0] = 0.0F;
5009
5010 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
5011 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[0] = 0.0F;
5012
5013 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
5014 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[1] = 0.0F;
5015
5016 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
5017 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[1] = 0.0F;
5018
5019 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay1' */
5020 controlMCUSlugsMKII_DWork.IntegerDelay1_X_k[2] = 0.0F;
5021
5022 /* InitializeConditions for S-Function (sfix_udelay): '<S133>/Integer Delay2' */
5023 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e3[2] = 0.0F;
5024
5025 /* VirtualOutportStart for Outport: '<S133>/P' */
5026 controlMCUSlugsMKII_B.IC_l = 50.0F;
5027
5028 /* end of Start for SubSystem: '<S124>/Compute P' */
5029
5030 /* end of Start for SubSystem: '<S2>/Navigation' */
5031
5032 /* Start for enable SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' */
5033
5034 /* Start for InitialCondition: '<S24>/IC' */
5035 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_g = TRUE;
5036
5037 /* Start for InitialCondition: '<S28>/IC' */
5038 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_p = TRUE;
5039
5040 /* InitializeConditions for UnitDelay: '<S33>/UD' */
5041 controlMCUSlugsMKII_DWork.UD_DSTATE_l = 0.0F;
5042
5043 /* InitializeConditions for S-Function (sfix_udelay): '<S24>/Integer Delay' */
5044 controlMCUSlugsMKII_DWork.IntegerDelay_X_d = 0.0F;
5045
5046 /* InitializeConditions for S-Function (sfix_udelay): '<S24>/Integer Delay1' */
5047 controlMCUSlugsMKII_DWork.IntegerDelay1_X_nc = 0.0F;
5048
5049 /* InitializeConditions for S-Function (sfix_udelay): '<S26>/Integer Delay3' */
5050 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cw = 0.0F;
5051
5052 /* InitializeConditions for UnitDelay: '<S42>/UD' */
5053 controlMCUSlugsMKII_DWork.UD_DSTATE_ld = 0.0F;
5054
5055 /* InitializeConditions for S-Function (sfix_udelay): '<S28>/Integer Delay' */
5056 controlMCUSlugsMKII_DWork.IntegerDelay_X_c = 0.0F;
5057
5058 /* InitializeConditions for S-Function (sfix_udelay): '<S28>/Integer Delay1' */
5059 controlMCUSlugsMKII_DWork.IntegerDelay1_X_a = 0.0F;
5060
5061 /* InitializeConditions for S-Function (sfix_udelay): '<S13>/Integer Delay' */
5062 controlMCUSlugsMKII_DWork.IntegerDelay_X_no = 0.0F;
5063
5064 /* InitializeConditions for S-Function (sfix_udelay): '<S13>/Integer Delay1' */
5065 controlMCUSlugsMKII_DWork.IntegerDelay1_X_b = 0.0F;
5066
5067 /* InitializeConditions for Merge: '<S25>/Merge' */
5068 if (rtmIsFirstInitCond(controlMCUSlugsMKII_M)) {
5069 controlMCUSlugsMKII_B.Merge = 0.0F;
5070 }
5071
5072 /* InitializeConditions for S-Function (sfix_udelay): '<S27>/Integer Delay3' */
5073 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gww = 0.0F;
5074
5075 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay' */
5076 controlMCUSlugsMKII_DWork.IntegerDelay_X_f = 0.0F;
5077
5078 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay1' */
5079 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[0] = 0.0F;
5080 controlMCUSlugsMKII_DWork.IntegerDelay1_X_ny[1] = 0.0F;
5081
5082 /* InitializeConditions for S-Function (sfix_udelay): '<S29>/Integer Delay2' */
5083 controlMCUSlugsMKII_DWork.IntegerDelay2_X_m = 0.0F;
5084
5085 /* InitializeConditions for S-Function (sfix_udelay): '<S43>/Integer Delay3' */
5086 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe = 0.0F;
5087
5088 /* InitializeConditions for S-Function (sfix_udelay): '<S44>/Integer Delay3' */
5089 controlMCUSlugsMKII_DWork.IntegerDelay3_X_oe1 = 0.0F;
5090
5091 /* end of Start for SubSystem: '<S2>/L1 Output Feedback Controller With Projection Operator' */
5092
5093 /* Start for atomic SubSystem: '<S2>/Lateral Channel' */
5094
5095 /* Start for enable SubSystem: '<S14>/Sideslip Compensation' */
5096
5097 /* Start for InitialCondition: '<S71>/IC' */
5098 controlMCUSlugsMKII_DWork.IC_FirstOutputTime_e = TRUE;
5099
5100 /* InitializeConditions for UnitDelay: '<S79>/UD' */
5101 controlMCUSlugsMKII_DWork.UD_DSTATE_o = 0.0F;
5102
5103 /* InitializeConditions for S-Function (sfix_udelay): '<S71>/Integer Delay' */
5104 controlMCUSlugsMKII_DWork.IntegerDelay_X_b = 0.0F;
5105
5106 /* InitializeConditions for S-Function (sfix_udelay): '<S71>/Integer Delay1' */
5107 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f5 = 0.0;
5108
5109 /* InitializeConditions for S-Function (sfix_udelay): '<S72>/Integer Delay3' */
5110 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hc = 0.0F;
5111
5112 /* end of Start for SubSystem: '<S14>/Sideslip Compensation' */
5113
5114 /* end of Start for SubSystem: '<S2>/Lateral Channel' */
5115
5116 /* S-Function "dsPIC_PWM_motor" initialization Block: <S8>/PWM Servo Output */
5117 /* Initialise Output Capture */
5118 SetDCMCPWM(1,0,0);
5119 SetDCMCPWM(2,0,0);
5120 SetDCMCPWM(3,0,0);
5121 SetDCMCPWM(4,0,0);
5122
5123 #define config (PWM_INT_DIS & PWM_FLTA_DIS_INT & PWM_INT_PR1 & PWM_FLTA_INT_PR0)
5124
5125 ConfigIntMCPWM( config );
5126
5127 #define config1 (PWM_EN & 0xDFFF & PWM_OP_SCALE1 & PWM_IPCLK_SCALE16 & PWM_MOD_UPDN)
5128 #define config2 (0xffff & PWM_PEN1L & PWM_MOD1_IND & PWM_PDIS1H & PWM_PEN2L & PWM_MOD2_IND & PWM_PDIS2H & PWM_PEN3L & PWM_MOD3_IND & PWM_PDIS3H & PWM_PEN4L & PWM_MOD4_IND & PWM_PDIS4H)
5129 #define config3 (PWM_SEVOPS1 & PWM_OSYNC_TCY & PWM_UEN)
5130
5131 OpenMCPWM(25000,0,config1,config2,config3);
5132
5133 /* S-Function "dsPIC_C_function_Call" Block: <Root>/Initialize the MCU [groundStationDriver.c] */
5134 controlMCUInit();
5135 controlMCUSlugsM_PrevZCSigState.HitCrossing_Input_ZCE = UNINITIALIZED_ZCSIG;
5136 controlMCUSlugsM_PrevZCSigState.HitCrossing1_Input_ZCE = UNINITIALIZED_ZCSIG;
5137
5138 {
5139 int16_T i;
5140
5141 /* InitializeConditions for Embedded MATLAB: '<S276>/Buffer IC Channel' */
5142 contro_BufferICChannel_Init(&controlMCUSlugsMKII_DWork.sf_BufferICChannel);
5143
5144 /* InitializeConditions for Embedded MATLAB: '<S276>/Buffer IC Channel1' */
5145 contro_BufferICChannel_Init(&controlMCUSlugsMKII_DWork.sf_BufferICChannel1);
5146
5147 /* InitializeConditions for Embedded MATLAB: '<S276>/Buffer IC Channel2' */
5148 contro_BufferICChannel_Init(&controlMCUSlugsMKII_DWork.sf_BufferICChannel2);
5149
5150 /* InitializeConditions for Embedded MATLAB: '<S276>/Buffer IC Channel3' */
5151 contro_BufferICChannel_Init(&controlMCUSlugsMKII_DWork.sf_BufferICChannel3);
5152
5153 /* InitializeConditions for S-Function (sfix_udelay): '<S6>/Integer Delay' */
5154 controlMCUSlugsMKII_DWork.IntegerDelay_X_p = 0.0F;
5155
5156 /* InitializeConditions for S-Function (sfix_udelay): '<S278>/Integer Delay2' */
5157 controlMCUSlugsMKII_DWork.IntegerDelay2_X_k = FALSE;
5158
5159 /* InitializeConditions for S-Function (sfix_udelay): '<S17>/Integer Delay3' */
5160 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j5 = 0.0F;
5161
5162 /* InitializeConditions for atomic SubSystem: '<S2>/Navigation' */
5163
5164 /* InitializeConditions for S-Function (sfix_udelay): '<S261>/Integer Delay3' */
5165 controlMCUSlugsMKII_DWork.IntegerDelay3_X_lj = 0.0F;
5166
5167 /* InitializeConditions for S-Function (sfix_udelay): '<S124>/Integer Delay2' */
5168 controlMCUSlugsMKII_DWork.IntegerDelay2_X = 1.0;
5169
5170 /* InitializeConditions for S-Function (sfix_udelay): '<S138>/Integer Delay1' */
5171 controlMCUSlugsMKII_DWork.IntegerDelay1_X_p = FALSE;
5172
5173 /* InitializeConditions for Embedded MATLAB: '<S124>/Embedded MATLAB Function' */
5174 controlMCUSlugsMKII_DWork.fromWP_not_empty = FALSE;
5175
5176 /* InitializeConditions for S-Function (sfix_udelay): '<S139>/Integer Delay2' */
5177 controlMCUSlugsMKII_DWork.IntegerDelay2_X_l = 0.0;
5178
5179 /* InitializeConditions for S-Function (sfix_udelay): '<S132>/Integer Delay3' */
5180 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b3 = 0.0F;
5181
5182 /* InitializeConditions for S-Function (sfix_udelay): '<S254>/Integer Delay3' */
5183 controlMCUSlugsMKII_DWork.IntegerDelay3_X_g = 0.0F;
5184
5185 /* InitializeConditions for S-Function (sfix_udelay): '<S268>/Integer Delay3' */
5186 controlMCUSlugsMKII_DWork.IntegerDelay3_X_f = 0.0F;
5187
5188 /* InitializeConditions for S-Function (sfix_udelay): '<S124>/Integer Delay3' */
5189 controlMCUSlugsMKII_DWork.IntegerDelay3_X_a = 50.0F;
5190
5191 /* InitializeConditions for S-Function (sfix_udelay): '<S140>/Integer Delay1' */
5192 controlMCUSlugsMKII_DWork.IntegerDelay1_X_fi = 0U;
5193
5194 /* InitializeConditions for S-Function (sfix_udelay): '<S180>/Integer Delay1' */
5195 controlMCUSlugsMKII_DWork.IntegerDelay1_X_i = 1.0F;
5196
5197 /* InitializeConditions for S-Function (sfix_udelay): '<S180>/Integer Delay2' */
5198 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[0] = 1.0F;
5199 controlMCUSlugsMKII_DWork.IntegerDelay2_X_e[1] = 1.0F;
5200
5201 /* InitializeConditions for S-Function (sfix_udelay): '<S182>/Integer Delay3' */
5202 controlMCUSlugsMKII_DWork.IntegerDelay3_X = 0.0;
5203
5204 /* InitializeConditions for Embedded MATLAB: '<S124>/Embedded MATLAB Function1' */
5205 controlMCUSlugsMKII_DWork.oldSw = 0U;
5206 controlMCUSlugsMKII_DWork.internalTimer = 0U;
5207
5208 /* InitializeConditions for S-Function (sfix_udelay): '<S137>/Integer Delay3' */
5209 controlMCUSlugsMKII_DWork.IntegerDelay3_X_n = 0.0F;
5210
5211 /* InitializeConditions for S-Function (sfix_udelay): '<S271>/Integer Delay3' */
5212 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ch = 0.0F;
5213
5214 /* end of InitializeConditions for SubSystem: '<S2>/Navigation' */
5215
5216 /* InitializeConditions for atomic SubSystem: '<S2>/Longitudinal Channel' */
5217
5218 /* InitializeConditions for S-Function (sfix_udelay): '<S99>/Integer Delay3' */
5219 controlMCUSlugsMKII_DWork.IntegerDelay3_X_i = 0.0F;
5220
5221 /* InitializeConditions for Embedded MATLAB: '<S88>/Embedded MATLAB Function' */
5222 EmbeddedMATLABFunction_Init
5223 (&controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_p);
5224
5225 /* InitializeConditions for Embedded MATLAB: '<S90>/Embedded MATLAB Function' */
5226 EmbeddedMATLABFunction_Init
5227 (&controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_i);
5228
5229 /* InitializeConditions for RateLimiter: '<S15>/Rate Limiter' */
5230 controlMCUSlugsMKII_DWork.PrevY = 180.0F;
5231
5232 /* InitializeConditions for S-Function (sfix_udelay): '<S97>/Integer Delay3' */
5233 controlMCUSlugsMKII_DWork.IntegerDelay3_X_m = 0.0F;
5234
5235 /* InitializeConditions for S-Function (sfix_udelay): '<S116>/Integer Delay2' */
5236 controlMCUSlugsMKII_DWork.IntegerDelay2_X_lq = 0.0F;
5237
5238 /* InitializeConditions for Memory: '<S94>/Memory1' */
5239 controlMCUSlugsMKII_DWork.Memory1_PreviousInput = 0.0F;
5240
5241 /* InitializeConditions for S-Function (sfix_udelay): '<S118>/Integer Delay3' */
5242 controlMCUSlugsMKII_DWork.IntegerDelay3_X_c = 0.0;
5243
5244 /* InitializeConditions for S-Function (sfix_udelay): '<S116>/Integer Delay' */
5245 controlMCUSlugsMKII_DWork.IntegerDelay_X = 0.0;
5246
5247 /* InitializeConditions for S-Function (sfix_udelay): '<S116>/Integer Delay1' */
5248 controlMCUSlugsMKII_DWork.IntegerDelay1_X[0] = 0.0;
5249 controlMCUSlugsMKII_DWork.IntegerDelay1_X[1] = 0.0;
5250
5251 /* InitializeConditions for S-Function (sfix_udelay): '<S117>/Integer Delay3' */
5252 controlMCUSlugsMKII_DWork.IntegerDelay3_X_at = 0.0F;
5253
5254 /* InitializeConditions for S-Function (sfix_udelay): '<S100>/Integer Delay3' */
5255 controlMCUSlugsMKII_DWork.IntegerDelay3_X_fk = 0.0F;
5256
5257 /* InitializeConditions for Embedded MATLAB: '<S89>/Embedded MATLAB Function' */
5258 EmbeddedMATLABFunction_Init
5259 (&controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_l);
5260
5261 /* InitializeConditions for S-Function (sfix_udelay): '<S96>/Integer Delay3' */
5262 controlMCUSlugsMKII_DWork.IntegerDelay3_X_e = 0.0F;
5263
5264 /* InitializeConditions for S-Function (sfix_udelay): '<S110>/Integer Delay2' */
5265 controlMCUSlugsMKII_DWork.IntegerDelay2_X_d = 0.0F;
5266
5267 /* InitializeConditions for Memory: '<S92>/Memory1' */
5268 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_e = 0.0F;
5269
5270 /* InitializeConditions for S-Function (sfix_udelay): '<S111>/Integer Delay3' */
5271 controlMCUSlugsMKII_DWork.IntegerDelay3_X_l = 0.0;
5272
5273 /* InitializeConditions for S-Function (sfix_udelay): '<S110>/Integer Delay' */
5274 controlMCUSlugsMKII_DWork.IntegerDelay_X_i = 0.0;
5275
5276 /* InitializeConditions for S-Function (sfix_udelay): '<S110>/Integer Delay1' */
5277 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[0] = 0.0;
5278 controlMCUSlugsMKII_DWork.IntegerDelay1_X_o[1] = 0.0;
5279
5280 /* InitializeConditions for S-Function (sfix_udelay): '<S112>/Integer Delay3' */
5281 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ex = 0.0F;
5282
5283 /* InitializeConditions for S-Function (sfix_udelay): '<S98>/Integer Delay3' */
5284 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nv = 0.0F;
5285 for (i = 0; i < 5; i++) {
5286 /* InitializeConditions for S-Function (sfix_udelay): '<S92>/NDelays' */
5287 controlMCUSlugsMKII_DWork.NDelays_X[i] = 0.0F;
5288
5289 /* InitializeConditions for S-Function (sfix_udelay): '<S95>/NDelays' */
5290 controlMCUSlugsMKII_DWork.NDelays_X_c[i] = 0.0F;
5291 }
5292
5293 /* InitializeConditions for S-Function (sfix_udelay): '<S120>/Integer Delay2' */
5294 controlMCUSlugsMKII_DWork.IntegerDelay2_X_n = 0.0F;
5295
5296 /* InitializeConditions for Memory: '<S95>/Memory1' */
5297 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_f = 0.0F;
5298
5299 /* InitializeConditions for S-Function (sfix_udelay): '<S121>/Integer Delay3' */
5300 controlMCUSlugsMKII_DWork.IntegerDelay3_X_k = 0.0;
5301
5302 /* InitializeConditions for S-Function (sfix_udelay): '<S120>/Integer Delay' */
5303 controlMCUSlugsMKII_DWork.IntegerDelay_X_g = 0.0;
5304
5305 /* InitializeConditions for S-Function (sfix_udelay): '<S120>/Integer Delay1' */
5306 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[0] = 0.0;
5307 controlMCUSlugsMKII_DWork.IntegerDelay1_X_oa[1] = 0.0;
5308
5309 /* InitializeConditions for S-Function (sfix_udelay): '<S122>/Integer Delay3' */
5310 controlMCUSlugsMKII_DWork.IntegerDelay3_X_p = 0.0F;
5311
5312 /* end of InitializeConditions for SubSystem: '<S2>/Longitudinal Channel' */
5313
5314 /* InitializeConditions for S-Function (sfix_udelay): '<S19>/Integer Delay3' */
5315 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b = 0.0F;
5316
5317 /* InitializeConditions for atomic SubSystem: '<S2>/Lateral Channel' */
5318
5319 /* InitializeConditions for S-Function (sfix_udelay): '<S62>/Integer Delay3' */
5320 controlMCUSlugsMKII_DWork.IntegerDelay3_X_nc = 0.0F;
5321
5322 /* InitializeConditions for S-Function (sfix_udelay): '<S63>/Integer Delay3' */
5323 controlMCUSlugsMKII_DWork.IntegerDelay3_X_gw = 0.0F;
5324
5325 /* InitializeConditions for S-Function (sfix_udelay): '<S53>/Integer Delay3' */
5326 controlMCUSlugsMKII_DWork.IntegerDelay3_X_h = 0.0F;
5327
5328 /* InitializeConditions for Embedded MATLAB: '<S45>/Embedded MATLAB Function' */
5329 EmbeddedMATLABFunction_Init
5330 (&controlMCUSlugsMKII_DWork.sf_EmbeddedMATLABFunction_h);
5331
5332 /* InitializeConditions for S-Function (sfix_udelay): '<S54>/Integer Delay3' */
5333 controlMCUSlugsMKII_DWork.IntegerDelay3_X_ae = 0.0F;
5334
5335 /* InitializeConditions for atomic SubSystem: '<S14>/High Pass (Washout) Filter' */
5336
5337 /* InitializeConditions for S-Function (sfix_udelay): '<S50>/Integer Delay' */
5338 controlMCUSlugsMKII_DWork.IntegerDelay_X_nm = 0.0F;
5339
5340 /* InitializeConditions for S-Function (sfix_udelay): '<S50>/Integer Delay1' */
5341 controlMCUSlugsMKII_DWork.IntegerDelay1_X_l = 0.0F;
5342
5343 /* end of InitializeConditions for SubSystem: '<S14>/High Pass (Washout) Filter' */
5344
5345 /* InitializeConditions for S-Function (sfix_udelay): '<S52>/Integer Delay3' */
5346 controlMCUSlugsMKII_DWork.IntegerDelay3_X_b5 = 0.0F;
5347
5348 /* InitializeConditions for S-Function (sfix_udelay): '<S83>/Integer Delay2' */
5349 controlMCUSlugsMKII_DWork.IntegerDelay2_X_g = 0.0F;
5350
5351 /* InitializeConditions for Memory: '<S57>/Memory1' */
5352 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_a = 0.0F;
5353
5354 /* InitializeConditions for S-Function (sfix_udelay): '<S84>/Integer Delay3' */
5355 controlMCUSlugsMKII_DWork.IntegerDelay3_X_o = 0.0;
5356
5357 /* InitializeConditions for S-Function (sfix_udelay): '<S83>/Integer Delay' */
5358 controlMCUSlugsMKII_DWork.IntegerDelay_X_i0 = 0.0;
5359
5360 /* InitializeConditions for S-Function (sfix_udelay): '<S83>/Integer Delay1' */
5361 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[0] = 0.0;
5362 controlMCUSlugsMKII_DWork.IntegerDelay1_X_f[1] = 0.0;
5363
5364 /* InitializeConditions for S-Function (sfix_udelay): '<S85>/Integer Delay3' */
5365 controlMCUSlugsMKII_DWork.IntegerDelay3_X_cn = 0.0F;
5366
5367 /* InitializeConditions for S-Function (sfix_udelay): '<S51>/Integer Delay3' */
5368 controlMCUSlugsMKII_DWork.IntegerDelay3_X_mk = 0.0F;
5369 for (i = 0; i < 5; i++) {
5370 /* InitializeConditions for S-Function (sfix_udelay): '<S57>/NDelays' */
5371 controlMCUSlugsMKII_DWork.NDelays_X_e[i] = 0.0F;
5372
5373 /* InitializeConditions for S-Function (sfix_udelay): '<S55>/NDelays' */
5374 controlMCUSlugsMKII_DWork.NDelays_X_m[i] = 0.0F;
5375 }
5376
5377 /* InitializeConditions for S-Function (sfix_udelay): '<S67>/Integer Delay2' */
5378 controlMCUSlugsMKII_DWork.IntegerDelay2_X_j = 0.0F;
5379
5380 /* InitializeConditions for Memory: '<S55>/Memory1' */
5381 controlMCUSlugsMKII_DWork.Memory1_PreviousInput_l = 0.0F;
5382
5383 /* InitializeConditions for S-Function (sfix_udelay): '<S68>/Integer Delay3' */
5384 controlMCUSlugsMKII_DWork.IntegerDelay3_X_j = 0.0;
5385
5386 /* InitializeConditions for S-Function (sfix_udelay): '<S67>/Integer Delay' */
5387 controlMCUSlugsMKII_DWork.IntegerDelay_X_n = 0.0;
5388
5389 /* InitializeConditions for S-Function (sfix_udelay): '<S67>/Integer Delay1' */
5390 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[0] = 0.0;
5391 controlMCUSlugsMKII_DWork.IntegerDelay1_X_n[1] = 0.0;
5392
5393 /* InitializeConditions for S-Function (sfix_udelay): '<S69>/Integer Delay3' */
5394 controlMCUSlugsMKII_DWork.IntegerDelay3_X_hp = 0.0F;
5395
5396 /* end of InitializeConditions for SubSystem: '<S2>/Lateral Channel' */
5397
5398 /* set "at time zero" to false */
5399 if (rtmIsFirstInitCond(controlMCUSlugsMKII_M)) {
5400 rtmSetFirstInitCond(controlMCUSlugsMKII_M, 0);
5401 }
5402 }
5403 }
5404
5405 /* File trailer for Real-Time Workshop generated code.
5406 *
5407 * [EOF]
5408 */
5409
|