|
|
@@ -44,7 +44,7 @@ void update_bms_data( void )
|
|
|
//VK电池
|
|
|
Check_dev_link(&Device1.Vkbms_Link,5000,(char *)&Device1,sizeof(Vkbms_Device));
|
|
|
Check_dev_link(&Device2.Vkbms_Link,5000,(char *)&Device2,sizeof(Vkbms_Device));
|
|
|
-
|
|
|
+
|
|
|
if ( okcell_device1.Okcell_Link.connect_status == COMP_NORMAL || okcell_device2.Okcell_Link.connect_status == COMP_NORMAL )
|
|
|
{
|
|
|
Dev.Bms_Link.connect_status = COMP_NORMAL;
|
|
|
@@ -357,7 +357,10 @@ void update_bms_data( void )
|
|
|
|
|
|
//厂家还没加
|
|
|
if(StrArrayNull( &bms_data.bms_ids[0], sizeof( bms_data.bms_ids ) ) == false && dev_bms1.regist.sn == false)
|
|
|
- regist_dev_info(&dev_bms1,DEVICE_BMS1,false,(char *)bms_data.bms_ids,32,NULL,0,NULL,0,"vk",3);
|
|
|
+ regist_dev_info(&dev_bms1,DEVICE_BMS1,false,(char *)bms_data.bms_ids,32,NULL,0,NULL,0,NULL,0);
|
|
|
+ if(StrArrayNull( (uint8_t *)&Device1.vk_bms3.bms_company_info[0], sizeof( Device1.vk_bms3.bms_company_info ) ) == false && dev_bms1.regist.manu == false)
|
|
|
+ regist_dev_info(&dev_bms1,DEVICE_BMS1,false,NULL,0,NULL,0,NULL,0,&Device1.vk_bms3.bms_company_info[0],16);
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -387,7 +390,10 @@ void update_bms_data( void )
|
|
|
// bms_data2.serial_num = 11; //???
|
|
|
// }
|
|
|
if(StrArrayNull( &bms_data2.bms_ids[0], sizeof( bms_data2.bms_ids ) ) == false && dev_bms2.regist.sn == false)
|
|
|
- regist_dev_info(&dev_bms2,DEVICE_BMS2,false,(char *)bms_data2.bms_ids,32,NULL,0,NULL,0,"vk",3);
|
|
|
+ regist_dev_info(&dev_bms2,DEVICE_BMS2,false,(char *)bms_data2.bms_ids,32,NULL,0,NULL,0,NULL,0);
|
|
|
+ if(StrArrayNull( (uint8_t *)&Device2.vk_bms3.bms_company_info[0], sizeof( Device2.vk_bms3.bms_company_info ) ) == false && dev_bms2.regist.manu == false)
|
|
|
+ regist_dev_info(&dev_bms2,DEVICE_BMS2,false,NULL,0,NULL,0,NULL,0,&Device2.vk_bms3.bms_company_info[0],16);
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
@@ -401,7 +407,7 @@ void update_bms_data( void )
|
|
|
Dev.Bms_Link.connect_status = COMP_LOST;
|
|
|
//memset(&bms_data, 0, sizeof(bms_data));
|
|
|
//状态未置异常
|
|
|
- bms_data.bms_ss = 0xFFFF;
|
|
|
+ bms_data.bms_ss = 0;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -420,7 +426,6 @@ void send_msg_to_VKbms(void)
|
|
|
static uint8_t change_dev = 1;
|
|
|
Vkbms_Device *ptr = NULL;
|
|
|
|
|
|
- //处理 有问题,如果不是同时上电,后上电的电池2无法读取电池设备信息。
|
|
|
static uint32_t bms_heart_time = 0;;
|
|
|
unsigned int can_id = 0;
|
|
|
uint8_t len = 0, msg_id = 0,i = 0;
|
|
|
@@ -521,7 +526,368 @@ void send_msg_to_VKbms(void)
|
|
|
can_id = msg_id << 20 | 0x7 << 17 | ptr->source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
bms_heart_time = HAL_GetTick();
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // if(Device1.Vkbms_Link.connect_status == COMP_NORMAL || Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // static uint8_t bsm_step_num = 6;
|
|
|
+ // static uint32_t bms_heart_time = 0;;
|
|
|
+ // unsigned int can_id = 0;
|
|
|
+ // uint8_t len = 0, msg_id = 0,i = 0;
|
|
|
+ // uint8_t bms_can_buf[8] = {0};
|
|
|
+ // uint16_t crc = 0;
|
|
|
+
|
|
|
+ // //上电握手
|
|
|
+ // if(Device1.ack_to_bms == true || Device2.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // msg_id = 0x01;
|
|
|
+
|
|
|
+ // if(Device1.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // Device1.ack_to_bms = false;
|
|
|
+ // }
|
|
|
+ // else if (Device2.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // Device2.ack_to_bms = false;
|
|
|
+ // }
|
|
|
+ // len = 2;
|
|
|
+ // bms_can_buf[0] = 0x56;
|
|
|
+ // bms_can_buf[1] = 0x31;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //读取电池信息
|
|
|
+ // if(bms_step <= 2)
|
|
|
+ // {
|
|
|
+ // //上电发送的信息
|
|
|
+ // switch (bms_step)
|
|
|
+ // {
|
|
|
+ // case 0:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x03;//canid 4083768 3E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 1;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 1:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x04; //canid 5132344 4E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 2;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 2:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x05;//canid 6180920 5E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 3;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+
|
|
|
+ // default:
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // //秘钥匹配
|
|
|
+ // else if(start_msg.key_to_bms == true && bsm_step_num > 0 && bms_step == 3 ) //上个if语句发完再发
|
|
|
+ // {
|
|
|
+ // msg_id = 0x07;
|
|
|
+
|
|
|
+ // crc = Get_Crc16(&start_msg.key_data[0],20);
|
|
|
+
|
|
|
+ // memcpy(&bms_can_buf[0],&crc,2);
|
|
|
+ // memcpy(&bms_can_buf[2],&start_msg.key_data[i],6);
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x0 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 8, can_id);
|
|
|
+ // i += 6;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x0 << 4 | 0x0 << 3 | 2;
|
|
|
+ // can_send_msg_normal(&start_msg.key_data[i], 8, can_id);
|
|
|
+ // i += 8;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x0 << 4 | 0x1 << 3 | 3;
|
|
|
+ // can_send_msg_normal(&start_msg.key_data[i], 6, can_id);
|
|
|
+
|
|
|
+ // bsm_step_num--;
|
|
|
+ // if(bsm_step_num == 0)
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 4;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // //开启mos
|
|
|
+ // else if(start_msg.mos_status == true && bsm_step_num > 0 && (bms_step == 4 || start_msg.mos_status == true))
|
|
|
+ // {
|
|
|
+ // msg_id = 0x08;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // bms_can_buf[0] = 0x01;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 1, can_id);
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else if(utc_time != 0 && utc_send_time > 0 )
|
|
|
+ // {
|
|
|
+ // msg_id = 0x09;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // memcpy(&bms_can_buf[0],&utc_time,4);
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 4, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 4, can_id);
|
|
|
+ // }
|
|
|
+ // utc_send_time--;
|
|
|
+ // }
|
|
|
+ // else if(HAL_GetTick() - bms_heart_time > 1000)//实时信息应答包
|
|
|
+ // {
|
|
|
+ // msg_id = 0x02;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
+ // }
|
|
|
+ // bms_heart_time = HAL_GetTick();
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //开启mos
|
|
|
+ // else if(start_msg.mos_status == true)
|
|
|
+ // {
|
|
|
+ // msg_id = 0x08;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | ptr->source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // bms_can_buf[0] = 0x01;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 1, can_id);
|
|
|
+ // }
|
|
|
+ // else if(utc_time != 0 && utc_send_time > 0 )
|
|
|
+ // {
|
|
|
+ // msg_id = 0x09;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | ptr->source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // memcpy(&bms_can_buf[0],&utc_time,4);
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 4, can_id);
|
|
|
+
|
|
|
+ // utc_send_time--;
|
|
|
+ // }
|
|
|
+ // else if(HAL_GetTick() - bms_heart_time > 500)//实时信息应答包
|
|
|
+ // {
|
|
|
+ // msg_id = 0x02;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | ptr->source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
+ // bms_heart_time = HAL_GetTick();
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
+ // if(Device1.Vkbms_Link.connect_status == COMP_NORMAL || Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // static uint8_t bsm_step_num = 6;
|
|
|
+ // static uint32_t bms_heart_time = 0;;
|
|
|
+ // unsigned int can_id = 0;
|
|
|
+ // uint8_t len = 0, msg_id = 0,i = 0;
|
|
|
+ // uint8_t bms_can_buf[8] = {0};
|
|
|
+ // uint16_t crc = 0;
|
|
|
+
|
|
|
+ // //上电握手
|
|
|
+ // if(Device1.ack_to_bms == true || Device2.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // msg_id = 0x01;
|
|
|
+
|
|
|
+ // if(Device1.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // Device1.ack_to_bms = false;
|
|
|
+ // }
|
|
|
+ // else if (Device2.ack_to_bms == true)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // Device2.ack_to_bms = false;
|
|
|
+ // }
|
|
|
+ // len = 2;
|
|
|
+ // bms_can_buf[0] = 0x56;
|
|
|
+ // bms_can_buf[1] = 0x31;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+
|
|
|
+ // //读取电池信息
|
|
|
+ // if(bms_step <= 2)
|
|
|
+ // {
|
|
|
+ // //上电发送的信息
|
|
|
+ // switch (bms_step)
|
|
|
+ // {
|
|
|
+ // case 0:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x03;//canid 4083768 3E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 1;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 1:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x04; //canid 5132344 4E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 2;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+ // case 2:
|
|
|
+ // if(bsm_step_num > 0)
|
|
|
+ // {
|
|
|
+ // len = 0;
|
|
|
+ // msg_id = 0x05;//canid 6180920 5E5039
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], len, can_id);
|
|
|
+ // }
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 3;
|
|
|
+ // }
|
|
|
+ // break;
|
|
|
+
|
|
|
+ // default:
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // //秘钥匹配
|
|
|
+ // else if(start_msg.key_to_bms == true && bsm_step_num > 0 && bms_step == 3 ) //上个if语句发完再发
|
|
|
+ // {
|
|
|
+ // msg_id = 0x07;
|
|
|
+
|
|
|
+ // crc = Get_Crc16(&start_msg.key_data[0],20);
|
|
|
+
|
|
|
+ // memcpy(&bms_can_buf[0],&crc,2);
|
|
|
+ // memcpy(&bms_can_buf[2],&start_msg.key_data[i],6);
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x0 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 8, can_id);
|
|
|
+ // i += 6;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x0 << 4 | 0x0 << 3 | 2;
|
|
|
+ // can_send_msg_normal(&start_msg.key_data[i], 8, can_id);
|
|
|
+ // i += 8;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x0 << 4 | 0x1 << 3 | 3;
|
|
|
+ // can_send_msg_normal(&start_msg.key_data[i], 6, can_id);
|
|
|
+
|
|
|
+ // bsm_step_num--;
|
|
|
+ // if(bsm_step_num == 0)
|
|
|
+ // {
|
|
|
+ // bsm_step_num = 5;
|
|
|
+ // bms_step = 4;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // //开启mos
|
|
|
+ // else if(start_msg.mos_status == true && bsm_step_num > 0 && (bms_step == 4 || start_msg.mos_status == true))
|
|
|
+ // {
|
|
|
+ // msg_id = 0x08;
|
|
|
+
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // bms_can_buf[0] = 0x01;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 1, can_id);
|
|
|
+ // bsm_step_num--;
|
|
|
+ // }
|
|
|
+ // else if(utc_time != 0 && utc_send_time > 0 )
|
|
|
+ // {
|
|
|
+ // msg_id = 0x09;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // memcpy(&bms_can_buf[0],&utc_time,4);
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 4, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 4, can_id);
|
|
|
+ // }
|
|
|
+ // utc_send_time--;
|
|
|
+ // }
|
|
|
+ // else if(HAL_GetTick() - bms_heart_time > 1000)//实时信息应答包
|
|
|
+ // {
|
|
|
+ // msg_id = 0x02;
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device1.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
+ // if(Device2.Vkbms_Link.connect_status == COMP_NORMAL)
|
|
|
+ // {
|
|
|
+ // can_id = msg_id << 20 | 0x7 << 17 | Device2.source_id << 11 | 0x1 << 5 | 0x1 << 4 | 0x1 << 3 | 1;
|
|
|
+ // can_send_msg_normal(&bms_can_buf[0], 0, can_id);
|
|
|
+ // }
|
|
|
+ // bms_heart_time = HAL_GetTick();
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -548,16 +914,11 @@ void bms_function()
|
|
|
//给智能电池发送上电信息
|
|
|
send_msg_to_okcell();
|
|
|
send_msg_to_herewin();
|
|
|
- send_msg_to_poweramp();
|
|
|
- send_info_to_Qx();
|
|
|
+ //send_msg_to_poweramp();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-#define max(a, b) ((a) > (b) ? (a) : (b))
|
|
|
-#define min(a, b) ((a) < (b) ? (a) : (b))
|
|
|
-
|
|
|
/**
|
|
|
* @file BMSCanRecvHookFunction
|
|
|
* @brief VK智能电池协议
|
|
|
@@ -565,8 +926,8 @@ void bms_function()
|
|
|
* @details
|
|
|
* @author Zhang Sir
|
|
|
**/
|
|
|
-// uint16_t bms_test = 0;
|
|
|
-// uint16_t bms_re = 0;
|
|
|
+uint16_t bms_test = 0;
|
|
|
+uint16_t bms_re = 0;
|
|
|
uint8_t fmu_send_vkbms_msgid = 0;
|
|
|
void BMSCanRecvHookFunction(uint32_t CanID, uint8_t data[], uint8_t len)
|
|
|
{
|
|
|
@@ -618,17 +979,20 @@ void BMSCanRecvHookFunction(uint32_t CanID, uint8_t data[], uint8_t len)
|
|
|
// 中间帧
|
|
|
else if(Bmspointer->if_mul_frame == true && bms_SOF == 0 && bms_EOF == 0 && pack_msg_id == msg_id)
|
|
|
{
|
|
|
- if(Bmspointer->mul_frame_num == frame_num || ( Bmspointer->mul_frame_num == 0 && frame_num == 1)
|
|
|
- /*&& ((Bmspointer->mul_frame_i + len) <= sizeof(vkbms2))*/ )
|
|
|
+ if(Bmspointer->mul_frame_num == frame_num /*&& ((Bmspointer->mul_frame_i + len) <= sizeof(vkbms2))*/ )
|
|
|
{
|
|
|
- memcpy(&Bmspointer->bms_can_buf[Bmspointer->mul_frame_i],&data[0],len);
|
|
|
-
|
|
|
- if(( Bmspointer->mul_frame_num == 0 && frame_num == 1))
|
|
|
+ if(msg_id == 0x03)
|
|
|
{
|
|
|
- Bmspointer->mul_frame_num++;
|
|
|
+ msg_id = 0x03;
|
|
|
}
|
|
|
+ memcpy(&Bmspointer->bms_can_buf[Bmspointer->mul_frame_i],&data[0],len);
|
|
|
+
|
|
|
Bmspointer->mul_frame_i += len;
|
|
|
Bmspointer->mul_frame_num++;
|
|
|
+ if(Bmspointer->mul_frame_num == 8)
|
|
|
+ {
|
|
|
+ Bmspointer->mul_frame_num = 1;
|
|
|
+ }
|
|
|
|
|
|
if(Bmspointer->mul_frame_num >= 8)
|
|
|
{
|
|
|
@@ -667,8 +1031,7 @@ void BMSCanRecvHookFunction(uint32_t CanID, uint8_t data[], uint8_t len)
|
|
|
case 0X02:
|
|
|
if(Bmspointer->recv_mul_freme_complete == true)
|
|
|
{
|
|
|
- //兆源使用两块正方电池有问题,需要进一步排查
|
|
|
- memcpy(&Bmspointer->vk_bms2.voltage, &Bmspointer->bms_can_buf[2], min( Bmspointer->mul_frame_i - 2, sizeof(vkbms2)));
|
|
|
+ memcpy(&Bmspointer->vk_bms2.voltage, &Bmspointer->bms_can_buf[2], sizeof(vkbms2));
|
|
|
Bmspointer->recv_mul_freme_complete = false;
|
|
|
}
|
|
|
break;
|