Procházet zdrojové kódy

Merge branch 'develop_jt808' of http://192.168.0.139:3000/xuy/control into develop_jt808

libo před 2 roky
rodič
revize
67e4de23bf
5 změnil soubory, kde provedl 122 přidání a 22 odebrání
  1. 4 3
      Inc/CollectMaster485.h
  2. 6 0
      Inc/KeySlave485.h
  3. 40 5
      Src/CollectMaster485.c
  4. 69 11
      Src/Dwin.c
  5. 3 3
      Src/freertos.c

+ 4 - 3
Inc/CollectMaster485.h

@@ -302,7 +302,7 @@ extern float Zero_Of_LiquidMeter[8];//8
 extern float Zero_Of_TankCapacity[8];//8个仓的罐容表零点参数
 
 
-extern uint8_t HaiDiFa001;//8个海底阀的状态
+//extern uint8_t HaiDiFa001;//8个海底阀的状态
 
 //20210129李伟修改---增加一个全局数组用于保存8个仓的阀门状态(按照平台的位定义协议进行组包)
 extern uint8_t Array_Of_Valve[32];
@@ -334,7 +334,7 @@ extern uint8_t  Array_IO_OnOff_AllStore[];
 extern uint8_t  Array_IO_Exception_AllStore[];
 
 
-extern uint8_t ValState01,ValState02,ValState03,ValState04,ValState05,ValState06,ValState07,ValState08;
+//extern uint8_t ValState01,ValState02,ValState03,ValState04,ValState05,ValState06,ValState07,ValState08;
 
 extern Calibrat_TypeDef  PlatformCalibrat;
 extern uint8_t StoreNumber,all_Store;
@@ -364,9 +364,10 @@ void ReadCollect_QingJiao_TX(void);
 void CollectData_Transform_UsefullData(void);//实时数据转换
 void Immediate_Processing_Function(void);//新增
 void Send_Yewei_offset_To_Collect(void);//
-void ValStateConvertTo91(void);
+//void ValStateConvertTo91(void);
 void UpdateWenYouFifo(void);//稳油数据更新
 
+extern void PreProcess_GetValveStatus(uint8_t* big_cover, uint8_t* small_cover, uint8_t* seavalve, uint8_t* unloadvalve);
 void Get_All_Moniliang_Data_4Cang(uint16_t GroupNum);
 
 //void ReadCollect_ValveState_64Byte(uint8_t CangNum);

+ 6 - 0
Inc/KeySlave485.h

@@ -151,7 +151,13 @@
 #define ADDR_DWIN_Text05 					0x1870   //迪文屏幕显示文本框的地址---启动界面的版本信息
 
 
+#define VALVESTATUS_EXCEPTION    (0X00)
+#define VALVESTATUS_BREAK        (0X01)   //not used
+#define VALVESTATUS_OPEN         (0X02)
+#define VALVESTATUS_CLOSE        (0X03)
 
+#define ADDR_DWIN_UnloadVlave_Status    0x1900   //四态(异常,破,开,关),破不设置, 该地址为第一仓地址,后边每仓地址+2
+#define ADDR_DWIN_SeaVlave_Status       0x1910   //四态(异常,破,开,关),破不设置,该地址为第一仓地址,后边每仓地址+2
 
 
 //#define ADDR_DWIN_Title_IO 0x1B00   //阀门名称标志

+ 40 - 5
Src/CollectMaster485.c

@@ -75,7 +75,7 @@ uint8_t ValStateArr_0x20_Cang04[64],ValStateArr_PoFeng_0x20_Cang04[64];//
 uint8_t Array_Of_Valve[32];//
 //20210129李伟修改  -----从采集器读取的8个阀门的状态,对应于原来的采集器的8仓;
 //对应于平台解析的1--4号阀门状态(每仓4个阀门,最多32个阀门)
-uint8_t ValState01,ValState02,ValState03,ValState04,ValState05,ValState06,ValState07,ValState08;
+uint8_t ValState01[8]; //ValState02,ValState03,ValState04,ValState05,ValState06,ValState07,ValState08;
 uint8_t Val_4Bit_H,Val_4Bit_L;//高四位与低四位
 
 uint32_t IO_OnOff_State01=0,IO_OnOff_State02=0,IO_OnOff_State03=0,IO_OnOff_State04=0;
@@ -107,10 +107,10 @@ uint8_t StoreNumber=3,all_Store=3;
 
 uint8_t CabinetNumForWenYou=0;//默认选择第一个仓的液位计用作稳油判断
 
-uint8_t HaiDiFa001=0x00;//8个海底阀的状态
-uint8_t XieYouFa001=0x00;//8个泄油阀的状态
-uint8_t ManHole_CoverBig001=0x00;//8个人孔大盖的状态
-uint8_t ManHole_CoverSmall001=0x00;//8个人孔小盖的状态
+//uint8_t HaiDiFa001=0x00;//8个海底阀的状态
+//uint8_t XieYouFa001=0x00;//8个泄油阀的状态
+//uint8_t ManHole_CoverBig001=0x00;//8个人孔大盖的状态
+//uint8_t ManHole_CoverSmall001=0x00;//8个人孔小盖的状态
  
 uni_IncliAngle uni_IncliAngle001;
 uni_TankVol_Tempe20 uni_TankVol_Tempe20_001,uni_TankVol_Tempe20_002,uni_TempRealtime001;
@@ -181,7 +181,40 @@ void CollectMaster485_TX_Set(uint8_t en)
 
 }
 
+#if 1
+void PreProcess_GetValveStatus(uint8_t* big_cover, uint8_t* small_cover, uint8_t* seavalve, uint8_t* unloadvalve)
+{
+	int i=0;
+	ValState01[0]=Collect485.ValveState_Num1;//采集器的1仓
+	ValState01[1]=Collect485.ValveState_Num2;//采集器的2仓
+	ValState01[2]=Collect485.ValveState_Num3;//采集器的3仓
+	ValState01[3]=Collect485.ValveState_Num4;//采集器的4仓
+	ValState01[4]=Collect485.ValveState_Num5;//采集器的5仓
+	ValState01[5]=Collect485.ValveState_Num6;//采集器的6仓
+	ValState01[6]=Collect485.ValveState_Num7;//采集器的7仓
+	ValState01[7]=Collect485.ValveState_Num8;//采集器的8仓
+
+	for(i=0; i<Config_info_all.All_number; i++){
+		if(ValState01[i]&GPIO_PIN_0){
+			*big_cover |= (0X01 << i);
+		}
+
+		if(ValState01[i]&GPIO_PIN_1){
+			*small_cover |= (0X01 << i);
+		}
+
+		if(ValState01[i]&GPIO_PIN_2){
+			*seavalve |= (0X01 << i);
+		}
+
+		if(ValState01[i]&GPIO_PIN_3){
+			*unloadvalve |= (0X01 << i);
+		}
+	}
 
+
+}
+#else 
 //RS485模式控制.
 //将阀门状态按照0x91的规格进行打包。有效数据32字节
 //
@@ -422,6 +455,8 @@ void ValStateConvertTo91(void)
 			//-----------------------------------------------------1号传感器结束,只实现了第1仓,剩下7仓未实现
      //李伟修改 20210206     根据上午会议讨论,1仓位置与7仓位置交换------结束
 }
+
+#endif 
 uint32_t a1_cnt  = 0;
 #include "Elec_Seal.h"
 uint16_t CheckInFrame_Collect485(uint16_t LenRx,uint16_t MsgID)

+ 69 - 11
Src/Dwin.c

@@ -535,17 +535,20 @@ void Go_homepage(void)
 void Lcd_Init(void)
 {
 	//初始化界面
-	
+	uint8_t i=0;
 
 	WrDwinCmd16(ADDR_DWIN_CoverSmall,0x00);//人孔小盖关
 //	HAL_Delay(15);
 	WrDwinCmd16(ADDR_DWIN_CoverBig,0x00);//人孔大盖关
 //	HAL_Delay(15);
-	WrDwinCmd16(ADDR_DWIN_HaiDiFa,0x00);//底阀关
+	//WrDwinCmd16(ADDR_DWIN_HaiDiFa,0x00);//底阀关
 //	HAL_Delay(15);
+	for(i=0;i<StoreNumber;i++){
+        WrDwinCmd16(ADDR_DWIN_UnloadVlave_Status+2*i, VALVESTATUS_CLOSE); 
+        WrDwinCmd16(ADDR_DWIN_SeaVlave_Status+2*i, VALVESTATUS_CLOSE); 
+	}
 	
-	
-	WrDwinCmd16(ADDR_DWIN_XieYouFa,0x00);//卸油阀关
+	//WrDwinCmd16(ADDR_DWIN_XieYouFa,0x00);//卸油阀关
 //	HAL_Delay(15);
 	
 	WrDwinCmd16(ADDR_DWIN_Seal_Lock,0xff);//锁不显示--
@@ -681,18 +684,30 @@ void Lcd_Init(void)
 输入:无
 输出返回:无	
 ******************************************************************************/
-uint8_t a=0,b=0,c=0,d=0,i =0;
-uint8_t e1=0,f1=0,g1=0,h1=0;
+//uint8_t a=0,b=0,c=0,d=0;
+uint8_t e1=0,f1=0;
 void Dispaly_CarAndValveState(void)
 {
 	uint8_t e=0,f=0,g=0,h=0;
-	e=0,f=0,g=0,h=0;
+	uint8_t i=0;
+
+	uint8_t SeaValue001=0x00;//8个海底阀的状态
+    uint8_t UnloadingValve001=0x00;//8个泄油阀的状态
+    uint8_t ManHole_CoverBig001=0x00;//8个人孔大盖的状态
+    uint8_t ManHole_CoverSmall001=0x00;//8个人孔小盖的状态
+    //uint8_t Unloaded001=0x00;//8个卸尽状态, 卸尽仓置1
+
+	static uint8_t static_unloadvalve_state[8] ={VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK\
+                                                ,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK};
+    static uint8_t static_seavalve_state[8] ={VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK\
+                                            ,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK,VALVESTATUS_BREAK};
+
 	for(i=0;i<StoreNumber;i++)
 	{
-		a|= (0x0001&(IO_Date.IO_state[0]>>i*4))<<i;
-		b|= (0x0001&(IO_Date.IO_state[0]>>(i*4+1)))<<i;
-		c|= (0x0001&(IO_Date.IO_state[0]>>(i*4+2)))<<i;
-		d|= (0x0001&(IO_Date.IO_state[0]>>(i*4+3)))<<i;
+		//a|= (0x0001&(IO_Date.IO_state[0]>>i*4))<<i;
+		//b|= (0x0001&(IO_Date.IO_state[0]>>(i*4+1)))<<i;
+		//c|= (0x0001&(IO_Date.IO_state[0]>>(i*4+2)))<<i;
+		//d|= (0x0001&(IO_Date.IO_state[0]>>(i*4+3)))<<i;
 		e|= (0x0001&(IO_Date.IO_normalstate[0]>>i*4))<<i;
 		f|= (0x0001&(IO_Date.IO_normalstate[0]>>(i*4+1)))<<i;
 		g|= (0x0001&(IO_Date.IO_normalstate[0]>>(i*4+2)))<<i;
@@ -707,6 +722,9 @@ void Dispaly_CarAndValveState(void)
 //		WrDwinCmd16(0x1003,b);//人孔大盖关
 //		WrDwinCmd16(0x1006,d);//底阀关
 //		WrDwinCmd16(0x1009,c);//卸油阀关
+
+		PreProcess_GetValveStatus(&ManHole_CoverBig001, &ManHole_CoverSmall001, &SeaValue001, &UnloadingValve001);
+
 		if(e1!=e)
 		{
 			WrDwinCmd16(ADDR_DWIN_StateYiChang_CoverSmall,e);//人孔小盖异常
@@ -717,6 +735,8 @@ void Dispaly_CarAndValveState(void)
 			WrDwinCmd16(ADDR_DWIN_StateYiChang_CoverBig,f);//人孔大盖异常
 			f1=f;
 		}
+
+#if 0
 		if(h1!=h)
 		{
 			WrDwinCmd16(ADDR_DWIN_StateYiChang_HaiDiFa,h);//底阀异常
@@ -727,6 +747,44 @@ void Dispaly_CarAndValveState(void)
 			WrDwinCmd16(ADDR_DWIN_StateYiChang_XieYouFa,g);//卸油阀异常
 			g1 = g;
 		}
+#else
+     for(i=0;i<StoreNumber;i++)
+     {
+        uint8_t status = VALVESTATUS_CLOSE;
+        if((g&(0x01<<i)) > 0){ //异常了
+            status = VALVESTATUS_EXCEPTION;
+        }else{
+            if((UnloadingValve001&(0x01<<i)) == 0){ //关
+                status = VALVESTATUS_CLOSE;
+            }else{ //开
+                status = VALVESTATUS_OPEN;
+            }
+        }
+
+        if(static_unloadvalve_state[i] != status){
+            WrDwinCmd16(ADDR_DWIN_UnloadVlave_Status+2*i, status); 
+            static_unloadvalve_state[i] = status; 
+        }
+
+        //SealVlave
+        if((h&(0x01<<i)) > 0){ //异常了
+            status = VALVESTATUS_EXCEPTION;
+        }else{
+            if((SeaValue001&(0x01<<i)) == 0){ //关
+                status = VALVESTATUS_CLOSE;
+            }else{ //开
+                status = VALVESTATUS_OPEN;
+            }
+        }
+
+        if(static_seavalve_state[i] != status){
+            WrDwinCmd16(ADDR_DWIN_SeaVlave_Status+2*i, status); 
+            static_seavalve_state[i] = status; 
+        }
+
+     }
+
+#endif 
 #if 0		
 		if(Full_Oil_allinfo.Null_ID!=Full_Oil_allinfo.Null_ID_disp)
 		{

+ 3 - 3
Src/freertos.c

@@ -634,7 +634,7 @@ char arrValve_title01[256] = "    
 #if 0
 char arrValve_title02[256] = "    海底阀   卸油阀  人孔盖  小孔盖  管道油"; //中岚项目  阀门标题栏
 #else
-char arrValve_title02[256] = "  液位(m) 实时体积(L) 标准体积(L)";
+char arrValve_title02[256] = "    液位(m) 实时体积(L) 标准体积(L)";
 #endif
 
 uint32_t tick001;
@@ -848,7 +848,7 @@ void Task_Usart3_LCD_Update(void const *argument)
 		//Read_REAL_Time();//获取迪文屏时间,刷新至全局变量
 
 		//if(i00Data>=1*2)//给屏幕发送指令,刷新传感器的数值显示
-		ValStateConvertTo91();
+		//ValStateConvertTo91();
 		if (StartUpdate_Screen_Flag == True) //1S更新一次小屏状态
 		{
 			StartUpdate_Screen_Flag = False;
@@ -3176,7 +3176,7 @@ void DisplaySensorInfo(void)
 #else
 	if(Config_info_all.Config_fun_id&0x80) //液位
 	{
-		Len003 += sprintf((char *)bufTextSensorInfo + Len003, " %5.4f  %5.2f  %5.2f",
+		Len003 += sprintf((char *)bufTextSensorInfo + Len003, " %5.4f    %5.2f      %5.2f",
 					 pT2C_ALL_Sensor_Data_Disp->MoniLiang_Data_Every_Cang[0], //液位Pre:%5.2f
 					 Vt_Local_Disp, //采集板查表计算的Vt
 					 V20_Local_Disp);