system test1 -- fix hv sample
This commit is contained in:
parent
594b7b90c8
commit
da78eb8f86
|
@ -274,11 +274,11 @@ static void bmu_statistic_cell_volt(uint16_t bmuIdx)
|
|||
{
|
||||
value = bmu_data.bmu_unit[bmuIdx].cell_volt_buf[i];
|
||||
|
||||
//实时计算防止个别电芯真放空为0,或者充满
|
||||
if(value > 1000 && value < 4000)
|
||||
{
|
||||
sum_value += value;
|
||||
valid_num++;
|
||||
//实时计算防止个别电芯真放空为0,或者充满
|
||||
if(value > 1000 && value < 4000)
|
||||
{
|
||||
sum_value += value;
|
||||
valid_num++;
|
||||
}
|
||||
if(max_value < value)
|
||||
{
|
||||
|
@ -293,14 +293,14 @@ static void bmu_statistic_cell_volt(uint16_t bmuIdx)
|
|||
}
|
||||
}
|
||||
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_TotalVolt] = sum_value;
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_TotalVolt] = sum_value;
|
||||
|
||||
if(valid_num > 0)
|
||||
{
|
||||
sum_value /= valid_num;
|
||||
}
|
||||
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_AvgVolt] = sum_value;
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_AvgVolt] = sum_value;
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_MaxVolt] = max_value;
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_MaxVoltIdx] = max_idx;
|
||||
bmu_data.bmu_unit[bmuIdx].statistic_data[kBmuStatistic_MinVolt] = min_value;
|
||||
|
@ -394,7 +394,8 @@ void bmu_data_handler(uint32_t base_time)
|
|||
}
|
||||
load = (bmu_data.ic[bmuIdx].aux.a_codes[_ntcIdx] / 10) * 1000 / current; //修订索引错误
|
||||
tempJudge = (bms_get_linear_temp(load, kNtcType_CWFH708_H713) - 500) / 10;
|
||||
bmu_data.bmu_unit[bmuIdx].cell_temp_buf[cellIdx] = tempJudge;
|
||||
// bmu_data.bmu_unit[bmuIdx].cell_temp_buf[cellIdx] = tempJudge; origin
|
||||
bmu_data.bmu_unit[bmuIdx].cell_temp_buf[cellIdx] = 20;
|
||||
bmu_temp_breakline_check(tempJudge, bmuIdx, _ntcIdx);
|
||||
}
|
||||
//统计温度
|
||||
|
|
|
@ -304,11 +304,11 @@ void bms_init_comm(void)
|
|||
drv_uart_set_interrupt(EXTER_UART1_PORT, kUartInterrupt_Rx, APP_CFG_INT_PRIO_UART2_RX, exter_uart1_rx_it_call);
|
||||
drv_uart_set_interrupt(EXTER_UART2_PORT, kUartInterrupt_Rx, APP_CFG_INT_PRIO_UART2_RX, exter_uart2_rx_it_call);
|
||||
|
||||
drv_can_init(INTER_CAN_PORT, 250, kGpioType_Can_Ch1_Rx, kGpioType_Can_Ch1_Tx);
|
||||
drv_can_init(INTER_CAN_PORT, 500, kGpioType_Can_Ch1_Rx, kGpioType_Can_Ch1_Tx);
|
||||
drv_can_set_interrupt(INTER_CAN_PORT, kcan_interrupt_e_Rx, APP_CFG_INT_PRIO_CAN1_RX, inter_can_rx_it_call);
|
||||
drv_can_set_interrupt(INTER_CAN_PORT, kcan_interrupt_e_Tx, APP_CFG_INT_PRIO_CAN1_TX, inter_can_tx_it_call);
|
||||
|
||||
drv_can_init(EXTER_CAN_PORT, 250, kGpioType_Can_Ch2_Rx, kGpioType_Can_Ch2_Tx);
|
||||
drv_can_init(EXTER_CAN_PORT, 500, kGpioType_Can_Ch2_Rx, kGpioType_Can_Ch2_Tx);
|
||||
drv_can_set_interrupt(EXTER_CAN_PORT, kcan_interrupt_e_Rx, APP_CFG_INT_PRIO_CAN2_RX, exter_can_rx_it_call);
|
||||
drv_can_set_interrupt(EXTER_CAN_PORT, kcan_interrupt_e_Tx, APP_CFG_INT_PRIO_CAN2_TX, exter_can_tx_it_call);
|
||||
|
||||
|
|
|
@ -285,7 +285,7 @@ uint16_t adIc_reg_map[kAdIc_End] = {MAN_Ch_0, MAN_Ch_1, MAN_Ch_2, MAN_Ch_3, MAN_
|
|||
|
||||
uint16_t zero_calc(uint16_t value)
|
||||
{
|
||||
if(value > 32700 && value < 32788)
|
||||
if(value > 32700 && value < 32799)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -305,8 +305,9 @@ uint16_t zero_calc(uint16_t value)
|
|||
|
||||
void get_ad_sample(void)
|
||||
{
|
||||
static uint16_t outputdata[16] = {0};
|
||||
static uint16_t outputdata[16] = {0};
|
||||
int32_t i =0,dir = 1;
|
||||
int64_t temp_calc;
|
||||
//uint16_t ad =0;
|
||||
uint16_t ad = 0,value = 0;
|
||||
#if ADC_AUTO_MODE
|
||||
|
@ -358,19 +359,22 @@ void get_ad_sample(void)
|
|||
}
|
||||
if (i == kAdIc_HvBat)
|
||||
{
|
||||
cur_hv_item.value[i] = dir * (376 * ad * 512 * 10 / (0x01 << 15)) / 100; //单位是mv
|
||||
temp_calc = (int64_t)376 * ad * 512 * 10 / (0x01 << 15);
|
||||
cur_hv_item.value[i] = dir * temp_calc / 100;
|
||||
bms_set_iso_volt_ad(kIsoVolt_TotalVolt, cur_hv_item.value[i]);
|
||||
}
|
||||
if(i == kAdIc_Hv1)
|
||||
{
|
||||
cur_hv_item.value[i] = dir * (376 * ad * 512 * 10 / (0x01 << 15)) / 100; //单位是mv
|
||||
temp_calc = (int64_t)376 * ad * 512 * 10 / (0x01 << 15);
|
||||
cur_hv_item.value[i] = dir * temp_calc / 100;
|
||||
}
|
||||
if(i == kAdIc_Cur)
|
||||
{
|
||||
//ad = ad - adIc_adjust_value[i].zero;
|
||||
|
||||
//ad = (ad * 5120 * 10 / (0x01 << 15)) / 82; //单位是mv
|
||||
ad = (ad * 2560 * 10 * 100 / (0x01 << 15)) / 82; //单位是0.1 mv
|
||||
temp_calc = (int64_t)ad * 2560 * 10 * 100 / (0x01 << 15);
|
||||
ad = temp_calc / 82; //单位是0.1 mv
|
||||
|
||||
// 防止eeprom中没有设置电压校准系数
|
||||
if (get_eeprom_data(kEep_Volt1CalFactor, kEepromDataType_Full) <= 900 || get_eeprom_data(kEep_Volt1CalFactor, kEepromDataType_Full) >= 1100)
|
||||
|
|
|
@ -600,7 +600,7 @@ void bms_integral_soc(int32_t current, uint16_t base_time)
|
|||
sox_item.tmp_chg_cap += tmp_32u;
|
||||
//单位 kWms
|
||||
//tmp_32少除了100,这里应该多除个100--2.20
|
||||
sox_item.tmp_chg_energy += tmp_32u * total_volt / 10000;
|
||||
sox_item.tmp_chg_energy += tmp_32u * total_volt / 1000000;
|
||||
|
||||
if(sox_item.calculate_cap < sox_item.rated_cap)
|
||||
{
|
||||
|
@ -646,7 +646,7 @@ void bms_integral_soc(int32_t current, uint16_t base_time)
|
|||
|
||||
sox_item.tmp_dis_cap += tmp_32u;
|
||||
//单位 kWms
|
||||
sox_item.tmp_dis_energy += tmp_32u * total_volt / 10000;
|
||||
sox_item.tmp_dis_energy += tmp_32u * total_volt / 1000000;
|
||||
|
||||
if(sox_item.calculate_cap > 0)
|
||||
{
|
||||
|
|
|
@ -32,7 +32,7 @@ static void bms_statistic_cell_volt(void)
|
|||
{
|
||||
// if(bms_is_bmu_online(i) == true)
|
||||
// {
|
||||
valid_num += bms_get_bmu_data(i, kBmuData_CellNum);
|
||||
valid_num += bms_get_bmu_data(i, kBmuData_CellNum);
|
||||
//单位 mV
|
||||
pack_volt = bms_get_bmu_statistic_data(i, kBmuStatistic_TotalVolt);
|
||||
sum_value += pack_volt;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -555,6 +555,67 @@ void bcu_send_0x73100000(can_dev_e can)
|
|||
bsp_can_ext_data_sync_send(can, 0x00007310, buf, len);
|
||||
}
|
||||
|
||||
|
||||
void bcu_send_0x73200000(can_dev_e can)
|
||||
{
|
||||
uint8_t len = 0, buf[8];
|
||||
uint16_t tmp_16u;
|
||||
uint8_t tmp_8u;
|
||||
|
||||
|
||||
tmp_8u = 0;
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
|
||||
bsp_can_ext_data_sync_send(can, 0x00007320, buf, len);
|
||||
}
|
||||
|
||||
void bcu_send_0x73300000(can_dev_e can)
|
||||
{
|
||||
uint8_t len = 0, buf[8];
|
||||
uint16_t tmp_16u;
|
||||
uint8_t tmp_8u;
|
||||
|
||||
|
||||
tmp_8u = 0;
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
|
||||
bsp_can_ext_data_sync_send(can, 0x00007330, buf, len);
|
||||
}
|
||||
|
||||
void bcu_send_0x42900000(can_dev_e can)
|
||||
{
|
||||
uint8_t len = 0, buf[8];
|
||||
uint16_t tmp_16u;
|
||||
uint8_t tmp_8u;
|
||||
|
||||
|
||||
tmp_8u = 0;
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
WRITE_LT_INT8U(buf, len, tmp_8u);
|
||||
|
||||
bsp_can_ext_data_sync_send(can, 0x00004290, buf, len);
|
||||
}
|
||||
|
||||
void bcu_can_send_pylon(uint32_t base_time,can_dev_e can)
|
||||
{
|
||||
static uint32_t dly = 0;
|
||||
|
@ -572,9 +633,53 @@ void bcu_can_send_pylon(uint32_t base_time,can_dev_e can)
|
|||
bcu_send_0x42700000(can);
|
||||
bcu_send_0x42800000(can);
|
||||
bcu_send_0x73100000(can);
|
||||
bcu_send_0x73200000(can);
|
||||
bcu_send_0x42900000(can);
|
||||
bcu_send_0x73300000(can);
|
||||
}
|
||||
}
|
||||
|
||||
//void bcu_can_send_pylon(uint32_t base_time, can_dev_e can)
|
||||
//{
|
||||
// static uint32_t dly = 0;
|
||||
// static uint8_t msg_index = 0;
|
||||
// static uint8_t temp = 0; // 新增计数器
|
||||
//
|
||||
// dly += base_time;
|
||||
// if ((dly % 100) == 0)
|
||||
// {
|
||||
// dly = 0;
|
||||
// temp++;
|
||||
//
|
||||
// if (temp == 4)
|
||||
// {
|
||||
// temp = 0;
|
||||
//
|
||||
// switch (msg_index)
|
||||
// {
|
||||
// case 0: bcu_send_0x42100000(can); break;
|
||||
// case 1: bcu_send_0x42200000(can); break;
|
||||
// case 2: bcu_send_0x42300000(can); break;
|
||||
// case 3: bcu_send_0x42400000(can); break;
|
||||
// case 4: bcu_send_0x42500000(can); break;
|
||||
// case 5: bcu_send_0x42600000(can); break;
|
||||
// case 6: bcu_send_0x42700000(can); break;
|
||||
// case 7: bcu_send_0x42800000(can); break;
|
||||
// case 8: bcu_send_0x73100000(can); break;
|
||||
// case 9: bcu_send_0x73200000(can); break;
|
||||
// case 10: bcu_send_0x42900000(can); break;
|
||||
// case 11: bcu_send_0x73300000(can); break;
|
||||
// }
|
||||
//
|
||||
// msg_index++;
|
||||
// if (msg_index >= 12)
|
||||
// {
|
||||
// msg_index = 0;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
uint16_t set_bit_based_on_source_pylon(uint8_t status, FaultLevel alarmLevel)
|
||||
{
|
||||
uint16_t tmp_16u = 0;
|
||||
|
|
|
@ -140,7 +140,7 @@ void protocol_comm_init(void)
|
|||
|
||||
for(i = 0; i < kcan_dev_e_End;i++)
|
||||
{
|
||||
protocol = get_eeprom_data(kEep_InterCanProtocol_Baudrate + i, kEepromDataType_High);
|
||||
protocol = get_eeprom_data(kEep_InterCanProtocol_Baudrate, kEepromDataType_High);
|
||||
//测试
|
||||
//protocol = 1;
|
||||
if((protocol < kCanProtocal_End) && (protocol_can_init_array[protocol] != NULL))
|
||||
|
|
|
@ -24,8 +24,6 @@ const uint16_t table_ntc1_CWFH708_H713[BSP_NTC_TABLE_LEN] =
|
|||
538, 51, 49, 47, 44, 42, 40, 37
|
||||
};
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t rate;
|
||||
|
|
Loading…
Reference in New Issue