Browse Source

版本号为:1.2.1.21,新增工作状态切换时,传输频率选择

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
a9d4b052ac
2 changed files with 45 additions and 26 deletions
  1. 1 1
      inc/app.h
  2. 44 25
      src/TcpTask.c

+ 1 - 1
inc/app.h

@@ -34,7 +34,7 @@ extern "C" {
 #define HWVERSION		    0x0102    //硬件主版本,现为V1.2板
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01040000     //驱动层版本号V1.4.0.0
-#define	APPSWVERSION		0x01020114     
+#define	APPSWVERSION		0x01020115     
 
 //--------------------------------------------------------------------------------
 

+ 44 - 25
src/TcpTask.c

@@ -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;