Pārlūkot izejas kodu

修改完成液位传感器的采集功能

guoqiang 2 gadi atpakaļ
vecāks
revīzija
dd8b37e2ac
7 mainītis faili ar 1838 papildinājumiem un 1803 dzēšanām
  1. 1 1
      Core/Inc/cang.h
  2. 28 16
      Core/Inc/level.h
  3. 1 1
      Core/Inc/pressure.h
  4. 83 82
      Core/Src/kzq.c
  5. 1678 1557
      Core/Src/level.c
  6. 46 145
      Core/Src/main.c
  7. 1 1
      Core/Src/pressure.c

+ 1 - 1
Core/Inc/cang.h

@@ -24,7 +24,7 @@ uint16_t HDF_Num[CANG_MAX];							//8
 uint16_t RKG_Num[CANG_MAX];							//8个仓每仓人孔盖数量	
 uint16_t BGY_Num[CANG_MAX];	            //8个仓每仓壁挂油传感器数量
 /**************************非阀门传感器信息**************************************/	
-uint16_t CZSS_Num[CANG_MAX];	          //8个仓每仓磁致伸缩数量	
+//uint16_t CZSS_Num[CANG_MAX];	          //8个仓每仓磁致伸缩数量	
 uint16_t Pressure_Num[CANG_MAX];	      //8个仓每仓压力传感器数量	
 uint16_t Pressure;  							//0:没有液位,1:FST800-801
 uint16_t Level;                   //0:没有液位,1:磁致伸缩,2:雷达液位...

+ 28 - 16
Core/Inc/level.h

@@ -19,29 +19,37 @@
 
 #define LEVEL_BUF_DEP 8
 
+#define LEVEL_STARTADDR  (0x51)
+
+typedef enum{
+	LEVEL_NONE = 0,
+	LEVEL_CZSS,
+	LEVEL_LDYW,
+}Level_Type;
+
+
 typedef struct{
-float Level_Data;										//液位数据
-float Level_Data1;		
+float Data;										//液位数据	
 float Avr_temp;
 float Adot_temp;
 float Bdot_temp;	
 float Cdot_temp;	
-float Volume_Data;                  //容积数据
-uint16_t Level_ErrorCnt;								//液位错误计数	
-uint16_t Level_Error;										//错误状态		
-uint16_t Level_StateKeepNum;						//判断次数
+float Volume_Data;                //容积数据
+uint16_t ErrorCnt;								//液位错误计数	
+uint16_t Error;										//错误状态		
+uint16_t StateKeepNum;						//判断次数
 uint16_t RTData_Num;
-float Level_Cal_zero;	
+float zero;	
 }Level_Inf;
 
-extern uint16_t Volume_1cang[200];
-extern uint16_t Volume_2cang[200];
-extern uint16_t Volume_3cang[200];
-extern uint16_t Volume_4cang[200];
-extern const uint16_t H_1cang[200];
-extern const uint16_t H_2cang[200];
-extern const uint16_t H_3cang[200];
-extern const uint16_t H_4cang[200];
+//extern uint16_t Volume_1cang[200];
+//extern uint16_t Volume_2cang[200];
+//extern uint16_t Volume_3cang[200];
+//extern uint16_t Volume_4cang[200];
+//extern const uint16_t H_1cang[200];
+//extern const uint16_t H_2cang[200];
+//extern const uint16_t H_3cang[200];
+//extern const uint16_t H_4cang[200];
 
 extern uint8_t USART2_RX_BUF002[Uart2_BUF_SIZE];
 extern uint8_t USART1_RX_BUF002[Uart2_BUF_SIZE];
@@ -50,8 +58,12 @@ extern int data_lengthU2,data_lengthU1,data_lengthU3;
 extern int flagU1Rx,flagU2Rx,flagU3Rx;
 extern uint8_t USART3_RX_BUF002_print[Uart3_BUF_SIZE];
 
+extern Level_Inf level_inf[SENSOR_DEEP];
+
+extern uint8_t Prase_Level(uint8_t* data, Level_Type type);
+extern void Level_Error(uint8_t addr);
 
-extern float  Calc_Vol(float RadarData,uint16_t* VolArray,const uint16_t* HArray,uint16_t StoreNum);
+//extern float  Calc_Vol(float RadarData,uint16_t* VolArray,const uint16_t* HArray,uint16_t StoreNum);
 
 
 

+ 1 - 1
Core/Inc/pressure.h

@@ -26,7 +26,7 @@ uint16_t RTData_Num;
 extern Pressure_Inf pressure_inf[SENSOR_DEEP];
 extern void Pressure_state(uint16_t CangNum);
 extern void Pressure_Init(void);
-extern uint8_t Prase_Pressure(uint8_t* data, uint16_t data_len);
+extern uint8_t Prase_Pressure(uint8_t* data, Pressure_Tpye type);
 extern void Pressure_Error(uint8_t addr);
 
 //extern void Flash_ReadBytes(uint16_t* sorBuf,uint32_t FlashAddr,uint16_t len);

+ 83 - 82
Core/Src/kzq.c

@@ -12,6 +12,8 @@
 #include "usart.h"
 #include "yqhs.h"
 #include "bgy.h"
+#include "pressure.h"
+
 uint8_t RKG_TxBuf[70] = {0};
 uint8_t XYF_TxBuf[70] = {0};
 uint8_t ALL_TxBuf[70] = {0};
@@ -2741,7 +2743,8 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	KZQ_Inf* pkzq = &kzq_inf;
 	RKG_Inf*  prkg  = rkg_inf;
 	XYF_Inf*  pxyf  = xyf_inf;
-	Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf;	
+	//Yqhuishou_Inf* pYqhuishou = &yqhuishou_inf;	
+	Pressure_Inf* ppressure = pressure_inf;
 //static float test_val=100;
 	extern	uint8_t ptxCang01Temp[150];
 	typedef union{
@@ -2873,7 +2876,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
     }	
 		
 /*********************液位传感器数据**********************************/		
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num-1].Error)
 	{
 		pTx[95+9] = 0;
 		pTx[96+9] = 0;
@@ -2883,7 +2886,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = plevel[Cang_Num].Level_Data1;		
+    hex_to_float.float_temp = plevel[Cang_Num-1].Data;		
 		pTx[95+9] = hex_to_float.arr[0];               
 		pTx[96+9] = hex_to_float.arr[1];
 		pTx[97+9] = hex_to_float.arr[2];
@@ -2892,7 +2895,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}		
 	
 /**********************平均温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(ptem[Cang_Num].TEM_Error)
 	{
 		pTx[99+9] = 0;
 		pTx[100+9] = 0;
@@ -2910,7 +2913,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}
 /**********************高温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(ptem[Cang_Num].TEM_Error)
 	{
 		pTx[103+9] = 0;
 		pTx[104+9] = 0;
@@ -2928,7 +2931,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}	
 /*********************中温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(ptem[Cang_Num].TEM_Error)
 	{
 		pTx[107+9] = 0;
 		pTx[108+9] = 0;
@@ -2946,7 +2949,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}		
 /**********************低温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(ptem[Cang_Num].TEM_Error)
 	{
 		pTx[111+9] = 0;
 		pTx[112+9] = 0;
@@ -2973,7 +2976,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 //		pTx[111+i*4] = hex_to_float.arr[3];	
 //  }
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num-1].Error)
 	{
 		pTx[115+9] = 0x76;
 		pTx[116+9] = 0x7F;
@@ -2982,14 +2985,14 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = plevel[(Cang_Num-0)].Volume_Data;		
+    hex_to_float.float_temp = plevel[(Cang_Num-1)].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)
+	if(ppressure[Cang_Num-1].Error)
 	{
 		pTx[119+9] = 0;
 		pTx[120+9] = 0;
@@ -2998,14 +3001,14 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	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;		 
+    hex_to_float.float_temp = ppressure[Cang_Num-1].pressure;		
+		pTx[119+9] = hex_to_float.arr[0];               
+		pTx[120+9] = hex_to_float.arr[1]; 
+		pTx[121+9] = hex_to_float.arr[2]; 
+		pTx[122+9] = hex_to_float.arr[3]; 	 
 	}	
 /**************************含水量*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(1)
 	{
 		pTx[123+9] = 0;
 		pTx[124+9] = 0;
@@ -3014,14 +3017,14 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+    //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)
+	if(1)
 	{
 		pTx[127+9] = 0;
 		pTx[128+9] = 0;
@@ -3030,45 +3033,13 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = plevel[Cang_Num].Volume_Data;		
+    //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);
 	
@@ -3112,7 +3083,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
    for(Cang_Num = 1;Cang_Num <= 4;Cang_Num++)//读取第几仓传感器数据
    {
 /*********************液位传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num-1].Error)
 	{
 		pTx[56+(Cang_Num-1)*44] = 0;
 		pTx[57+(Cang_Num-1)*44] = 0;
@@ -3122,7 +3093,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 	}
 	else
 	{
-        hex_to_float.float_temp = plevel[Cang_Num].Level_Data;		
+        hex_to_float.float_temp = plevel[Cang_Num-1].Data;		
 		pTx[56+(Cang_Num-1)*44] = hex_to_float.arr[0];               //读取高位温度传感器数据
 		pTx[57+(Cang_Num-1)*44] = hex_to_float.arr[1];
 		pTx[58+(Cang_Num-1)*44] = hex_to_float.arr[2];
@@ -3131,7 +3102,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 	}
 
 /**********************平均温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[60+(Cang_Num-1)*44] = 0;
 		pTx[61+(Cang_Num-1)*44] = 0;
@@ -3149,7 +3120,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		
 	}
 /**********************高温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[64+(Cang_Num-1)*44] = 0;
 		pTx[65+(Cang_Num-1)*44] = 0;
@@ -3167,7 +3138,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		
 	}	
 /*********************中温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[68+(Cang_Num-1)*44] = 0;
 		pTx[69+(Cang_Num-1)*44] = 0;
@@ -3185,7 +3156,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		
 	}		
 /**********************低温度传感器数据**********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[72+(Cang_Num-1)*44] = 0;
 		pTx[73+(Cang_Num-1)*44] = 0;
@@ -3203,7 +3174,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		
 	}		
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[76+(Cang_Num-1)*44] = 0x76;
 		pTx[77+(Cang_Num-1)*44] = 0x7F;
@@ -3219,7 +3190,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		pTx[79+(Cang_Num-1)*44] = hex_to_float.arr[3];		 
 	}
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[80+(Cang_Num-1)*44] = 0x76;
 		pTx[81+(Cang_Num-1)*44] = 0x7F;
@@ -3236,7 +3207,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 	}
 		
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[84+(Cang_Num-1)*44] = 0x76;
 		pTx[85+(Cang_Num-1)*44] = 0x7F;
@@ -3252,7 +3223,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		pTx[87+(Cang_Num-1)*44] = hex_to_float.arr[3];		 
 	}
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[88+(Cang_Num-1)*44] = 0x76;
 		pTx[89+(Cang_Num-1)*44] = 0x7F;
@@ -3268,7 +3239,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		pTx[91+(Cang_Num-1)*44] = hex_to_float.arr[3];		 
 	}
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[92+(Cang_Num-1)*44] = 0x76;
 		pTx[93+(Cang_Num-1)*44] = 0x7F;
@@ -3284,7 +3255,7 @@ uint16_t Read_CangSensorData_1to4(uint8_t* pTx)//
 		pTx[95+(Cang_Num-1)*44] = hex_to_float.arr[3];		 
 	}
 /**************************读取容积数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num].Error)
 	{
 		pTx[96+(Cang_Num-1)*44] = 0x76;
 		pTx[97+(Cang_Num-1)*44] = 0x7F;
@@ -3311,6 +3282,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 	HDF_Inf*  phdf = hdf_inf;
 	XYF_Inf*  pxyf  = xyf_inf;
 	Level_Inf* plevel = level_inf;
+	Pressure_Inf* ppressure = pressure_inf;
 	TEM_Inf* ptem = tem_inf;
 	RKG_Inf*  prkg  = rkg_inf;
 
@@ -3321,7 +3293,9 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 	Hex_to_float hex_to_float;
 
 	uint8_t i = 0,HDF_Start = 0,XYF_Start = 0,RKG_Start = 0,BGY_Start = 0;
+	uint8_t PRESSURE_Start = 0;
 	uint16_t offset = 0;
+
 	if(CangNo < 1 ||CangNo > 8)
 		return offset;
 	if(CangNo > pcang->Cang_Num){
@@ -3334,6 +3308,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 		XYF_Start += pcang->XYF_Num[i];
 		RKG_Start += pcang->RKG_Num[i];
 		BGY_Start += pcang->BGY_Num[i];
+		PRESSURE_Start += pcang->Pressure_Num[i];
 	}
 	
 	// hdf 
@@ -3429,12 +3404,13 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 		if((1 == pcang->Level) || (2 == pcang->Level)){
 
 			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
+
 				buffer[offset] = SENSOR_TYPE_LIQUID_LEVEL;
 				buffer[offset+1] = ((CangNo << 4)|0x00);   //cang & id
 				buffer[offset+2] = 0x01;  //analog type
-				buffer[offset+3] = plevel[CangNo].Level_Error? State_Error:0x00;
+				buffer[offset+3] = plevel[CangNo-1].Error? State_Error:0x00;
 
-				hex_to_float.float_temp = plevel[CangNo].Level_Data1;		
+				hex_to_float.float_temp = plevel[CangNo-1].Data;		
 				buffer[offset+4] = hex_to_float.arr[0];               
 				buffer[offset+5] = hex_to_float.arr[1];
 				buffer[offset+6] = hex_to_float.arr[2];
@@ -3448,6 +3424,31 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 		}
 	}
 
+	//pressure
+	if(0 != pcang->Pressure){
+
+		for(i = 0;i < pcang->Pressure_Num[CangNo - 1];i++){  
+
+			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
+
+				buffer[offset] = SENSOR_TYPE_PRESSURE;
+				buffer[offset+1] = ((CangNo << 4)|i);   //cang & id
+				buffer[offset+2] = 0x01;  //analog type
+				buffer[offset+3] = ppressure[PRESSURE_Start+i].Error? State_Error:0x00;
+
+				hex_to_float.float_temp = ppressure[PRESSURE_Start+i].pressure;		
+				buffer[offset+4] = hex_to_float.arr[0];               
+				buffer[offset+5] = hex_to_float.arr[1];
+				buffer[offset+6] = hex_to_float.arr[2];
+				buffer[offset+7] = hex_to_float.arr[3];
+
+				offset += ANALOG_VALUE_SIZE;
+			}else{
+				return offset;
+			}
+		}
+	}
+
 	//temperture
 	if(0 != pcang->Temperture){
 		if(1 == pcang->Temperture || 3 == pcang->Temperture){
@@ -3681,7 +3682,7 @@ uint16_t Read_CangSensorData(uint8_t* pTx)
 	}
 	
 /**************************读取液位数据*********************************/
-	if(plevel[Cang_Num].Level_Error)
+	if(plevel[Cang_Num-1].Error)
 	{
 		pTx[42] = 0x47;
 		pTx[43] = 0x7F;
@@ -3695,18 +3696,18 @@ uint16_t Read_CangSensorData(uint8_t* pTx)
 	}
 	else
 	{
-		pTx[42] = (int)plevel[Cang_Num].Level_Data>>24&0xFF;              
-		pTx[43] = (int)plevel[Cang_Num].Level_Data>>16&0xFF; 
-		pTx[44] = (int)plevel[Cang_Num].Level_Data>>8&0xFF; 
-		pTx[45] = (int)plevel[Cang_Num].Level_Data&0xFF; 
+		pTx[42] = (int)plevel[Cang_Num-1].Data>>24&0xFF;              
+		pTx[43] = (int)plevel[Cang_Num-1].Data>>16&0xFF; 
+		pTx[44] = (int)plevel[Cang_Num-1].Data>>8&0xFF; 
+		pTx[45] = (int)plevel[Cang_Num-1].Data&0xFF; 
 
 
 /**************************读取容积数据*********************************/
 
-		pTx[46] = (int)plevel[Cang_Num].Volume_Data>>24&0xFF;              
-		pTx[47] = (int)plevel[Cang_Num].Volume_Data>>16&0xFF; 
-		pTx[48] = (int)plevel[Cang_Num].Volume_Data>>8&0xFF; 
-		pTx[49] = (int)plevel[Cang_Num].Volume_Data&0xFF; 
+		pTx[46] = (int)plevel[Cang_Num-1].Volume_Data>>24&0xFF;              
+		pTx[47] = (int)plevel[Cang_Num-1].Volume_Data>>16&0xFF; 
+		pTx[48] = (int)plevel[Cang_Num-1].Volume_Data>>8&0xFF; 
+		pTx[49] = (int)plevel[Cang_Num-1].Volume_Data&0xFF; 
 	}
 	return 1;
 }
@@ -4163,7 +4164,7 @@ uint16_t Read_Sensor(uint8_t* pTx)
 	
 	if(pkzq->data_buf[17] > 0x50 && pkzq->data_buf[17] < 0x5F)             //液位传感器
 	{
-		if(plevel[pTx[17] - 0x50].Level_Error)
+		if(plevel[pTx[17] - LEVEL_STARTADDR].Error)
 		{
 			pTx[18] = 0x47;
 			pTx[19] = 0x7F;
@@ -4172,10 +4173,10 @@ uint16_t Read_Sensor(uint8_t* pTx)
 		}
 		else
 		{
-			pTx[18] = (int)plevel[pTx[17] - 0x50].Level_Data>>24&0xff;
-			pTx[19] = (int)plevel[pTx[17] - 0x50].Level_Data>>16&0xff;
-			pTx[20] = (int)plevel[pTx[17] - 0x50].Level_Data>>8&0xff;
-			pTx[21] = (int)plevel[pTx[17] - 0x50].Level_Data&0xff;
+			pTx[18] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>24&0xff;
+			pTx[19] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>16&0xff;
+			pTx[20] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data>>8&0xff;
+			pTx[21] = (int)plevel[pTx[17] - LEVEL_STARTADDR].Data&0xff;
 		}
 	}
 	else if(pkzq->data_buf[17] > 0x60 && pkzq->data_buf[17] < 0x6F)				//温度传感器
@@ -4518,13 +4519,13 @@ uint16_t Level_SetCalvalue(uint8_t* pTx)
 		hex_to_float2.arr1[2] = pkzq->data_buf[17];
 		hex_to_float2.arr1[1] = pkzq->data_buf[18];
 		hex_to_float2.arr1[0] = pkzq->data_buf[19];					
-		plevel[1].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1;
+		plevel[0].zero = hex_to_float2.Ldcal_zero_temp1;
 		__NOP();
 		hex_to_float2.arr1[3] = pkzq->data_buf[20];
 		hex_to_float2.arr1[2] = pkzq->data_buf[21];
 		hex_to_float2.arr1[1] = pkzq->data_buf[22];
 		hex_to_float2.arr1[0] = pkzq->data_buf[23];					
-		plevel[2].Level_Cal_zero = hex_to_float2.Ldcal_zero_temp1;
+		plevel[1].zero = hex_to_float2.Ldcal_zero_temp1;
 		__NOP();		
 		//hex_to_float2.Ldcal_zero_temp1 = plevel[2].Level_Cal_zero;
 		return 1;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1678 - 1557
Core/Src/level.c


+ 46 - 145
Core/Src/main.c

@@ -123,7 +123,7 @@ uint8_t CMD_Biguayou[] = {0x81,0x03,0x00,0x00,0x00,0x01,0x9B,0xCA};
 //uint8_t CMD_Angle_X[] = {0xE0,0x03,0x00,0x02,0x00,0x02,0x00,0x00};   
 //uint8_t CMD_Angle_Y[] = {0xE1,0x03,0x00,0x02,0x00,0x02,0x00,0x00};
 
-uint8_t CMD_LDYW[8]={0x51,0x04,0x0a,0x0f,0x00,0x02};//设备地址,功能码,地址4字节   反回:设备地址,功能码,数据长度,数据4字节
+uint8_t CMD_LDYW[8]={LEVEL_STARTADDR,0x04,0x0a,0x0f,0x00,0x02, 0, 0};//设备地址,功能码,地址4字节   反回:设备地址,功能码,数据长度,数据4字节
 
 uint8_t CMD_GetTempAndYewei[8]={0x51, 0x04, 00, 00, 00, 0x10, 0x03 ,0xae};//读取编号为04地址的温度传感器数据
 //61-6f 03 00 04 00 01 C6 8A----读取华天传感器的第1个温度点,地址为x10;最接近电子仓的温度点
@@ -640,10 +640,10 @@ void Cang_Init(void)
 	Flash_ReadBytes(Flash_buff,ADDR_CANG_NUM,6);
 	if(Flash_buff[0] == 0xffff)
 	{
-	Flash_WriteBytes(Volume_1cang,ADD_CANG1_TABLE,200);
-  Flash_WriteBytes(Volume_2cang,ADD_CANG2_TABLE,200);
-	Flash_WriteBytes(Volume_3cang,ADD_CANG3_TABLE,200);
-  Flash_WriteBytes(Volume_4cang,ADD_CANG4_TABLE,200);	
+	//Flash_WriteBytes(Volume_1cang,ADD_CANG1_TABLE,200);
+  //Flash_WriteBytes(Volume_2cang,ADD_CANG2_TABLE,200);
+	//Flash_WriteBytes(Volume_3cang,ADD_CANG3_TABLE,200);
+  //Flash_WriteBytes(Volume_4cang,ADD_CANG4_TABLE,200);	
 		pcang->Cang_Num = 3;													//默认三仓
   }
 		else
@@ -769,28 +769,16 @@ void Cang_Init(void)
 	
 	Flash_ReadBytes(Flash_buff,ADDR_LEVEL_TYPE,1);
 	if(Flash_buff[0] == 0xffff)
-		pcang->Level = 0;           //默认无液位传感器   slm
+		pcang->Level = LEVEL_NONE;           //默认无液位传感器   slm
 	else
 		pcang->Level = Flash_buff[0];
 
-	Flash_ReadBytes(Flash_buff,ADDR_SENSOR_BUS_MAX_RETRY,1);
-	if(Flash_buff[0] == 0xffff)
-		pcang->sensorBusMaxReTry = 3;
-	else
-		pcang->sensorBusMaxReTry = Flash_buff[0];
-
-	Flash_ReadBytes(Flash_buff,ADDR_PIN_IO_HIT_SAME,1);
-	if(Flash_buff[0] == 0xffff)
-		pcang->pinIOHitSameParam = 3;
-	else
-		pcang->pinIOHitSameParam = Flash_buff[0];
-	
 	Flash_ReadBytes(Flash_buff,CANG1_LEVEL_CAL,8);
 	if(Flash_buff[0] == 0xffff)
 	{
 		for(i=0;i<pcang->Cang_Num;++i)
 		{
-			plevel[i+1].Level_Cal_zero = 0;
+			plevel[i].zero = 0;
 		}
 	}
 	else
@@ -801,12 +789,23 @@ void Cang_Init(void)
 			hex_to_float1.arr[2] = (uint8_t)(Flash_buff[0+2*i] & 0xFF); // Flash_buff[3];
 			hex_to_float1.arr[1] = (uint8_t)(Flash_buff[1+2*i] >> 8);
 			hex_to_float1.arr[0] = (uint8_t)(Flash_buff[1+2*i] & 0xFF);
-			plevel[i + 1].Level_Cal_zero = hex_to_float1.Ldcal_zero_temp;
+			plevel[i].zero = hex_to_float1.Ldcal_zero_temp;
 		}
 	}
 	
+	Flash_ReadBytes(Flash_buff,ADDR_SENSOR_BUS_MAX_RETRY,1);
+	if(Flash_buff[0] == 0xffff)
+		pcang->sensorBusMaxReTry = 3;
+	else
+		pcang->sensorBusMaxReTry = Flash_buff[0];
+
+	Flash_ReadBytes(Flash_buff,ADDR_PIN_IO_HIT_SAME,1);
+	if(Flash_buff[0] == 0xffff)
+		pcang->pinIOHitSameParam = 3;
+	else
+		pcang->pinIOHitSameParam = Flash_buff[0];
 	
-	
+
 
 	Flash_ReadBytes(Flash_buff,ADDR_TEM_TYPE,1);
 	if(Flash_buff[0] == 0xffff)
@@ -832,7 +831,7 @@ void Cang_Init(void)
 		
 		phdf->HDF_StateKeepNum = 5;
 		pangle->Angle_StateKeepNum = 5;
-		plevel->Level_StateKeepNum = 5;
+		plevel->StateKeepNum = 5;
 		ptem->TEM_StateKeepNum = 5;
 	}
 	else
@@ -847,7 +846,7 @@ void Cang_Init(void)
 		
 		__NOP();
 		pangle->Angle_StateKeepNum = Flash_buff[0];
-		plevel->Level_StateKeepNum = Flash_buff[0];
+		plevel->StateKeepNum = Flash_buff[0];
 		ptem->TEM_StateKeepNum = Flash_buff[0];
 	}	
 }
@@ -2380,16 +2379,15 @@ void StartTask03(void *argument)															//
 			
 			if(i001==6)  					  //发送磁致伸缩液位计命令轮询  邵磊明增加
 			{
-				if(pcang->Level == 0)					       //没有液位传感器
+				if(pcang->Level == LEVEL_NONE)					       //没有液位传感器
 				{
 					i001=9;
 				}
-				else if(pcang->Level == 1)					//磁致伸缩传感器轮询 邵磊明增加
+				else if(pcang->Level == LEVEL_CZSS)					//磁致伸缩传感器轮询 邵磊明增加
 				{
 					ModbusCRC = LIB_CRC_MODBUS(CMD_GetTempAndYewei,6);
 					CMD_GetTempAndYewei[6] = ModbusCRC>>8;
 					CMD_GetTempAndYewei[7] = ModbusCRC&0xff;
-	
 				
 					HAL_GPIO_WritePin(GPIOB,Con01_uart1_rankonggai_Pin,GPIO_PIN_RESET);//
 					delay_sys_us(80);
@@ -2414,7 +2412,7 @@ void StartTask03(void *argument)															//
 						else
 							CMD_GetTempAndYewei[0] = 0x51;
 				}
-				else if(pcang->Level == 2)          //雷达液位传感器命令轮询 20210818邵增加
+				else if(pcang->Level == LEVEL_LDYW)          //雷达液位传感器命令轮询 20210818邵增加
 				{
 						ModbusCRC = LIB_CRC_MODBUS(CMD_LDYW,6);
 		        CMD_LDYW[6] = ModbusCRC>>8;
@@ -2436,12 +2434,12 @@ void StartTask03(void *argument)															//
 					plevel[CMD_RKG[0] - 0x50].Level_ErrorCnt = RT_ERRORCNT;
 				}
 				else*/
-					plevel[CMD_LDYW[0] - 0x50].RTData_Num++;
+					plevel[CMD_LDYW[0] - LEVEL_STARTADDR].RTData_Num++;
 
-				if (CMD_LDYW[0] - 0x50 < leveladdr_max)
+				if (CMD_LDYW[0] < (LEVEL_STARTADDR + leveladdr_max))
 					CMD_LDYW[0]++;
 				else
-					CMD_LDYW[0] = 0x51;
+					CMD_LDYW[0] = LEVEL_STARTADDR;
 				}
 				else
 					i001=9;
@@ -2681,91 +2679,9 @@ void StartTask03(void *argument)															//
 			}
 			else if(USART1_RX_BUF002[0] >= 0x50 && USART1_RX_BUF002[0] <= 0x5F)             //液位计数据  邵磊明增加
 			{
-			 if(pcang->Level == 1)					                                                //磁致伸缩传感器接收数据 邵磊明增加
-			{
-				plevel[USART1_RX_BUF002[0]-0x50].RTData_Num = 1;//液位计信息数量  
-				plevel[USART1_RX_BUF002[0]-0x50].Level_ErrorCnt = 0;
-				if(USART1_RX_BUF002[1]!=0x04)              //校验功能码USART1_RX_BUF002[1]!=0x04&&..
-				{
-					receive_error = 1;	
-				}
-				else if(USART1_RX_BUF002[2] != 0x20)			//校验数据长度
-				{
-					receive_error = 1;	
-				}
-				else if(ModbusCRC != LIB_CRC_MODBUS(USART1_RX_BUF002,35))		//校验CRC
-				{
-					receive_error = 1;	
-				}
-				if((USART1_RX_BUF002[head+1] == 0x04)&&(receive_error == 0))      //读取返回雷达数据 slm
-				{
-					  hex_to_float.arr[0] = USART1_RX_BUF002[5];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[6];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[3];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[4];				
-						plevel[USART1_RX_BUF002[head]-0x50].Level_Data = hex_to_float.QDGH_data_temp;
-					  hex_to_float.arr[0] = USART1_RX_BUF002[13];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[14];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[11];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[12];				
-						plevel[USART1_RX_BUF002[head]-0x50].Avr_temp = hex_to_float.QDGH_data_temp;
-					  hex_to_float.arr[0] = USART1_RX_BUF002[17];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[18];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[15];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[16];				
-						plevel[USART1_RX_BUF002[head]-0x50].Avr_temp = hex_to_float.QDGH_data_temp;
-					  hex_to_float.arr[0] = USART1_RX_BUF002[21];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[22];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[19];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[20];				
-						plevel[USART1_RX_BUF002[head]-0x50].Bdot_temp = hex_to_float.QDGH_data_temp;
-					  hex_to_float.arr[0] = USART1_RX_BUF002[25];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[26];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[23];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[24];				
-						plevel[USART1_RX_BUF002[head]-0x50].Cdot_temp = hex_to_float.QDGH_data_temp;					
-					
-				}
-				else if((USART1_RX_BUF002[head+1] == 0x06)&&(receive_error == 0))             	//写入数据返回
-				{
-					
-				}
-			 }
-			 else if(pcang->Level == 2)                                                     //雷达液位传感器接收数据 邵磊明增加
-			 {
-				plevel[USART1_RX_BUF002[0]-0x50].RTData_Num = 1;//液位计信息数量  
-				plevel[USART1_RX_BUF002[0]-0x50].Level_ErrorCnt = 0;
-				if(USART1_RX_BUF002[1]!=0x04)              //校验功能码USART1_RX_BUF002[1]!=0x04&&..
-				{
-					receive_error = 1;	
-				}
-				else if(USART1_RX_BUF002[2] != 0x04)			//校验数据长度
-				{
-					receive_error = 1;	
-				}
-				else if(ModbusCRC != LIB_CRC_MODBUS(USART1_RX_BUF002,7))		//校验CRC
-				{
-					receive_error = 1;	
-				}
-				pcang->CRC1 = LIB_CRC_MODBUS(USART1_RX_BUF002,7);
-				if((USART1_RX_BUF002[head+1] == 0x04)&&(receive_error == 0))      //读取返回雷达数据 slm
-				{//液位计数据  液位仪数据
-					  hex_to_float.arr[0] = USART1_RX_BUF002[4];
-					  hex_to_float.arr[1] = USART1_RX_BUF002[3];
-					  hex_to_float.arr[2] = USART1_RX_BUF002[6];
-					  hex_to_float.arr[3] = USART1_RX_BUF002[5];					
-						plevel[USART1_RX_BUF002[head]-0x50].Level_Data = hex_to_float.QDGH_data_temp;
-					
-					  
-					
-				}
-				else if((USART1_RX_BUF002[head+1] == 0x06)&&(receive_error == 0))             	//写入数据返回
-				{
-					
-				}			  
-			 }
-			 i001 = 9;
-			 continue;
+			   Prase_Level(USART1_RX_BUF002, pcang->Level);
+			   i001 = 9;
+			   continue;
 			}
 			else if(USART1_RX_BUF002[0] >=0x60 && USART1_RX_BUF002[0] <= 0x6f)	            //华天三点式温度传感器接收数据 邵磊明增加
 			{
@@ -2876,30 +2792,14 @@ void StartTask03(void *argument)															//
 					prkg[i].RKDG_Error = 1;
 				}
 			}
+
 			if (i001 == 8) //液位错误
 			{
-				if(pcang->Level == 1)
-				{
-					i = CMD_GetTempAndYewei[0];	
-				}
-				else if(pcang->Level == 2)
-				{
-					i = CMD_LDYW[0];	
-				}
-				if(pcang->Level)
-				{
-					if(i==0x51)
-					{
-						i = leveladdr_max;
-					}
-					else
-					{
-						i = i - 0x51;
-					}
-					plevel[i].Level_ErrorCnt++; 
-				}
+				Level_Error(CMD_LDYW[0]);
 			}
-		}		
+
+		}	
+			
 		if(i001<0x0c)
 			i001++;
 		else
@@ -3139,10 +3039,10 @@ void StartTask04(void *argument)                                    //
 						TOUCHUAN_UART_NUM(ptx);										              //设置智能海底阀放大倍数
 						Flash_Change = 1;		 
 						break;				
-					case 0x0180: 
-						SetSuccess = GRB_SET_Table(ptx);										      //罐容表配置  邵磊明增加
-						Flash_Change = 1;		 
-						break;
+					//case 0x0180: 
+					//	SetSuccess = GRB_SET_Table(ptx);										      //罐容表配置  邵磊明增加
+					//	Flash_Change = 1;		 
+					//	break;
 					case 0x0190: 
 						SetSuccess = Level_SetCalvalue(ptx);														//设置液位计零点 邵磊明增加
 						Flash_Change = 1;	
@@ -3249,7 +3149,7 @@ void StartTask04(void *argument)                                    //
 * @retval None
 */
 /* USER CODE END Header_StartTask05 */
-#include"level.h"
+//#include"level.h"
 void StartTask05(void *argument)
 {
 	/* USER CODE BEGIN StartTask05 */
@@ -3257,9 +3157,9 @@ void StartTask05(void *argument)
 	Level_Inf *plevel = level_inf;
 	Cang_Inf *pcang = &cang_inf;
 	uint8_t i;
-	float v000;
-	uint16_t *VolArrayTsk05 = Volume_1cang;
-	const uint16_t *HArrayTsk05 = H_1cang;
+	//float v000;
+	//uint16_t *VolArrayTsk05 = Volume_1cang;
+	//const uint16_t *HArrayTsk05 = H_1cang;
 	for (;;)
 	{
 		HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);
@@ -3269,6 +3169,7 @@ void StartTask05(void *argument)
 			// Value_Manage(i);
 			// for(uint8_t i = 0;i < 5;i++)
 			{
+#if 0
 				switch (i)
 				{
 				case 0:
@@ -3299,7 +3200,7 @@ void StartTask05(void *argument)
 
 				v000 = Calc_Vol(plevel[i].Level_Data, VolArrayTsk05, HArrayTsk05, i);
 				plevel[i].Volume_Data = v000;
-
+#endif 
 				DF_State(i);
 				// BGY_state(i);
 

+ 1 - 1
Core/Src/pressure.c

@@ -35,7 +35,7 @@ void Pressure_Init(void)
 	
 }
 
-uint8_t Prase_Pressure(uint8_t* data, uint16_t data_len)
+uint8_t Prase_Pressure(uint8_t* data, Pressure_Tpye type)
 {
 	uint16_t ModbusCRC;
 	uint8_t receive_error = 0;