Selaa lähdekoodia

2.3.0.18 1、三轴上传协议更改,2、新增保护状态和剩余容量解析,3、新增参数调试信息上传

CHENJIE-PC\QiXiang_CHENJIE 3 vuotta sitten
vanhempi
commit
75d894b62f
8 muutettua tiedostoa jossa 102 lisäystä ja 41 poistoa
  1. 4 8
      inc/Signal.h
  2. 3 3
      inc/TcpTask.h
  3. 1 1
      inc/app.h
  4. 18 18
      src/CANEncode.c
  5. 1 1
      src/MainTask.c
  6. 4 6
      src/Signal.c
  7. 69 4
      src/TcpTask.c
  8. 2 0
      src/UartTask.c

+ 4 - 8
inc/Signal.h

@@ -20,14 +20,6 @@ extern	UINT8	bmsSwVersion;
 extern	UINT8	bmsHwVersion;
 extern	UINT8	battMOSSwitchState;
 extern	UINT8	battHeatEnableState;
-extern	UINT8	reservedSignal1;
-extern	UINT8	reservedSignal2;
-extern	UINT8	reservedSignal3;
-extern	UINT8	reservedSignal4;
-extern	UINT8	reservedSignal5;
-extern	UINT8	reservedSignal6;
-extern	UINT8	reservedSignal7;
-extern	UINT8	reservedSignal8;
 extern  UINT8   RelayControlState;
 extern  UINT8	BuzzerControl;
 extern  UINT8   CanMsgFlag;
@@ -49,6 +41,10 @@ extern	UINT32	battWarningState;
 extern	UINT32	nbSwVersion;
 extern	UINT32	battBalanceoInfo;
 extern  UINT32  Battdesigncap;
+extern  UINT32  BattRemainCap;
+extern  UINT32  battProtectState;
+
+
 
 extern UINT16   ErrorNum[5];//故障代码
 extern UINT8 	TcpSendLen;

+ 3 - 3
inc/TcpTask.h

@@ -106,9 +106,9 @@ typedef struct _GPSInfoType
 	UINT8   AccMileage[4];
 	UINT8   Tac[2];
 	UINT8 	CellId[4];
-	UINT8   xData;
-	UINT8   yData;
-	UINT8	zData;
+	UINT8   xData[2];
+	UINT8   yData[2];
+	UINT8	zData[2];
 }GPSInfoType;
 typedef struct GPSMsgtoTcpType
 {

+ 1 - 1
inc/app.h

@@ -51,7 +51,7 @@ extern "C" {
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
 #define	DRVSWVERSION		0x01050000     //驱动层版本号V1.4.0.0  驱动层1.5.0.0,增加了三轴
 //#define	APPSWVERSION		0x01020209     
-#define	APPSWVERSION		0x02030011
+#define	APPSWVERSION		0x02030012
 //#define	APPSWVERSION		0x0201000E
 //--------------------------------------------------------------------------------
 

+ 18 - 18
src/CANEncode.c

@@ -97,14 +97,14 @@ void CANEncodeFunction(UINT32 ID,UINT8* rawData)
 			*(UINT8*)(rawData +5) =battHeatEnableState&0xFF;
 			break;
 		case	0x6C4:
-			*(UINT8*)(rawData +0) =reservedSignal1&0xFF;
-			*(UINT8*)(rawData +1) =reservedSignal2&0xFF;
-			*(UINT8*)(rawData +2) =reservedSignal3&0xFF;
-			*(UINT8*)(rawData +3) =reservedSignal4&0xFF;
-			*(UINT8*)(rawData +4) =reservedSignal5&0xFF;
-			*(UINT8*)(rawData +5) =reservedSignal6&0xFF;
-			*(UINT8*)(rawData +6) =reservedSignal7&0xFF;
-			*(UINT8*)(rawData +7) =reservedSignal8&0xFF;
+			*(UINT8*)(rawData +0) =0xFF;
+			*(UINT8*)(rawData +1) =0xFF;
+			*(UINT8*)(rawData +2) =0xFF;
+			*(UINT8*)(rawData +3) =0xFF;
+			*(UINT8*)(rawData +4) =0xFF;
+			*(UINT8*)(rawData +5) =0xFF;
+			*(UINT8*)(rawData +6) =0xFF;
+			*(UINT8*)(rawData +7) =0xFF;
 			break;
 		case	0x7C0:
 			*(UINT16*)(rawData +0) = ((battCellU[0]>>8) & 0xFF) | (((battCellU[0]&0xFF)<<8)&0xFF00);
@@ -194,14 +194,14 @@ void CANEncodeFunction(UINT32 ID,UINT8* rawData)
 			*(UINT8*)(rawData +5) =battHeatEnableState&0xFF;
 			break;
 		case	0x7CD:
-			*(UINT8*)(rawData +0) =reservedSignal1&0xFF;
-			*(UINT8*)(rawData +1) =reservedSignal2&0xFF;
-			*(UINT8*)(rawData +2) =reservedSignal3&0xFF;
-			*(UINT8*)(rawData +3) =reservedSignal4&0xFF;
-			*(UINT8*)(rawData +4) =reservedSignal5&0xFF;
-			*(UINT8*)(rawData +5) =reservedSignal6&0xFF;
-			*(UINT8*)(rawData +6) =reservedSignal7&0xFF;
-			*(UINT8*)(rawData +7) =reservedSignal8&0xFF;
+			*(UINT8*)(rawData +0) =battProtectState&0xFF;
+			*(UINT8*)(rawData +1) =(battProtectState>>8)&0xFF;
+			*(UINT8*)(rawData +2) =(battProtectState>>16)&0xFF;
+			*(UINT8*)(rawData +3) =(battProtectState>>24)&0xFF;
+			*(UINT8*)(rawData +4) =0xFF;
+			*(UINT8*)(rawData +5) =0xFF;
+			*(UINT8*)(rawData +6) =0xFF;
+			*(UINT8*)(rawData +7) =0xFF;
 			break;
 		case 0x7CE:
 			*(UINT8*)(rawData +0) =(xzyDataSend[0]>>8)&0xFF;
@@ -210,8 +210,8 @@ void CANEncodeFunction(UINT32 ID,UINT8* rawData)
 			*(UINT8*)(rawData +3) =(xzyDataSend[1])&0xFF;
 			*(UINT8*)(rawData +4) =(xzyDataSend[2]>>8)&0xFF;
 			*(UINT8*)(rawData +5) =(xzyDataSend[2])&0xFF;
-			*(UINT8*)(rawData +6) =reservedSignal8&0xFF;
-			*(UINT8*)(rawData +7) =reservedSignal8&0xFF;
+			*(UINT8*)(rawData +6) =0xFF;
+			*(UINT8*)(rawData +7) =0xFF;
 			break;
 
 		case	0x7B0:

+ 1 - 1
src/MainTask.c

@@ -302,7 +302,7 @@ static void MainTask(void* arg)
                     printf("which slpstate can go now :%d \n",slpstate);
                 #endif
                 #ifdef DEBUGLOG
-                    Debug_printf("slp-%d,%d,%d,%d\n",slpstate,AppDataInfo.AccMileage,AppDataInfo.SysReStart,Battdesigncap);
+                    Debug_printf("slp-%d,%d\n",slpstate,AppDataInfo.SysReStart);
                 #endif
                 slpManDeepSlpTimerStart(deepslpTimerID, AppNVMData.sleepTime*1000*60);
                 UINT8 sleeptime_count=0;

+ 4 - 6
src/Signal.c

@@ -51,10 +51,7 @@ UINT8	bmsSwVersion = 0xFF;
 UINT8	bmsHwVersion = 0xFF;
 UINT8	battMOSSwitchState = 0xFF;
 UINT8	battHeatEnableState = 0xFF;
-UINT8	reservedSignal1 = 0x00;
-UINT8	reservedSignal2 = 0x00;
-UINT8	reservedSignal3 = 0x00;
-UINT8	reservedSignal4 = 0x00;
+
 UINT8	reservedSignal5 = 0x00;
 UINT8	reservedSignal6 = 0x00;
 UINT8	reservedSignal7 = 0x00;
@@ -79,8 +76,9 @@ INT16 xzyDataSend[3] = {0};
 UINT32	battWarningState = 0xFFFFFFFF;
 UINT32	nbSwVersion = 0xFFFFFFFF;
 UINT32	battBalanceoInfo = 0xFFFFFFFF;
-
-UINT32 Battdesigncap =0xFFFFFFFF;
+UINT32  BattRemainCap = 0x00;
+UINT32  Battdesigncap =0x00;
+UINT32  battProtectState =0x00; 
 //Tcp
 UINT8 	TcpSendLen = 0;
 

+ 69 - 4
src/TcpTask.c

@@ -479,9 +479,26 @@ static void TcpDataInfoAssembleSend()
         GpsToTcpInfo.gpsInfo.CellId[1] = CellId>>16;
         GpsToTcpInfo.gpsInfo.CellId[2] = CellId>>8;
         GpsToTcpInfo.gpsInfo.CellId[3] = CellId;
-        GpsToTcpInfo.gpsInfo.xData =  (xzyDataSend[0]/100)+100;
-        GpsToTcpInfo.gpsInfo.yData =  (xzyDataSend[1]/100)+100;
-        GpsToTcpInfo.gpsInfo.zData =  (xzyDataSend[2]/100)+100;
+        UINT16 xyzDatacahce[3] = {0};
+        memcpy(xyzDatacahce,xzyDataSend,sizeof(xzyDataSend));
+        for (UINT8 i = 0; i < 3; i++)
+        {
+            if(xyzDatacahce[i]>0x8000)// 数据为负
+            {
+                xyzDatacahce[i] = (UINT16)((UINT16)(~(xyzDatacahce[i]))+1);
+                xyzDatacahce[i] = 20000U - xyzDatacahce[i];
+            }
+            else
+            {
+                xyzDatacahce[i]  = xyzDatacahce[i] + 20000U;
+            }
+        }
+        GpsToTcpInfo.gpsInfo.xData[0] = xyzDatacahce[0]>>8;
+        GpsToTcpInfo.gpsInfo.xData[1] = xyzDatacahce[0];
+        GpsToTcpInfo.gpsInfo.yData[0] = xyzDatacahce[1]>>8;
+        GpsToTcpInfo.gpsInfo.yData[1] = xyzDatacahce[1];
+        GpsToTcpInfo.gpsInfo.zData[0] = xyzDatacahce[2]>>8;
+        GpsToTcpInfo.gpsInfo.zData[1] = xyzDatacahce[2];
         GpsToTcpInfo.CRC = bcc_chk((UINT8 *)&GpsToTcpInfo, sizeof(GPSMsgtoTcpType)-1 );
         osMutexRelease(GpsMutex);
         //if(GpsToTcpInfo.gpsInfo.locateMark==0x01)
@@ -586,7 +603,55 @@ static void TcpDataInfoAssembleSend()
             }
         }
     }
-    if(send_counter==0)//发送本次文件中的调试信息
+    if(send_counter%60==0)//发送调试信息,此处发送参数信息
+    {
+        DebugMsgtoTcpType DebugMsgInfo;
+        UINT8 *SendBuffer = NULL;
+        UINT16 BufferLen = 20;
+        UINT8 rbuf[BufferLen];
+        sprintf((char *)rbuf,"%d,%d,%x",AppDataInfo.AccMileage,BattRemainCap,battProtectState);//累计里程,剩余容量,循环次数
+        SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));
+        memcpy(SendBuffer+sizeof(DebugMsgInfo)-1, rbuf,BufferLen);
+        appGetSystemTimeUtcSync(&TimeStracture);
+        year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
+        month=(TimeStracture.UTCtimer1&0xff00)>>8;
+        day=TimeStracture.UTCtimer1&0xff;
+        hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
+        minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
+        sec=(TimeStracture.UTCtimer2&0xff00)>>8;
+        UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
+        DataLen=sizeof(DebugMsgInfo.DebugInfo) + BufferLen;
+        DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
+	    DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
+	    DebugMsgInfo.cmdSymbol = TCP_CMD_SYM;
+	    DebugMsgInfo.ansSymbol = TCP_ANS_SYM;
+        memcpy(DebugMsgInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
+        DebugMsgInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
+	    DebugMsgInfo.dataLength[0] = (DataLen>>8) & 0xFF;
+	    DebugMsgInfo.dataLength[1] = DataLen & 0xFF;
+        DebugMsgInfo.DebugInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF;	//year
+        DebugMsgInfo.DebugInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF;								//month
+        DebugMsgInfo.DebugInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF;									//day
+        DebugMsgInfo.DebugInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF;  						    //hour
+        DebugMsgInfo.DebugInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF;						    //mins
+        DebugMsgInfo.DebugInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF;							//sec
+        DebugMsgInfo.DebugInfo.msgMark = DEBUGMSG;
+        DebugMsgInfo.DebugInfo.DebugLen[0] = BufferLen>>8;
+        DebugMsgInfo.DebugInfo.DebugLen[1] = BufferLen;
+        memcpy(SendBuffer,(UINT8 *)&DebugMsgInfo,sizeof(DebugMsgInfo)-1);
+        DebugMsgInfo.CRC = bcc_chk(SendBuffer, BufferLen+sizeof(DebugMsgInfo)-1);
+        memcpy(SendBuffer+BufferLen+sizeof(DebugMsgInfo)-1,&DebugMsgInfo.CRC,1);
+        len = tcpipConnectionSend(socContext.id, SendBuffer, BufferLen+sizeof(DebugMsgInfo), 0, 0, 0);
+        #ifdef USING_PRINTF1
+            printf("DebugMsgInfo!\n");
+            UINT8* p = SendBuffer;
+            for(i =0 ;i<BufferLen+sizeof(DebugMsgInfo);i++)
+                printf("%x ",*(p+i));
+        #endif
+        Debug_Del_Logfile();
+        free(SendBuffer);
+    }
+        if(send_counter==0)//发送本次文件中的调试信息,此处发送文件信息
     {
         DebugMsgtoTcpType DebugMsgInfo;
         UINT8 *SendBuffer = NULL;

+ 2 - 0
src/UartTask.c

@@ -439,6 +439,8 @@ static BOOL uartBattInfoDecode(UINT8* dataPtr)
     battSOC = dataPtr[(0x0B+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
     battSOH = dataPtr[(0x0C+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1];
 	Battdesigncap = (dataPtr[(0x0E+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<24|(dataPtr[(0x0E+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1])<<16|(dataPtr[(0x0F+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<8|(dataPtr[(0x0F+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]);
+	BattRemainCap = (dataPtr[(0x12+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<24|(dataPtr[(0x12+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1])<<16|(dataPtr[(0x13+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<8|(dataPtr[(0x13+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]);
+	battProtectState = (dataPtr[(0x03+BATT_CELL_VOL_NUM)*2+0]<<24) | (dataPtr[(0x04+BATT_CELL_VOL_NUM)*2+0] << 16) |(dataPtr[(0x04+BATT_CELL_VOL_NUM)*2+1]<<8) | (dataPtr[(0x05+BATT_CELL_VOL_NUM)*2+1]);
 	battPackVol =((dataPtr[(0x18+BATT_CELL_VOL_NUM+TEMP_NUM)*2])<<8|(dataPtr[(0x18+BATT_CELL_VOL_NUM+TEMP_NUM)*2+1]))/10;  //uint 100mV
 	maxCellVol = (dataPtr[(0x19+BATT_CELL_VOL_NUM+TEMP_NUM)*2] << 8) | dataPtr[(0x19+BATT_CELL_VOL_NUM+TEMP_NUM)*2 + 1];
 	minCellVol = (dataPtr[(0x1A+BATT_CELL_VOL_NUM+TEMP_NUM)*2] << 8) | dataPtr[(0x1A+BATT_CELL_VOL_NUM+TEMP_NUM)*2 + 1];