forked from gary/BCU
2
0
Fork 0

加入了是否已经连接mqtt服务器的检测,只有当连接失败的时候,才会重连mqtt服务器,减少tcp请求,节省服务器资源

This commit is contained in:
Carl 2025-05-16 10:24:56 +08:00
parent b6552b8b21
commit 05a9411a6c
6 changed files with 8285 additions and 8813 deletions

View File

@ -166,8 +166,8 @@ typedef enum
//******报警级别******// //******报警级别******//
typedef enum typedef enum
{ {
kFaultLevel_Normal = 0, kFaultLevel_Normal = 0,
kFaultLevel_First, kFaultLevel_First,
kFaultLevel_Second, kFaultLevel_Second,
kFaultLevel_Third, kFaultLevel_Third,
kFaultLevel_End, kFaultLevel_End,

File diff suppressed because it is too large Load Diff

View File

@ -363,7 +363,7 @@ void bcu_send_0x42500000(can_dev_e can)
uint16_t tmp_16u; uint16_t tmp_16u;
uint8_t tmp_8u, status; uint8_t tmp_8u, status;
uint16_t temp_second; uint16_t temp_second;
uint16_t temp_third; uint16_t temp_first;
/* 基本状态 /* 基本状态
pylon bluesun pylon bluesun
@ -398,18 +398,18 @@ void bcu_send_0x42500000(can_dev_e can)
//故障--无 //故障--无
tmp_8u = 0; tmp_8u = 0;
WRITE_LT_INT8U(buf, len, tmp_8u); WRITE_LT_INT8U(buf, len, tmp_8u);
//告警--级放入告警中 //告警--二级放入告警中
//每个告警的位的位置需要测一下 //每个告警的位的位置需要测一下
temp_second = set_bit_based_on_source_pylon(status, kFaultLevel_Second); temp_second = set_bit_based_on_source_pylon(status, kFaultLevel_Second);
temp_third = set_bit_based_on_source_pylon(status, kFaultLevel_Third); temp_first = set_bit_based_on_source_pylon(status, kFaultLevel_First);
tmp_16u = temp_second | temp_third; tmp_16u = temp_second | temp_first;
WRITE_LT_INT16U(buf, len, tmp_16u); WRITE_LT_INT16U(buf, len, tmp_16u);
//保护--级放入保护中 //保护--级放入保护中
//每个告警的位的位置需要测一下 //每个告警的位的位置需要测一下
tmp_16u = set_bit_based_on_source_pylon(status, kFaultLevel_First); tmp_16u = set_bit_based_on_source_pylon(status, kFaultLevel_Third);
WRITE_LT_INT16U(buf, len, tmp_16u); WRITE_LT_INT16U(buf, len, tmp_16u);
bsp_can_ext_data_sync_send(can, 0x00004250, buf, len); bsp_can_ext_data_sync_send(can, 0x00004250, buf, len);

View File

@ -126,7 +126,7 @@ uint16_t bcu_total_msg_fill(uint16_t start_addr, uint8_t reg_num, uint8_t *buf)
READ_FC03_F04_ITEM(11, bms_get_bmu_num()); READ_FC03_F04_ITEM(11, bms_get_bmu_num());
//12 在线从机总数 //12 在线从机总数
READ_FC03_F04_ITEM(12, bms_get_bmu_online_num()); READ_FC03_F04_ITEM(12, bms_get_bmu_online_num());
//13 电池总数 //13 电池总数 电芯总数
//READ_FC03_F04_ITEM(13, get_eeprom_data(kEep_CellNum, kEepromDataType_Full)); //READ_FC03_F04_ITEM(13, get_eeprom_data(kEep_CellNum, kEepromDataType_Full));
READ_FC03_F04_ITEM(13, bms_get_cell_num()); READ_FC03_F04_ITEM(13, bms_get_cell_num());
//14 在线电池总数 //14 在线电池总数

View File

@ -86,19 +86,19 @@ uint32_t bms_get_baseInfo(uint16_t input)
tmp = (uint32_t)bms_get_soc() * get_eeprom_data(kEep_RatedCapacity, kEepromDataType_Full)/10000*get_eeprom_data(kEep_RatedTotalVolt, kEepromDataType_Full)/10000; tmp = (uint32_t)bms_get_soc() * get_eeprom_data(kEep_RatedCapacity, kEepromDataType_Full)/10000*get_eeprom_data(kEep_RatedTotalVolt, kEepromDataType_Full)/10000;
return tmp; return tmp;
case 11: case 11:
tmp = bms_get_bmu_num(); tmp = bms_get_bmu_num();
return tmp; return tmp;
case 12: case 12:
tmp = bms_get_bmu_online_num(); tmp = bms_get_bmu_online_num();
return tmp; return tmp;
case 13: case 13:
tmp = get_eeprom_data(kEep_CellNum, kEepromDataType_Full); tmp = bms_get_cell_num();
return tmp; return tmp;
case 14: case 14:
tmp = bms_get_statistic_data(kStatisticData_OnlineCellNum); tmp = bms_get_statistic_data(kStatisticData_OnlineCellNum);
return tmp; return tmp;
case 15: case 15:
tmp = get_eeprom_data(kEep_TempNum, kEepromDataType_Full); tmp = bms_get_temp_num();
return tmp; return tmp;
case 16: case 16:
tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum); tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum);
@ -346,6 +346,7 @@ uint32_t bms_get_fault_level_1(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 13: case 13:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_First), 12)) //1级极柱过温 if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_First), 12)) //1级极柱过温
{ {
@ -371,6 +372,7 @@ uint32_t bms_get_fault_level_1(uint16_t input)
return tmp; return tmp;
case 16: case 16:
tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum); tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum);
return tmp;
break; break;
default: default:
return 0; return 0;
@ -501,6 +503,7 @@ uint32_t bms_get_fault_level_2(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 13: case 13:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Second), 12)) //2级极柱过温 if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Second), 12)) //2级极柱过温
{ {
@ -640,7 +643,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
tmp = 0; tmp = 0;
} }
return tmp; return tmp;
case 12: case 12:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(0, kFaultLevel_Third), 1)) //3级总压欠压--组端欠压 if (KIT_GET_BIT_32(bms_get_fault_single_bit(0, kFaultLevel_Third), 1)) //3级总压欠压--组端欠压
{ {
tmp = 1; tmp = 1;
@ -649,6 +652,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 13: case 13:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Third), 12)) //3级极柱过温 if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Third), 12)) //3级极柱过温
{ {
@ -668,6 +672,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 15: case 15:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(2, kFaultLevel_Third), 9)) //极限故障 if (KIT_GET_BIT_32(bms_get_fault_single_bit(2, kFaultLevel_Third), 9)) //极限故障
{ {
@ -677,6 +682,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 16: case 16:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Third), 1)) //预充故障 if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Third), 1)) //预充故障
{ {
@ -686,6 +692,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
case 17: case 17:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(2, kFaultLevel_Third), 10)) //开路故障 if (KIT_GET_BIT_32(bms_get_fault_single_bit(2, kFaultLevel_Third), 10)) //开路故障
{ {
@ -695,6 +702,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{ {
tmp = 0; tmp = 0;
} }
return tmp;
default: default:
return 0; return 0;
} }
@ -1089,7 +1097,17 @@ void mqtt_publish_bms_data(uint32_t basetime)
// mqtt_init_flag = 0; // mqtt_init_flag = 0;
// } // }
// } // }
drv_mqtt_connect();
if (!drv_at_send_cmd("AT+QMTCONN?", "0,3\0", WIFI_TIMEOUT))
{
drv_mqtt_connect();
}
// else //@wangk add 5-16,这段注释可以证明上述if起作用了只有检测没有连接到mqtt的时候才会执行连接函数避免消耗资源
// {
// drv_mqtt_publish_no_respose("1", 1);
// }
// drv_wireless_send_string("AT+QMTPUB=0,1,2,0,\"BCU01\",17,\"Hello from FC41D!\""); // drv_wireless_send_string("AT+QMTPUB=0,1,2,0,\"BCU01\",17,\"Hello from FC41D!\"");
mqtt_cycle_tick = 0; mqtt_cycle_tick = 0;
publish_all_bms_groups(); publish_all_bms_groups();

File diff suppressed because it is too large Load Diff