1/*
2 * File: GlobalPosition_sil_sil_ec.c
3 *
4 * Code generated for Simulink model 'GlobalPosition_sil_sil_ec'.
5 *
6 * Model version : 1.2
7 * Simulink Coder version : 9.0 (R2018b) 24-May-2018
8 * C/C++ source code generated on : Tue Oct 29 09:27:41 2019
9 *
10 * Target selection: ert.tlc
11 * Embedded hardware selection: Intel->x86-64 (Windows64)
12 * Code generation objectives:
13 * 1. Execution efficiency
14 * 2. RAM efficiency
15 * Validation result: Not run
16 */
17
18#include "GlobalPosition_sil_sil_ec.h"
19
20/* Block signals and states (default storage) */
21DW_GlobalPosition_sil_sil_ec_T GlobalPosition_sil_sil_ec_DW;
22
23/* External inputs (root inport signals with default storage) */
24ExtU_GlobalPosition_sil_sil_e_T GlobalPosition_sil_sil_ec_U;
25
26/* External outputs (root outports fed by signals with default storage) */
27ExtY_GlobalPosition_sil_sil_e_T GlobalPosition_sil_sil_ec_Y;
28
29/* Real-time model */
30RT_MODEL_GlobalPosition_sil_s_T GlobalPosition_sil_sil_ec_M_;
31RT_MODEL_GlobalPosition_sil_s_T *const GlobalPosition_sil_sil_ec_M =
32 &GlobalPosition_sil_sil_ec_M_;
33
34/* Model step function */
35void GlobalPosition_sil_sil_ec_step(void)
36{
37 real_T rtb_s_k;
38 real_T rtb_xPosGlobal;
39
40 /* Product: '<S1>/conv_way' incorporates:
41 * Constant: '<S1>/WHEEL_SIZE_DEG'
42 * Constant: '<S1>/WHEEL_SIZE_DEG1'
43 * DataTypeConversion: '<S1>/DataTypeConversion'
44 * Inport: '<Root>/driveEncoder'
45 */
46 rtb_s_k = (real_T)GlobalPosition_sil_sil_ec_U.driveEncoder *
47 GlobalPosition_sil_sil_ec_P.WHEEL_SIZE_DEG *
48 GlobalPosition_sil_sil_ec_P.MOTOR_DRIVE_TRANSMISSION_RATIO;
49
50 /* Sum: '<S1>/Add' incorporates:
51 * Inport: '<Root>/gyroAngleRad'
52 * Product: '<S1>/Product2'
53 * Trigonometry: '<S1>/Trigonometric Function1'
54 * UnitDelay: '<S1>/Unit Delay'
55 */
56 rtb_xPosGlobal = cos(GlobalPosition_sil_sil_ec_U.gyroAngleRad) * rtb_s_k +
57 GlobalPosition_sil_sil_ec_DW.UnitDelay_DSTATE;
58
59 /* Sum: '<S1>/Add1' incorporates:
60 * Inport: '<Root>/gyroAngleRad'
61 * Product: '<S1>/Product3'
62 * Trigonometry: '<S1>/Trigonometric Function'
63 * UnitDelay: '<S1>/Unit Delay1'
64 */
65 rtb_s_k = sin(GlobalPosition_sil_sil_ec_U.gyroAngleRad) * rtb_s_k +
66 GlobalPosition_sil_sil_ec_DW.UnitDelay1_DSTATE;
67
68 /* Outport: '<Root>/posGlobal' */
69 GlobalPosition_sil_sil_ec_Y.posGlobal[0] = rtb_xPosGlobal;
70 GlobalPosition_sil_sil_ec_Y.posGlobal[1] = rtb_s_k;
71
72 /* Update for UnitDelay: '<S1>/Unit Delay' */
73 GlobalPosition_sil_sil_ec_DW.UnitDelay_DSTATE = rtb_xPosGlobal;
74
75 /* Update for UnitDelay: '<S1>/Unit Delay1' */
76 GlobalPosition_sil_sil_ec_DW.UnitDelay1_DSTATE = rtb_s_k;
77}
78
79/* Model initialize function */
80void GlobalPosition_sil_sil_ec_initialize(void)
81{
82 /* InitializeConditions for UnitDelay: '<S1>/Unit Delay' */
83 GlobalPosition_sil_sil_ec_DW.UnitDelay_DSTATE =
84 GlobalPosition_sil_sil_ec_P.UnitDelay_InitialCondition;
85
86 /* InitializeConditions for UnitDelay: '<S1>/Unit Delay1' */
87 GlobalPosition_sil_sil_ec_DW.UnitDelay1_DSTATE =
88 GlobalPosition_sil_sil_ec_P.UnitDelay1_InitialCondition;
89}
90
91/* Model terminate function */
92void GlobalPosition_sil_sil_ec_terminate(void)
93{
94 /* (no terminate code required) */
95}
96
97/*
98 * File trailer for generated code.
99 *
100 * [EOF]
101 */
102