user.h 62 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  1. /************************************************************************
  2. Project: Welling Motor Control Paltform
  3. Filename: user.h
  4. Partner Filename: Null
  5. Description: User parameters
  6. Complier: IAR Embedded Workbench for ARM 7.80, IAR Systems.
  7. CPU TYPE : STM32F30x
  8. *************************************************************************
  9. Copyright (c) 2019 Welling Motor Technology(Shanghai) Co. Ltd.
  10. All rights reserved.
  11. *************************************************************************
  12. *************************************************************************
  13. Revising History (ECL of this file):
  14. ************************************************************************/
  15. #ifndef USER_H
  16. #define USER_H
  17. /************************************************************************
  18. Compiler Directives
  19. *************************************************************************/
  20. #include "typedefine.h"
  21. #include "syspar.h"
  22. /************************************************************************
  23. Definitions & Macros
  24. *************************************************************************/
  25. /*======================================================================*
  26. Update Time
  27. 2021-06-21 13:47:04
  28. *=======================================================================*/
  29. /*======================================================================*
  30. Software version
  31. *=======================================================================*/
  32. #define SOFTWARE_VERSION 0x1C10
  33. #define SOFTWARE_VERSION_WELLING 0x0001
  34. /*======================================================================*
  35. Software version
  36. *=======================================================================*/
  37. /*======================================================================*
  38. Assist Mode
  39. *=======================================================================*/
  40. #define CADENCE_ASSIST 1
  41. #define TORQUE_ASSIST 2
  42. #define ASSIST_MODE TORQUE_ASSIST
  43. /*======================================================================*
  44. Motor Number Selection
  45. *=======================================================================*/
  46. #define MOTOR_WELLING_MTB 0x19
  47. #define MOTOR_WELLING_MTB35_V3 0x21
  48. #define MOTOR_LUNGU_WELLING_HAL_BAFANG 0x30
  49. #define MOTOR_LUNGU_WELLING_HAL_POLE8_250W 0x31
  50. #define MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio 0x32
  51. #define MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio 0x33
  52. #define MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio 0x34
  53. #define MOTOR_LUNGU_WELLING_HAL_POLE8_350W 0x40
  54. #define MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio 0x41
  55. #define MOTOR_LUNGU_WELLING_HAL_POLE8_500W 0x50
  56. #define MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio 0x51
  57. #define MOTOR_LUNGU_WELLING_HAL_POLE8_750W 0x60
  58. #define MOTOR_LUNGU_WELLING_HAL_POLE8_1000W 0x70
  59. /* Select Motor */
  60. #if( (IPM_POWER_SEL == IPM_POWER_1000W_12G) ||(IPM_POWER_SEL ==IPM_POWER_1000W_MINI_12G))
  61. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_1000W
  62. #elif( (IPM_POWER_SEL == IPM_POWER_750W_12G)||(IPM_POWER_SEL ==IPM_POWER_750W_MINI_12G))
  63. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_750W
  64. #elif (IPM_POWER_SEL == IPM_POWER_500W_12G)
  65. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_500W
  66. #elif(IPM_POWER_SEL ==IPM_POWER_350W_MINI_12G)
  67. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio
  68. #elif (IPM_POWER_SEL == IPM_POWER_500W_9G)
  69. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_500W//MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio
  70. #elif (IPM_POWER_SEL == IPM_POWER_350W_9G)
  71. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio
  72. #elif ((IPM_POWER_SEL == IPM_POWER_250W_6G)||(IPM_POWER_SEL == IPM_POWER_350W_6G))
  73. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_500W//
  74. #else
  75. #define MOTOR_ID_SEL MOTOR_LUNGU_WELLING_HAL_POLE8_250W
  76. #endif
  77. /*======================================================================*
  78. Motor Parameters
  79. *=======================================================================*/
  80. #if (MOTOR_ID_SEL == MOTOR_WELLING_MTB)
  81. #define M_POLE_PAIRS 7 // unit:Null,Pole pairs
  82. #define M_RS_OHM 170 // unit: 0.1mOhm, Phase resistance
  83. #define M_MATERIAL Al // unit:Null
  84. #define M_LD_NOLOAD_MH 11000 // unit: 0.01uH, D axis inductance
  85. #define M_LQ_NOLOAD_MH 11500 // unit: 0.01uH, Q axis inductance
  86. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  87. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  88. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  89. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  90. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  91. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  92. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  93. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  94. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  95. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  96. #define M_JD 500 // unit: 10-7Kg*m2, Rotational inertia
  97. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  98. #define M_FLUX_WB 5360 // unit: 0.001mWb, Flux linkage
  99. #define M_ID_MAX_AP 0 //-25 // unit: 0.01A, Max d axis current
  100. #define M_ID_MIN_AP -300 // unit: 0.01A, Min d axis current
  101. #define M_IS_PEAK_MAX_AP 5500 // unit: 0.01A, Max phase current(below base speed)
  102. #define M_POWER_MAX_WT 600 // unit: W, Max power
  103. #define M_R_SPD_RPM 5000 // unit: r/min, rate spd
  104. #define M_R_PWR_WT 250 // unit: W, rate power
  105. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  106. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  107. #define M_MAX_TOR_NM 30 // unit: 0.1Nm, Max tor
  108. #endif
  109. #if (MOTOR_ID_SEL == MOTOR_WELLING_MTB35_V3)
  110. #define M_POLE_PAIRS 7 // unit:Null,Pole pairs
  111. #define M_RS_OHM 170 // unit: 0.1mOhm, Phase resistance
  112. #define M_MATERIAL Al // unit:Null
  113. #define M_LD_NOLOAD_MH 10500 // unit: 0.01uH, D axis inductance
  114. #define M_LQ_NOLOAD_MH 11700 // unit: 0.01uH, Q axis inductance
  115. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  116. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  117. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  118. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  119. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  120. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  121. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  122. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  123. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  124. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  125. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  126. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  127. #define M_FLUX_WB 8565 // unit: 0.001mWb, Flux linkage
  128. #define M_ID_MAX_AP 0 //-25 // unit: 0.01A, Max d axis current
  129. #define M_ID_MIN_AP -300 // unit: 0.01A, Min d axis current
  130. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  131. #define M_POWER_MAX_WT 600 // unit: W, Max power
  132. #define M_R_SPD_RPM 5000 // unit: r/min, rate spd
  133. #define M_R_PWR_WT 250 // unit: W, rate power
  134. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  135. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  136. #define M_MAX_TOR_NM 20 // unit: 0.1Nm, Max tor
  137. #endif
  138. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_BAFANG)
  139. #define M_POLE_PAIRS 10 // unit:Null,Pole pairs
  140. #define M_RS_OHM 480 // 1360 // unit: 0.1mOhm, Phase resistance
  141. #define M_MATERIAL Al // unit:Null
  142. #define M_LD_NOLOAD_MH 8491 // 13300 // unit: 0.01uH, D axis inductance
  143. #define M_LQ_NOLOAD_MH 9161 // 14350 // unit: 0.01uH, Q axis inductance
  144. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  145. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  146. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  147. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  148. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  149. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  150. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  151. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  152. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  153. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  154. #define M_JD 5000 // 15000 // unit: 10-7Kg*m2, Rotational inertia
  155. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  156. #define M_FLUX_WB 11008 // 13777 // unit: 0.001mWb, Flux linkage
  157. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  158. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  159. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  160. #define M_POWER_MAX_WT 600 // unit: W, Max power
  161. #define M_R_SPD_RPM 5000 // unit: r/min, rate spd
  162. #define M_R_PWR_WT 250 // unit: W, rate power
  163. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  164. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  165. #define M_MAX_TOR_NM 20 // unit: 0.1Nm, Max tor
  166. #endif
  167. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W)
  168. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  169. #define M_RS_OHM 335 // unit: 0.1mOhm, Phase resistance
  170. #define M_MATERIAL Al // unit:Null
  171. #define M_LD_NOLOAD_MH 9900 // unit: 0.01uH, D axis inductance
  172. #define M_LQ_NOLOAD_MH 10300 // unit: 0.01uH, Q axis inductance
  173. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  174. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  175. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  176. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  177. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  178. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  179. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  180. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  181. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  182. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  183. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  184. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  185. #define M_FLUX_WB 6250 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  186. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  187. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  188. #define M_IS_PEAK_MAX_AP 4200 // unit: 0.01A, Max phase current(below base speed)
  189. #define M_POWER_MAX_WT 550 // unit: W, Max power
  190. #define M_R_SPD_RPM 3076 // unit: r/min, rate spd
  191. #define M_R_PWR_WT 250 // unit: W, rate power
  192. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  193. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  194. #define M_MAX_TOR_NM 30 // unit: 0.1Nm, Max tor
  195. #endif
  196. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio)
  197. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  198. #define M_RS_OHM 1260 // unit: 0.1mOhm, Phase resistance
  199. #define M_MATERIAL Al // unit:Null
  200. #define M_LD_NOLOAD_MH 51580 // unit: 0.01uH, D axis inductance
  201. #define M_LQ_NOLOAD_MH 59220 // unit: 0.01uH, Q axis inductance
  202. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  203. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  204. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  205. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  206. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  207. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  208. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  209. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  210. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  211. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  212. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  213. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  214. #define M_FLUX_WB 24000 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  215. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  216. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  217. #define M_IS_PEAK_MAX_AP 4200 // unit: 0.01A, Max phase current(below base speed)
  218. #define M_POWER_MAX_WT 550 // unit: W, Max power
  219. #define M_R_SPD_RPM 860 // unit: r/min, rate spd
  220. #define M_R_PWR_WT 250 // unit: W, rate power
  221. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  222. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  223. #define M_MAX_TOR_NM 95 // unit: 0.1Nm, Max tor
  224. #endif
  225. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio)
  226. #define M_POLE_PAIRS 10 // unit:Null,Pole pairs
  227. #define M_RS_OHM 815 // unit: 0.1mOhm, Phase resistance
  228. #define M_MATERIAL Al // unit:Null
  229. #define M_LD_NOLOAD_MH 18000 // unit: 0.01uH, D axis inductance
  230. #define M_LQ_NOLOAD_MH 19000 // unit: 0.01uH, Q axis inductance
  231. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  232. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  233. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  234. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  235. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  236. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  237. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  238. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  239. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  240. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  241. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  242. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  243. #define M_FLUX_WB 13000 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  244. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  245. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  246. #define M_IS_PEAK_MAX_AP 4200 // unit: 0.01A, Max phase current(below base speed)
  247. #define M_POWER_MAX_WT 550 // unit: W, Max power
  248. #define M_R_SPD_RPM 860 // unit: r/min, rate spd
  249. #define M_R_PWR_WT 250 // unit: W, rate power
  250. #define M_R_IRMS_A 1300 // unit: 0.01A, rate Irms
  251. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  252. #define M_MAX_TOR_NM 67 // unit: 0.1Nm, Max tor
  253. #endif
  254. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio)
  255. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  256. #define M_RS_OHM 448 // unit: 0.1mOhm, Phase resistance
  257. #define M_MATERIAL Al // unit:Null
  258. #define M_LD_NOLOAD_MH 14820 // unit: 0.01uH, D axis inductance
  259. #define M_LQ_NOLOAD_MH 16320 // unit: 0.01uH, Q axis inductance
  260. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  261. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  262. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  263. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  264. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  265. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  266. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  267. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  268. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  269. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  270. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  271. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  272. #define M_FLUX_WB 9050 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  273. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  274. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  275. #define M_IS_PEAK_MAX_AP 4200 // unit: 0.01A, Max phase current(below base speed)
  276. #define M_POWER_MAX_WT 550 // unit: W, Max power
  277. #define M_R_SPD_RPM 1920 // unit: r/min, rate spd
  278. #define M_R_PWR_WT 250 // unit: W, rate power
  279. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  280. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  281. #define M_MAX_TOR_NM 46 // unit: 0.1Nm, Max tor
  282. #endif
  283. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W)
  284. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  285. #define M_RS_OHM 240 // unit: 0.1mOhm, Phase resistance
  286. #define M_MATERIAL Al // unit:Null
  287. #define M_LD_NOLOAD_MH 5850 // unit: 0.01uH, D axis inductance
  288. #define M_LQ_NOLOAD_MH 6200 // unit: 0.01uH, Q axis inductance
  289. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  290. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  291. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  292. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  293. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  294. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  295. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  296. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  297. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  298. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  299. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  300. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  301. #define M_FLUX_WB 4861 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  302. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  303. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  304. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  305. #define M_POWER_MAX_WT 650 // unit: W, Max power
  306. #define M_R_SPD_RPM 3900 // unit: r/min, rate spd
  307. #define M_R_PWR_WT 350 // unit: W, rate power
  308. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  309. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  310. #define M_MAX_TOR_NM 40 // unit: 0.1Nm, Max tor
  311. #endif
  312. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio)
  313. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  314. #define M_RS_OHM 448 // unit: 0.1mOhm, Phase resistance
  315. #define M_MATERIAL Al // unit:Null
  316. #define M_LD_NOLOAD_MH 14820 // unit: 0.01uH, D axis inductance
  317. #define M_LQ_NOLOAD_MH 16320 // unit: 0.01uH, Q axis inductance
  318. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  319. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  320. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  321. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  322. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  323. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  324. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  325. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  326. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  327. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  328. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  329. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  330. #define M_FLUX_WB 9050 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  331. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  332. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  333. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  334. #define M_POWER_MAX_WT 650 // unit: W, Max power
  335. #define M_R_SPD_RPM 3900 // unit: r/min, rate spd
  336. #define M_R_PWR_WT 350 // unit: W, rate power
  337. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  338. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  339. #define M_MAX_TOR_NM 46 // unit: 0.1Nm, Max tor
  340. #endif
  341. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W)
  342. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  343. #define M_RS_OHM 160 // unit: 0.1mOhm, Phase resistance
  344. #define M_MATERIAL Al // unit:Null
  345. #define M_LD_NOLOAD_MH 4000 // unit: 0.01uH, D axis inductance
  346. #define M_LQ_NOLOAD_MH 4250 // unit: 0.01uH, Q axis inductance
  347. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  348. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  349. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  350. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  351. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  352. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  353. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  354. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  355. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  356. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  357. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  358. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  359. #define M_FLUX_WB 4462 // unit: 0.001mWb, Flux linkage
  360. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  361. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  362. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  363. #define M_POWER_MAX_WT 1000 // unit: W, Max power
  364. #define M_R_SPD_RPM 4710 // unit: r/min, rate spd
  365. #define M_R_PWR_WT 500 // unit: W, rate power
  366. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  367. #define M_R_UDC_v 480 // unit: 0.1V, rate Udc
  368. #define M_MAX_TOR_NM 40 // unit: 0.1Nm, Max tor
  369. #endif
  370. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio)
  371. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  372. #define M_RS_OHM 448 // unit: 0.1mOhm, Phase resistance
  373. #define M_MATERIAL Al // unit:Null
  374. #define M_LD_NOLOAD_MH 14820 // unit: 0.01uH, D axis inductance
  375. #define M_LQ_NOLOAD_MH 16320 // unit: 0.01uH, Q axis inductance
  376. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  377. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  378. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  379. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  380. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  381. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  382. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  383. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  384. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  385. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  386. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  387. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  388. #define M_FLUX_WB 9050 // unit: 0.001mWb, Flux linkage //5513455*vlinepeak/(p*n)
  389. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  390. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  391. #define M_IS_PEAK_MAX_AP 5000 // unit: 0.01A, Max phase current(below base speed)
  392. #define M_POWER_MAX_WT 1000 // unit: W, Max power
  393. #define M_R_SPD_RPM 3900 // unit: r/min, rate spd
  394. #define M_R_PWR_WT 500 // unit: W, rate power
  395. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  396. #define M_R_UDC_v 360 // unit: 0.1V, rate Udc
  397. #define M_MAX_TOR_NM 46 // unit: 0.1Nm, Max tor
  398. #endif
  399. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_750W)
  400. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  401. #define M_RS_OHM 160 // unit: 0.1mOhm, Phase resistance
  402. #define M_MATERIAL Al // unit:Null
  403. #define M_LD_NOLOAD_MH 4000 // unit: 0.01uH, D axis inductance
  404. #define M_LQ_NOLOAD_MH 4250 // unit: 0.01uH, Q axis inductance
  405. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  406. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  407. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  408. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  409. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  410. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  411. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  412. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  413. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  414. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  415. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  416. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  417. #define M_FLUX_WB 4462 // unit: 0.001mWb, Flux linkage
  418. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  419. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  420. #define M_IS_PEAK_MAX_AP 7500 // unit: 0.01A, Max phase current(below base speed)
  421. #define M_POWER_MAX_WT 1200 // unit: W, Max power
  422. #define M_R_SPD_RPM 4710 // unit: r/min, rate spd
  423. #define M_R_PWR_WT 750 // unit: W, rate power
  424. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  425. #define M_R_UDC_v 480 // unit: 0.1V, rate Udc
  426. #define M_MAX_TOR_NM 50 // unit: 0.1Nm, Max tor
  427. #endif
  428. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W)
  429. #define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  430. #define M_RS_OHM 167 // unit: 0.1mOhm, Phase resistance
  431. #define M_MATERIAL Al // unit:Null
  432. #define M_LD_NOLOAD_MH 4400 // unit: 0.01uH, D axis inductance
  433. #define M_LQ_NOLOAD_MH 4750 // unit: 0.01uH, Q axis inductance
  434. #define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  435. #define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  436. #define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  437. #define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  438. #define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  439. #define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  440. #define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  441. #define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  442. #define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  443. #define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  444. #define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  445. #define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  446. #define M_FLUX_WB 6517 // unit: 0.001mWb, Flux linkage
  447. #define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  448. #define M_ID_MIN_AP -157 // unit: 0.01A, Min d axis current
  449. #define M_IS_PEAK_MAX_AP 7500 // unit: 0.01A, Max phase current(below base speed)
  450. #define M_POWER_MAX_WT 1200 // unit: W, Max power
  451. #define M_R_SPD_RPM 3978 // unit: r/min, rate spd
  452. #define M_R_PWR_WT 1000 // unit: W, rate power
  453. #define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  454. #define M_R_UDC_v 480 // unit: 0.1V, rate Udc
  455. #define M_MAX_TOR_NM 50 // unit: 0.1Nm, Max tor
  456. #endif
  457. //#if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W) //嘉宏1000W电机参数
  458. //#define M_POLE_PAIRS 8 // unit:Null,Pole pairs
  459. //#define M_RS_OHM 195 // unit: 0.1mOhm, Phase resistance
  460. //#define M_MATERIAL Al // unit:Null
  461. //#define M_LD_NOLOAD_MH 6250 // unit: 0.01uH, D axis inductance
  462. //#define M_LQ_NOLOAD_MH 6750 // unit: 0.01uH, Q axis inductance
  463. //#define M_LD_TURN1_ID_AP 200 // unit: 0.01A,
  464. //#define M_LD_TURN1_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  465. //#define M_LD_TURN2_ID_AP 700 // unit: 0.01A,
  466. //#define M_LD_TURN2_LD_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  467. //#define M_LD_MIN_MH M_LD_NOLOAD_MH // unit: 0.01uH,D axis inductance
  468. //#define M_LQ_TURN1_IQ_AP 200 // unit: 0.01A,
  469. //#define M_LQ_TURN1_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  470. //#define M_LQ_TURN2_IQ_AP 700 // unit: 0.01A,
  471. //#define M_LQ_TURN2_LQ_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  472. //#define M_LQ_MIN_MH M_LQ_NOLOAD_MH // unit: 0.01uH,Q axis inductance
  473. //#define M_JD 1000 // unit: 10-7Kg*m2, Rotational inertia
  474. //#define M_MAGNETIC_MATERIAL Ferrite // unit:Null
  475. //#define M_FLUX_WB 7332 // unit: 0.001mWb, Flux linkage
  476. //#define M_ID_MAX_AP 0 // unit: 0.01A, Max d axis current
  477. //#define M_ID_MIN_AP -1500 // unit: 0.01A, Min d axis current
  478. //#define M_IS_PEAK_MAX_AP 7500 // unit: 0.01A, Max phase current(below base speed)
  479. //#define M_POWER_MAX_WT 1200 // unit: W, Max power
  480. //#define M_R_SPD_RPM 3978 // unit: r/min, rate spd
  481. //#define M_R_PWR_WT 1000 // unit: W, rate power
  482. //#define M_R_IRMS_A 2500 // unit: 0.01A, rate Irms
  483. //#define M_R_UDC_v 480 // unit: 0.1V, rate Udc
  484. //#define M_MAX_TOR_NM 50 // unit: 0.1Nm, Max tor
  485. //#endif
  486. /*======================================================================*
  487. Alarm threshold value & time of duration define
  488. *=======================================================================*/
  489. /* Over current */
  490. #if ((IPM_POWER_SEL == IPM_POWER_1000W_12G)||(IPM_POWER_SEL ==IPM_POWER_1000W_MINI_12G))
  491. #define ALM_OVR_CNT_VAL 9000 // unit: 0.01A, Threshold value
  492. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  493. #elif( (IPM_POWER_SEL == IPM_POWER_750W_12G) ||(IPM_POWER_SEL ==IPM_POWER_750W_MINI_12G))
  494. #define ALM_OVR_CNT_VAL 9000 // unit: 0.01A, Threshold value
  495. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  496. #elif (IPM_POWER_SEL == IPM_POWER_350W_MINI_12G)
  497. #define ALM_OVR_CNT_VAL 6000 // unit: 0.01A, Threshold value
  498. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  499. #elif (IPM_POWER_SEL == IPM_POWER_500W_12G)
  500. #define ALM_OVR_CNT_VAL 9000 // unit: 0.01A, Threshold value
  501. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  502. #elif (IPM_POWER_SEL == IPM_POWER_500W_9G)
  503. #define ALM_OVR_CNT_VAL 6000 // unit: 0.01A, Threshold value
  504. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  505. #elif (IPM_POWER_SEL == IPM_POWER_350W_9G)
  506. #define ALM_OVR_CNT_VAL 6000 // unit: 0.01A, Threshold value
  507. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  508. #elif ((IPM_POWER_SEL == IPM_POWER_250W_6G)||(IPM_POWER_SEL == IPM_POWER_350W_6G))
  509. #define ALM_OVR_CNT_VAL 7000 // unit: 0.01A, Threshold value
  510. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  511. #else
  512. #define ALM_OVR_CNT_VAL 5000 // unit: 0.01A, Threshold value
  513. #define ALM_OVR_CNT_TM 500 // unit: us, Time of duration(TBC)
  514. #endif
  515. /* Phase loss */
  516. #define ALM_PHS_LOSS_VAL 100 // unit: 0.01A, Threshold value
  517. #define ALM_PHS_LOSS_TM 5 // unit: s, Time of duration(TBC)
  518. /* Rotor lock */
  519. #define ALM_ROTOR_LOCK_SPD_K 50 // unit: %, Q10, Ratio of resistance power and motor input power
  520. #define ALM_ROTOR_LOCK_TM 3 // unit: s, Time of duration(TBC)
  521. #if ((MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio) ||(MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio))
  522. #define ALM_ROTOR_LOCK_SPD 40 // unit: rpm, Threshold value
  523. #elif ((MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W)||(MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio)||(MOTOR_ID_SEL ==MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio) ||(MOTOR_ID_SEL ==MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio))
  524. #define ALM_ROTOR_LOCK_SPD 40 // unit: rpm, Threshold value
  525. #else
  526. #define ALM_ROTOR_LOCK_SPD 100 // unit: rpm, Threshold value
  527. #endif
  528. #if (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V)
  529. /* Over voltage */
  530. #define ALM_OVR_VLT_LVL1_VAL 590 // unit: 0.1V, Threshold value level3
  531. #define ALM_OVR_VLT_LVL1_TM 5 // unit: ms, Time of duration level3(TBS)
  532. /* Under voltage */
  533. #define ALM_UNDR_VLT_LVL1_VAL 400 // unit: 0.1V, Threshold value level2
  534. #define ALM_UNDR_VLT_LVL1_TM 1000 // unit: ms, Time of duration level2(TBS)
  535. /* Recover time & value of over voltage */
  536. #define ALM_OVR_VLT_REC_VAL 580 // unit: 0.1V
  537. #define ALM_OVR_VLT_REC_TM 100 // unit: ms, Time of duration(TBC)
  538. #define ALM_OVR_VLT_REC_TM1 150 // unit: ms, Time of duration(TBC)
  539. /* Recover time & value of under voltage */
  540. #define ALM_UNDR_VLT_REC_VAL 410 // unit: 0.1V
  541. #define ALM_UNDR_VLT_REC_TM 200 // unit: ms, Time of duration(TBC)
  542. #define ALM_UNDR_VLT_REC_TM1 400 // unit: ms, Time of duration(TBC)
  543. #elif (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V)
  544. /* Over voltage */
  545. #define ALM_OVR_VLT_LVL1_VAL 460 // unit: 0.1V, Threshold value level3
  546. #define ALM_OVR_VLT_LVL1_TM 5 // unit: ms, Time of duration level3(TBS)
  547. /* Under voltage */
  548. #define ALM_UNDR_VLT_LVL1_VAL 300 // unit: 0.1V, Threshold value level2
  549. #define ALM_UNDR_VLT_LVL1_TM 1000 // unit: ms, Time of duration level2(TBS)
  550. /* Recover time & value of over voltage */
  551. #define ALM_OVR_VLT_REC_VAL 450 // unit: 0.1V
  552. #define ALM_OVR_VLT_REC_TM 100 // unit: ms, Time of duration(TBC)
  553. #define ALM_OVR_VLT_REC_TM1 150 // unit: ms, Time of duration(TBC)
  554. /* Recover time & value of under voltage */
  555. #define ALM_UNDR_VLT_REC_VAL 320 // unit: 0.1V
  556. #define ALM_UNDR_VLT_REC_TM 200 // unit: ms, Time of duration(TBC)
  557. #define ALM_UNDR_VLT_REC_TM1 400 // unit: ms, Time of duration(TBC)
  558. #else
  559. /* Over voltage */
  560. #define ALM_OVR_VLT_LVL1_VAL 460 // unit: 0.1V, Threshold value level3
  561. #define ALM_OVR_VLT_LVL1_TM 5 // unit: ms, Time of duration level3(TBS)
  562. /* Under voltage */
  563. #define ALM_UNDR_VLT_LVL1_VAL 300 // unit: 0.1V, Threshold value level2
  564. #define ALM_UNDR_VLT_LVL1_TM 1000 // unit: ms, Time of duration level2(TBS)
  565. /* Recover time & value of over voltage */
  566. #define ALM_OVR_VLT_REC_VAL 450 // unit: 0.1V
  567. #define ALM_OVR_VLT_REC_TM 100 // unit: ms, Time of duration(TBC)
  568. #define ALM_OVR_VLT_REC_TM1 150 // unit: ms, Time of duration(TBC)
  569. /* Recover time & value of under voltage */
  570. #define ALM_UNDR_VLT_REC_VAL 320 // unit: 0.1V
  571. #define ALM_UNDR_VLT_REC_TM 200 // unit: ms, Time of duration(TBC)
  572. #define ALM_UNDR_VLT_REC_TM1 400 // unit: ms, Time of duration(TBC)
  573. #endif
  574. /* Over speed */
  575. #define ALM_OVR_SPD_VAL 6000 // unit: rpm, Threshold value
  576. #define ALM_OVR_SPD_TM 100 // unit: ms, Time of duration(TBS)
  577. /* ADC self detecting */
  578. #define ALM_ADC_DETE_LOW_VAL 155 // unit: 0.01V, ADC offset Voltage min
  579. #define ALM_ADC_DETE_HIG_VAL 175 // unit: 0.01V, ADC offset Voltage max
  580. /* IPM over heat */
  581. #define ALM_IPM_OVR_HEAT_VAL 105 // unit: Ce, Threshold value
  582. #define ALM_IPM_OVR_TM 2 // unit: s, Time of duration(TBS)
  583. #define PWRLIM_START_THRESHOLD_TEMP 85 // Q0,Ce
  584. /* MOTOR over heat */
  585. #define ALM_MOTOR_OVR_HEAT_VAL 110 // unit: Ce, Threshold value
  586. #define ALM_MOTOR_OVR_TM 2 // unit: s, Time of duration(TBS)
  587. #define PWRLIM_START_THRESHOLD_MOTOR_TEMP 95 // Q0,Ce
  588. /* Stop time of three phase short force */
  589. #define ALM_THR_PHS_SHRT_FRC_TM 200 // unit: ms, Time of duration(TBC)
  590. /* Stop time of pwm off */
  591. #define ALM_PWM_OFF_TM 200 // unit: ms, Time of duration(TBC)
  592. #define ALM_PWMOFF_SHRT1_SW_TM 100 // unit: ms, Time of duration(TBC)
  593. /* Stop time of three phase short */
  594. #define ALM_THR_PHS_SHRT_NORM_TM 100 // unit: ms, Time of duration(TBC)
  595. #define ALM_SHRT_PWMOFF_SW_TM 100 // unit: ms, Time of duration(TBC)
  596. /* Stop Minimum Current */
  597. #define ALM_STOP_IPM_OVER_CUR_TM 100 // unit: ms, Time of duration(TBC)
  598. /* Recover time of global */
  599. #define ALM_REC_ALL_TM 200 // unit: ms, Time of duration(TBC)
  600. /* Recover time of IPM OC */
  601. #define ALM_IPM_OC_REC_TM 1000//100 // unit: ms, Time of duration(TBC)
  602. /* Recover time & value of IPM over heat */
  603. #define ALM_IPM_OVR_HEAT_REC_VAL 85 // unit: Ce, Threshold value
  604. #define ALM_IPM_OVR_REC_TM 60 // unit: s, Time of duration(TBC)
  605. #define ALM_IPM_OVR_REC_TM1 120 // unit: s, Time of duration(TBC)
  606. /* Recover time & value of MOTOR over heat */
  607. #define ALM_MOTOR_OVR_HEAT_REC_VAL 95 // unit: Ce, Threshold value
  608. #define ALM_MOTOR_OVR_REC_TM 60 // unit: s, Time of duration(TBC)
  609. #define ALM_MOTOR_OVR_REC_TM1 120 // unit: s, Time of duration(TBC)
  610. /* Ebike sensor fault detect*/
  611. #define ALM_MOTORSPD_MIN_RPM 150 // unit: rpm
  612. #define ALM_TROQ_MIN_Nm 50 // unit: 0.1Nm
  613. #define ALM_BIKESPD_FLT_TS 15 // unit: s
  614. #define ALM_CADENCE_FLT_TS 10 // unit: s
  615. #define ALM_TORQ_MAX_VOL 30 // unit: 0.1V
  616. #define ALM_TORQ_MIN_VOL 1 // unit: 0.1V
  617. #define ALM_TORQ_FLT_TS 1 // unit: s
  618. #define ALM_THROTTLE_MAX_VOL 30 // unit: 0.1V
  619. #define ALM_THROTTLE_MIN_VOL 3 // unit: 0.1V
  620. #define ALM_THROTTLE_FLT_TS 1 // unit: s
  621. #define ALM_NTC_MAX_VOL 32 // unit: 0.1V
  622. #define ALM_NTC_MIN_VOL 3 // unit: 0.1V
  623. #define ALM_MOTORNTC_FLT_TS 1 // unit: s
  624. #define ALM_PCBNTC_FLT_TS 1 // unit: s
  625. /* Ebike sensor fault recover*/
  626. #define ALM_BIKE_REC_ALL_TM 1000 // unit: ms
  627. #define ALM_BIKESPD_REC_TM 200 // unit: ms
  628. #define ALM_CADENCE_REC_TM 200 // unit: ms
  629. #define ALM_TORQ_REC_TM 200 // unit: ms
  630. #define ALM_THROTTLE_REC_TM 200 // unit: ms
  631. #define ALM_MOTORNTC_REC_TM 200 // unit: ms
  632. #define ALM_PCBNTC_REC_TM 200 // unit: ms
  633. #define Sel_TORQ_VOL ((ULONG) 2*4096/33) // unit: 0.1V
  634. /*======================================================================*
  635. Motor start
  636. *=======================================================================*/
  637. /* Start mode */
  638. #define START_ALIGN 0 // Motor start with three stage
  639. #define START_MODE START_ALIGN // Motor start mode
  640. /* InitPosDet mode */
  641. #define INITPOS_ALIGN 0 // Motor start with three stage
  642. #define INITPOS_MODE INITPOS_ALIGN // Motor initposdet mode
  643. /* Park time & current */
  644. #define ALIGN_CUR_AP 1000 // 1500 // Huawei // unit: 0.01A, Park current value
  645. #define ALIGN_RAMP_TM_MS 500 // unit: ms, Time of current ramp
  646. #define ALIGN_HOLD_TM_MS 2000 // unit: ms, Time of current hold
  647. #define ALIGN_ANG_INIT 0 // unit: deg, Park angle init
  648. /* Drag speed & current */
  649. #define DRAG_CUR_AP 1000 // 1500 // 1500 //100 Huawei // unit: 0.01A, Drag current value
  650. #define DRAG_VOL_AP 10 // 0.1v
  651. #define DRAG_SPD_HZ 20 // unit: Hz, Final speed of drag
  652. #define DRAG_SPD_RAMP_TM_MS 4000 // unit: ms, Time of speed from 0Hz to target Hz
  653. /* Open to close */
  654. #define OPEN2CLZ_CUR_RAMP_TM_MS 5000 // 5000//1000 Huawei // unit: ms, Time of current from drag value to 0
  655. /* Close loop */
  656. /* stop loop */
  657. #define STOP_SPD_REF_RPM 100 // unit: rpm, Speed reference value when status go to stop
  658. /*======================================================================*
  659. Flux observer
  660. *=======================================================================*/
  661. #define OBS_SPD_PLL_M 10 // Flux observer m coefficient
  662. #define OBS_SPD_PLL_BANDWIDTH_HZ 150 // Huawei // Flux observer PLL bandwidth
  663. #define OBS_FLUX_PI_DAMPRATIO 10 // 5 bafang 5, yuanxian 10// unit:0.1, Flux observer PI regulator dampratio
  664. #define OBS_FLUX_PI_CROSSFREQ_HZ 10 // 5 // unit:Hz, Flux observer PI regulator crossfrequency
  665. /*======================================================================*
  666. Current loop PI regulation
  667. *=======================================================================*/
  668. #define ACR_PI_BANDWIDTH_FLX 200 // unit: Hz, Current loop bandwidth when flux observer run
  669. #define ACR_CUR_FLX_FBK_LPF_FRQ 8000 // unit: Hz, Frequency of current feedback LPF when flux observer run
  670. #define ACR_CUR_OUT_LIM 37837 // Q15, 2/sqrt(3)*Vdc for current output limit //18919
  671. #define ACR_RA_COEF 3 // Coefficient of Active Resistance
  672. #define ACR_UDCP_OUT_LIM 18918 // Q15, 2/3*Vdc for Udcp output limit //18918 //21845 //10923
  673. /*======================================================================*
  674. Speed loop PI regulation
  675. *=======================================================================*/
  676. #define ASR_PI_BANDWIDTH 8 // 16 //3 // unit: Hz, Speed loop bandwidth
  677. #define ASR_PI_M 16 // 8 //6 //
  678. #define ASR_SPD_FBK_LPF_FRQ 50 //
  679. #define ASR_SPD_INER_RATE 1 //
  680. /*=====================================================================*
  681. PWM generation
  682. *=======================================================================*/
  683. #define PWM_MAX_DUTY_CYLE_IPM 900// 900// 900 // 938 // unit: 0.1%,Max duty cyle for compare value
  684. #define PWM_7SVM_TO_5SVM_DUTY_IPM 700 // unit: 0.1%, Switch ratio from 7 to 5 svpwm
  685. #define PWM_MIN_SAMPLE_DUTY1_IPM 5 * 10000 / PWM_PERIOD_US // unit: 0.1%, 5us TWO MIN ZERO VECTOR = two sample current steady time
  686. #define PWM_MIN_SAMPLE_DUTY2_IPM 10 * 10000 / PWM_PERIOD_US // unit: 0.1%, 10us TWO (one sample current steady time + one sample time)
  687. #define PWM_MIN_SAMPLE_DUTY3_IPM \
  688. 12 * 10000 / PWM_PERIOD_US // unit: 0.1%, 12 us TWO (one Singel Resistance sample current steady time + one sample time)
  689. #define PWM_SAMPLE_TOSTEADY_IPM 8 * 10000 / PWM_PERIOD_US // unit: 0.1%, 4us TWO sample current to steady time
  690. #define PWM_SAMPLE_SINGELRESIS_IPM 1 * 10000 / PWM_PERIOD_US // unit: 0.1%, 1us TWO singel Resistance sample time
  691. #define PWM_1ST_SAMPLE_CTS_IPM 50 // 25 // unit: Null, first current sample counts
  692. #define PWM_2ND_SAMPLE_CTS_IPM 280 // 220 // unit: Null, second current sample counts
  693. #define PWM_OVR_MDL_MIN_PHS 0 // SVPWM over modulation: min phase error
  694. #define PWM_OVR_MDL_MIN_AMP 1 // SVPWM over modulation: min amplitude error
  695. #define PWM_OVR_MDL_OPTIMUM 2 // SVPWM over modulation: amplitude and phase optimum
  696. #define PWM_OVR_MDL_SEL PWM_OVR_MDL_MIN_PHS //
  697. /*======================================================================*
  698. Flux Weakening
  699. *=======================================================================*/
  700. #define FW_VDC_MIN_CALC_TM 20 // unit: ms,50Hz=>20ms, period of Vdc fluctuate
  701. #define FW_VDC_LPF_FRQ 50 // unit: Hz, Frequency of Vdc LPF
  702. #define FW_PWM_MAX_DUTY_CYLE_IPM 900 // unit: 0.1%,PWM max duty cyle for flux weakening
  703. #define FW_ID_PI_OUT_MIN 800 // unit: 0.01A, Min Id of PI outunit: 0.01A, Current Limit
  704. #define FW_ID_MIN_LIM_RATIO 80 // Q0:1%, Ratio of Min d axis current (Charactoristic current)
  705. #define FW_ID_KP_PU 16384 // Q16, Kp for d axis current
  706. #define FW_ID_KI_PU 20 // Q16, Ki for d axis current
  707. #define FW_CHAR_CUR_CROSS_FREQ 2 // Q0,unit: SQRT(1/2piR)
  708. #define FW_CHAR_CUR_DAMP_RATIO 2 // Q0,unit: SQRT(pi/2R)
  709. /*======================================================================*
  710. Constant Voltage Braking Parameter define
  711. *=======================================================================*/
  712. #if (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V)
  713. #define CVB_CONSTANT_VOL_BRAKE_V 580 // unit:0.1V,Voltage limit of Constant Voltage Brake
  714. #define CVB_CONSTANT_SPD_LOW_RPM 5000 // unit:rpm
  715. #elif (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V)
  716. #define CVB_CONSTANT_VOL_BRAKE_V 450 // unit:0.1V,Voltage limit of Constant Voltage Brake
  717. #define CVB_CONSTANT_SPD_LOW_RPM 5000 // unit:rpm
  718. #else
  719. #define CVB_CONSTANT_VOL_BRAKE_V 450 // unit:0.1V,Voltage limit of Constant Voltage Brake
  720. #define CVB_CONSTANT_SPD_LOW_RPM 5000 // unit:rpm
  721. #endif
  722. /*======================================================================*
  723. Power limit
  724. *=======================================================================*/
  725. #if (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_1000W)
  726. #define ALM_ROTOR_LOCK_IQ_ABS 6300 // 6300 // unit: 0.01A, Threshold value
  727. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_750W)
  728. #define ALM_ROTOR_LOCK_IQ_ABS 6300 // 6300 // unit: 0.01A, Threshold value
  729. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W)
  730. #define ALM_ROTOR_LOCK_IQ_ABS 4500 // 6300 // unit: 0.01A, Threshold value
  731. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_500W_958Ratio)
  732. #define ALM_ROTOR_LOCK_IQ_ABS 4500 // 6300 // unit: 0.01A, Threshold value
  733. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W)
  734. #define ALM_ROTOR_LOCK_IQ_ABS 4500 // 4500 // unit: 0.01A, Threshold value
  735. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_350W_958Ratio)
  736. #define ALM_ROTOR_LOCK_IQ_ABS 4500 // 4500 // unit: 0.01A, Threshold value
  737. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W)
  738. #define ALM_ROTOR_LOCK_IQ_ABS 3200 // 4500 // unit: 0.01A, Threshold value
  739. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_LowRatio)
  740. #define ALM_ROTOR_LOCK_IQ_ABS 3200 // 4500 // unit: 0.01A, Threshold value
  741. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_517Ratio)
  742. #define ALM_ROTOR_LOCK_IQ_ABS 3200 // 4500 // unit: 0.01A, Threshold value
  743. #elif (MOTOR_ID_SEL == MOTOR_LUNGU_WELLING_HAL_POLE8_250W_958Ratio)
  744. #define ALM_ROTOR_LOCK_IQ_ABS 3200 // 4500 // unit: 0.01A, Threshold value
  745. #else
  746. #define ALM_ROTOR_LOCK_IQ_ABS 3200 // 4500 // unit: 0.01A, Threshold value
  747. #endif
  748. /*======================================================================*
  749. Idc and Power limit
  750. *=======================================================================*/
  751. #if ((IPM_POWER_SEL == IPM_POWER_250W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  752. #define IDCLIMIQSTART (((ULONG)1500 << 14) / IBASE);
  753. #define IDCLIMIQEND (((ULONG)1600 << 14) / IBASE);
  754. #define PWRLIM_VAL (15*360+200) // unit: 0.1w, Power limit value
  755. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  756. // #define IDCLIMIQSTART (((ULONG)2500 << 14) / IBASE);
  757. //#define IDCLIMIQEND (((ULONG)2600 << 14) / IBASE);
  758. //#define PWRLIM_VAL (25*360+200) // unit: 0.1w, Power limit value
  759. //#define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  760. #elif ((IPM_POWER_SEL == IPM_POWER_250W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  761. #define IDCLIMIQSTART (((ULONG)1200 << 14) / IBASE);
  762. #define IDCLIMIQEND (((ULONG)1300 << 14) / IBASE);
  763. #define PWRLIM_VAL (12*480+200) // unit: 0.1w, Power limit value
  764. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  765. #elif ((IPM_POWER_SEL == IPM_POWER_350W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  766. #define IDCLIMIQSTART (((ULONG)1500 << 14) / IBASE);
  767. #define IDCLIMIQEND (((ULONG)1600 << 14) / IBASE);
  768. #define PWRLIM_VAL (18*360+200) // unit: 0.1w, Power limit value
  769. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  770. // #define IDCLIMIQSTART (((ULONG)2500 << 14) / IBASE);
  771. //#define IDCLIMIQEND (((ULONG)2600 << 14) / IBASE);
  772. //#define PWRLIM_VAL (25*360+200) // unit: 0.1w, Power limit value
  773. //#define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  774. #elif ((IPM_POWER_SEL == IPM_POWER_350W_6G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  775. #define IDCLIMIQSTART (((ULONG)1200 << 14) / IBASE);
  776. #define IDCLIMIQEND (((ULONG)1300 << 14) / IBASE);
  777. #define PWRLIM_VAL (14*480+200) // unit: 0.1w, Power limit value
  778. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  779. #elif ((IPM_POWER_SEL == IPM_POWER_350W_9G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  780. #define IDCLIMIQSTART (((ULONG)1800 << 14) / IBASE);
  781. #define IDCLIMIQEND (((ULONG)1900 << 14) / IBASE);
  782. #define PWRLIM_VAL (18*360+200) // unit: 0.1w, Power limit value
  783. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  784. #elif ((IPM_POWER_SEL == IPM_POWER_350W_9G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  785. #define IDCLIMIQSTART (((ULONG)1400 << 14) / IBASE);
  786. #define IDCLIMIQEND (((ULONG)1500 << 14) / IBASE);
  787. #define PWRLIM_VAL (14*480+200) // unit: 0.1w, Power limit value
  788. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  789. #elif ((IPM_POWER_SEL == IPM_POWER_500W_9G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  790. #define IDCLIMIQSTART (((ULONG)2500 << 14) / IBASE);
  791. #define IDCLIMIQEND (((ULONG)2600 << 14) / IBASE);
  792. #define PWRLIM_VAL (25*360+500) // unit: 0.1w, Power limit value
  793. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  794. #elif ((IPM_POWER_SEL == IPM_POWER_500W_9G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  795. #define IDCLIMIQSTART (((ULONG)2000 << 14) / IBASE);
  796. #define IDCLIMIQEND (((ULONG)2100 << 14) / IBASE);
  797. #define PWRLIM_VAL (20*480+500) // unit: 0.1w, Power limit value
  798. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  799. #elif ((IPM_POWER_SEL == IPM_POWER_500W_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  800. #define IDCLIMIQSTART (((ULONG)2500 << 14) / IBASE);
  801. #define IDCLIMIQEND (((ULONG)2600 << 14) / IBASE);
  802. #define PWRLIM_VAL (25*360+500) // unit: 0.1w, Power limit value
  803. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  804. #elif ((IPM_POWER_SEL == IPM_POWER_500W_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  805. #define IDCLIMIQSTART (((ULONG)2000 << 14) / IBASE);
  806. #define IDCLIMIQEND (((ULONG)2100 << 14) / IBASE);
  807. #define PWRLIM_VAL (20*480+500) // unit: 0.1w, Power limit value
  808. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  809. #elif((IPM_POWER_SEL ==IPM_POWER_350W_MINI_12G)&& (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  810. #define IDCLIMIQSTART (((ULONG)1800 << 14) / IBASE);
  811. #define IDCLIMIQEND (((ULONG)1900 << 14) / IBASE);
  812. #define PWRLIM_VAL (18*360+500) // unit: 0.1w, Power limit value
  813. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  814. #elif ((IPM_POWER_SEL == IPM_POWER_350W_MINI_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  815. #define IDCLIMIQSTART (((ULONG)1400 << 14) / IBASE);
  816. #define IDCLIMIQEND (((ULONG)1500 << 14) / IBASE);
  817. #define PWRLIM_VAL (14*480+500) // unit: 0.1w, Power limit value
  818. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  819. #elif (((IPM_POWER_SEL == IPM_POWER_750W_12G)||(IPM_POWER_SEL ==IPM_POWER_750W_MINI_12G)) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  820. #define IDCLIMIQSTART (((ULONG)3000 << 14) / IBASE);
  821. #define IDCLIMIQEND (((ULONG)3100 << 14) / IBASE);
  822. #define PWRLIM_VAL (30*360+500) // unit: 0.1w, Power limit value
  823. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  824. #elif (((IPM_POWER_SEL == IPM_POWER_750W_12G)||(IPM_POWER_SEL ==IPM_POWER_750W_MINI_12G)) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  825. #define IDCLIMIQSTART (((ULONG)2500 << 14) / IBASE);
  826. #define IDCLIMIQEND (((ULONG)2600 << 14) / IBASE);
  827. #define PWRLIM_VAL (25*480+500) // unit: 0.1w, Power limit value
  828. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  829. #elif ((IPM_POWER_SEL == IPM_POWER_1000W_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  830. #define IDCLIMIQSTART (((ULONG)3000 << 14) / IBASE);
  831. #define IDCLIMIQEND (((ULONG)3100 << 14) / IBASE);
  832. #define PWRLIM_VAL (30*360+500) // unit: 0.1w, Power limit value
  833. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  834. #elif ((IPM_POWER_SEL == IPM_POWER_1000W_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  835. #define IDCLIMIQSTART (((ULONG)3000 << 14) / IBASE);
  836. #define IDCLIMIQEND (((ULONG)3100 << 14) / IBASE);
  837. #define PWRLIM_VAL (30*480) // unit: 0.1w, Power limit value
  838. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  839. #elif ((IPM_POWER_SEL == IPM_POWER_1000W_MINI_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_36V))
  840. #define IDCLIMIQSTART (((ULONG)3000 << 14) / IBASE);
  841. #define IDCLIMIQEND (((ULONG)3100 << 14) / IBASE);
  842. #define PWRLIM_VAL (30*360+500) // unit: 0.1w, Power limit value
  843. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  844. #elif ((IPM_POWER_SEL == IPM_POWER_1000W_MINI_12G) && (IPM_VOLTAGE_SEL == IPM_VOLTAGE_48V))
  845. #define IDCLIMIQSTART (((ULONG)3000 << 14) / IBASE);
  846. #define IDCLIMIQEND (((ULONG)3100 << 14) / IBASE);
  847. #define PWRLIM_VAL (30*480) // unit: 0.1w, Power limit value
  848. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  849. #else
  850. #define IDCLIMIQSTART (((ULONG)1500 << 14) / IBASE);
  851. #define IDCLIMIQEND (((ULONG)1600 << 14) / IBASE);
  852. #define PWRLIM_VAL (15*360+500) // unit: 0.1w, Power limit value
  853. #define PWRLIM_ERR 500 // unit: 0.1w, Start power limit when "VAL - ERR"
  854. #endif
  855. #define PWRLIM_LPF_FRQ 400 // unit: Hz, Frequency of LPF in input power of motor
  856. #define PWR_IQ_LIMIT_KP_PU 120 // Q15
  857. #define PWR_IQ_LIMIT_KI_PU 100 // Q15
  858. /*======================================================================*
  859. Deadband compensation
  860. *=======================================================================*/
  861. #define DBC_K_COEF 120 // unit:0.1V/A Deadband compensation slope coefficient
  862. /*======================================================================*
  863. Communication type define
  864. *=======================================================================*/
  865. #define UART_MONITOR 0 //
  866. #define UART_HOST 1 //
  867. #define UART_TYPE UART_HOST //
  868. /*==============================================================================
  869. Speed & Acc Constant parameters define
  870. ==============================================================================*/
  871. #define USER_MOTOR_45RPM2PU SPD_RPM2PU(45) // 45rpm,Q15
  872. #define USER_MOTOR_100RPM2PU SPD_RPM2PU(100)
  873. #define USER_MOTOR_200RPM2PU SPD_RPM2PU(200)
  874. #define USER_MOTOR_300RPM2PU SPD_RPM2PU(300)
  875. #define USER_MOTOR_400RPM2PU SPD_RPM2PU(400)
  876. #define USER_MOTOR_600RPM2PU SPD_RPM2PU(600) // 600rpm,Q15
  877. #define USER_MOTOR_800RPM2PU SPD_RPM2PU(800) // 800rpm,Q15
  878. #define USER_MOTOR_1000RPM2PU SPD_RPM2PU(1000) // 1000rpm,Q15
  879. #define USER_MOTOR_1500RPM2PU SPD_RPM2PU(1500) // 6000rpm,Q15
  880. #define USER_MOTOR_4000RPM2PU SPD_RPM2PU(4000) // 6000rpm,Q15
  881. #define USER_MOTOR_5500RPM2PU SPD_RPM2PU(5500)
  882. #define USER_MOTOR_100RPMPS2PU_Q29 SPD_ACC_RPM2PU(100) // 100rpm/s,(0x40000000/FTBS_Hz/cof_uwVbRpm*100)
  883. #define USER_MOTOR_240RPMPS2PU_Q29 SPD_ACC_RPM2PU(200) // 240rpm/s
  884. #define USER_MOTOR_1000RPMPS2PU_Q29 SPD_ACC_RPM2PU(1000) // 1000rpm/s
  885. #define USER_MOTOR_2000RPMPS2PU_Q29 SPD_ACC_RPM2PU(2000) // 2000rpm/s
  886. #define USER_MOTOR_3000RPMPS2PU_Q29 SPD_ACC_RPM2PU(3000) // 3000rpm/s
  887. /*=======================================================================
  888. TBS&TBC Time Cnts Define
  889. =======================================================================*/
  890. #define TBCCNT_500us (((ULONG)500 * FTBC_HZ) / 1000000)
  891. #define TBCCNT_1ms (((ULONG)1 * FTBC_HZ) / 1000)
  892. #define TBCCNT_5ms (((ULONG)5 * FTBC_HZ) / 1000)
  893. #define TBCCNT_10ms (((ULONG)10 * FTBC_HZ) / 1000)
  894. #define TBCCNT_50ms (((ULONG)50 * FTBC_HZ) / 1000)
  895. #define TBCCNT_32ms (((ULONG)32 * FTBC_HZ) / 1000)
  896. #define TBCCNT_60ms (((ULONG)60 * FTBC_HZ) / 1000)
  897. #define TBCCNT_100ms (((ULONG)100 * FTBC_HZ) / 1000)
  898. #define TBCCNT_150ms (((ULONG)150 * FTBC_HZ) / 1000)
  899. #define TBCCNT_200ms (((ULONG)200 * FTBC_HZ) / 1000)
  900. #define TBCCNT_250ms (((ULONG)250 * FTBC_HZ) / 1000)
  901. #define TBCCNT_300ms (((ULONG)300 * FTBC_HZ) / 1000)
  902. #define TBCCNT_400ms (((ULONG)400 * FTBC_HZ) / 1000)
  903. #define TBCCNT_500ms (((ULONG)500 * FTBC_HZ) / 1000)
  904. #define TBCCNT_100ms (((ULONG)100 * FTBC_HZ) / 1000)
  905. #define EVE1MSCNT_1ms (((ULONG)1 * EVENT_1MS_HZ) / 1000)
  906. #define EVE1MSCNT_5ms (((ULONG)5 * EVENT_1MS_HZ) / 1000)
  907. #define EVE1MSCNT_10ms (((ULONG)10 * EVENT_1MS_HZ) / 1000)
  908. #define EVE1MSCNT_20ms (((ULONG)20 * EVENT_1MS_HZ) / 1000)
  909. #define EVE1MSCNT_50ms (((ULONG)50 * EVENT_1MS_HZ) / 1000)
  910. #define EVE1MSCNT_100ms (((ULONG)100 * EVENT_1MS_HZ) / 1000)
  911. #define EVE1MSCNT_200ms (((ULONG)200 * EVENT_1MS_HZ) / 1000)
  912. #define EVE10MSCNT_3s ((ULONG)3 * EVENT_1MS_HZ / 10)
  913. #define EVE10MSCNT_5s ((ULONG)5 * EVENT_1MS_HZ / 10)
  914. #define EVE10MSCNT_10s ((ULONG)10 * EVENT_1MS_HZ / 10)
  915. /************************************************************************
  916. Comment Table
  917. *************************************************************************/
  918. // /*======================================================================*
  919. // High Frequency Signal Injection
  920. // *=======================================================================*/
  921. // #define HFI_FREQ1_HZ 1200 // unit: Hz, Inject signal frequency 1
  922. // #define HFI_AMP1_VT 600 // unit: 0.1v, Inject signal voltage 1
  923. // #define HFI_FREQ2_HZ 1400 // unit: Hz, Inject signal frequency 2
  924. // #define HFI_AMP2_VT 700 // unit: 0.1v, Inject signal voltage 2
  925. // #define HFI_TM_INIPOS_MS 60 // unit: ms, Initial position detection time
  926. // #define HFI_WAITTM_INIPOS_MS 6 // unit: ms, Wait time after initial position detection
  927. // #define HFI_AMP_POR_VT 700 // unit: 0.1v, Polarity detection voltage amplitude
  928. // #define HFI_TM_POR_PULS_MS 1 // unit: ms, Polarity detection voltage pulse time
  929. // #define HFI_WAITTM_POR_PULS_MS 12 // Wunit: ms, ait time after voltage pulse
  930. // #define HFI_DELTA_CUR_MAG_POR_OK_AP 20 // unit: 0.01A, delta current for polarity detection ok
  931. // #define HFI_CUR_LPF_HZ 500 // unit: Hz, Cut-off frequency of current lpf
  932. // #define HFI_CUR_HPF_HZ 50 // unit: Hz, Cut-off frequency of current hpf
  933. // #define HFI_PLL_DAMPING_RATIO 35 // unit: Null, Pll damping ratio
  934. // #define HFI_PLL_CROSS_FREQ_HZ 20 // unit: Hz, Pll cross frequency
  935. // #define HFI_SPD_LPF_HZ 8 // unit: Hz, Cut-off frequency of spd lpf
  936. // #define HFI_MAG_SATR_AP 240 // unit: 0.01A, Magnetic saturation current
  937. /************************************************************************
  938. TypeDefs & Structure defines
  939. *************************************************************************/
  940. /************************************************************************
  941. Exported Variables:
  942. *************************************************************************/
  943. /************************************************************************
  944. RAM ALLOCATION:
  945. *************************************************************************/
  946. /************************************************************************
  947. Exported Function Call Prototypes (N/A)
  948. *************************************************************************/
  949. /************************************************************************
  950. Local Function Call Prototypes (N/A)
  951. *************************************************************************/
  952. /************************************************************************
  953. Head files (N/A)
  954. *************************************************************************/
  955. #include <stdlib.h>
  956. #include "CodePara.h"
  957. #include "classB.h"
  958. #include "hwsetup.h"
  959. #include "mathtool.h"
  960. #include "main.h"
  961. #include "spdctrFSM.h"
  962. #include "glbcof.h"
  963. #include "crdnt.h"
  964. #include "tbc.h"
  965. #include "tbs.h"
  966. #include "tbt.h"
  967. #include "alarm.h"
  968. #include "adc.h"
  969. #include "spi_master.h"
  970. #include "i2c_master.h"
  971. #include "spdctrmode.h"
  972. #include "acr.h"
  973. #include "asr.h"
  974. #include "asr_new.h"
  975. #include "torqobs.h"
  976. #include "LoadObsTheta.h"
  977. #include "obs.h"
  978. #include "dbc.h"
  979. #include "uart_monitor.h"
  980. #include "flxwkn.h"
  981. #include "spdflxwkn.h"
  982. #include "pwm.h"
  983. #include "brake.h"
  984. #include "hfinj.h"
  985. #include "pwrlim.h"
  986. #include "bootloader.h"
  987. #include "brake.h"
  988. #include "macroequ.h"
  989. #include "alignstartup.h"
  990. #include "switchhall.h"
  991. #include "LoadObsTheta.h"
  992. /************************************************************************
  993. Flag Define (N/A)
  994. *************************************************************************/
  995. #endif
  996. /*************************************************************************
  997. Copyright (c) 2019 Welling Motor Technology(Shanghai) Co. Ltd.
  998. All rights reserved.
  999. *************************************************************************
  1000. End of this File (EOF)!
  1001. Do not put anything after this part!
  1002. *************************************************************************/