소스 검색

提交修改

guoqiang 2 년 전
부모
커밋
323f753cd0
9개의 변경된 파일159개의 추가작업 그리고 27개의 파일을 삭제
  1. 5 2
      Core/Inc/pressure.h
  2. 5 1
      Core/Inc/tem.h
  3. 4 2
      Core/Src/hdf.c
  4. 2 2
      Core/Src/kzq.c
  5. 98 15
      Core/Src/main.c
  6. 1 1
      Core/Src/pressure.c
  7. 40 0
      Core/Src/tem.c
  8. 2 2
      MDK-ARM/caijiqiV001.uvoptx
  9. 2 2
      MDK-ARM/caijiqiV001.uvprojx

+ 5 - 2
Core/Inc/pressure.h

@@ -5,11 +5,14 @@
 #include "cang.h"
 
 #define PRESSURE_BUF_DEP 8
-#define PRESSURE_STARTADDR  (0x91)
+#define PRESSURE_STARTADDR1  (0x91)
+#define PRESSURE_STARTADDR2  (0xA1)
+#define PRESSURE_STARTADDR   (PRESSURE_STARTADDR2)
 
 typedef enum{
 	Pressure_NONE = 0,
-	Pressure_FST800_801
+	Pressure_FST800_801 = 1,
+	Pressure_FST100_1007 =2,
 }Pressure_Tpye;
 
 

+ 5 - 1
Core/Inc/tem.h

@@ -3,12 +3,16 @@
 
 #include "cang.h"
 
-#define TEM_STARTADDR  (0x61)
+#define TEM_STARTADDR1  (0x61)
+#define TEM_STARTADDR2  (0xA1)
+
+#define TEM_STARTADDR  (TEM_STARTADDR2)
 
 typedef enum{
 	Tem_NONE = 0,
 	Tem_FST100_611,
     Tem_HUATIAN_THREE=3,
+	Tem_FST100_1007=4,  // ÎÈѹһÌå
 }Tem_Tpye;
 
 

+ 4 - 2
Core/Src/hdf.c

@@ -97,8 +97,8 @@ void DF_State(uint8_t Cang_Num)         //
 		if(i < HDF_BUF_DEP)
 		{
 			PinNo = 0;
-			//if (pcang->XYF_Type == 2)
-			if (pcang->XYF_Type == 0) // 是二合一, 用IO 模拟有油无油状态 for showtable
+			if (pcang->XYF_Type == 2)
+			//if (pcang->XYF_Type == 0) // 是二合一, 用IO 模拟有油无油状态 for showtable
 			{
 				for (j = 0, HDF_MAX = 0; j < pcang->Cang_Num; ++j)
 				{
@@ -163,6 +163,7 @@ void DF_State(uint8_t Cang_Num)         //
 
   }
 
+#if 0
   // 门磁 & 人脸授权
   hit = DoPinIoHitSame(6, &status);
   if(hit){
@@ -173,6 +174,7 @@ void DF_State(uint8_t Cang_Num)         //
   if(hit){
 	tank_inf.Facial_Auth = status==0?1:0;
   }
+#endif 
 
 }
 

+ 2 - 2
Core/Src/kzq.c

@@ -3467,7 +3467,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 
 	//temperture
 	if(0 != pcang->Temperture){
-		if(Tem_FST100_611 == pcang->Temperture ){
+		if(Tem_FST100_611 == pcang->Temperture || Tem_FST100_1007 == pcang->Temperture){
 
 			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
 				buffer[offset] = SENSOR_TYPE_TEMPERATURE1;
@@ -4589,7 +4589,7 @@ uint16_t Tem_SetType(uint8_t* pTx)
 		return 0;
 }
 
-uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20230526};
+uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 122, 20230603};
 uint16_t Read_SoftVersion(uint8_t *pTx)
 {
 	int i;

+ 98 - 15
Core/Src/main.c

@@ -43,7 +43,7 @@
 #include "pressure.h"
 #include "iap.h"
 /* USER CODE END Includes */
-#if 1
+#if 0
 #define IR_ROM1   0x08000000
 #else
 #define IR_ROM1   0x08020000
@@ -130,8 +130,13 @@ uint8_t CMD_GetTempAndYewei[8]={0x51, 0x04, 00, 00, 00, 0x10, 0x03 ,0xae};//
 uint8_t CMD_GetTempHuaTian[8]={0x61, 0x03, 00, 04, 00, 01,0,0};//读取华天传感器的第一个温度点
 
 uint8_t CMD_TemAng[8]={TEM_STARTADDR, 0x03, 00, 00, 00, 02,0,0};//FST100-611  通过模拟量模块,读取温度
+
+uint8_t CMD_Temperature[8]={TEM_STARTADDR, 0x03, 00, 02, 00, 02,0,0};
 uint8_t CMD_Pressure[8]={PRESSURE_STARTADDR, 0x03, 0x00, 0x00, 0x00, 0x02,0,0}; //FST800-801 读取压力数据, 没有标零指令
 
+//uint8_t CMD_FSTTem[8]={TEM_STARTADDR, 0x03, 00, 02, 00, 02,0,0};//FST100-1007G371C   //温压一体, 读温度指令
+//uint8_t CMD_FSTPressure[8]={PRESSURE_STARTADDR, 0x03, 00, 00, 00, 02,0,0};//FST100-1007G371C   //温压一体, 读压力指令
+
 
 
 //磁编码传感器读取协议 。
@@ -1908,7 +1913,7 @@ void StartTask02(void *argument)				 															//卸
 			
 			if(i001 == 15){
 				
-				if(pcang->Pressure){
+				if(Pressure_FST800_801 == pcang->Pressure){
 					
 					ModbusCRC = LIB_CRC_MODBUS(CMD_Pressure, 6);
 					CMD_Pressure[6] = ModbusCRC >> 8;
@@ -2209,17 +2214,22 @@ void StartTask03(void *argument)															//
 	Cang_Inf* pcang = &cang_inf;
 	Level_Inf* plevel = level_inf;
 	Tem_Inf* ptem = tem_inf;
+	Pressure_Inf* pPressure = pressure_inf;
+
 	typedef union{
 		float QDGH_data_temp;   //青鸟贵和磁致伸缩液位温度一体传感器
 		uint8_t arr[4];
 	}Hex_to_float;
 	static Hex_to_float hex_to_float;
+	uint8_t pressureaddr_max = 0;
+
 	leveladdr_max=0;
 	if(pcang->Temperture==2)
 		pcang->Temperture=3;
 	for(i = 0;i < pcang->Cang_Num;i++)
 	{
-		rkgaddr_max += pcang->RKG_Num[i];										//人孔盖最大地址							
+		rkgaddr_max += pcang->RKG_Num[i];	
+		pressureaddr_max += pcang->Pressure_Num[i];									//人孔盖最大地址							
 		leveladdr_max++;
 		temaddr_max++;
 	}
@@ -2246,11 +2256,13 @@ void StartTask03(void *argument)															//
 			rkgaddr_max = 0;
 			leveladdr_max=0;
 			temaddr_max = 0;
+			pressureaddr_max = 0;
 			if(pcang->Temperture==2)
 				pcang->Temperture=3;
 			for(i = 0;i < pcang->Cang_Num;i++)
 			{
-				rkgaddr_max += pcang->RKG_Num[i];										//人孔盖最大地址							
+				rkgaddr_max += pcang->RKG_Num[i];
+				pressureaddr_max += pcang->Pressure_Num[i];										//人孔盖最大地址							
 				leveladdr_max++;
 				temaddr_max++;
 			}
@@ -2459,12 +2471,63 @@ void StartTask03(void *argument)															//
 					else
 						CMD_TemAng[0] = TEM_STARTADDR;
 
-				}
-				else
+				}else  if(Tem_FST100_1007 == pcang->Temperture )					
+				{
+				     	//	taskENTER_CRITICAL();		
+					ModbusCRC = LIB_CRC_MODBUS(CMD_Temperature,6);
+					CMD_Temperature[6] = ModbusCRC>>8;
+					CMD_Temperature[7] = ModbusCRC&0xff;
+	
+					HAL_GPIO_WritePin(GPIOB,Con01_uart1_rankonggai_Pin,GPIO_PIN_RESET);//
+					delay_sys_us(80);
+					HAL_UART_Transmit_IT(&huart1,CMD_Temperature,8);		
+					while (huart1.gState == HAL_UART_STATE_BUSY_TX)
+					{
+						osDelay(1);
+					}
+					//HAL_UART_Transmit(&huart1,CMD_GetTempHuaTian,8,100);	
+					//delay_sys_us(80);
+					HAL_GPIO_WritePin(GPIOB,Con01_uart1_rankonggai_Pin,GPIO_PIN_SET);//
+				    // taskEXIT_CRITICAL();	
+
+					ptem[CMD_Temperature[0] - TEM_STARTADDR].RTData_Num++; 	
+
+					if((CMD_Temperature[0] - TEM_STARTADDR+1) < temaddr_max)
+						CMD_Temperature[0] = CMD_Temperature[0]+1;
+					else
+						CMD_Temperature[0] = TEM_STARTADDR;
+
+				}else
+				{
+					i001=12;
+					
+				}	
+			}
+
+			if(i001==12){
+				if(Pressure_FST100_1007 == pcang->Pressure )					
+				{
+				    ModbusCRC = LIB_CRC_MODBUS(CMD_Pressure, 6);
+					CMD_Pressure[6] = ModbusCRC >> 8;
+					CMD_Pressure[7] = ModbusCRC & 0xff;
+					HAL_GPIO_WritePin(GPIOB, Con01_uart1_rankonggai_Pin, GPIO_PIN_RESET);
+					delay_sys_us(80);
+					HAL_UART_Transmit(&huart1, CMD_Pressure, 8, 200); 
+					delay_sys_us(80);
+					HAL_GPIO_WritePin(GPIOB, Con01_uart1_rankonggai_Pin, GPIO_PIN_SET);
+
+					pPressure[CMD_Pressure[0] - PRESSURE_STARTADDR].RTData_Num++; 
+
+					if (CMD_Pressure[0] - PRESSURE_STARTADDR +1 < pressureaddr_max)
+						CMD_Pressure[0]++;
+					else
+						CMD_Pressure[0] = PRESSURE_STARTADDR;
+
+				}else
 				{
 					i001=0x0;
 					continue;
-				}	
+				}
 			}	
 		}
 		else											//平台通过卸油阀总线直接操作传感器
@@ -2663,13 +2726,26 @@ void StartTask03(void *argument)															//
 			else if(USART1_RX_BUF002[0] >=0x60 && USART1_RX_BUF002[0] <= 0x6f)	            //华天三点式温度传感器接收数据 邵磊明增加
 			{
 				Parse_Tem(USART1_RX_BUF002, pcang->Temperture);
-
-				i001 = 0;
-			 	continue;
+				
+				i001 = 15;
+				continue;
+				
 			}
-			else if(0)  //暂未使用
+			else if(USART1_RX_BUF002[0] >=0xA0 && USART1_RX_BUF002[0] <= 0xAF)  //暂未使用
 			{
-				
+				if (i001 < 9){
+
+				}else if(i001 < 12){
+					Parse_Tem(USART1_RX_BUF002, pcang->Temperture);
+					i001 = 12;
+					continue;
+
+				}else if(i001 < 15){
+
+					Prase_Pressure(USART1_RX_BUF002, pcang->Pressure);
+					i001 = 0;
+			 		continue;
+				}
 			}
 			else if(0)   //暂未使用
 			{
@@ -2708,12 +2784,19 @@ void StartTask03(void *argument)															//
 			{
 				Level_Error(CMD_LDYW[0]);
 			}else if(i001 == 11){
-				Tem_Error(CMD_TemAng[0]);
+				if(Tem_FST100_611 == pcang->Temperture){
+					Tem_Error(CMD_TemAng[0]);
+				}else if(Tem_FST100_1007 == pcang->Temperture){
+					Tem_Error(CMD_Temperature[0]);
+				}
+				
+			}else if(i001 == 15){
+				Pressure_Error(CMD_Pressure[0]);
 			}
 
 		}	
 			
-		if(i001<0x0c)
+		if(i001<16)
 			i001++;
 		else
 			i001 = 0;
@@ -2925,7 +3008,7 @@ void StartTask04(void *argument)                                    //
 						break;
 					case 0x7a: 
 						SetSuccess = Tem_SetType(ptx);															//设置温度传感器种类
-						// Flash_Change = 1;
+						//Flash_Change = 1;
 						break;
 					case 0x7b: 
 						HDF_Set_CloseVal(ptx);										                      //设置智能海底阀放大倍数

+ 1 - 1
Core/Src/pressure.c

@@ -15,7 +15,7 @@ void Pressure_Init(void)
 	Cang_Inf* pcang = &cang_inf;
 	uint8_t i = 0;
 	
-	pcang->Pressure = Pressure_FST800_801;
+	pcang->Pressure = Pressure_FST100_1007;
 	
 
 	for(i = 0;i < pcang->Cang_Num;i++)

+ 40 - 0
Core/Src/tem.c

@@ -17,6 +17,14 @@ uint8_t Parse_Tem(uint8_t* data, Tem_Tpye type)
     float voltage1, voltage2;
     uint8_t i=0;
 
+    typedef union{
+   float value;
+   uint8_t arr[4];
+  }Hex_to_float;
+	
+	static Hex_to_float hex_to_float;
+
+
     //tem_inf[cang_id].RTData_Num = 1;//三点测温
     //tem_inf[cang_id].ErrorCnt = 0;
 
@@ -78,6 +86,38 @@ uint8_t Parse_Tem(uint8_t* data, Tem_Tpye type)
             //do nothing 
         }
 
+    }else if(Tem_FST100_1007 == type){
+            ModbusCRC = data[7]<<8;
+			ModbusCRC |= data[8];
+			
+        if(data[1]!=0x03)              //校验读写属性
+        {
+            error = 1;
+        }
+        else if(data[2] != 0x04)			//校验数据长度
+        {
+            error = 1;
+        }
+        else if(ModbusCRC != LIB_CRC_MODBUS(data,7))		//校验CRC
+        {
+            error = 1;
+        }
+
+        if(0 == error){
+            tem_inf[cang_id].ErrorCnt = 0;
+		    tem_inf[cang_id].Error = 0;
+            tem_inf[cang_id].RTData_Num = 1;
+		
+            
+            hex_to_float.arr[0] = data[6];
+            hex_to_float.arr[1] = data[5];
+            hex_to_float.arr[2] = data[4];
+            hex_to_float.arr[3] = data[3];					
+            tem_inf[cang_id].temperature1 = hex_to_float.value;
+            
+        }else{
+            Tem_Error(data[0]);
+        }
     }
 
     return error;

+ 2 - 2
MDK-ARM/caijiqiV001.uvoptx

@@ -308,7 +308,7 @@
 
   <Group>
     <GroupName>Application/User/Core</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -328,7 +328,7 @@
       <GroupNumber>2</GroupNumber>
       <FileNumber>3</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
+      <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Core/Src/main.c</PathWithFileName>

+ 2 - 2
MDK-ARM/caijiqiV001.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>caijiqiV001\</OutputDirectory>
-          <OutputName>CJB_version220531_002_230526</OutputName>
+          <OutputName>CJB_version230603_122bin</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>
@@ -275,7 +275,7 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8000000</StartAddress>
+                <StartAddress>0x8020000</StartAddress>
                 <Size>0x20000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>