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); tmp = kit_get_dma_avg_filter_min_max(adc_dma_buf, kAdcDataEnd, i, ADC_SAMPLE_CNT);
switch (i) switch (i)
{ {
case kAdcData_5vVolt: case kAdcData_5vVolt:
adc_value[i] = 0; // 返回电压0.1V/bit adc_value[i] = 0; // 返回电压0.1V/bit
break; break;
case kAdcData_Temp1: case kAdcData_Temp1:
case kAdcData_Temp2: case kAdcData_Temp2:
case kAdcData_Temp3: case kAdcData_Temp3:
case kAdcData_Temp4: case kAdcData_Temp4:
tmp = tmp * 10000 / (MCU_MAX_AD_VALUE - tmp); // 返回阻值1Ω/bit tmp = tmp * 10000 / (MCU_MAX_AD_VALUE - tmp); // 返回阻值1Ω/bit
adc_value[i] = bms_get_linear_temp(tmp, kNtcType_CWFH708_H713); adc_value[i] = bms_get_linear_temp(tmp, kNtcType_CWFH708_H713);
bms_set_en_temp((EnTemp)(i - kAdcData_Temp1), adc_value[i]); bms_set_en_temp((EnTemp)(i - kAdcData_Temp1), adc_value[i]);
break; break;
case kAdcData_Hall1: case kAdcData_Hall1:
case kAdcData_Hall2: case kAdcData_Hall2:
// 扩大100倍 // 扩大100倍
//adc_value[i] = tmp * (4 * 100 / 3); //adc_value[i] = tmp * (4 * 100 / 3);
adc_value[i] = tmp * 3 / 4;//先获取电压值 adc_value[i] = tmp * 3 / 4;//先获取电压值
break; break;
} }
} }
} }

View File

@ -447,11 +447,11 @@ void bms_poll_bmu(uint32_t base_time)
//温感的值最开始全是大于6000的第二次才是采集值 //温感的值最开始全是大于6000的第二次才是采集值
memset(tempJudge_cnt, 0, sizeof(tempJudge_cnt)); memset(tempJudge_cnt, 0, sizeof(tempJudge_cnt));
//2-5 @wangk add this line bcu statistic data is show //2-5 @wangk add this line bcu statistic data is show
bms_poll_statistic(0); // bms_poll_statistic(0);
//2-6 @wangk // //2-6 @wangk
bms_poll_run_status(base_time); // bms_poll_run_status(base_time);
//2-10 @wangk // //2-10 @wangk
task_dido_ctrl_handle(1000); // 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) 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. //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) 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)) if ((bms_is_dis_allow() == false) || (bms_is_chg_allow() == false))
{ {
prechg_cnt = 0; 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_PreChg, kDoCtrlStatus_Off, RELAY_CTRL_NO_DLY);
bms_crtl_do_status(kDoType_Dis, kDoCtrlStatus_Off, 100); bms_crtl_do_status(kDoType_Dis, kDoCtrlStatus_Off, 100);
} }
else if (dly >= prechg_time)//预充超时 else if (dly >= prechg_time)//预充超时
{ {
dly = 0; dly = 0;
status = kDoLogicStatus_PrechgFail; 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 else
{ {

View File

@ -38,7 +38,7 @@ typedef enum
#define DEVICE_HW_MAJOR_VER (1u) //5 #define DEVICE_HW_MAJOR_VER (1u) //5
#define DEVICE_HW_MINOR_VER (0u) //5 #define DEVICE_HW_MINOR_VER (0u) //5
#define DEVICE_HW_BUILD_VER (0u) //6 #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 #define DEVICE_V_MAJOR_VER (2u) //4
@ -50,9 +50,13 @@ typedef enum
#define DEVICE_C_MINOR_VER (3u) //4 #define DEVICE_C_MINOR_VER (3u) //4
//主干默认版本B0 上述记录即可 //主干默认版本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_R_VERSION ((DEVICE_R_MAJOR_VER << 8) | (DEVICE_R_MINOR_VER))
#define DEVICE_C_VERSION ((DEVICE_C_MAJOR_VER << 8) | (DEVICE_C_MINOR_VER)) #define DEVICE_C_VERSION ((DEVICE_C_MAJOR_VER << 8) | (DEVICE_C_MINOR_VER))
typedef enum typedef enum

View File

@ -50,7 +50,7 @@
<InvalidFlash>1</InvalidFlash> <InvalidFlash>1</InvalidFlash>
</TargetStatus> </TargetStatus>
<OutputDirectory>.\Objects\</OutputDirectory> <OutputDirectory>.\Objects\</OutputDirectory>
<OutputName>BCU1</OutputName> <OutputName>BCU5</OutputName>
<CreateExecutable>1</CreateExecutable> <CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib> <CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile> <CreateHexFile>1</CreateHexFile>
@ -83,7 +83,7 @@
<AfterMake> <AfterMake>
<RunUserProg1>1</RunUserProg1> <RunUserProg1>1</RunUserProg1>
<RunUserProg2>0</RunUserProg2> <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> <UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode> <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode> <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 //电池模块SOH
tmp_8u = (uint8_t)(bms_get_soh()/100); tmp_8u = (uint8_t)(bms_get_soh()/100);
WRITE_LT_INT8U(buf, len, tmp_8u); 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) 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); tmp_16u = bms_get_sop_data(kSopData_DisCur);
WRITE_LT_INT16U(buf, len, tmp_16u); 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) 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; tmp_16u = bms_get_statistic_data(kStatisticData_MinVoltIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u); 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) 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; tmp_16u = bms_get_statistic_data(kStatisticData_MinTempIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u); 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) 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); tmp_16u = set_bit_based_on_source_pylon(status, kFaultLevel_First);
WRITE_LT_INT16U(buf, len, tmp_16u); 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) 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; tmp_16u = bms_get_statistic_data(kStatisticData_MinVoltBmuIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u); 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) 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; tmp_16u = bms_get_statistic_data(kStatisticData_MinTempBmuIdx) + 1;
WRITE_LT_INT16U(buf, len, tmp_16u); 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) void bcu_send_0x42800000(can_dev_e can)
@ -518,7 +518,7 @@ void bcu_send_0x42800000(can_dev_e can)
tmp_16u = 0; tmp_16u = 0;
WRITE_LT_INT16U(buf, len, tmp_16u); 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) void bcu_send_0x73100000(can_dev_e can)
@ -552,7 +552,7 @@ void bcu_send_0x73100000(can_dev_e can)
tmp_8u = 1; tmp_8u = 1;
WRITE_LT_INT8U(buf, len, tmp_8u); 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) 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(); READ_FC03_F04_BEGIN();
//1 动力电池组总电压 //1 动力电池组总电压
READ_FC03_F04_ITEM(1, bms_get_statistic_data(kStatisticData_TotalVolt)); 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 动力电池组总电流 //2 动力电池组总电流
READ_FC03_F04_ITEM(2, bms_get_show_current()); READ_FC03_F04_ITEM(2, bms_get_show_current());
//3 SOC //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; BspMdExCode err = kBspMdEx_None;
//kit_time_dly_ms(50); //kit_time_dly_ms(50);
if((start_addr >= 3000) && (start_addr + reg_num <= 3169)) if((start_addr >= 3000) && (start_addr + reg_num <= 3169))
{ {
*len = bcu_total_cfg_fill(start_addr, reg_num, buf); *len = bcu_total_cfg_fill(start_addr, reg_num, buf);
} }
else if((start_addr >= 4000) && ((start_addr + reg_num ) <= 4999)) else if((start_addr >= 4000) && ((start_addr + reg_num ) <= 4999))
{ {
hmi_fill_modbus_cfg(fill_buf); hmi_fill_modbus_cfg(fill_buf);