|
@@ -229,36 +229,55 @@ static void TcpDataInfoAssembleSend()
|
|
|
INT16 Batt_current;
|
|
|
UINT16 BattU;
|
|
|
UINT8 temp=0;
|
|
|
- UINT8 TEMP_NUM=0;
|
|
|
- TEMP_NUM = BATT_TEMP_NUM+2;//TEMP_NUM为BMS温度总检测数量
|
|
|
+
|
|
|
UINT16 DataLen;
|
|
|
UINT8 BattSendFreq;
|
|
|
UINT8 GpsSendFreq;
|
|
|
+ UINT8 WorkState;
|
|
|
+ static UINT8 WorkFlag;
|
|
|
osMutexAcquire(UartMutex, osWaitForever);
|
|
|
- if((UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03)==0x00)
|
|
|
+ WorkState = (UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03);
|
|
|
+ osMutexRelease(UartMutex);
|
|
|
+ if(WorkState==0x00 && WorkFlag==0x01)
|
|
|
{
|
|
|
- BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
|
|
|
- GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
|
|
|
+ if(send_counter%20==0)
|
|
|
+ {
|
|
|
+ WorkFlag=0x00;
|
|
|
+ }
|
|
|
}
|
|
|
- else if((UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03)==0x01)
|
|
|
+ else if(WorkState==0x00 && WorkFlag==0x02)
|
|
|
{
|
|
|
- BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
|
|
|
- GpsSendFreq = AppDataInfo.GpsDisChrgInfoSendFreq/5;
|
|
|
+ if(send_counter%60==0)
|
|
|
+ {
|
|
|
+ WorkFlag=0x00;
|
|
|
+ }
|
|
|
}
|
|
|
- else if((UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03)==0x02)
|
|
|
+ else
|
|
|
{
|
|
|
- BattSendFreq = AppDataInfo.BmsChrgInfoSendFreq/5;
|
|
|
- GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
|
|
|
+ WorkFlag=WorkState;
|
|
|
}
|
|
|
- else
|
|
|
+ switch(WorkFlag)
|
|
|
{
|
|
|
- BattSendFreq = 6;
|
|
|
- GpsSendFreq = 6;
|
|
|
- }
|
|
|
+ case 0x00:
|
|
|
+ BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
|
|
|
+ GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
|
|
|
+ break;
|
|
|
+ case 0x01:
|
|
|
+ BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
|
|
|
+ GpsSendFreq = AppDataInfo.GpsDisChrgInfoSendFreq/5;
|
|
|
+ break;
|
|
|
+ case 0x02:
|
|
|
+ BattSendFreq = AppDataInfo.BmsChrgInfoSendFreq/5;
|
|
|
+ GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
|
|
|
+ GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
|
|
|
+ break;
|
|
|
+ }
|
|
|
#ifdef USING_PRINTF
|
|
|
printf("send_counter= %x,BattSendFreq= %x,GpsSendFreq= %x,UartReadMsg:%x\n",send_counter,BattSendFreq,GpsSendFreq,UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]);
|
|
|
#endif
|
|
|
- osMutexRelease(UartMutex);
|
|
|
if(send_counter%BattSendFreq==0)
|
|
|
{
|
|
|
osStatus_t result = osMutexAcquire(UartMutex, osWaitForever);
|
|
@@ -313,7 +332,7 @@ static void TcpDataInfoAssembleSend()
|
|
|
BattToTcpInfo.battInfo.battLinkVol[1] = BattU & 0xFF;
|
|
|
BattToTcpInfo.battInfo.battPackVol[0] = BattU >> 8;
|
|
|
BattToTcpInfo.battInfo.battPackVol[1] = BattU & 0xFF;
|
|
|
- temp = ((UartReadMsg.data[(0x09+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1])>>1)&0x03;
|
|
|
+ temp = ((UartReadMsg.data[(0x09+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1])>>1)&0x03;
|
|
|
if(AppNVMData.isBattLocked==TRUE)
|
|
|
{
|
|
|
BattToTcpInfo.battInfo.switchState = ((temp&0x01)<<1)|((temp&0x02)>>1)|0x01<<2;
|
|
@@ -322,9 +341,9 @@ static void TcpDataInfoAssembleSend()
|
|
|
{
|
|
|
BattToTcpInfo.battInfo.switchState = ((temp&0x01)<<1)|((temp&0x02)>>1)|0x00<<2;
|
|
|
}
|
|
|
- BattToTcpInfo.battInfo.battSOC = UartReadMsg.data[(0x0B+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
- BattToTcpInfo.battInfo.battSOH = UartReadMsg.data[(0x0C+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
- memcpy(BattToTcpInfo.battInfo.batCellBalenceState,&UartReadMsg.data[(0x06+BATT_CELL_VOL_NUM+TEMP_NUM)*2],4);
|
|
|
+ BattToTcpInfo.battInfo.battSOC = UartReadMsg.data[(0x0B+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1];
|
|
|
+ BattToTcpInfo.battInfo.battSOH = UartReadMsg.data[(0x0C+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1];
|
|
|
+ memcpy(BattToTcpInfo.battInfo.batCellBalenceState,&UartReadMsg.data[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2],4);
|
|
|
BattToTcpInfo.battInfo.battCellNum= BATT_CELL_VOL_NUM ;
|
|
|
memcpy(BattToTcpInfo.battInfo.battCellU,&UartReadMsg.data[0x04],BATT_CELL_VOL_NUM_2);
|
|
|
BattToTcpInfo.battInfo.battTempNum = BATT_TEMP_NUM;
|
|
@@ -333,7 +352,7 @@ static void TcpDataInfoAssembleSend()
|
|
|
BattToTcpInfo.battInfo.battCellTemp[i] = UartReadMsg.data[(0x06+BATT_CELL_VOL_NUM+i)*2+1];
|
|
|
}
|
|
|
BattToTcpInfo.battInfo.battWorkState =UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]&0x03;//电池状态,0表示静置,1表示放电,2表示充电
|
|
|
- BattToTcpInfo.battInfo.battHeatState = UartReadMsg.data[(0x1C+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
|
|
|
+ BattToTcpInfo.battInfo.battHeatState = UartReadMsg.data[(0x1C+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1];
|
|
|
BattToTcpInfo.battInfo.battotherTempNum = BATT_OTHER_TEMP_NUM;//其他温度编号(包含环境温度mos温度以及接插件温度)2021-03-24其他温度修改
|
|
|
BattToTcpInfo.battInfo.battotherTemp[0] = UartReadMsg.data[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM)*2+1];
|
|
|
BattToTcpInfo.battInfo.battotherTemp[1] = UartReadMsg.data[(0x06+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+1)*2+1];
|
|
@@ -414,12 +433,12 @@ static void TcpDataInfoAssembleSend()
|
|
|
memcpy(VerMsgToTcpInfo.VerInfo.ICCID,iccid,20);
|
|
|
memcpy(VerMsgToTcpInfo.VerInfo.IMEI,imei,15);
|
|
|
osMutexAcquire(UartMutex, osWaitForever);//Bms版本号上传2021-03-24修改
|
|
|
- VerMsgToTcpInfo.VerInfo.BMSHwVersion[0] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]/10;
|
|
|
- VerMsgToTcpInfo.VerInfo.BMSHwVersion[1] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]%10;
|
|
|
+ VerMsgToTcpInfo.VerInfo.BMSHwVersion[0] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1]/10;
|
|
|
+ VerMsgToTcpInfo.VerInfo.BMSHwVersion[1] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2+1]%10;
|
|
|
VerMsgToTcpInfo.VerInfo.BMSSwVersion[0] = 0;
|
|
|
VerMsgToTcpInfo.VerInfo.BMSSwVersion[1] = 0;
|
|
|
- VerMsgToTcpInfo.VerInfo.BMSSwVersion[2] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2]/10;
|
|
|
- VerMsgToTcpInfo.VerInfo.BMSSwVersion[3] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+TEMP_NUM)*2]%10;
|
|
|
+ VerMsgToTcpInfo.VerInfo.BMSSwVersion[2] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2]/10;
|
|
|
+ VerMsgToTcpInfo.VerInfo.BMSSwVersion[3] = UartReadMsg.data[(0x08+BATT_CELL_VOL_NUM+BATT_TEMP_NUM+BATT_OTHER_TEMP_NUM)*2]%10;
|
|
|
osMutexRelease(UartMutex);
|
|
|
VerMsgToTcpInfo.VerInfo.NBHwVersion[0] = (HWVERSION>>8)& 0xFF;
|
|
|
VerMsgToTcpInfo.VerInfo.NBHwVersion[1] = (HWVERSION)& 0xFF;
|