123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #ifndef SOFT_BMS_H
- #define SOFT_BMS_H
- #include "common.h"
- #include "stdint.h"
- void update_bms_data( void );
- void BMSCanRecvHookFunction(uint32_t CanID, uint8_t data[], uint8_t len);
- #pragma pack(1)
- struct BMS_DATA
- {
- uint8_t bms_version[3]; //协议版本
- uint8_t bms_group; //电池组数
- uint8_t bms_num; //串数
- uint16_t bms_v1; //mv
- uint16_t bms_v2;
- uint16_t bms_v3;
- uint16_t bms_v4;
- uint16_t bms_v5;
- uint16_t bms_v6;
- uint16_t bms_v7;
- uint16_t bms_v8;
- uint16_t bms_v9;
- uint16_t bms_v10;
- uint16_t bms_v11;
- uint16_t bms_v12;
- uint16_t bms_v13;
- uint16_t bms_v14;
- uint16_t bms_v15;
- uint16_t bms_v16;
- uint16_t bms_v17;
- uint16_t bms_v18;
- uint16_t bms_v19;
- uint16_t bms_v20;
- uint16_t bms_v21;
- uint16_t bms_v22;
- uint16_t bms_v23;
- uint16_t bms_v24;
- uint16_t bms_v25;
- uint16_t bms_v26; //最大兼容26s电池
- uint8_t bms_ids[32]; //VK3协议 32字节 之前20字节
- uint16_t bms_cycle; //循环次数
- uint16_t bms_volt; //电压 mv
- int16_t bms_ac; //电流 10ma
- uint16_t bms_temp; //温度 0.1℃
- uint8_t bms_vs; //充电百分比 1%
- uint16_t bms_ss; //状态
- uint16_t serial_num; //VK3厂商编号
- };
- #pragma pack()
- //msgid 0x02
- #pragma pack(1)
- typedef struct{
- uint16_t voltage; //10mv
- int current;
- short tempture;
- short mosfet_tempture;
- uint16_t persent;
- uint32_t warn_flag;
- uint16_t bms_num;
- uint16_t bms_v1;
- uint16_t bms_v2;
- uint16_t bms_v3;
- uint16_t bms_v4;
- uint16_t bms_v5;
- uint16_t bms_v6;
- uint16_t bms_v7;
- uint16_t bms_v8;
- uint16_t bms_v9;
- uint16_t bms_v10;
- uint16_t bms_v11;
- uint16_t bms_v12;
- uint16_t bms_v13;
- uint16_t bms_v14;
- uint16_t bms_v15;
- uint16_t bms_v16;
- uint16_t bms_v17;
- uint16_t bms_v18;
- uint16_t bms_v19;
- uint16_t bms_v20;
- uint16_t bms_v21;
- uint16_t bms_v22;
- uint16_t bms_v23;
- uint16_t bms_v24;
- uint16_t bms_v25;
- uint16_t bms_v26;
- }vkbms2;
- #pragma pack()
- extern vkbms2 vk_bms2;
- //msgid 0x03
- #pragma pack(1)
- typedef struct{
- char bms_company_info[20]; //电池厂商信息
- char bms_type_info[20]; //电池型号信息
- char bms_id[20]; //电池ID信息
- char bms_hard_version[10]; //电池硬件版本
- char bms_soft_version[10]; //电池软件版本
- }vkbms3;
- #pragma pack()
- //msgid 0x04
- #pragma pack(1)
- typedef struct{
- uint16_t capacity; //电池设计容量
- uint16_t discharge_rate; //电池放电倍率
- uint16_t normal_voltage; //标称电压
- uint16_t bms_num; //电池串数
- }vkbms4;
- #pragma pack()
- //msgid 0x05
- #pragma pack(1)
- typedef struct{
- uint16_t health_percent; //健康度%
- uint16_t circulation_time;//循环次数
- uint16_t over_recharge; //过充次数
- uint16_t over_discharge; //过放次数
- uint16_t over_current; //过流次数
- uint16_t over_tempreature;//过温次数
- uint16_t SOC;
- uint16_t SOH;
- uint16_t recharge_capacity;//充电容量
- uint16_t surplus_capacity; //剩余容量
- uint16_t inter_resistance; //电池内阻值
- }vkbms5;
- #pragma pack()
- #pragma pack(1)
- typedef struct soft_bms
- {
- Connect_check Vkbms_Link;
- uint32_t can_id;
- bool ack_to_bms;
- uint8_t source_id;
- bool if_mul_frame;
- bool recv_mul_freme_complete;
- uint8_t mul_frame_i;
- uint8_t mul_frame_num;
- uint8_t bms_can_buf[128];
- vkbms2 vk_bms2;
- vkbms3 vk_bms3;
- vkbms4 vk_bms4;
- vkbms5 vk_bms5;
- bool get_bms3_ack;
- bool get_bms4_ack;
- bool get_bms5_ack;
- }Vkbms_Device;
- #pragma pack()
- extern Vkbms_Device Device1;
- extern Vkbms_Device Device2;
- extern uint8_t bms_step;
- void bms_function(void);
- extern struct BMS_DATA bms_data, bms_data2;
- #endif
|