1 | /* |
2 | * File: rtwdemo_pmsmfoc.h |
3 | * |
4 | * Code generated for Simulink model 'rtwdemo_pmsmfoc'. |
5 | * |
6 | * Model version : 1.2949 |
7 | * Simulink Coder version : 8.7 (R2014b) 11-Aug-2014 |
8 | * C/C++ source code generated on : Sat Oct 11 02:05:41 2014 |
9 | * |
10 | * Target selection: ert.tlc |
11 | * Embedded hardware selection: ARM Compatible->ARM Cortex |
12 | * Code generation objective: Execution efficiency |
13 | * Validation result: Not run |
14 | */ |
15 | |
16 | #ifndef RTW_HEADER_rtwdemo_pmsmfoc_h_ |
17 | #define RTW_HEADER_rtwdemo_pmsmfoc_h_ |
18 | #include "rtwtypes.h" |
19 | #include <float.h> |
20 | #include <math.h> |
21 | #include <string.h> |
22 | #include <stddef.h> |
23 | #ifndef rtwdemo_pmsmfoc_COMMON_INCLUDES_ |
24 | # define rtwdemo_pmsmfoc_COMMON_INCLUDES_ |
25 | #include "rtwtypes.h" |
26 | #endif /* rtwdemo_pmsmfoc_COMMON_INCLUDES_ */ |
27 | |
28 | #include "MW_target_hardware_resources.h" |
29 | #include "mw_cmsis.h" |
30 | |
31 | /* Macros for accessing real-time model data structure */ |
32 | |
33 | /* Forward declaration for rtModel */ |
34 | typedef struct tag_RTM RT_MODEL; |
35 | |
36 | #ifndef _DEFINED_TYPEDEF_FOR_EnumErrorType_ |
37 | #define _DEFINED_TYPEDEF_FOR_EnumErrorType_ |
38 | |
39 | typedef enum { |
40 | NoError = 0, /* Default value */ |
41 | MeasuredVelocityError |
42 | } EnumErrorType; |
43 | |
44 | #endif |
45 | |
46 | #ifndef _DEFINED_TYPEDEF_FOR_EnumCommandType_ |
47 | #define _DEFINED_TYPEDEF_FOR_EnumCommandType_ |
48 | |
49 | typedef enum { |
50 | Torque = 0, /* Default value */ |
51 | Velocity, |
52 | Position |
53 | } EnumCommandType; |
54 | |
55 | #endif |
56 | |
57 | #ifndef _DEFINED_TYPEDEF_FOR_EnumControllerMode_ |
58 | #define _DEFINED_TYPEDEF_FOR_EnumControllerMode_ |
59 | |
60 | typedef enum { |
61 | StandBy = 0, /* Default value */ |
62 | Startup, |
63 | TorqueControl, |
64 | VelocityControl, |
65 | PositionControl |
66 | } EnumControllerMode; |
67 | |
68 | #endif |
69 | |
70 | #ifndef _DEFINED_TYPEDEF_FOR_SENSORS_STRUCT_ |
71 | #define _DEFINED_TYPEDEF_FOR_SENSORS_STRUCT_ |
72 | |
73 | typedef struct { |
74 | uint16_T adc_phase_currents[2]; |
75 | uint16_T encoder_valid; |
76 | uint16_T encoder_counter; |
77 | } SENSORS_STRUCT; |
78 | |
79 | #endif |
80 | |
81 | #ifndef _DEFINED_TYPEDEF_FOR_CTRLPARAMS_STRUCT_ |
82 | #define _DEFINED_TYPEDEF_FOR_CTRLPARAMS_STRUCT_ |
83 | |
84 | typedef struct { |
85 | real32_T Current_P; |
86 | real32_T Current_I; |
87 | real32_T Velocity_P; |
88 | real32_T Velocity_I; |
89 | real32_T Position_P; |
90 | real32_T Position_I; |
91 | real32_T StartupAcceleration; |
92 | real32_T StartupCurrent; |
93 | real32_T RampToStopVelocity; |
94 | real32_T AdcZeroOffsetDriverUnits; |
95 | real32_T AdcDriverUnitsToAmps; |
96 | real32_T EncoderToMechanicalZeroOffsetRads; |
97 | real32_T PmsmPolePairs; |
98 | } CTRLPARAMS_STRUCT; |
99 | |
100 | #endif |
101 | |
102 | /* Block signals and states (auto storage) for system '<Root>' */ |
103 | typedef struct { |
104 | real32_T Merge; /* '<S5>/Merge' */ |
105 | real32_T position; /* '<S65>/Integrate_To_Position' */ |
106 | real32_T velocity_command; /* '<S1>/Controller_Mode_Scheduler' */ |
107 | real32_T position_command; /* '<S1>/Controller_Mode_Scheduler' */ |
108 | real32_T torque_command; /* '<S1>/Controller_Mode_Scheduler' */ |
109 | real32_T Integrator_DSTATE; /* '<S17>/Integrator' */ |
110 | real32_T Integrator_DSTATE_l; /* '<S18>/Integrator' */ |
111 | real32_T Velocity_Delay_DSTATE; /* '<S60>/Velocity_Delay' */ |
112 | real32_T Integrate_To_Position_DSTATE;/* '<S65>/Integrate_To_Position' */ |
113 | real32_T Integrate_To_Velocity_DSTATE;/* '<S65>/Integrate_To_Velocity' */ |
114 | real32_T Integrator_DSTATE_lc; /* '<S42>/Integrator' */ |
115 | real32_T Integrator_DSTATE_f; /* '<S45>/Integrator' */ |
116 | int32_T Position_Delay_DSTATE; /* '<S55>/Position_Delay' */ |
117 | EnumErrorType error_l; /* '<Root>/Data Store Memory' */ |
118 | int16_T DelayInput1_DSTATE; /* '<S13>/Delay Input1' */ |
119 | uint16_T Position_Valid; /* '<S49>/Wait_For_Valid_Position' */ |
120 | int8_T Integrator_PrevResetState; /* '<S17>/Integrator' */ |
121 | int8_T SwitchCase_ActiveSubsystem; /* '<S5>/Switch Case' */ |
122 | int8_T Integrator_PrevResetState_c; /* '<S18>/Integrator' */ |
123 | uint8_T is_active_c2_rtwdemo_pmsmfoc;/* '<S49>/Wait_For_Valid_Position' */ |
124 | uint8_T is_c2_rtwdemo_pmsmfoc; /* '<S49>/Wait_For_Valid_Position' */ |
125 | uint8_T temporalCounter_i1; /* '<S49>/Wait_For_Valid_Position' */ |
126 | uint8_T is_c1_rtwdemo_pmsmfoc; /* '<S1>/Controller_Mode_Scheduler' */ |
127 | uint8_T is_Motor_On; /* '<S1>/Controller_Mode_Scheduler' */ |
128 | uint8_T is_Motor_Control; /* '<S1>/Controller_Mode_Scheduler' */ |
129 | boolean_T RelationalOperator_a; /* '<S51>/Relational Operator' */ |
130 | boolean_T Lo_to_Hi_Rate_Transition3_Buffe;/* '<S6>/Lo_to_Hi_Rate_Transition3' */ |
131 | boolean_T OpenLoopPosition_MODE; /* '<S51>/Open Loop Position' */ |
132 | } D_Work; |
133 | |
134 | /* Constant parameters (auto storage) */ |
135 | typedef struct { |
136 | /* Computed Parameter: Lookup_Table_table |
137 | * Referenced by: '<S28>/Lookup_Table' |
138 | */ |
139 | uint16_T Lookup_Table_table[7]; |
140 | } ConstParam; |
141 | |
142 | /* Real-time Model Data Structure */ |
143 | struct tag_RTM { |
144 | /* |
145 | * Timing: |
146 | * The following substructure contains information regarding |
147 | * the timing information for the model. |
148 | */ |
149 | struct { |
150 | struct { |
151 | uint8_T TID[2]; |
152 | } TaskCounters; |
153 | } Timing; |
154 | }; |
155 | |
156 | /* Block signals and states (auto storage) */ |
157 | extern D_Work DWork; |
158 | |
159 | /* Constant parameters (auto storage) */ |
160 | extern const ConstParam ConstP; |
161 | |
162 | /* |
163 | * Exported Global Signals |
164 | * |
165 | * Note: Exported global signals are block signals with an exported global |
166 | * storage class designation. Code generation will declare the memory for |
167 | * these signals and export their symbols. |
168 | * |
169 | */ |
170 | extern real32_T phase_currents[2]; /* '<S48>/Product' */ |
171 | extern real32_T rotor_position; /* '<S49>/Add' */ |
172 | extern real32_T velocity_measured; /* '<S55>/Scale_Output' */ |
173 | extern real32_T d_current_error; /* '<S12>/Sum2' */ |
174 | extern real32_T q_current_command; /* '<S5>/Lo_to_Hi_Rate_Transition1' */ |
175 | extern real32_T q_current_measured; /* '<S22>/Add' */ |
176 | extern real32_T q_current_error; /* '<S12>/Sum' */ |
177 | extern real32_T phase_voltages[3]; /* '<S27>/Select_Sector' */ |
178 | extern real32_T velocity_error; /* '<S11>/Sum2' */ |
179 | extern EnumControllerMode controller_mode;/* '<S1>/Controller_Mode_Scheduler' */ |
180 | |
181 | /* |
182 | * Exported Global Parameters |
183 | * |
184 | * Note: Exported global parameters are tunable parameters with an exported |
185 | * global storage class designation. Code generation will declare the memory for |
186 | * these parameters and exports their symbols. |
187 | * |
188 | */ |
189 | extern CTRLPARAMS_STRUCT ctrlParams; /* Variable: ctrlParams |
190 | * Referenced by: |
191 | * '<S1>/Controller_Mode_Scheduler' |
192 | * '<S48>/ADC_Driver_Units_To_Amps' |
193 | * '<S48>/ADC_Zero_Offset' |
194 | * '<S49>/Offset_Between_Encoder_Zero_And_Mechanical_Zero' |
195 | * '<S14>/number_of_pole_pairs' |
196 | * '<S42>/Integral Gain' |
197 | * '<S42>/Proportional Gain' |
198 | * '<S45>/Integral Gain' |
199 | * '<S45>/Proportional Gain' |
200 | * '<S65>/Startup_Acceleration_Constant' |
201 | * '<S17>/Integral Gain' |
202 | * '<S17>/Proportional Gain' |
203 | * '<S18>/Integral Gain' |
204 | * '<S18>/Proportional Gain' |
205 | */ |
206 | |
207 | /* Model entry point functions */ |
208 | extern void Controller_Init(void); |
209 | |
210 | /* Customized model step function */ |
211 | extern EnumErrorType Controller(uint16_T motor_on, EnumCommandType command_type, |
212 | real32_T current_request, SENSORS_STRUCT *sensors, uint16_T pwm_compare[3]); |
213 | |
214 | /* Real-time Model object */ |
215 | extern RT_MODEL *const M; |
216 | |
217 | /*- |
218 | * The generated code includes comments that allow you to trace directly |
219 | * back to the appropriate location in the model. The basic format |
220 | * is <system>/block_name, where system is the system number (uniquely |
221 | * assigned by Simulink) and block_name is the name of the block. |
222 | * |
223 | * Use the MATLAB hilite_system command to trace the generated code back |
224 | * to the model. For example, |
225 | * |
226 | * hilite_system('<S3>') - opens system 3 |
227 | * hilite_system('<S3>/Kp') - opens and selects block Kp which resides in S3 |
228 | * |
229 | * Here is the system hierarchy for this model |
230 | * |
231 | * '<Root>' : 'rtwdemo_pmsmfoc' |
232 | * '<S1>' : 'rtwdemo_pmsmfoc/Mode_Scheduler' |
233 | * '<S2>' : 'rtwdemo_pmsmfoc/Model Info' |
234 | * '<S3>' : 'rtwdemo_pmsmfoc/Motor_Control' |
235 | * '<S4>' : 'rtwdemo_pmsmfoc/Mode_Scheduler/Controller_Mode_Scheduler' |
236 | * '<S5>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller' |
237 | * '<S6>' : 'rtwdemo_pmsmfoc/Motor_Control/Phase_Voltages_to_PWM_Compare_Values' |
238 | * '<S7>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units' |
239 | * '<S8>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control' |
240 | * '<S9>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Position_Control' |
241 | * '<S10>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Torque_Control' |
242 | * '<S11>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Velocity_Control' |
243 | * '<S12>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Current_Controllers' |
244 | * '<S13>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Detect_Change' |
245 | * '<S14>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Rotation_Coefficients_Sin_Cos' |
246 | * '<S15>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_ABC_to_dq' |
247 | * '<S16>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC' |
248 | * '<S17>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Current_Controllers/Direct_Current_Control' |
249 | * '<S18>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Current_Controllers/Quadrature_Current_Control' |
250 | * '<S19>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Current_Controllers/Direct_Current_Control/Clamping circuit' |
251 | * '<S20>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Current_Controllers/Quadrature_Current_Control/Clamping circuit' |
252 | * '<S21>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_ABC_to_dq/Clarke_Transform' |
253 | * '<S22>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_ABC_to_dq/Park_Transform' |
254 | * '<S23>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC' |
255 | * '<S24>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Inverse_Park_Transform' |
256 | * '<S25>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Inverse_Clarke_Transform' |
257 | * '<S26>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation' |
258 | * '<S27>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages' |
259 | * '<S28>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Determine_Sector' |
260 | * '<S29>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Phase_Advanced_Inverse_Clarke' |
261 | * '<S30>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Va_Sectors_1_and_4' |
262 | * '<S31>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Va_Sectors_2_and_5' |
263 | * '<S32>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Va_Sectors_3_and_6' |
264 | * '<S33>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vb_Sectors_1_and_4' |
265 | * '<S34>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vb_Sectors_2_and_5' |
266 | * '<S35>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vb_Sectors_3_and_6' |
267 | * '<S36>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vc_Sectors_1_and_4' |
268 | * '<S37>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vc_Sectors_2_and_5' |
269 | * '<S38>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Calculate_Phase_Voltages/Vc_Sectors_3_and_6' |
270 | * '<S39>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Determine_Sector/Compare_VA_To_Zero' |
271 | * '<S40>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Determine_Sector/Compare_VB_To_Zero' |
272 | * '<S41>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Current_Control/Transform_Coordinates_dq_to_ABC/Alpha_Beta_to_ABC/Space_Vector_Modulation/Determine_Sector/Compare_VC_To_Zero' |
273 | * '<S42>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Position_Control/Position_Control' |
274 | * '<S43>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Position_Control/Wrap_Error_pi' |
275 | * '<S44>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Position_Control/Position_Control/Clamping circuit' |
276 | * '<S45>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Velocity_Control/Rotor_Speed_Control' |
277 | * '<S46>' : 'rtwdemo_pmsmfoc/Motor_Control/Field_Oriented_Controller/Velocity_Control/Rotor_Speed_Control/Clamping circuit' |
278 | * '<S47>' : 'rtwdemo_pmsmfoc/Motor_Control/Phase_Voltages_to_PWM_Compare_Values/Enumerated_Constant' |
279 | * '<S48>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/ADC_Level_to_Phase_Current' |
280 | * '<S49>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position' |
281 | * '<S50>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity' |
282 | * '<S51>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Startup_Open_Loop_Control' |
283 | * '<S52>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Encoder_To_Position/Wait_For_Valid_Position' |
284 | * '<S53>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap' |
285 | * '<S54>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap_With_Error' |
286 | * '<S55>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Implicit_Integer_Wrap_With_Error' |
287 | * '<S56>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap_With_Error/Detect_Velocity_Error' |
288 | * '<S57>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap_With_Error/Detect_Velocity_Error/Enumerated_Constant' |
289 | * '<S58>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap_With_Error/Detect_Velocity_Error/Generate_Error' |
290 | * '<S59>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Explicit_Angle_Wrap_With_Error/Detect_Velocity_Error/Generate_Error/Enumerated_Constant' |
291 | * '<S60>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Implicit_Integer_Wrap_With_Error/Detect_Velocity_Error' |
292 | * '<S61>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Implicit_Integer_Wrap_With_Error/Detect_Velocity_Error/Enumerated_Constant' |
293 | * '<S62>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Implicit_Integer_Wrap_With_Error/Detect_Velocity_Error/Generate_Error' |
294 | * '<S63>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Position_To_Velocity/Implicit_Integer_Wrap_With_Error/Detect_Velocity_Error/Generate_Error/Enumerated_Constant' |
295 | * '<S64>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Startup_Open_Loop_Control/Enumerated Constant' |
296 | * '<S65>' : 'rtwdemo_pmsmfoc/Motor_Control/Sensors_To_Engineering_Units/Startup_Open_Loop_Control/Open Loop Position' |
297 | */ |
298 | |
299 | /*- |
300 | * Requirements for '<Root>': rtwdemo_pmsmfoc |
301 | */ |
302 | #endif /* RTW_HEADER_rtwdemo_pmsmfoc_h_ */ |
303 | |
304 | /* |
305 | * File trailer for generated code. |
306 | * |
307 | * [EOF] |
308 | */ |
309 | |