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
{
kFaultLevel_Normal = 0,
kFaultLevel_First,
kFaultLevel_Normal = 0,
kFaultLevel_First,
kFaultLevel_Second,
kFaultLevel_Third,
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;
uint8_t tmp_8u, status;
uint16_t temp_second;
uint16_t temp_third;
uint16_t temp_first;
/* 基本状态
pylon bluesun
@ -398,18 +398,18 @@ void bcu_send_0x42500000(can_dev_e can)
//故障--无
tmp_8u = 0;
WRITE_LT_INT8U(buf, len, tmp_8u);
//告警--级放入告警中
//告警--二级放入告警中
//每个告警的位的位置需要测一下
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);
//保护--级放入保护中
//保护--级放入保护中
//每个告警的位的位置需要测一下
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);
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());
//12 在线从机总数
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, bms_get_cell_num());
//14 在线电池总数

View File

@ -92,13 +92,13 @@ uint32_t bms_get_baseInfo(uint16_t input)
tmp = bms_get_bmu_online_num();
return tmp;
case 13:
tmp = get_eeprom_data(kEep_CellNum, kEepromDataType_Full);
tmp = bms_get_cell_num();
return tmp;
case 14:
tmp = bms_get_statistic_data(kStatisticData_OnlineCellNum);
return tmp;
case 15:
tmp = get_eeprom_data(kEep_TempNum, kEepromDataType_Full);
tmp = bms_get_temp_num();
return tmp;
case 16:
tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum);
@ -346,6 +346,7 @@ uint32_t bms_get_fault_level_1(uint16_t input)
{
tmp = 0;
}
return tmp;
case 13:
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;
case 16:
tmp = bms_get_statistic_data(kStatisticData_OnlineTempNum);
return tmp;
break;
default:
return 0;
@ -501,6 +503,7 @@ uint32_t bms_get_fault_level_2(uint16_t input)
{
tmp = 0;
}
return tmp;
case 13:
if (KIT_GET_BIT_32(bms_get_fault_single_bit(1, kFaultLevel_Second), 12)) //2级极柱过温
{
@ -649,6 +652,7 @@ uint32_t bms_get_fault_level_3(uint16_t input)
{
tmp = 0;
}
return tmp;
case 13:
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;
}
return tmp;
case 15:
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;
}
return tmp;
case 16:
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;
}
return tmp;
case 17:
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;
}
return tmp;
default:
return 0;
}
@ -1089,7 +1097,17 @@ void mqtt_publish_bms_data(uint32_t basetime)
// 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!\"");
mqtt_cycle_tick = 0;
publish_all_bms_groups();

File diff suppressed because it is too large Load Diff