var.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. #ifndef __VAR_H
  2. #define __VAR_H
  3. #include "stm32f1xx_hal.h"
  4. #include "cadence_sensor.h"
  5. #include "stdlib.h"
  6. #include "string.h"
  7. /******************************类型定义Begin*************************/
  8. typedef enum
  9. {
  10. MC_LightSwitch_OFF = 0xF0,
  11. MC_LightSwitch_ON = 0xF1
  12. }MC_LightSwitch_Struct_t;
  13. //电机运行信息,占用空间32bytes
  14. typedef struct
  15. {
  16. uint16_t BikeSpeed; //车速 0.1km/h,地址偏移0
  17. int16_t MotorSpeed; //输出转速 1rpm,地址偏移2
  18. uint16_t Power; //电功率 1W,地址偏移4
  19. uint16_t BusVoltage; //母线电压 1mV,地址偏移6
  20. uint16_t BusCurrent; //母线电流 1mA,地址偏移8
  21. uint8_t Cadence; //踏频 1rpm,地址偏移10
  22. uint8_t Torque; //踩踏力矩 1Nm,地址偏移11
  23. MC_CadenceDir_Struct_t CadenceDir; //踩踏方向 0-正,1-反,2-停止,地址偏移12
  24. uint8_t GearSt; //助力档位,地址偏移13
  25. MC_LightSwitch_Struct_t LightSwitch; //灯开关 0xF0-关,0xF1-开,地址偏移14
  26. uint8_t SOC; //剩余电量 1%,地址偏移15
  27. uint16_t RemainDistance; //续航里程 1km,地址偏移16
  28. uint16_t ODO_Km; //总里程 1km,地址偏移18
  29. uint8_t PowerPerKm; //平均功耗 0.01Ah/km ,地址偏移20
  30. uint8_t T_PCB; //PCB温度 +40℃,地址偏移21
  31. uint8_t T_Roil; //绕组温度 +40℃,地址偏移22
  32. uint8_t T_MCU; //MCU温度 +40℃,地址偏移23
  33. uint8_t RS[8]; //预留 8bytes
  34. }MC_RunInfo_Struct_t;
  35. //电机故障码,占用空间4bytes
  36. typedef union MC_ERRORCODE
  37. {
  38. struct
  39. {
  40. uint32_t Protect_OverCurrent :1;//过流保护
  41. uint32_t Protect_UnderVoltage :1;//低压保护
  42. uint32_t Protect_OverVoltage :1;//过压保护
  43. uint32_t Protect_LockRotor :1;//堵转保护
  44. uint32_t Protect_OverTemp :1;//过热保护
  45. uint32_t Fault_SpeedSensor :1;//速度传感器故障
  46. uint32_t Fault_TorqueSensor :1;//力矩传感器故障
  47. uint32_t Fault_HallSensor :1;//霍尔传感器故障
  48. uint32_t Fault_PhaseLine :1;//相线故障
  49. uint32_t Fault_NtcSensor :1;//温度传感器故障
  50. uint32_t Fault_BMS_Check :1;//BMS校验失败
  51. uint32_t Fault_HMI_Check :1;//HMI校验失败
  52. uint32_t Fault_PBU_Check :1;//PBU校验失败
  53. uint32_t Fault_MCU :1;//MCU故障
  54. uint32_t Fault_CadenceSensor :1;//踏频传感器故障
  55. uint32_t Fault_GasSensor :1;//指拨故障
  56. uint32_t Fault_MOS :1;//MOS短路
  57. uint32_t Protect_VoltageChange :1;//电压波动异常
  58. uint32_t Fault_Circuit :1;//电路故障
  59. uint32_t RS1 :1;
  60. uint32_t RS2 :1;
  61. uint32_t RS3 :1;
  62. uint32_t RS4 :1;
  63. uint32_t RS5 :1;
  64. uint32_t RS6 :1;
  65. uint32_t RS7 :1;
  66. uint32_t RS8 :1;
  67. uint32_t RS9 :1;
  68. uint32_t RS10 :1;
  69. uint32_t RS11 :1;
  70. uint32_t RS12 :1;
  71. uint32_t RS13 :1;
  72. }ERROR_Bit;
  73. uint32_t Code;
  74. }MC_ErrorCode_Struct_t;
  75. //在线检测结果,占用空间1byte
  76. typedef union ONLINE_STATUS
  77. {
  78. struct
  79. {
  80. uint8_t BMS_OffLine :1;//BMS离线
  81. uint8_t PBU_OffLine :1;//PBU离线
  82. uint8_t HMI_OffLine :1;//HMI离线
  83. uint8_t RS1 :1;
  84. uint8_t RS2 :1;
  85. uint8_t RS3 :1;
  86. uint8_t RS4 :1;
  87. uint8_t RS5 :1;
  88. }Status_Bit;
  89. uint8_t Status;
  90. }OnLine_Status_Struct_t;
  91. //授权校验,占用空间24bytes
  92. typedef struct
  93. {
  94. uint32_t MAC_ID[3]; //物理ID
  95. uint8_t CheckCode[12]; //校验码
  96. }Device_CheckInfo_Struct_t;
  97. //BMS设计信息,占用空间16bytes
  98. typedef struct
  99. {
  100. uint16_t Capacity; //电池设计容量,地址偏移0
  101. uint8_t Voltage; //电池设计电压,地址偏移2
  102. uint8_t CellMode[8]; //电芯型号,地址偏移3
  103. uint8_t RS[5];
  104. }BMS_DesignInfo_Struct_t;
  105. typedef enum STARMODE
  106. {
  107. NC = 0U,
  108. MC_StarMode_SOFT,
  109. MC_StarMode_NORM,
  110. MC_StarMode_DYNAMIC,
  111. }MC_StarMode_Struct_t;
  112. typedef struct
  113. {
  114. uint8_t Assist_K_GAIN; //0.01 50-150
  115. uint8_t StarModel_GAIN; //0.01 50-150
  116. }UserAdjParam_Struct_t;
  117. typedef enum MC_SUPPORTFLAG
  118. {
  119. MC_SUPPORT_ENABLE = (uint8_t)0xAA, //不支持
  120. MC_SUPPORT_DISABLE = (uint8_t)0x55 //支持
  121. }MC_SupportFlag_Struct_t;
  122. //用户配置参数,占用空间32bytes
  123. typedef struct
  124. {
  125. uint8_t RS1; //预留,地址偏移0
  126. MC_StarMode_Struct_t StarModel; //启动模式,地址偏移1
  127. uint16_t StopTime; //停机时间 ms,地址偏移2
  128. uint8_t SpeedLimit; //限速 km/h,地址偏移4
  129. uint8_t Deceleration; //下降速度,地址偏移5
  130. uint8_t TeethNum_F; //前齿数 T,地址偏移6
  131. uint8_t TeethNum_B; //后齿数 T,地址偏移7
  132. uint8_t CurrentLimit; //限流 A,地址偏移8
  133. uint8_t TempTH_Alarm; //高温预警值 +40℃,地址偏移9
  134. uint8_t TempTH_Protect; //高温保护值 +40℃,地址偏移10
  135. MC_SupportFlag_Struct_t NoPBU_Flag; //0x55-不支持,0x-AA支持,地址偏移11
  136. uint8_t WheelSize; //轮胎周长 cm,地址偏移12
  137. uint8_t SerialNum; //系列号,地址偏移13
  138. UserAdjParam_Struct_t UserAdjParam_ECO; //用户微调助力比增益和加速度增益,地址偏移14
  139. UserAdjParam_Struct_t UserAdjParam_NORM; //用户微调助力比增益和加速度增益,地址偏移16
  140. UserAdjParam_Struct_t UserAdjParam_SPORT; //用户微调助力比增益和加速度增益,地址偏移18
  141. UserAdjParam_Struct_t UserAdjParam_TURBO; //用户微调助力比增益和加速度增益,地址偏移20
  142. UserAdjParam_Struct_t UserAdjParam_SMART; //用户微调助力比增益和加速度增益,地址偏移22
  143. uint8_t RS2[8];//地址偏移24
  144. }MC_ConfigParam_Struct_t;
  145. //力矩传感器校正信息
  146. typedef struct
  147. {
  148. uint16_t StarData;//启动值,地址偏移0
  149. uint8_t K; //校正系数,地址偏移2
  150. uint8_t Rs; //预留1byte,地址偏移3
  151. }MC_TorqueCorrectParam_Struct_t;
  152. //马达配置参数,占用空间16bytes
  153. typedef struct
  154. {
  155. uint16_t Rate_Power; //W,地址偏移0
  156. uint16_t Rate_Speed; //rpm,地址偏移2
  157. uint16_t Coil_R; //mohm,地址偏移4
  158. uint16_t Coil_Lq; //mH,地址偏移6
  159. uint16_t Coil_Ld; //mH,地址偏移8
  160. uint16_t Back_EMF; //mV,地址偏移10
  161. uint8_t Rate_Voltage; //V,地址偏移12
  162. uint8_t RS[3];
  163. }MC_MotorParam_Struct_t;
  164. //MC运行历史,占用空间48bytes
  165. typedef struct
  166. {
  167. uint32_t PowerOnCnt; //开机次数,地址偏移0
  168. uint32_t RunTime; //运行总时间 min,地址偏移4
  169. uint16_t OC_ProtectCnt; //过流保次数 ,地址偏移8
  170. uint16_t UV_ProtectCnt; //低压保护次数,地址偏移10
  171. uint16_t OV_ProtectCnt; //高压保护次数,地址偏移12
  172. uint16_t LockRotor_ProtectCnt; //堵转保护次数 ,地址偏移14
  173. uint16_t OT_ProtectCnt; //温度保护次数,地址偏移16
  174. uint16_t SPS_FaultCnt; //速度传感器错误次数,地址偏移18
  175. uint16_t TQS_FaultCnt; //力矩传感器错误次数 ,地址偏移20
  176. uint16_t Hall_FaultCnt; //霍尔传感器错误次数 ,地址偏移22
  177. uint16_t PhaseLine_FaultCnt; //马达相线错误次数,地址偏移24
  178. uint16_t NTC_FaultCnt; //NTC错误次数,地址偏移26
  179. uint16_t BMS_Check_FaultCnt; //BMS校验错误次数,地址偏移28
  180. uint16_t HMI_Check_FaultCnt; //HMI校验错误次数,地址偏移30
  181. uint16_t PBU_Check_FaultCnt; //PBU校验错误次数 ,地址偏移32
  182. uint8_t T_PCB_Max; //PCB历史最高温,地址偏移34
  183. uint8_t T_PCB_Min; //PCB历史最低温,地址偏移35
  184. uint32_t ODO_Km; //运行总里程,地址偏移36
  185. uint8_t T_Coil_Max; //绕组历史最高温,地址偏移40
  186. uint8_t T_Coil_Min; //绕组历史最低温,地址偏移41
  187. uint8_t T_MCU_Max; //MCU历史最高温,地址偏移42
  188. uint8_t T_MCU_Min; //MCU历史最低温,地址偏移43
  189. uint8_t RS[4];
  190. }MC_RunLog_Struct_t;
  191. //MC版本信息,占用空间64bytes
  192. typedef struct
  193. {
  194. char Mode[16]; //型号 ASCII,0x2E结束,无效填充0x20
  195. char SN_Num[16]; //序列号 ASCII,0x2E结束,无效填充0x20
  196. char HW_Version[16]; //硬件版本 ASCII,0x2E结束,无效填充0x20
  197. char FW_Version[16]; //软件版本 ASCII,0x2E结束,无效填充0x20
  198. }MC_VerInfo_Struct_t;
  199. //MC生产信息,占用空间32bytes
  200. typedef struct
  201. {
  202. char Manufacturer[8]; //生产厂商 ASCII,0x2E结束,无效填充0x20
  203. char MacAddr[8]; //生产地 ASCII,0x2E结束,无效填充0x20
  204. char MacDate[8]; //生产日期 ASCII,0x2E结束,无效填充0x20
  205. char RS[8];
  206. }MC_MacInfo_Struct_t;
  207. //电池运行状态,占用空间1bytes
  208. typedef union BMS_STATUS
  209. {
  210. struct
  211. {
  212. uint8_t Charge :1;//充电
  213. uint8_t Discharge :1;//放电
  214. uint8_t RS1 :1;
  215. uint8_t RS2 :1;
  216. uint8_t RS3 :1;
  217. uint8_t RS4 :1;
  218. uint8_t RS5 :1;
  219. uint8_t RS6 :1;
  220. }Status_Bit;
  221. uint8_t Status;
  222. }BMS_STATUS_Struct_t;
  223. //电池运行信息,占用空间16bytes
  224. typedef struct
  225. {
  226. uint16_t Voltage; //电压 1mV,地址偏移0
  227. uint16_t Current; //电流 1mA,地址偏移2
  228. uint16_t RC; //剩余容量 1mAh,地址偏移4
  229. uint16_t FCC; //满充容量 1mAh,地址偏移6
  230. uint8_t Cell_NTC; //电芯温度 +40℃,地址偏移8
  231. uint8_t SOC; //剩余电量 1%,地址偏移9
  232. BMS_STATUS_Struct_t Status; //运行状态,地址偏移10
  233. uint8_t RS[5];
  234. }BMS_RunInfo_Struct_t;
  235. //PBU配置的参数,占用空间8bytes
  236. typedef struct
  237. {
  238. uint8_t GearsNum; //助力档位数量
  239. MC_SupportFlag_Struct_t NoHMI_Flag; //支持无HMI标识,0x55-不支持,0x-AA支持
  240. uint8_t RS[6];
  241. }PBU_ConfigParam_Struct_t;
  242. typedef union TE_ERROR_CODE
  243. {
  244. struct
  245. {
  246. uint16_t BikeSpeed :1;//速度传感器
  247. uint16_t TorqueSensor :1;//力矩传感器
  248. uint16_t Current :1;//母线电流
  249. uint16_t T_Roil :1;//绕组温度
  250. uint16_t HallSensor_A :1;//霍尔传感器A
  251. uint16_t HallSensor_B :1;//霍尔传感器A
  252. uint16_t CadenseSensor_1 :1;//踏频传感器1
  253. uint16_t CadenseSensor_2 :1;//踏频传感器2
  254. uint16_t StopBreak :1;//刹车信号
  255. uint16_t VCC :1;//3.3V异常
  256. uint16_t ClockFreq :1;//系统时钟
  257. uint16_t RS1 :1;
  258. uint16_t RS2 :1;
  259. uint16_t RS3 :1;
  260. uint16_t RS4 :1;
  261. uint16_t RS5 :1;
  262. }Status_Bit;
  263. uint16_t Code;
  264. }TE_ErrorCode_Struct_t;
  265. //TE传回传感器状态
  266. typedef struct
  267. {
  268. TE_ErrorCode_Struct_t TE_ErrorCode;
  269. uint16_t MCU_Voltage;
  270. }MC_TE_SensorStatus_Struct_t;
  271. //发给TE传感器结果
  272. typedef struct
  273. {
  274. uint16_t AD_Torque; //力矩传感器AD值,地址偏移0
  275. uint16_t AD_BusCurrent; //母线电流AD值,地址偏移2
  276. uint16_t AD_RoilTemp; //绕组温度AD值,地址偏移4
  277. uint16_t AD_TE_Voltage; //TE电压AD值,地址偏移6
  278. uint16_t CadenceHall_1_Cnt; //踏频霍尔1计数,地址偏移8
  279. uint16_t CadenceHall_2_Cnt; //踏频霍尔2计数,地址偏移10
  280. uint16_t MotorHall_A_Cnt; //马达霍尔1计数,地址偏移12
  281. uint16_t MotorHall_B_Cnt; //马达霍尔2计数,地址偏移14
  282. uint8_t BreakTrgiCnt; //刹车计数,地址偏移16
  283. uint8_t SpeedSensorTrigCnt; //速度传感器计数,地址偏移17
  284. uint16_t SynC_Clock_Freq; //地址偏移18
  285. }MC_TE_SensorData_Struct_t;
  286. //助力计算参数
  287. typedef struct
  288. {
  289. uint16_t Gain_K; //助力比系数,放大100倍,偏移地址 0
  290. uint16_t i_Sport_TH; //i-Sport档位力矩阈值,偏移地址 2
  291. uint16_t Lower_Iq; //助力输出下限值,偏移地址 4
  292. uint16_t Upper_Iq; //助力输出上限值,偏移地址 6
  293. uint8_t AccCnt; //力矩控制ref加速斜率, 偏移地址 8
  294. uint8_t DecCnt; //力矩控制ref减速斜率, 偏移地址 9
  295. uint16_t CurrentMax_K; //最大电流 / 限流值百分比, 偏移地址 10
  296. }nGearParam_Struct_t; //n档位控制参数结构体定义
  297. typedef struct
  298. {
  299. nGearParam_Struct_t Gear_ECO; //ECO档控制参数,偏移地址 0
  300. nGearParam_Struct_t Gear_NORM; //NORM档控制参数,偏移地址 12
  301. nGearParam_Struct_t Gear_SPORT; //SPORT档控制参数,偏移地址 24
  302. nGearParam_Struct_t Gear_TURBO; //TURBO档控制参数,偏移地址 36
  303. nGearParam_Struct_t Gear_SMART; //SMART档控制参数,偏移地址 48
  304. }MC_AssistParam_Struct_t;
  305. /******************************类型定义End***************************/
  306. /**************************全局变量声明Begin*************************/
  307. extern MC_RunInfo_Struct_t MC_RunInfo;
  308. extern MC_ErrorCode_Struct_t MC_ErrorCode;
  309. extern MC_VerInfo_Struct_t MC_VerInfo;
  310. extern OnLine_Status_Struct_t DeviceOnLine_Status;
  311. extern BMS_RunInfo_Struct_t BMS_RunInfo;
  312. extern Device_CheckInfo_Struct_t BMS_CheckInfo;
  313. extern BMS_DesignInfo_Struct_t BMS_DesignInfo;
  314. extern Device_CheckInfo_Struct_t PBU_CheckInfo;
  315. extern PBU_ConfigParam_Struct_t PBU_ConfigParam;
  316. extern Device_CheckInfo_Struct_t HMI_CheckInfo;
  317. extern MC_ConfigParam_Struct_t MC_ConfigParam;
  318. extern MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam;
  319. extern MC_MotorParam_Struct_t MC_MotorParam;
  320. extern MC_RunLog_Struct_t MC_RunLog;
  321. extern uint8_t Secret_Key[8];
  322. extern MC_MacInfo_Struct_t MC_MacInfo;
  323. extern uint8_t UserString1[16];
  324. extern uint8_t UserString2[16];
  325. extern uint8_t UserString3[16];
  326. extern Device_CheckInfo_Struct_t MC_CheckInfo;
  327. extern MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus;
  328. extern MC_TE_SensorData_Struct_t MC_TE_SensorData;
  329. extern MC_AssistParam_Struct_t MC_AssisParam;
  330. extern uint8_t MC_WalkMode_Persent;
  331. #if INSERT_FAULT_TEST_FLAG
  332. extern uint8_t InsertFault_Flag;
  333. /*
  334. 插入故障定义:
  335. 0:无故障插入
  336. 1:力矩传感器为0
  337. 2:力矩传感器为4095
  338. 3:力矩传感器为固定值1500
  339. 4:踏频霍尔1开路
  340. 5:踏频霍尔1短路
  341. ...
  342. */
  343. #define INSERT_FAULT_NC 0
  344. #define INSERT_FAULT_TORQUESENSOR_0 1
  345. #define INSERT_FAULT_TORQUESENSOR_4095 2
  346. #define INSERT_FAULT_TORQUESENSOR_1500 3
  347. #define INSERT_FAULT_CADENCE_HALL1_OC 4
  348. #define INSERT_FAULT_CADENCE_HALL1_SC 5
  349. #endif
  350. /**************************全局变量声明End***************************/
  351. /**************************全局函数声明Begin*************************/
  352. extern void Var_Init(void);
  353. extern void UpdateGearParam(uint8_t SerialNum);
  354. /**************************全局函数声明End***************************/
  355. #endif