Преглед изворни кода

fix the set parameter , update 119x protocol

guoqiang пре 3 година
родитељ
комит
3477c186fa
3 измењених фајлова са 396 додато и 19 уклоњено
  1. 4 0
      Core/Inc/kzq.h
  2. 371 11
      Core/Src/kzq.c
  3. 21 8
      Core/Src/main.c

+ 4 - 0
Core/Inc/kzq.h

@@ -24,6 +24,9 @@ extern void Flash_WriteBytes(uint16_t* sorBuf,uint32_t FlashAddr,uint16_t len);
 extern void Cang_Init(void);
 
 extern uint16_t Read_CangSensorData(uint8_t* pTx);
+
+extern uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num); // add by guoqiang	
+#if 0
 extern uint16_t Read_CangSensorData_1(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_2(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_3(uint8_t* pTx);
@@ -32,6 +35,7 @@ extern uint16_t Read_CangSensorData_5(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_6(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_7(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_8(uint8_t* pTx);
+#endif 
 extern uint16_t Read_ZhencheSensorData1(uint8_t* pTx);
 extern uint16_t Read_CangSensorData_1to4(uint8_t* pTx);
 extern uint16_t Read_CangState(uint8_t* pTx);

+ 371 - 11
Core/Src/kzq.c

@@ -428,6 +428,8 @@ uint16_t Read_ZhencheSensorData1(uint8_t* pTx)
 
 	return 1;		
 }
+
+#if 0
 /*
 8仓数据读
 功能增加:	邵磊明  
@@ -2730,6 +2732,360 @@ uint16_t Read_CangSensorData_1(uint8_t* pTx)//
 	return 1;
 }
 
+#endif 
+/*
+1仓数据读
+功能增加:	邵磊明  
+*/
+uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqiang	
+{
+  //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1
+//	Angle_Inf* pangle = &angle_inf;											
+	TEM_Inf* ptem = tem_inf;
+//	KZQ_Inf* pkzq = &kzq_inf;
+	Level_Inf* plevel = level_inf;
+	HDF_Inf* phdf = hdf_inf;
+	Biguayou_Inf* pBGY = biguayou_inf;	
+	Cang_Inf* pcang = &cang_inf;
+	KZQ_Inf* pkzq = &kzq_inf;
+	RKG_Inf*  prkg  = rkg_inf;
+	XYF_Inf*  pxyf  = xyf_inf;
+	Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf;	
+//static float test_val=100;
+	extern	uint8_t ptxCang01Temp[150];
+	typedef union{
+   float float_temp;   //青鸟贵和磁致伸缩液位温度一体传感器
+   uint8_t arr[4];
+  }Hex_to_float;
+  Hex_to_float hex_to_float;
+    uint8_t i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0;
+	if(Cang_Num < 1 ||Cang_Num > 8)
+		return 0;
+	for(i = 0;i < Cang_Num - 1;i++)
+	{
+		HDF_Start += pcang->HDF_Num[i];
+		XYF_Start += pcang->XYF_Num[i];
+		RKG_Start += pcang->RKG_Num[i];
+		BGY_Start += pcang->BGY_Num[i];
+	}
+
+	for(i = 0;i < 4;i++)                       //铅封
+    {
+	   pTx[16+i] = 0;	   
+    }	
+	  pTx[20] = phdf[Cang_Num].HDF_OFData[1];    //浮球
+    pTx[21] = 0;
+	  pTx[22] = 0;
+    pTx[23] = 0;		
+	  pTx[24] = phdf[Cang_Num].HDF_OFState;      //活塞杆
+    pTx[25] = 0;
+	  pTx[26] = 0;
+    pTx[27] = 0;		 
+
+	  pTx[28] = pBGY[Cang_Num].BGY_SSWD[0];      //壁挂油光电
+    pTx[29] = 0;
+	  pTx[30] = 0;
+    pTx[31] = 0;		
+	  pTx[32] = pBGY[Cang_Num].BGY_SVAL[0];      //壁挂油霍尔
+    pTx[33] = 0;
+	  pTx[34] = 0;
+    pTx[35] = 0;		 
+		
+	  pTx[36] = pBGY[Cang_Num].BGY_SSWD[0];      //油气回收光电
+    pTx[37] = 0;
+	  pTx[38] = 0;
+    pTx[39] = 0;		
+	  pTx[40] = pBGY[Cang_Num].BGY_SVAL[0];      //油气回收霍尔
+    pTx[41] = 0;
+	  pTx[42] = 0;
+    pTx[43] = 0;				
+
+	// hdf 
+	if(pcang->HDF_Num[Cang_Num - 1] > 0)
+	{
+		for(i = 0;i < 4;i++){   //the max is 4
+			if(i<pcang->HDF_Num[Cang_Num - 1])
+				pTx[44+i]= phdf[HDF_Start+i+1].HDF_Error? State_Error:Get_DFState(HDF_Start+i+1);
+			else
+				pTx[44+i]=0xA5;
+		}
+	}else{
+		for(i = 0;i < 4;i++){
+			pTx[44+i]=0xA5;
+		}
+	}
+	
+	// xyf 
+	if(pcang->XYF_Num[Cang_Num - 1] > 0)
+	{
+			for(i = 0;i < 4;i++){   //the max is 4
+			if(i<pcang->XYF_Num[Cang_Num - 1])
+				pTx[48+i]= pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State1;
+			else
+				pTx[48+i]=0xA5;
+		}
+	}else{
+			for(i = 0;i < 4;i++){
+			pTx[48+i]=0xA5;
+		}
+	}
+	
+	//rkdg & rkxg
+	if(pcang->RKG_Num[Cang_Num - 1] > 0)
+	{
+			for(i = 0;i < 4;i++){   //the max is 4
+			if(i < pcang->RKG_Num[Cang_Num - 1]){
+				pTx[52+i]= prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKDG_State;
+				pTx[56+i]= prkg[RKG_Start+i+1].RKDG_Error? State_Error:prkg[RKG_Start+i+1].RKXG_State;
+			}
+			else{
+				pTx[52+i]=0xA5;
+				pTx[56+i]=0xA5;
+			}
+		}
+			
+	}else{
+			for(i = 0;i < 4;i++){
+				pTx[52+i]=0xA5;
+				pTx[56+i]=0xA5;
+		}
+	}
+	
+	
+		// xj status
+	if(pcang->XYF_Num[Cang_Num - 1] > 0)
+	{
+			for(i = 0;i < 4;i++){   //the max is 4
+			if(i<pcang->XYF_Num[Cang_Num - 1])
+				pTx[60+i]= pxyf[XYF_Start+i+1].XYF_Error? State_Error:pxyf[XYF_Start+i+1].XYF_State2;
+			else
+				pTx[60+i]=0xA5;
+		}
+	}else{
+			for(i = 0;i < 4;i++){
+			pTx[60+i]=0xA5;
+		}
+	}
+		
+	  pTx[56+8] = pBGY[Cang_Num].BGY_SVAL[0];      //大磁电
+    pTx[57+8] = 0;
+	  pTx[58+8] = 0;
+    pTx[59+8] = 0;		
+	  pTx[60+8] = pBGY[Cang_Num].BGY_SVAL[0];      //小磁电
+    pTx[61+8] = 0;
+	  pTx[62+8] = 0;
+    pTx[63+8] = 0;
+		
+	for(i = 0;i < 32;i++)                       //保留32Byte
+    {
+	   pTx[72+i] = 0;	   
+    }	
+		
+/*********************液位传感器数据**********************************/		
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[95+9] = 0;
+		pTx[96+9] = 0;
+		pTx[97+9] = 0;
+		pTx[98+9] = 0;
+		
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Level_Data1;		
+		pTx[95+9] = hex_to_float.arr[0];               
+		pTx[96+9] = hex_to_float.arr[1];
+		pTx[97+9] = hex_to_float.arr[2];
+		pTx[98+9] = hex_to_float.arr[3];
+		
+	}		
+	
+/**********************平均温度传感器数据**********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[99+9] = 0;
+		pTx[100+9] = 0;
+		pTx[101+9] = 0;
+		pTx[102+9] = 0;
+		
+	}
+	else
+	{
+    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f));	
+		pTx[99+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
+		pTx[100+9] = hex_to_float.arr[1];
+		pTx[101+9] = hex_to_float.arr[2];
+		pTx[102+9] = hex_to_float.arr[3];
+		
+	}
+/**********************高温度传感器数据**********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[103+9] = 0;
+		pTx[104+9] = 0;
+		pTx[105+9] = 0;
+		pTx[106+9] = 0;
+		
+	}
+	else
+	{
+    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_HData[1]*(0.1f));	
+		pTx[103+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
+		pTx[104+9] = hex_to_float.arr[1];
+		pTx[105+9] = hex_to_float.arr[2];
+		pTx[106+9] = hex_to_float.arr[3];
+		
+	}	
+/*********************中温度传感器数据**********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[107+9] = 0;
+		pTx[108+9] = 0;
+		pTx[109+9] = 0;
+		pTx[110+9] = 0;
+		
+	}
+	else
+	{
+    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f));	
+		pTx[107+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
+		pTx[108+9] = hex_to_float.arr[1];
+		pTx[109+9] = hex_to_float.arr[2];
+		pTx[110+9] = hex_to_float.arr[3];
+		
+	}		
+/**********************低温度传感器数据**********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[111+9] = 0;
+		pTx[112+9] = 0;
+		pTx[113+9] = 0;
+		pTx[114+9] = 0;
+		
+	}
+	else
+	{
+    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_LData[1]*(0.1f));		
+		pTx[111+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
+		pTx[112+9] = hex_to_float.arr[1];
+		pTx[113+9] = hex_to_float.arr[2];
+		pTx[114+9] = hex_to_float.arr[3];
+		
+	}	
+//  test_val++;
+//	for(i=0;i<4;i++)  //for test  
+//  {	
+//		hex_to_float.float_temp = test_val;//plevel[Cang_Num].Level_Data;//(10.56+test_val);		
+//		pTx[108+i*4] = hex_to_float.arr[0];               
+//		pTx[109+i*4] = hex_to_float.arr[1];
+//		pTx[110+i*4] = hex_to_float.arr[2];
+//		pTx[111+i*4] = hex_to_float.arr[3];	
+//  }
+/**************************读取容积数据*********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[115+9] = 0x76;
+		pTx[116+9] = 0x7F;
+		pTx[117+9] = 0xFF;
+		pTx[118+9] = 0x00;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[(Cang_Num-0)].Volume_Data;		
+		pTx[115+9] = hex_to_float.arr[0];              
+		pTx[116+9] = hex_to_float.arr[1];
+		pTx[117+9] = hex_to_float.arr[2];
+		pTx[118+9] = hex_to_float.arr[3];		 
+	}	
+/**************************压力*********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[119+9] = 0;
+		pTx[120+9] = 0;
+		pTx[121+9] = 0;
+		pTx[122+9] = 0;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+		pTx[119+9] = 0;              
+		pTx[120+9] = 0;
+		pTx[121+9] = 0;
+		pTx[122+9] = 0;		 
+	}	
+/**************************含水量*********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[123+9] = 0;
+		pTx[124+9] = 0;
+		pTx[125+9] = 0;
+		pTx[126+9] = 0;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+		pTx[123+9] = 0;
+		pTx[124+9] = 0;
+		pTx[125+9] = 0;
+		pTx[126+9] = 0;		 
+	}		
+/**************************水活性*********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[127+9] = 0;
+		pTx[128+9] = 0;
+		pTx[129+9] = 0;
+		pTx[130+9] = 0;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+		pTx[127+9] = 0;
+		pTx[128+9] = 0;
+		pTx[129+9] = 0;
+		pTx[130+9] = 0;	 
+	}	
+/**************************新增*********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[131+9] = 0;
+		pTx[132+9] = 0;
+		pTx[133+9] = 0;
+		pTx[134+9] = 0;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+		pTx[131+9] = hex_to_float.arr[0];
+		pTx[132+9] = hex_to_float.arr[1];
+		pTx[133+9] = hex_to_float.arr[2];
+		pTx[134+9] = hex_to_float.arr[3];
+	}	
+/**************************新增********************************/
+	if(plevel[Cang_Num].Level_Error)
+	{
+		pTx[135+9] = 0;
+		pTx[136+9] = 0;
+		pTx[137+9] = 0;
+		pTx[138+9] = 0;
+	}
+	else
+	{
+    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+		pTx[135+9] = 0;
+		pTx[136+9] = 0;
+		pTx[137+9] = 0;
+		pTx[138+9] = 0;	 
+	}		
+	
+
+//	memcpy(ptxCang01Temp,&pTx[0],150);
+	
+
+	return 1;
+}
+
+
 /*
 1-4仓数据读
 功能增加:	邵磊明  
@@ -3639,19 +3995,20 @@ uint16_t CJQ_SetConfig(uint8_t* pTx)
 	KZQ_Inf* pkzq = &kzq_inf;
 	uint16_t Flash_buf[20] = {0};
 	uint8_t i = 0;
+	uint8_t data_len = 0x05;
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}	
 	if(pkzq->data_buf[7] == 0x06)	
 	{
-		Flash_WriteBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]);
+		Flash_WriteBytes(Flash_buf,ADDR_CANG_NUM,data_len);
 		Cang_Init();
 	}
-	Flash_ReadBytes(Flash_buf,ADDR_CANG_NUM,pTx[11]);
+	Flash_ReadBytes(Flash_buf,ADDR_CANG_NUM,data_len);
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{		
 		//if((Flash_buf[i] != pkzq->data_buf[16+i])&&(pkzq->data_buf[7] == 0x06))
 		//	return 0;
@@ -3666,8 +4023,9 @@ uint16_t RKG_SetTypeNum(uint8_t* pTx)
 	KZQ_Inf* pkzq = &kzq_inf;
 	uint16_t Flash_buf[20] = {0};
 	uint8_t i = 0;
+	uint8_t data_len = 0x09;
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}	
@@ -3681,7 +4039,7 @@ uint16_t RKG_SetTypeNum(uint8_t* pTx)
 		Flash_WriteBytes(Flash_buf+1,ADDR_RKG_NUM,8);
 	Flash_ReadBytes(Flash_buf+1,ADDR_RKG_NUM,8);
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06))
 			return 0;
@@ -3700,8 +4058,9 @@ uint16_t XYF_SetTypeNum(uint8_t* pTx)
 	KZQ_Inf* pkzq = &kzq_inf;
 	uint16_t Flash_buf[20] = {0};
 	uint8_t i = 0;
+	uint8_t data_len = 0x09;
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}
@@ -3720,7 +4079,7 @@ uint16_t XYF_SetTypeNum(uint8_t* pTx)
 	
 	Flash_ReadBytes(Flash_buf+1,ADDR_XYF_NUM,8);
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06))
 			return 0;
@@ -3739,8 +4098,9 @@ uint16_t HDF_SetTypeNum(uint8_t* pTx)
 	KZQ_Inf* pkzq = &kzq_inf;
 	uint16_t Flash_buf[20] = {0};
 	uint8_t i = 0;
+	uint8_t data_len = 0x09;
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		Flash_buf[i] = pkzq->data_buf[16+i];
 	}	
@@ -3754,7 +4114,7 @@ uint16_t HDF_SetTypeNum(uint8_t* pTx)
 		Flash_WriteBytes(Flash_buf+1,ADDR_HDF_NUM,8);
 	Flash_ReadBytes(Flash_buf+1,ADDR_HDF_NUM,8);
 	
-	for(i = 0;i < pkzq->data_buf[11];i++)
+	for(i = 0;i < data_len;i++)
 	{
 		if((Flash_buf[i+1] != pkzq->data_buf[17+i])&&(pkzq->data_buf[7] == 0x06))
 			return 0;
@@ -3910,7 +4270,7 @@ uint16_t Tem_SetType(uint8_t* pTx)
 	else
 		return 0;
 }
-uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20220810};
+uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20220826};
 uint16_t Read_SoftVersion(uint8_t *pTx)
 {
 	int i;

+ 21 - 8
Core/Src/main.c

@@ -3088,38 +3088,51 @@ void StartTask04(void *argument)                                    //
 						SetSuccess1 = Read_CangSensorData_1to4(ptx);														//读仓1-4传感器
 							 
 						break;
+				#if 0
 					case 0x1193: 
-						SetSuccess2 = Read_CangSensorData_1(ptx);														//读仓1传感器
+						SetSuccess2 = Read_CangSensorData_1(ptx);														//?á2?1′??D?÷
 							 
 						break;		
 					case 0x1194: 
-						SetSuccess2 = Read_CangSensorData_2(ptx);														//读仓2传感器
+						SetSuccess2 = Read_CangSensorData_2(ptx);														//?á2?2′??D?÷
 							 
 						break;
 					case 0x1195: 
-						SetSuccess2 = Read_CangSensorData_3(ptx);														//读仓3传感器
+						SetSuccess2 = Read_CangSensorData_3(ptx);														//?á2?3′??D?÷
 							 
 						break;
 					case 0x1196: 
-						SetSuccess2 = Read_CangSensorData_4(ptx);														//读仓4传感器
+						SetSuccess2 = Read_CangSensorData_4(ptx);														//?á2?4′??D?÷
 							 
 						break;		
 					case 0x1197: 
-						SetSuccess2 = Read_CangSensorData_5(ptx);														//读仓5传感器
+						SetSuccess2 = Read_CangSensorData_5(ptx);														//?á2?5′??D?÷
 							 
 						break;
 					case 0x1198: 
-						SetSuccess2 = Read_CangSensorData_6(ptx);														//读仓6传感器
+						SetSuccess2 = Read_CangSensorData_6(ptx);														//?á2?6′??D?÷
 							 
 						break;	
 					case 0x1199: 
-						SetSuccess2 = Read_CangSensorData_7(ptx);														//读仓7传感器
+						SetSuccess2 = Read_CangSensorData_7(ptx);														//?á2?7′??D?÷
 							 
 						break;
 					case 0x119a: 
-						SetSuccess2 = Read_CangSensorData_8(ptx);														//读仓8传感器
+						SetSuccess2 = Read_CangSensorData_8(ptx);														//?á2?8′??D?÷
 							 
+						break;
+				#else
+					case 0x1193:
+					case 0x1194:
+					case 0x1195:
+					case 0x1196:
+					case 0x1197:
+					case 0x1198:
+					case 0x1199:
+					case 0x119a:
+						SetSuccess2 = Read_CangSensorData_V2(ptx, (uint8_t)(pkzq->sensor_reg-0x1193+1));
 						break;	
+				#endif 
 					case 0x119b: 
 						SetSuccess3 = Read_ZhencheSensorData1(ptx);														//读仓1-4传感器