var.c 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. #include "var.h"
  2. MC_RunInfo_Struct_t MC_RunInfo; //MC运行信息
  3. MC_ErrorCode_Struct_t MC_ErrorCode; //MC故障代码
  4. MC_VerInfo_Struct_t MC_VerInfo; //MC版本信息
  5. OnLine_Status_Struct_t DeviceOnLine_Status; //设备在线检测结果
  6. BMS_RunInfo_Struct_t BMS_RunInfo; //BMS运行信息
  7. Device_CheckInfo_Struct_t BMS_CheckInfo; //BMS授权校验
  8. BMS_DesignInfo_Struct_t BMS_DesignInfo; //BMS设计信息
  9. Device_CheckInfo_Struct_t PBU_CheckInfo; //PBU授权校验
  10. PBU_ConfigParam_Struct_t PBU_ConfigParam; //PBU配置参数
  11. Device_CheckInfo_Struct_t HMI_CheckInfo; //HMI授权校验
  12. MC_ConfigParam_Struct_t MC_ConfigParam; //MC配置参数
  13. MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam; //力矩传感器校正信息
  14. MC_MotorParam_Struct_t MC_MotorParam; //马达参数
  15. MC_RunLog_Struct_t MC_RunLog; //MC历史信息
  16. uint8_t Secret_Key[8]; //授权验证密钥
  17. MC_MacInfo_Struct_t MC_MacInfo; //MC生产信息
  18. uint8_t UserString1[16]; //MC自定义字符串1
  19. uint8_t UserString2[16]; //MC自定义字符串2
  20. uint8_t UserString3[16]; //MC自定义字符串3
  21. Device_CheckInfo_Struct_t MC_CheckInfo; //MC授权信息
  22. MC_TE_SensorStatus_Struct_t MC_TE_SensorStatus; //TE传回传感器状态
  23. MC_TE_SensorData_Struct_t MC_TE_SensorData; //发给TE传感器结果
  24. uint16_t MC_TE_SyncClockFreqScan; //TE同步时钟频率
  25. MC_AssistParam_Struct_t MC_AssisParam; //助力输出计算参数
  26. uint8_t MC_WalkMode_Persent = 100; //推行模式最高转速百分比设置
  27. #if INSERT_FAULT_TEST_FLAG
  28. uint8_t InsertFault_Flag = INSERT_FAULT_NC;
  29. #endif
  30. //BMS默认设计信息
  31. const BMS_DesignInfo_Struct_t BMS_DesignInfo_Default =
  32. {
  33. (uint16_t)10400, //设计容量
  34. (uint8_t)36, //设计电压
  35. {0,0,0,0,0,0,0,0} //电芯型号
  36. };
  37. //PBU默认配置
  38. const PBU_ConfigParam_Struct_t PBU_ConfigParam_Default =
  39. {
  40. 4, //档位数量
  41. MC_SUPPORT_DISABLE, //是否支持无PBU操作
  42. };
  43. //MC默认配置参数,占用32bytes
  44. const MC_ConfigParam_Struct_t MC_ConfigParam_Default =
  45. {
  46. (uint8_t)0, //预留
  47. (MC_StarMode_Struct_t)MC_StarMode_NORM, //启动模式
  48. (uint16_t)100, //停机时间 ms
  49. (uint8_t)25, //限速 km/h
  50. (uint8_t)3, //下降速度
  51. (uint8_t)14, //前齿数 T
  52. (uint8_t)9, //后齿数 T
  53. (uint8_t)17, //限流 A
  54. (uint8_t)135, //高温预警值 +40℃
  55. (uint8_t)165, //高温保护值 +40℃
  56. (MC_SupportFlag_Struct_t)MC_SUPPORT_DISABLE, //0x55-不支持,0x-AA支持
  57. (uint8_t)219, //轮胎周长 cm
  58. (uint8_t)0, //系列号,
  59. {100,100}, //ECO
  60. {100,100}, //NORM
  61. {100,100}, //SPORT
  62. {100,100}, //TURBO
  63. {100,100} //SMART
  64. };
  65. const MC_TorqueCorrectParam_Struct_t MC_TorqueCorrectParam_Default =
  66. {
  67. (uint16_t)400,
  68. (uint8_t)100
  69. };
  70. //MC默认马达参数,占用16bytes
  71. const MC_MotorParam_Struct_t MC_MotorParam_Default =
  72. {
  73. (uint16_t)250, //W
  74. (uint16_t)1600, //rpm
  75. (uint16_t)200, //mohm
  76. (uint16_t)10, //mH
  77. (uint16_t)10, //mH
  78. (uint16_t)36000, //mV
  79. (uint8_t)36 //V
  80. };
  81. //MC默认历史信息,占用48bytes
  82. const MC_RunLog_Struct_t MC_RunLog_Default =
  83. {
  84. (uint32_t)1, //开机次数
  85. (uint32_t)0, //运行总时间 min
  86. (uint16_t)0, //过流保次数
  87. (uint16_t)0, //低压保护次数
  88. (uint16_t)0, //高压保护次数
  89. (uint16_t)0, //堵转保护次数
  90. (uint16_t)0, //温度保护次数
  91. (uint16_t)0, //速度传感器错误次数
  92. (uint16_t)0, //力矩传感器错误次数
  93. (uint16_t)0, //霍尔传感器错误次数
  94. (uint16_t)0, //马达相线错误次数
  95. (uint16_t)0, //NTC错误次数
  96. (uint16_t)0, //BMS校验错误次数
  97. (uint16_t)0, //HMI校验错误次数
  98. (uint16_t)0, //PBU校验错误次数
  99. (uint8_t)65, //PCB历史最高温
  100. (uint8_t)65, //PCB历史最低温
  101. (uint32_t)0, //运行总里程
  102. (uint8_t)65, //绕组历史最高温
  103. (uint8_t)65, //绕组历史最低温
  104. (uint8_t)65, //MCU历史最高温
  105. (uint8_t)65 //MCU历史最低温
  106. };
  107. //默认密钥,占用8bytes
  108. const uint8_t Secret_Key_Default[8] = "!@#$%^&*";
  109. /************Volans助力参数************/
  110. //ECO档位助力参数
  111. const nGearParam_Struct_t GearParam_Default_ECO_Volans =
  112. {
  113. (uint16_t)327,
  114. (uint16_t)0,
  115. (uint16_t)100,
  116. (uint16_t)800,
  117. (uint8_t)1,
  118. (uint8_t)1,
  119. (uint16_t)250
  120. };
  121. //NORM档位助力参数
  122. const nGearParam_Struct_t GearParam_Default_NORM_Volans =
  123. {
  124. (uint16_t)655,
  125. (uint16_t)0,
  126. (uint16_t)100,
  127. (uint16_t)1000,
  128. (uint8_t)2,
  129. (uint8_t)1,
  130. (uint16_t)500
  131. };
  132. //SPORT档位助力参数
  133. const nGearParam_Struct_t GearParam_Default_SPORT_Volans =
  134. {
  135. (uint16_t)1024,
  136. (uint16_t)0,
  137. (uint16_t)100,
  138. (uint16_t)1300,
  139. (uint8_t)3,
  140. (uint8_t)1,
  141. (uint16_t)750
  142. };
  143. //TURBO档位助力参数
  144. const nGearParam_Struct_t GearParam_Default_TURBO_Volans =
  145. {
  146. (uint16_t)1310,
  147. (uint16_t)0,
  148. (uint16_t)100,
  149. (uint16_t)1800,
  150. (uint8_t)5,
  151. (uint8_t)1,
  152. (uint16_t)1024
  153. };
  154. //SMART档位助力参数
  155. const nGearParam_Struct_t GearParam_Default_SMART_Volans =
  156. {
  157. (uint16_t)1000,
  158. (uint16_t)2000,
  159. (uint16_t)100,
  160. (uint16_t)1600,
  161. (uint8_t)4,
  162. (uint8_t)1,
  163. (uint16_t)1024
  164. };
  165. /************Volans Plus助力参数************/
  166. //ECO档位助力参数
  167. const nGearParam_Struct_t GearParam_Default_ECO_Volans_Plus =
  168. {
  169. (uint16_t)377,
  170. (uint16_t)0,
  171. (uint16_t)100,
  172. (uint16_t)840,
  173. (uint8_t)1,
  174. (uint8_t)1,
  175. (uint16_t)338
  176. };
  177. //NORM档位助力参数
  178. const nGearParam_Struct_t GearParam_Default_NORM_Volans_Plus =
  179. {
  180. (uint16_t)795,
  181. (uint16_t)0,
  182. (uint16_t)100,
  183. (uint16_t)1200,
  184. (uint8_t)2,
  185. (uint8_t)1,
  186. (uint16_t)605
  187. };
  188. //SPORT档位助力参数
  189. const nGearParam_Struct_t GearParam_Default_SPORT_Volans_Plus =
  190. {
  191. (uint16_t)1504,
  192. (uint16_t)0,
  193. (uint16_t)100,
  194. (uint16_t)1590,
  195. (uint8_t)3,
  196. (uint8_t)1,
  197. (uint16_t)850
  198. };
  199. //TURBO档位助力参数
  200. const nGearParam_Struct_t GearParam_Default_TURBO_Volans_Plus =
  201. {
  202. (uint16_t)2354,
  203. (uint16_t)0,
  204. (uint16_t)100,
  205. (uint16_t)2100,
  206. (uint8_t)5,
  207. (uint8_t)1,
  208. (uint16_t)1024
  209. };
  210. //SMART档位助力参数
  211. const nGearParam_Struct_t GearParam_Default_SMART_Volans_Plus =
  212. {
  213. (uint16_t)1000,
  214. (uint16_t)2000,
  215. (uint16_t)100,
  216. (uint16_t)2100,
  217. (uint8_t)4,
  218. (uint8_t)1,
  219. (uint16_t)1024
  220. };
  221. //全局函数定义
  222. //变量初始化
  223. #include "encrypt.h"
  224. void Var_Init(void)
  225. {
  226. //MC故障码初始化为0
  227. MC_ErrorCode.Code = 0;
  228. //TE故障码初始化为0
  229. MC_TE_SensorStatus.TE_ErrorCode.Code = 0;
  230. //设备在线检测结果初始化为离线
  231. DeviceOnLine_Status.Status = 0x07;
  232. //BMS设计信息初始化为默认值
  233. memcpy((uint8_t*)&BMS_DesignInfo.Capacity, (uint8_t*)&BMS_DesignInfo_Default.Capacity, sizeof(BMS_DesignInfo_Struct_t));
  234. //PBU配置参数初始化为默认值
  235. memcpy((uint8_t*)&PBU_ConfigParam.GearsNum, (uint8_t*)&PBU_ConfigParam_Default.GearsNum, sizeof(PBU_ConfigParam_Struct_t));
  236. //MC版本信息初始化,Mode和SN从EEPROM读取
  237. strncpy(MC_VerInfo.HW_Version, (char*)"V0r5r0_20190610.", 16);//QD007E,增加修改同步IO和同步时钟的跳线,QD004D第二版设计可以引用
  238. strncpy(MC_VerInfo.FW_Version, (char*)"V1r0r0_20190814.", 16);
  239. //MC校验信息初始化,校验码从EEPROM读取
  240. uint32_t ID_Temp;
  241. uint8_t i;
  242. ID_Temp = *(__IO uint32_t*)(0x1FFFF7E8);
  243. for(i=0; i<4; i++)
  244. {
  245. MC_CheckInfo.MAC_ID[i] = ID_Temp >> (8 * i);
  246. }
  247. ID_Temp = *(__IO uint32_t*)(0x1FFFF7EC);
  248. for(i=0; i<4; i++)
  249. {
  250. MC_CheckInfo.MAC_ID[ 4 + i] = ID_Temp >> (8 * i);
  251. }
  252. ID_Temp = *(__IO uint32_t*)(0x1FFFF7F0);
  253. for(i=0; i<4; i++)
  254. {
  255. MC_CheckInfo.MAC_ID[ 8 + i] = ID_Temp >> (8 * i);
  256. }
  257. //MC存储参数初始化为默认值
  258. strncpy((char*)MC_CheckInfo.CheckCode, (char*)MC_CheckInfo.MAC_ID, 12);
  259. memcpy((uint8_t*)&MC_ConfigParam.RS1, (uint8_t*)&MC_ConfigParam_Default.RS1, sizeof(MC_ConfigParam_Default));
  260. memcpy((uint8_t*)&MC_TorqueCorrectParam.StarData, (uint8_t*)&MC_TorqueCorrectParam_Default.StarData, sizeof(MC_TorqueCorrectParam_Default));
  261. memcpy((uint8_t*)&MC_MotorParam.Rate_Power, (uint8_t*)&MC_MotorParam_Default.Rate_Power, sizeof(MC_MotorParam_Default));
  262. memcpy(Secret_Key, Secret_Key_Default, sizeof(Secret_Key_Default));
  263. memcpy((uint8_t*)&MC_RunLog.PowerOnCnt, (uint8_t*)&MC_RunLog_Default.PowerOnCnt, sizeof(MC_RunLog_Default));
  264. }
  265. //根据电机型号系列号调用不同的助力参数
  266. void UpdateGearParam(uint8_t SerialNum)
  267. {
  268. switch(SerialNum)
  269. {
  270. case 1://Volans
  271. {
  272. //助力参数初始化
  273. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  274. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  275. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  276. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  277. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans.Gain_K, sizeof(nGearParam_Struct_t));
  278. break;
  279. }
  280. case 2://Volans Plus
  281. {
  282. //助力参数初始化
  283. memcpy((uint8_t*)&MC_AssisParam.Gear_ECO.Gain_K, (uint8_t*)&GearParam_Default_ECO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  284. memcpy((uint8_t*)&MC_AssisParam.Gear_NORM.Gain_K, (uint8_t*)&GearParam_Default_NORM_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  285. memcpy((uint8_t*)&MC_AssisParam.Gear_SPORT.Gain_K, (uint8_t*)&GearParam_Default_SPORT_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  286. memcpy((uint8_t*)&MC_AssisParam.Gear_TURBO.Gain_K, (uint8_t*)&GearParam_Default_TURBO_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  287. memcpy((uint8_t*)&MC_AssisParam.Gear_SMART.Gain_K, (uint8_t*)&GearParam_Default_SMART_Volans_Plus.Gain_K, sizeof(nGearParam_Struct_t));
  288. break;
  289. }
  290. case 3://
  291. {
  292. break;
  293. }
  294. case 4:
  295. {
  296. break;
  297. }
  298. default:
  299. {
  300. //默认处理
  301. break;
  302. }
  303. }
  304. }