forked from gary/BCU
2
0
Fork 0

merge version

This commit is contained in:
Carl 2025-04-15 19:21:49 +08:00
parent 5280b76d65
commit 594b7b90c8
9 changed files with 3231 additions and 7069 deletions

View File

@ -47,23 +47,23 @@ void bms_poll_adc(uint32_t base_time)
tmp = kit_get_dma_avg_filter_min_max(adc_dma_buf, kAdcDataEnd, i, ADC_SAMPLE_CNT);
switch (i)
{
case kAdcData_5vVolt:
adc_value[i] = 0; // 返回电压0.1V/bit
break;
case kAdcData_Temp1:
case kAdcData_Temp2:
case kAdcData_Temp3:
case kAdcData_Temp4:
tmp = tmp * 10000 / (MCU_MAX_AD_VALUE - tmp); // 返回阻值1Ω/bit
adc_value[i] = bms_get_linear_temp(tmp, kNtcType_CWFH708_H713);
bms_set_en_temp((EnTemp)(i - kAdcData_Temp1), adc_value[i]);
break;
case kAdcData_Hall1:
case kAdcData_Hall2:
// 扩大100倍
//adc_value[i] = tmp * (4 * 100 / 3);
adc_value[i] = tmp * 3 / 4;//先获取电压值
break;
case kAdcData_5vVolt:
adc_value[i] = 0; // 返回电压0.1V/bit
break;
case kAdcData_Temp1:
case kAdcData_Temp2:
case kAdcData_Temp3:
case kAdcData_Temp4:
tmp = tmp * 10000 / (MCU_MAX_AD_VALUE - tmp); // 返回阻值1Ω/bit
adc_value[i] = bms_get_linear_temp(tmp, kNtcType_CWFH708_H713);
bms_set_en_temp((EnTemp)(i - kAdcData_Temp1), adc_value[i]);
break;
case kAdcData_Hall1:
case kAdcData_Hall2:
// 扩大100倍
//adc_value[i] = tmp * (4 * 100 / 3);
adc_value[i] = tmp * 3 / 4;//先获取电压值
break;
}
}
}

View File

@ -447,11 +447,11 @@ void bms_poll_bmu(uint32_t base_time)
//温感的值最开始全是大于6000的第二次才是采集值
memset(tempJudge_cnt, 0, sizeof(tempJudge_cnt));
//2-5 @wangk add this line bcu statistic data is show
bms_poll_statistic(0);
//2-6 @wangk
bms_poll_run_status(base_time);
//2-10 @wangk
task_dido_ctrl_handle(1000);
// bms_poll_statistic(0);
// //2-6 @wangk
// bms_poll_run_status(base_time);
// //2-10 @wangk
// task_dido_ctrl_handle(1000);
}

View File

@ -25,7 +25,7 @@ void ord_di_do_feedback_func(uint32_t base_time, DiStatus di_signal, DiType di)
if(bms_get_do_status_by_idx(di - kDiType_Do1Feedback) != di_signal)
{
//I don't know what's the meaning of this line.Whatever I change the 5000 to what , it is always enter the " if " and set the fault level.
//di_param_item[di].dly += base_time;
di_param_item[di].dly += base_time;
if(di_param_item[di].dly >= 5000)
{
//这里会写进错误--反馈异常,这里的一级代表三级错误

View File

@ -215,15 +215,15 @@ void logic_same_circuit_ctrl(uint32_t base_time)
if ((bms_is_dis_allow() == false) || (bms_is_chg_allow() == false))
{
prechg_cnt = 0;
status = kDoLogicStatus_Off;
status = kDoLogicStatus_Off;
bms_crtl_do_status(kDoType_PreChg, kDoCtrlStatus_Off, RELAY_CTRL_NO_DLY);
bms_crtl_do_status(kDoType_Dis, kDoCtrlStatus_Off, 100);
}
else if (dly >= prechg_time)//预充超时
{
{
dly = 0;
status = kDoLogicStatus_PrechgFail;
bms_crtl_do_status(kDoType_PreChg, kDoCtrlStatus_Off, RELAY_CTRL_NO_DLY);
bms_crtl_do_status(kDoType_PreChg, kDoCtrlStatus_Off, RELAY_CTRL_NO_DLY);
}
else
{

View File

@ -38,7 +38,7 @@ typedef enum
#define DEVICE_HW_MAJOR_VER (1u) //5
#define DEVICE_HW_MINOR_VER (0u) //5
#define DEVICE_HW_BUILD_VER (0u) //6
#define DEVICE_HW_VERSION (((DEVICE_HW_MAJOR_VER&0x1f)<<11)+((DEVICE_HW_MINOR_VER&0x1f)<<6)+(DEVICE_HW_BUILD_VER&0x3f))
//#define DEVICE_HW_VERSION (((DEVICE_HW_MAJOR_VER&0x1f)<<11)+((DEVICE_HW_MINOR_VER&0x1f)<<6)+(DEVICE_HW_BUILD_VER&0x3f))
/*********************************软件版本号*************************************/
#define DEVICE_V_MAJOR_VER (2u) //4
@ -50,9 +50,13 @@ typedef enum
#define DEVICE_C_MINOR_VER (3u) //4
//主干默认版本B0 上述记录即可
#define DEVICE_SW_BUILD_VER (1u)
//#define DEVICE_SW_BUILD_VER (1u)
//#define DEVICE_SW_VERSION ((DEVICE_V_MAJOR_VER << 8) | (DEVICE_V_MINOR_VER))
#define DEVICE_SW_VERSION 1
#define DEVICE_SW_BUILD_VER (0u)
#define DEVICE_HW_VERSION 1
#define DEVICE_SW_VERSION ((DEVICE_V_MAJOR_VER << 8) | (DEVICE_V_MINOR_VER))
#define DEVICE_R_VERSION ((DEVICE_R_MAJOR_VER << 8) | (DEVICE_R_MINOR_VER))
#define DEVICE_C_VERSION ((DEVICE_C_MAJOR_VER << 8) | (DEVICE_C_MINOR_VER))
typedef enum

View File

@ -50,7 +50,7 @@
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\Objects\</OutputDirectory>
<OutputName>BCU1</OutputName>
<OutputName>BCU5</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
@ -83,7 +83,7 @@
<AfterMake>
<RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name>D:\CodeCompare\BCU\app\stm32fxxx_app\hex2bin.exe D:\CodeCompare\BCU\app\stm32fxxx_app\prj\Objects\BCU1.hex</UserProg1Name>
<UserProg1Name>D:\CodeCompare\BCU\app\stm32fxxx_app\hex2bin.exe D:\CodeCompare\BCU\app\stm32fxxx_app\prj\Objects\BCU5.hex</UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>

File diff suppressed because it is too large Load Diff

View File

@ -294,7 +294,7 @@ void bcu_send_0x42100000(can_dev_e can)
//电池模块SOH
tmp_8u = (uint8_t)(bms_get_soh()/100);
WRITE_LT_INT8U(buf, len, tmp_8u);
bsp_can_ext_data_sync_send(can, 0x42100000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004210, buf, len);
}
void bcu_send_0x42200000(can_dev_e can)
@ -314,7 +314,7 @@ void bcu_send_0x42200000(can_dev_e can)
//最大放电电流
tmp_16u = bms_get_sop_data(kSopData_DisCur);
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42200000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004220, buf, len);
}
void bcu_send_0x42300000(can_dev_e can)
@ -334,7 +334,7 @@ void bcu_send_0x42300000(can_dev_e can)
//最低单体电池电压编号
tmp_16u = bms_get_statistic_data(kStatisticData_MinVoltIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42300000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004230, buf, len);
}
void bcu_send_0x42400000(can_dev_e can)
@ -354,7 +354,7 @@ void bcu_send_0x42400000(can_dev_e can)
//最低单体电池温度编号
tmp_16u = bms_get_statistic_data(kStatisticData_MinTempIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42400000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004240, buf, len);
}
void bcu_send_0x42500000(can_dev_e can)
@ -412,7 +412,7 @@ void bcu_send_0x42500000(can_dev_e can)
tmp_16u = set_bit_based_on_source_pylon(status, kFaultLevel_First);
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42500000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004250, buf, len);
}
void bcu_send_0x42600000(can_dev_e can)
@ -432,7 +432,7 @@ void bcu_send_0x42600000(can_dev_e can)
//最低电池模块电压编号--无,用单体从机号代替
tmp_16u = bms_get_statistic_data(kStatisticData_MinVoltBmuIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42600000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004260, buf, len);
}
void bcu_send_0x42700000(can_dev_e can)
@ -452,7 +452,7 @@ void bcu_send_0x42700000(can_dev_e can)
//最低电池模块温度编号--无,用单体从机号代替
tmp_16u = bms_get_statistic_data(kStatisticData_MinTempBmuIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42700000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004270, buf, len);
}
void bcu_send_0x42800000(can_dev_e can)
@ -518,7 +518,7 @@ void bcu_send_0x42800000(can_dev_e can)
tmp_16u = 0;
WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x42800000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00004280, buf, len);
}
void bcu_send_0x73100000(can_dev_e can)
@ -552,7 +552,7 @@ void bcu_send_0x73100000(can_dev_e can)
tmp_8u = 1;
WRITE_LT_INT8U(buf, len, tmp_8u);
bsp_can_ext_data_sync_send(can, 0x73100000, buf, len);
bsp_can_ext_data_sync_send(can, 0x00007310, buf, len);
}
void bcu_can_send_pylon(uint32_t base_time,can_dev_e can)

View File

@ -102,9 +102,7 @@ uint16_t bcu_total_msg_fill(uint16_t start_addr, uint8_t reg_num, uint8_t *buf)
READ_FC03_F04_BEGIN();
//1 动力电池组总电压
READ_FC03_F04_ITEM(1, bms_get_statistic_data(kStatisticData_TotalVolt));
//READ_FC03_F04_ITEM(1, 5000);
//READ_FC03_F04_ITEM(1, test99+=10);
//2 动力电池组总电流
READ_FC03_F04_ITEM(2, bms_get_show_current());
//3 SOC
@ -782,10 +780,10 @@ BspMdExCode bcu_modbus_485_0x03_fun(uint16_t start_addr, uint16_t reg_num, uint8
{
BspMdExCode err = kBspMdEx_None;
//kit_time_dly_ms(50);
if((start_addr >= 3000) && (start_addr + reg_num <= 3169))
{
*len = bcu_total_cfg_fill(start_addr, reg_num, buf);
}
if((start_addr >= 3000) && (start_addr + reg_num <= 3169))
{
*len = bcu_total_cfg_fill(start_addr, reg_num, buf);
}
else if((start_addr >= 4000) && ((start_addr + reg_num ) <= 4999))
{
hmi_fill_modbus_cfg(fill_buf);