PMSM_Controller.h 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. /*
  2. * File: PMSM_Controller.h
  3. *
  4. * Code generated for Simulink model 'PMSM_Controller'.
  5. *
  6. * Model version : 1.1529
  7. * Simulink Coder version : 9.4 (R2020b) 29-Jul-2020
  8. * C/C++ source code generated on : Tue Aug 2 19:43:20 2022
  9. *
  10. * Target selection: ert.tlc
  11. * Embedded hardware selection: ARM Compatible->ARM Cortex-M
  12. * Code generation objectives:
  13. * 1. Execution efficiency
  14. * 2. RAM efficiency
  15. * Validation result: Not run
  16. */
  17. #ifndef RTW_HEADER_PMSM_Controller_h_
  18. #define RTW_HEADER_PMSM_Controller_h_
  19. #include "rtwtypes.h"
  20. #include "zero_crossing_types.h"
  21. #ifndef PMSM_Controller_COMMON_INCLUDES_
  22. #define PMSM_Controller_COMMON_INCLUDES_
  23. #include "rtwtypes.h"
  24. #include "zero_crossing_types.h"
  25. #endif /* PMSM_Controller_COMMON_INCLUDES_ */
  26. /* Model Code Variants */
  27. /* Macros for accessing real-time model data structure */
  28. #ifndef rtmGetErrorStatus
  29. #define rtmGetErrorStatus(rtm) ((rtm)->errorStatus)
  30. #endif
  31. #ifndef rtmSetErrorStatus
  32. #define rtmSetErrorStatus(rtm, val) ((rtm)->errorStatus = (val))
  33. #endif
  34. /* Forward declaration for rtModel */
  35. typedef struct tag_RTM RT_MODEL;
  36. /* Block signals and states (default storage) for system '<S39>/Low_Pass_Filter' */
  37. typedef struct {
  38. int32_T UnitDelay1_DSTATE[2]; /* '<S47>/UnitDelay1' */
  39. } DW_Low_Pass_Filter;
  40. /* Block signals and states (default storage) for system '<S79>/PI_Speed' */
  41. typedef struct {
  42. int32_T UnitDelay_DSTATE; /* '<S81>/UnitDelay' */
  43. int32_T ResettableDelay_DSTATE; /* '<S82>/Resettable Delay' */
  44. uint8_T icLoad; /* '<S82>/Resettable Delay' */
  45. } DW_PI_backCalc_fixdt;
  46. /* Zero-crossing (trigger) state for system '<S79>/PI_Speed' */
  47. typedef struct {
  48. ZCSigState ResettableDelay_Reset_ZCE_fm;/* '<S82>/Resettable Delay' */
  49. } ZCE_PI_backCalc_fixdt;
  50. /* Block signals and states (default storage) for system '<S85>/PI_backCalc_fixdt' */
  51. typedef struct {
  52. int32_T UnitDelay_DSTATE; /* '<S90>/UnitDelay' */
  53. int32_T ResettableDelay_DSTATE; /* '<S92>/Resettable Delay' */
  54. uint8_T icLoad; /* '<S92>/Resettable Delay' */
  55. } DW_PI_backCalc_fixdt_j;
  56. /* Zero-crossing (trigger) state for system '<S85>/PI_backCalc_fixdt' */
  57. typedef struct {
  58. ZCSigState ResettableDelay_Reset_ZCE;/* '<S92>/Resettable Delay' */
  59. } ZCE_PI_backCalc_fixdt_n;
  60. /* Block signals and states (default storage) for system '<Root>' */
  61. typedef struct {
  62. DW_PI_backCalc_fixdt_j PI_backCalc_fixdt1;/* '<S85>/PI_backCalc_fixdt1' */
  63. DW_PI_backCalc_fixdt_j PI_backCalc_fixdt_ig;/* '<S85>/PI_backCalc_fixdt' */
  64. DW_PI_backCalc_fixdt PI_Speed; /* '<S79>/PI_Speed' */
  65. DW_Low_Pass_Filter Low_Pass_Filter_e;/* '<S68>/Low_Pass_Filter' */
  66. DW_Low_Pass_Filter Low_Pass_Filter_l;/* '<S39>/Low_Pass_Filter' */
  67. int32_T Divide11; /* '<S29>/Divide11' */
  68. int32_T UnitDelay_DSTATE_l; /* '<S69>/Unit Delay' */
  69. int32_T ResettableDelay_DSTATE; /* '<S70>/Resettable Delay' */
  70. uint32_T OutportBufferFordelta_count;
  71. uint32_T i_count; /* '<S16>/i_count' */
  72. uint32_T Switch4; /* '<S29>/Switch4' */
  73. uint32_T UnitDelay1_DSTATE; /* '<S38>/UnitDelay1' */
  74. uint32_T UnitDelay_DSTATE; /* '<S29>/Unit Delay' */
  75. uint32_T UnitDelay2_DSTATE; /* '<S29>/UnitDelay2' */
  76. uint32_T UnitDelay3_DSTATE; /* '<S29>/UnitDelay3' */
  77. uint32_T UnitDelay5_DSTATE; /* '<S29>/UnitDelay5' */
  78. uint32_T UnitDelay4_DSTATE; /* '<S20>/UnitDelay4' */
  79. uint32_T UnitDelay4_DSTATE_o; /* '<S29>/UnitDelay4' */
  80. int16_T Switch[2]; /* '<S111>/Switch' */
  81. int16_T Merge_i[2]; /* '<S67>/Merge' */
  82. int16_T UnitDelay_DSTATE_k[2]; /* '<S1>/Unit Delay' */
  83. int16_T UnitDelay1_DSTATE_o[2]; /* '<S35>/UnitDelay1' */
  84. int16_T UnitDelay_DSTATE_e[2]; /* '<S4>/Unit Delay' */
  85. int16_T Divide; /* '<S120>/Divide' */
  86. int16_T Divide_o; /* '<S116>/Divide' */
  87. int16_T Max; /* '<S120>/Max' */
  88. int16_T Max1; /* '<S120>/Max1' */
  89. int16_T Max_l; /* '<S116>/Max' */
  90. int16_T Max1_j; /* '<S116>/Max1' */
  91. int16_T Max_p; /* '<S106>/Max' */
  92. int16_T Max1_i; /* '<S106>/Max1' */
  93. int16_T Max_i; /* '<S99>/Max' */
  94. int16_T Max1_e; /* '<S99>/Max1' */
  95. int16_T Merge; /* '<S65>/Merge' */
  96. int16_T Switch_p; /* '<S68>/Switch' */
  97. int16_T Switch2; /* '<S76>/Switch2' */
  98. int16_T Divide_g; /* '<S106>/Divide' */
  99. int16_T Divide_d; /* '<S99>/Divide' */
  100. int16_T UnitDelay_DSTATE_l5; /* '<S96>/UnitDelay' */
  101. int16_T UnitDelay1_DSTATE_j; /* '<S87>/Unit Delay1' */
  102. int16_T UnitDelay_DSTATE_g; /* '<S102>/UnitDelay' */
  103. int16_T UnitDelay_DSTATE_b; /* '<S98>/Unit Delay' */
  104. int16_T UnitDelay_DSTATE_er; /* '<S103>/UnitDelay' */
  105. int16_T UnitDelay1_DSTATE_p; /* '<S88>/Unit Delay1' */
  106. int16_T UnitDelay_DSTATE_o; /* '<S109>/UnitDelay' */
  107. int16_T UnitDelay_DSTATE_d; /* '<S105>/Unit Delay' */
  108. int16_T UnitDelay_DSTATE_lz; /* '<S112>/UnitDelay' */
  109. int16_T UnitDelay_DSTATE_j; /* '<S119>/UnitDelay' */
  110. int16_T UnitDelay_DSTATE_h; /* '<S113>/Unit Delay' */
  111. int16_T UnitDelay_DSTATE_n; /* '<S114>/UnitDelay' */
  112. int16_T UnitDelay_DSTATE_ox; /* '<S123>/UnitDelay' */
  113. int16_T UnitDelay_DSTATE_gt; /* '<S115>/Unit Delay' */
  114. int16_T UnitDelay1_DSTATE_jp; /* '<S62>/Unit Delay1' */
  115. int16_T Delay_DSTATE; /* '<S80>/Delay' */
  116. int16_T UnitDelay_DSTATE_di; /* '<S79>/Unit Delay' */
  117. uint16_T UnitDelay2_DSTATE_o; /* '<S28>/UnitDelay2' */
  118. uint16_T UnitDelay3_DSTATE_p; /* '<S28>/UnitDelay3' */
  119. uint16_T UnitDelay5_DSTATE_m; /* '<S28>/UnitDelay5' */
  120. uint16_T UnitDelay_DSTATE_i; /* '<S13>/UnitDelay' */
  121. uint16_T UnitDelay_DSTATE_m; /* '<S15>/UnitDelay' */
  122. uint16_T UnitDelay1_DSTATE_pl; /* '<S66>/Unit Delay1' */
  123. int8_T UnitDelay3; /* '<S16>/UnitDelay3' */
  124. int8_T Switch2_o; /* '<S16>/Switch2' */
  125. int8_T UnitDelay2_DSTATE_i; /* '<S16>/UnitDelay2' */
  126. int8_T If_ActiveSubsystem_k; /* '<S65>/If' */
  127. uint8_T Delay_DSTATE_p; /* '<S17>/Delay' */
  128. uint8_T Delay1_DSTATE; /* '<S17>/Delay1' */
  129. uint8_T Delay2_DSTATE; /* '<S17>/Delay2' */
  130. uint8_T UnitDelay_DSTATE_p; /* '<S5>/UnitDelay' */
  131. uint8_T UnitDelay_DSTATE_h3; /* '<S45>/Unit Delay' */
  132. uint8_T UnitDelay_DSTATE_lv; /* '<S62>/Unit Delay' */
  133. uint8_T UnitDelay1_DSTATE_k; /* '<S29>/Unit Delay1' */
  134. uint8_T is_active_c11_PMSM_Controller;/* '<S36>/Control_Mode_Manager' */
  135. uint8_T is_c11_PMSM_Controller; /* '<S36>/Control_Mode_Manager' */
  136. uint8_T is_ACTIVE; /* '<S36>/Control_Mode_Manager' */
  137. uint8_T icLoad; /* '<S70>/Resettable Delay' */
  138. uint8_T icLoad_i; /* '<S80>/Delay' */
  139. boolean_T UnitDelay_DSTATE_gv; /* '<S6>/UnitDelay' */
  140. boolean_T UnitDelay_DSTATE_oy; /* '<S10>/UnitDelay' */
  141. boolean_T UnitDelay_DSTATE_f; /* '<S7>/UnitDelay' */
  142. boolean_T UnitDelay1_DSTATE_m; /* '<S29>/UnitDelay1' */
  143. boolean_T n_SpeedCtrl_Mode; /* '<S36>/n_SpeedCtrl' */
  144. boolean_T dz_cntTrnsDet_Mode; /* '<S29>/dz_cntTrnsDet' */
  145. boolean_T n_commDeacv_Mode; /* '<S28>/n_commDeacv' */
  146. } DW;
  147. /* Zero-crossing (trigger) state */
  148. typedef struct {
  149. ZCE_PI_backCalc_fixdt_n PI_backCalc_fixdt1;/* '<S85>/PI_backCalc_fixdt1' */
  150. ZCE_PI_backCalc_fixdt_n PI_backCalc_fixdt_ig;/* '<S85>/PI_backCalc_fixdt' */
  151. ZCSigState ResettableDelay_Reset_ZCE_f;/* '<S70>/Resettable Delay' */
  152. ZCE_PI_backCalc_fixdt PI_Speed; /* '<S79>/PI_Speed' */
  153. } PrevZCX;
  154. /* Constant parameters (default storage) */
  155. typedef struct {
  156. /* Pooled Parameter (Expression: r_sin_M1)
  157. * Referenced by:
  158. * '<S49>/r_sin_M1'
  159. * '<S74>/r_sin_M1'
  160. */
  161. int16_T pooled12[361];
  162. /* Pooled Parameter (Expression: r_cos_M1)
  163. * Referenced by:
  164. * '<S49>/r_cos_M1'
  165. * '<S74>/r_cos_M1'
  166. */
  167. int16_T pooled13[361];
  168. /* Computed Parameter: vec_hallToPos_Value
  169. * Referenced by: '<S19>/vec_hallToPos'
  170. */
  171. int8_T vec_hallToPos_Value[8];
  172. } ConstP;
  173. /* External inputs (root inport signals with default storage) */
  174. typedef struct {
  175. int16_T adc_Phase[3]; /* '<Root>/adc_Phase' */
  176. uint8_T hall_abc[3]; /* '<Root>/hall_abc' */
  177. int32_T spd_Target; /* '<Root>/spd_Target' */
  178. int16_T idq_Target; /* '<Root>/idq_Target' */
  179. int16_T vdq_Target[2]; /* '<Root>/vdq_Target' */
  180. int16_T idq_Limit; /* '<Root>/idq_Limit' */
  181. boolean_T b_motEna; /* '<Root>/b_motEna' */
  182. boolean_T b_cruiseEna; /* '<Root>/b_cruiseEna' */
  183. uint8_T n_ctrlMod; /* '<Root>/n_ctrlMod' */
  184. int16_T iDC_Limit; /* '<Root>/iDC_Limit' */
  185. int32_T spd_Limit; /* '<Root>/spd_Limit' */
  186. int16_T vDC; /* '<Root>/vDC' */
  187. uint32_T sys_ticks; /* '<Root>/sys_ticks' */
  188. int16_T set_Angle; /* '<Root>/set_Angle' */
  189. } ExtU;
  190. /* External outputs (root outports fed by signals with default storage) */
  191. typedef struct {
  192. int16_T n_Duty[3]; /* '<Root>/n_Duty' */
  193. uint8_T n_Sector; /* '<Root>/n_Sector' */
  194. uint8_T n_MotError; /* '<Root>/n_MotError' */
  195. int16_T f_Vdq[2]; /* '<Root>/f_Vdq' */
  196. int16_T f_Idq[2]; /* '<Root>/f_Idq' */
  197. int16_T f_MotAngle; /* '<Root>/f_MotAngle' */
  198. int32_T f_MotRPM; /* '<Root>/f_MotRPM' */
  199. uint8_T n_hallStat; /* '<Root>/n_hallStat' */
  200. uint8_T n_FocMode; /* '<Root>/n_FocMode' */
  201. boolean_T b_advCtrl; /* '<Root>/b_advCtrl' */
  202. } ExtY;
  203. /* Parameters (default storage) */
  204. struct P_ {
  205. int16_T cf_Fw_Kb; /* Variable: cf_Fw_Kb
  206. * Referenced by: '<S66>/Constant5'
  207. */
  208. int16_T cf_Fw_Ki; /* Variable: cf_Fw_Ki
  209. * Referenced by: '<S66>/Constant2'
  210. */
  211. int16_T cf_idKp; /* Variable: cf_idKp
  212. * Referenced by: '<S85>/Constant3'
  213. */
  214. int16_T cf_iqKp; /* Variable: cf_iqKp
  215. * Referenced by: '<S85>/Constant7'
  216. */
  217. int16_T cf_nKp; /* Variable: cf_nKp
  218. * Referenced by: '<S79>/Constant4'
  219. */
  220. int16_T V_modulation; /* Variable: V_modulation
  221. * Referenced by:
  222. * '<S42>/Constant'
  223. * '<S85>/Constant2'
  224. * '<S66>/Constant3'
  225. */
  226. int16_T cf_idKb; /* Variable: cf_idKb
  227. * Referenced by: '<S85>/Constant6'
  228. */
  229. int16_T cf_idKi; /* Variable: cf_idKi
  230. * Referenced by: '<S85>/Constant4'
  231. */
  232. int16_T cf_iqKb; /* Variable: cf_iqKb
  233. * Referenced by: '<S85>/Constant1'
  234. */
  235. int16_T cf_iqKi; /* Variable: cf_iqKi
  236. * Referenced by: '<S85>/Constant8'
  237. */
  238. int16_T cf_nKb; /* Variable: cf_nKb
  239. * Referenced by: '<S79>/Constant11'
  240. */
  241. int16_T cf_nKi; /* Variable: cf_nKi
  242. * Referenced by: '<S79>/Constant1'
  243. */
  244. int16_T f_adc_curr_ceof; /* Variable: f_adc_curr_ceof
  245. * Referenced by: '<S43>/Constant'
  246. */
  247. int16_T cf_lastIqGain; /* Variable: cf_lastIqGain
  248. * Referenced by: '<S62>/Gain'
  249. */
  250. int16_T i_hall_offset; /* Variable: i_hall_offset
  251. * Referenced by: '<S22>/Constant2'
  252. */
  253. int16_T i_dqMax; /* Variable: i_dqMax
  254. * Referenced by:
  255. * '<S68>/Constant1'
  256. * '<S68>/Constant2'
  257. * '<S68>/Constant3'
  258. * '<S68>/Constant5'
  259. * '<S79>/Constant6'
  260. */
  261. int16_T id_fieldWeakMax; /* Variable: id_fieldWeakMax
  262. * Referenced by: '<S66>/Constant6'
  263. */
  264. int16_T dz_OpenStepVol; /* Variable: dz_OpenStepVol
  265. * Referenced by:
  266. * '<S111>/Constant1'
  267. * '<S111>/Constant5'
  268. */
  269. uint16_T f_lpf_idq; /* Variable: f_lpf_idq
  270. * Referenced by: '<S39>/Constant'
  271. */
  272. uint16_T f_lpf_vdq; /* Variable: f_lpf_vdq
  273. * Referenced by: '<S68>/Constant'
  274. */
  275. uint16_T i_pwm_count; /* Variable: i_pwm_count
  276. * Referenced by: '<S53>/Constant1'
  277. */
  278. uint8_T n_polePairs; /* Variable: n_polePairs
  279. * Referenced by: '<S29>/polePairs'
  280. */
  281. };
  282. /* Parameters (default storage) */
  283. typedef struct P_ P;
  284. /* Real-time Model Data Structure */
  285. struct tag_RTM {
  286. const char_T * volatile errorStatus;
  287. PrevZCX *prevZCSigState;
  288. ExtU *inputs;
  289. ExtY *outputs;
  290. DW *dwork;
  291. };
  292. /* Block parameters (default storage) */
  293. extern P rtP;
  294. /* Constant parameters (default storage) */
  295. extern const ConstP rtConstP;
  296. /* Model entry point functions */
  297. extern void PMSM_Controller_initialize(RT_MODEL *const rtM);
  298. extern void PMSM_Controller_step(RT_MODEL *const rtM);
  299. /*-
  300. * These blocks were eliminated from the model due to optimizations:
  301. *
  302. * Block '<S19>/Scope' : Unused code path elimination
  303. * Block '<S3>/Scope' : Unused code path elimination
  304. * Block '<S20>/Logical Operator4' : Unused code path elimination
  305. * Block '<S29>/Scope' : Unused code path elimination
  306. * Block '<S20>/Scope1' : Unused code path elimination
  307. * Block '<S20>/Scope2' : Unused code path elimination
  308. * Block '<S46>/Scope' : Unused code path elimination
  309. * Block '<S39>/Scope' : Unused code path elimination
  310. * Block '<S49>/Scope' : Unused code path elimination
  311. * Block '<S40>/Constant1' : Unused code path elimination
  312. * Block '<S40>/Min' : Unused code path elimination
  313. * Block '<S50>/Data Type Duplicate' : Unused code path elimination
  314. * Block '<S50>/Data Type Propagation' : Unused code path elimination
  315. * Block '<S51>/Data Type Duplicate' : Unused code path elimination
  316. * Block '<S51>/Data Type Propagation' : Unused code path elimination
  317. * Block '<S52>/Scope' : Unused code path elimination
  318. * Block '<S61>/Scope' : Unused code path elimination
  319. * Block '<S42>/Scope' : Unused code path elimination
  320. * Block '<S71>/Data Type Duplicate' : Unused code path elimination
  321. * Block '<S71>/Data Type Propagation' : Unused code path elimination
  322. * Block '<S74>/Scope' : Unused code path elimination
  323. * Block '<S76>/Data Type Duplicate' : Unused code path elimination
  324. * Block '<S76>/Data Type Propagation' : Unused code path elimination
  325. * Block '<S77>/Data Type Duplicate' : Unused code path elimination
  326. * Block '<S77>/Data Type Propagation' : Unused code path elimination
  327. * Block '<S83>/Data Type Duplicate' : Unused code path elimination
  328. * Block '<S83>/Data Type Propagation' : Unused code path elimination
  329. * Block '<S84>/Data Type Duplicate' : Unused code path elimination
  330. * Block '<S84>/Data Type Propagation' : Unused code path elimination
  331. * Block '<S93>/Data Type Duplicate' : Unused code path elimination
  332. * Block '<S93>/Data Type Propagation' : Unused code path elimination
  333. * Block '<S95>/Data Type Duplicate' : Unused code path elimination
  334. * Block '<S95>/Data Type Propagation' : Unused code path elimination
  335. * Block '<S45>/Scope' : Unused code path elimination
  336. * Block '<S100>/Data Type Duplicate' : Unused code path elimination
  337. * Block '<S100>/Data Type Propagation' : Unused code path elimination
  338. * Block '<S107>/Data Type Duplicate' : Unused code path elimination
  339. * Block '<S107>/Data Type Propagation' : Unused code path elimination
  340. * Block '<S4>/Scope' : Unused code path elimination
  341. * Block '<S37>/Scope' : Unused code path elimination
  342. * Block '<S117>/Data Type Duplicate' : Unused code path elimination
  343. * Block '<S117>/Data Type Propagation' : Unused code path elimination
  344. * Block '<S121>/Data Type Duplicate' : Unused code path elimination
  345. * Block '<S121>/Data Type Propagation' : Unused code path elimination
  346. * Block '<S1>/Data Type Conversion4' : Eliminate redundant data type conversion
  347. * Block '<S1>/Data Type Conversion6' : Eliminate redundant data type conversion
  348. * Block '<S1>/Data Type Conversion7' : Eliminate redundant data type conversion
  349. * Block '<S70>/Data Type Conversion1' : Eliminate redundant data type conversion
  350. * Block '<S72>/Data Type Conversion' : Eliminate redundant data type conversion
  351. * Block '<S36>/Data Type Conversion' : Eliminate redundant data type conversion
  352. * Block '<S66>/Constant1' : Unused code path elimination
  353. * Block '<S89>/Add' : Unused code path elimination
  354. * Block '<S89>/Constant1' : Unused code path elimination
  355. * Block '<S89>/Constant3' : Unused code path elimination
  356. * Block '<S89>/Constant4' : Unused code path elimination
  357. * Block '<S89>/Constant5' : Unused code path elimination
  358. * Block '<S89>/Constant6' : Unused code path elimination
  359. * Block '<S89>/Divide' : Unused code path elimination
  360. * Block '<S89>/Divide1' : Unused code path elimination
  361. * Block '<S89>/Divide2' : Unused code path elimination
  362. * Block '<S89>/Divide4' : Unused code path elimination
  363. * Block '<S89>/Gain' : Unused code path elimination
  364. * Block '<S85>/Gain' : Unused code path elimination
  365. */
  366. /*-
  367. * The generated code includes comments that allow you to trace directly
  368. * back to the appropriate location in the model. The basic format
  369. * is <system>/block_name, where system is the system number (uniquely
  370. * assigned by Simulink) and block_name is the name of the block.
  371. *
  372. * Note that this particular code originates from a subsystem build,
  373. * and has its own system numbers different from the parent model.
  374. * Refer to the system hierarchy for this subsystem below, and use the
  375. * MATLAB hilite_system command to trace the generated code back
  376. * to the parent model. For example,
  377. *
  378. * hilite_system('MotorController_FOC_hall/PMSM_Controller') - opens subsystem MotorController_FOC_hall/PMSM_Controller
  379. * hilite_system('MotorController_FOC_hall/PMSM_Controller/Kp') - opens and selects block Kp
  380. *
  381. * Here is the system hierarchy for this model
  382. *
  383. * '<Root>' : 'MotorController_FOC_hall'
  384. * '<S1>' : 'MotorController_FOC_hall/PMSM_Controller'
  385. * '<S2>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics'
  386. * '<S3>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation'
  387. * '<S4>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC'
  388. * '<S5>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled'
  389. * '<S6>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter'
  390. * '<S7>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Edge'
  391. * '<S8>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Default'
  392. * '<S9>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification'
  393. * '<S10>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Edge'
  394. * '<S11>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification'
  395. * '<S12>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification/Rst_Counter'
  396. * '<S13>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Dequalification/Rst_Counter/rst_Delay1'
  397. * '<S14>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification/Rst_Counter'
  398. * '<S15>' : 'MotorController_FOC_hall/PMSM_Controller/Diagnostics/Diagnostics_Enabled/Debounce_Filter/Qualification/Rst_Counter/rst_Delay1'
  399. * '<S16>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Direction_Detection'
  400. * '<S17>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Edge_Detect'
  401. * '<S18>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation'
  402. * '<S19>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Hall_Angle_Raw'
  403. * '<S20>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation'
  404. * '<S21>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/Delta'
  405. * '<S22>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/degree_rad'
  406. * '<S23>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/Delta/normal'
  407. * '<S24>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/Delta/wrapper'
  408. * '<S25>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem'
  409. * '<S26>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem1'
  410. * '<S27>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Electrical_Angle_Estimation/degree_rad/If Action Subsystem2'
  411. * '<S28>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/AdvCtrlDetect'
  412. * '<S29>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation'
  413. * '<S30>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/AdvCtrlDetect/Compare To Constant'
  414. * '<S31>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation/Delta'
  415. * '<S32>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation/Delta/normal'
  416. * '<S33>' : 'MotorController_FOC_hall/PMSM_Controller/Hall_Estimation/Speed_Estimation/Raw_Motor_Speed_Estimation/Delta/wrapper'
  417. * '<S34>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Call_Schduler'
  418. * '<S35>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core'
  419. * '<S36>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Ctrl_Mode_Transition'
  420. * '<S37>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale'
  421. * '<S38>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Call_Schduler/counter'
  422. * '<S39>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Clarke_Park'
  423. * '<S40>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Motor_Limitation'
  424. * '<S41>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM'
  425. * '<S42>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/circle_limiter'
  426. * '<S43>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/current_sample'
  427. * '<S44>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc'
  428. * '<S45>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc'
  429. * '<S46>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Clarke_Park/Clarke'
  430. * '<S47>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Clarke_Park/Low_Pass_Filter'
  431. * '<S48>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Clarke_Park/Park'
  432. * '<S49>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Clarke_Park/Sine_Cosine_Approximation'
  433. * '<S50>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Motor_Limitation/Saturation Dynamic'
  434. * '<S51>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/Motor_Limitation/Saturation Dynamic1'
  435. * '<S52>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/Park_Transform_Inverse'
  436. * '<S53>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM'
  437. * '<S54>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen'
  438. * '<S55>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/sector_select'
  439. * '<S56>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector1'
  440. * '<S57>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector2'
  441. * '<S58>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector3'
  442. * '<S59>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector4'
  443. * '<S60>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector5'
  444. * '<S61>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/SVM/SVPWM/duty_gen/sector6'
  445. * '<S62>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc'
  446. * '<S63>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/pid_schdule'
  447. * '<S64>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign'
  448. * '<S65>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get'
  449. * '<S66>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/FW_Calc'
  450. * '<S67>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/MPTA_Calc'
  451. * '<S68>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/iDC_Limiter'
  452. * '<S69>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/FW_Calc/FW_I_Ctrl'
  453. * '<S70>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/FW_Calc/FW_I_Ctrl/Intergrator_z'
  454. * '<S71>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/FW_Calc/FW_I_Ctrl/Saturation Dynamic'
  455. * '<S72>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/MPTA_Calc/MTPA_Calc'
  456. * '<S73>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/MPTA_Calc/MTPA_Cali'
  457. * '<S74>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/MPTA_Calc/MTPA_Cali/Sine_Cosine_Approximation'
  458. * '<S75>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/iDC_Limiter/Low_Pass_Filter'
  459. * '<S76>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/iDC_Limiter/Saturation Dynamic1'
  460. * '<S77>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/iDC_Limiter/Saturation Dynamic3'
  461. * '<S78>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Assign/iDC_Limiter/sqrtSum'
  462. * '<S79>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/speed_mode'
  463. * '<S80>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/torque_mode'
  464. * '<S81>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/speed_mode/PI_Speed'
  465. * '<S82>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/speed_mode/PI_Speed/Rst_Integrator'
  466. * '<S83>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/speed_mode/PI_Speed/Saturation Dynamic1'
  467. * '<S84>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/idq_Calc/Do_Calc/idq_Get/torque_mode/Saturation Dynamic1'
  468. * '<S85>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop'
  469. * '<S86>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/OpenLoop'
  470. * '<S87>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep'
  471. * '<S88>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep'
  472. * '<S89>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/FeedForward'
  473. * '<S90>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt'
  474. * '<S91>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt1'
  475. * '<S92>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt/Rst_Integrator'
  476. * '<S93>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt/Saturation Dynamic1'
  477. * '<S94>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt1/Rst_Integrator'
  478. * '<S95>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/CurrentLoop/PI_backCalc_fixdt1/Saturation Dynamic1'
  479. * '<S96>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Edge'
  480. * '<S97>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Enabled Subsystem'
  481. * '<S98>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Rate_Control'
  482. * '<S99>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Rate_Control/RateInit'
  483. * '<S100>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Rate_Control/Saturation Dynamic'
  484. * '<S101>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Rate_Control/StepAdd'
  485. * '<S102>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/idStep/Rate_Control/StepAdd/delayUnit'
  486. * '<S103>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Edge'
  487. * '<S104>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Enabled Subsystem'
  488. * '<S105>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Rate_Control'
  489. * '<S106>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Rate_Control/RateInit'
  490. * '<S107>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Rate_Control/Saturation Dynamic'
  491. * '<S108>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Rate_Control/StepAdd'
  492. * '<S109>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Core/vdq_Calc/iqStep/Rate_Control/StepAdd/delayUnit'
  493. * '<S110>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Ctrl_Mode_Transition/Control_Mode_Manager'
  494. * '<S111>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode'
  495. * '<S112>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_dege'
  496. * '<S113>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_rate_ctrl'
  497. * '<S114>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_edge'
  498. * '<S115>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_rate_ctrl'
  499. * '<S116>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_rate_ctrl/RateInit'
  500. * '<S117>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_rate_ctrl/Saturation Dynamic'
  501. * '<S118>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_rate_ctrl/StepAdd'
  502. * '<S119>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vd_rate_ctrl/StepAdd/delayUnit'
  503. * '<S120>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_rate_ctrl/RateInit'
  504. * '<S121>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_rate_ctrl/Saturation Dynamic'
  505. * '<S122>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_rate_ctrl/StepAdd'
  506. * '<S123>' : 'MotorController_FOC_hall/PMSM_Controller/PMSM_FOC/Target_Scale/open_mode/vq_rate_ctrl/StepAdd/delayUnit'
  507. */
  508. #endif /* RTW_HEADER_PMSM_Controller_h_ */
  509. /*
  510. * File trailer for generated code.
  511. *
  512. * [EOF]
  513. */