soft_bms.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. #ifndef SOFT_BMS_H
  2. #define SOFT_BMS_H
  3. #include "common.h"
  4. #include "stdint.h"
  5. void update_bms_data( void );
  6. void BMSCanRecvHookFunction(uint32_t CanID, uint8_t data[], uint8_t len);
  7. #pragma pack(1)
  8. struct BMS_DATA
  9. {
  10. uint8_t bms_version[3]; //协议版本
  11. uint8_t bms_group; //电池组数
  12. uint8_t bms_num; //串数
  13. uint16_t bms_v1; //mv
  14. uint16_t bms_v2;
  15. uint16_t bms_v3;
  16. uint16_t bms_v4;
  17. uint16_t bms_v5;
  18. uint16_t bms_v6;
  19. uint16_t bms_v7;
  20. uint16_t bms_v8;
  21. uint16_t bms_v9;
  22. uint16_t bms_v10;
  23. uint16_t bms_v11;
  24. uint16_t bms_v12;
  25. uint16_t bms_v13;
  26. uint16_t bms_v14;
  27. uint16_t bms_v15;
  28. uint16_t bms_v16;
  29. uint16_t bms_v17;
  30. uint16_t bms_v18;
  31. uint16_t bms_v19;
  32. uint16_t bms_v20;
  33. uint16_t bms_v21;
  34. uint16_t bms_v22;
  35. uint16_t bms_v23;
  36. uint16_t bms_v24;
  37. uint16_t bms_v25;
  38. uint16_t bms_v26; //最大兼容26s电池
  39. uint8_t bms_ids[32]; //VK3协议 32字节 之前20字节
  40. uint16_t bms_cycle; //循环次数
  41. uint16_t bms_volt; //电压 mv
  42. int16_t bms_ac; //电流 10ma
  43. uint16_t bms_temp; //温度 0.1℃
  44. uint8_t bms_vs; //充电百分比 1%
  45. uint16_t bms_ss; //状态
  46. uint16_t serial_num; //VK3厂商编号
  47. };
  48. #pragma pack()
  49. //msgid 0x02
  50. #pragma pack(1)
  51. typedef struct{
  52. uint16_t voltage; //10mv
  53. int current;
  54. short tempture;
  55. short mosfet_tempture;
  56. uint16_t persent;
  57. uint32_t warn_flag;
  58. uint16_t bms_num;
  59. uint16_t bms_v1;
  60. uint16_t bms_v2;
  61. uint16_t bms_v3;
  62. uint16_t bms_v4;
  63. uint16_t bms_v5;
  64. uint16_t bms_v6;
  65. uint16_t bms_v7;
  66. uint16_t bms_v8;
  67. uint16_t bms_v9;
  68. uint16_t bms_v10;
  69. uint16_t bms_v11;
  70. uint16_t bms_v12;
  71. uint16_t bms_v13;
  72. uint16_t bms_v14;
  73. uint16_t bms_v15;
  74. uint16_t bms_v16;
  75. uint16_t bms_v17;
  76. uint16_t bms_v18;
  77. uint16_t bms_v19;
  78. uint16_t bms_v20;
  79. uint16_t bms_v21;
  80. uint16_t bms_v22;
  81. uint16_t bms_v23;
  82. uint16_t bms_v24;
  83. uint16_t bms_v25;
  84. uint16_t bms_v26;
  85. }vkbms2;
  86. #pragma pack()
  87. extern vkbms2 vk_bms2;
  88. //msgid 0x03
  89. #pragma pack(1)
  90. typedef struct{
  91. char bms_company_info[20]; //电池厂商信息
  92. char bms_type_info[20]; //电池型号信息
  93. char bms_id[20]; //电池ID信息
  94. char bms_hard_version[10]; //电池硬件版本
  95. char bms_soft_version[10]; //电池软件版本
  96. }vkbms3;
  97. #pragma pack()
  98. //msgid 0x04
  99. #pragma pack(1)
  100. typedef struct{
  101. uint16_t capacity; //电池设计容量
  102. uint16_t discharge_rate; //电池放电倍率
  103. uint16_t normal_voltage; //标称电压
  104. uint16_t bms_num; //电池串数
  105. }vkbms4;
  106. #pragma pack()
  107. //msgid 0x05
  108. #pragma pack(1)
  109. typedef struct{
  110. uint16_t health_percent; //健康度%
  111. uint16_t circulation_time;//循环次数
  112. uint16_t over_recharge; //过充次数
  113. uint16_t over_discharge; //过放次数
  114. uint16_t over_current; //过流次数
  115. uint16_t over_tempreature;//过温次数
  116. uint16_t SOC;
  117. uint16_t SOH;
  118. uint16_t recharge_capacity;//充电容量
  119. uint16_t surplus_capacity; //剩余容量
  120. uint16_t inter_resistance; //电池内阻值
  121. }vkbms5;
  122. #pragma pack()
  123. #pragma pack(1)
  124. typedef struct soft_bms
  125. {
  126. Connect_check Vkbms_Link;
  127. uint32_t can_id;
  128. bool ack_to_bms;
  129. uint8_t source_id;
  130. bool if_mul_frame;
  131. bool recv_mul_freme_complete;
  132. uint8_t mul_frame_i;
  133. uint8_t mul_frame_num;
  134. uint8_t bms_can_buf[128];
  135. vkbms2 vk_bms2;
  136. vkbms3 vk_bms3;
  137. vkbms4 vk_bms4;
  138. vkbms5 vk_bms5;
  139. bool get_bms3_ack;
  140. bool get_bms4_ack;
  141. bool get_bms5_ack;
  142. }Vkbms_Device;
  143. #pragma pack()
  144. extern Vkbms_Device Device1;
  145. extern Vkbms_Device Device2;
  146. extern uint8_t bms_step;
  147. void bms_function(void);
  148. extern struct BMS_DATA bms_data, bms_data2;
  149. #endif