From 65062d0d5b21f838aa0043a15ce54cfab8d72c43 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Tue, 11 Jun 2024 14:23:53 +0800
Subject: [PATCH] 1.Fixed communication failure between MCU and wireless module 2.Fix the wrong judgment of alkaline lithium power

---
 Function/VALVE/valve_control.c |  557 +++++++++++++++++++++++++++----------------------------
 1 files changed, 270 insertions(+), 287 deletions(-)

diff --git a/Function/VALVE/valve_control.c b/Function/VALVE/valve_control.c
index ce39b3b..25ade7a 100644
--- a/Function/VALVE/valve_control.c
+++ b/Function/VALVE/valve_control.c
@@ -1,308 +1,291 @@
 #include "valve_control.h"
 #include "gpio.h"
-#include "system_mem_para.h"
+#include "uart.h"
+#include "lcd.h"
+#include "gprs.h"
+#include "low_pwr_test.h"
+#include "tim.h"
+#include "system_log.h"
+#include "check_out.h"
+#include "master_slave_inter.h"
 
-__IO VALVE_CTRL_PARA_T	valve_ctrl_para_g;
+VALVE_WORK_TYPE op_cl_valve_log_flag_g = VWT_NONE; // ��/�ط���־��־λ�������ж��Ƿ���Ҫ��־�洢�����棩
 
+SYS_ALARM_VALVE_T op_cl_valve_cause_id = AV_NORMAL; // ���ط�ԭ��ID��������ʾ/�ط�ԭ��ID�洢��
 
-void Motor_AB_GPIO_Init(void)
+FlagStatus valve_signal_complete_g = RESET; // ���ط���λ�ź�
+
+/*�ط���Ĭ��ֵ*/
+TYPE_CHECK_SIZE(VALVE_CTL_BYTES_T,22);//�˲�ṹ���С	
+VALVE_CTL_BYTES_T __attribute__ ((aligned (2))) valve_ctl_bytes_g = {
+    {1, 1, 1, 0, 0, 0},
+    {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0},
+    {0, 0, 1, 0, 1, 0},
+    {1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0},
+    {0},
+    {0},
+    {0},
+    {0},
+    {0, 0, 0, 0, 1, 1, 1, 1},
+    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0},
+    {0},
+};
+
+static const VALVE_CLOSE_FUNC_TABLE_DRV_T  valve_close_tab_func[] = {
+    {V_GPRS_CMD_CL, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_1},
+    {AV_FLOW_DIRECTION, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_1},
+    /*{���仯�ط�, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_1},*/
+		{AV_UNCAP_1, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_1},
+
+    {AV_VALVE_ERR, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+    {AV_BALANCE_1, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+    {AV_BALANCE_2, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+    {AV_BALANCE_3, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+    {AV_BALANCE_4, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+    {AV_BALANCE_5, 10, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_2},
+
+    {AV_SET_CUMULATE, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_3},
+    {AV_NO_USE_GAS, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_3},
+    {AV_NO_GPRS, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_3},
+    /* {���üƷ�, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_3},*/
+
+    {AV_LITH_LOW, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_LITH_UNDER, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_LITH_REMOVE, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_ALKA_LOW, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_ALKA_UNDER, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_ALKA_REMOVE, 10, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+    {AV_GPRS_FAIL, 12, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_4},
+
+    /* {ȫΪSV101�IJ���, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_5},*/
+
+    {AV_TEMP_UP, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_TEMP_UP_UP, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_TEMP_DOWN, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_TEMP_DOWN_DOWN, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_PRESS_UP, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_PRESS_UP_UP, 10, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_PRESS_DOWN, 12, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+    {AV_PRESS_DOWN_DOWN, 14, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_6},
+
+    {AV_TEMP_ERR, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_7},
+    {AV_PRESS_ERR, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_7},
+    {AV_CPU_TEMP_UP, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_7},
+    {AV_CPU_TEMP_DOWN, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_7},
+		{AV_CPU_TEMP_DRASTIC_CHANGE, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_7},
+
+    {AV_FLOW_VEL_ERR, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_TOF_DIFF_ERR, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_SOUND_VEL_ERR, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_SNR_ERR, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_SIG_UP, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_SIG_TH_ERR, 10, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_GAIN_ERR, 12, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+    {AV_UT_LOSE, 14, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_8},
+
+    {AV_INPUT_WATER_ERR, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_9},
+		{AV_MEDIA_ERR, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_9},
+    {AV_DISMANTLE, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_9},
+    {AV_MEASURE_ERR, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_9},
+
+    {AV_LEAKAGE, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_LCD_UP, 2, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_LCD_TEMP_LOW, 4, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_FLOW_UP_1, 6, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_FLOW_UP_2, 8, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_FLOW_UP_3, 10, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_CONSTANT_TINY_FLOW, 12, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+    {AV_CONSTANT_FLOW, 14, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_10},
+
+    {AV_CL_HAVE_FLOW, 0, (uint16_t *)&valve_ctl_bytes_g.valve_ctr_11},
+};
+
+void Valve_IO_Init(void)
 {
-	OutputIO(Motor_A_PORT,Motor_A_PIN,OUT_PUSHPULL);
-	OutputIO(Motor_B_PORT,Motor_B_PIN,OUT_PUSHPULL);
-}
-
-void Motor_OP_CL_GPIO_Init(void)
-{
-	InputtIO(Motor_OP_PORT,Motor_OP_PIN,IN_NORMAL);
-	InputtIO(Motor_CL_PORT,Motor_CL_PIN,IN_NORMAL);
-}
-
-
-void Motor_OP_CL_GPIO_Init_sleep_mode(void)
-{
-	CloseIO(Motor_OP_PORT,Motor_OP_PIN);
-	CloseIO(Motor_CL_PORT,Motor_CL_PIN);
-}
-void Force_Open_GPIO_Init(void)
-{
-	InputtIO(VALVE_FORCE_OPEN_PORT,VALVE_FORCE_OPEN_PIN,IN_NORMAL);
-}
-
-void Force_Open_GPIO_Init_sleep_mode(void)
-{
-	CloseIO(VALVE_FORCE_OPEN_PORT,VALVE_FORCE_OPEN_PIN);
-}
-
-
-void ValveMotorOpenRun(void)
-{
-	Motor_AB_GPIO_Init();
-	Motor_OP_CL_GPIO_Init();
-	Motor_A_HIGH;
-	Motor_B_HIGH;
-	GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, ENABLE);
-	GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, ENABLE);
-}
-
-void ValveMotorCloseRun(void)
-{
-	Motor_AB_GPIO_Init();
-	Motor_OP_CL_GPIO_Init();
-	Motor_A_LOW;
-	Motor_B_LOW;
-	GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, ENABLE);
-	GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, ENABLE);
-}
-
-void ValveMotorStop(void)
-{
-	Motor_AB_GPIO_Init();
-	Motor_OP_CL_GPIO_Init_sleep_mode();
-	GPIO_EXTI_Init( Motor_OP_PORT, Motor_OP_PIN, EXTI_FALLING, DISABLE);
-	GPIO_EXTI_Init( Motor_CL_PORT, Motor_CL_PIN, EXTI_FALLING, DISABLE);
-	Motor_A_LOW;
-	Motor_B_HIGH;
-}
-
-
-
-VALVE_STATUS   Read_OP_CL_VALVE_Status(u16 delay_time_ms)
-{
-	uint8_t Open_status,Close_status;
-	Motor_OP_CL_GPIO_Init();
-	if((delay_time_ms > 0)&&(delay_time_ms <101 ))  //�˴�������Ŀǰ����Ҫ�ӳ٣��ӳ�ʱ���0����
-	{
-		delay_ms(delay_time_ms);	
-	}
-	Open_status = Motor_OP_IO_READ;
-	Close_status = Motor_CL_IO_READ;
-
-	if((Open_status==(uint8_t)Bit_RESET)&&(Close_status==(uint8_t)Bit_SET))
-	{
-		return VALVE_OPEN;
-	}else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_RESET))
-	{
-		return VALVE_CLOSE;
-	}else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_SET))
-	{
-		return VALVE_ERROR;
-	}else
-	{
-		return VALVE_ERROR;
-	}
+	CMU_PERCLK_SetableEx(PADCLK, ENABLE);  //PADʱ�ӣ�GPIO��ʹ�ܺ���
+	InputtIO( VALVE_FORCED_OPEN_PORT, VALVE_FORCED_OPEN_PIN, IN_NORMAL);
+	OutputIO( VALVE_CMD_A_PORT, VALVE_CMD_A_PIN, OUT_PUSHPULL);
+	OutputIO( VALVE_CMD_B_PORT, VALVE_CMD_B_PIN, OUT_PUSHPULL);
+	OutputIO( VALVE_CMD_C_PORT, VALVE_CMD_C_PIN, OUT_PUSHPULL);
 	
+	VALVE_SLEEP;
+	VALVE_PWR_OFF;
 }
 
-
-
-void  ValveRunParaInit(VALVE_TYPE valve_type_in)
+#define VALVE_SWITCHING_G6_G10	1750U
+#define VALVE_SWITCHING_G16_G25	2300U
+void Valve_OpenCloseTimeInit(void)
 {
-//	VALVE_STATUS	valve_status;	
-	switch (valve_type_in){		
-		case VM_PENGSHENG: ;
-		case VM_HADE:		
-			save_valve_para_g.valve_status = Read_OP_CL_VALVE_Status(0);
-
-		break;
-		
-		default:break;
-	}
-	
-	//������Ҫ��ʼ���IJ���
-	
-}
-
-
-uint16_t GetValveRunMaxTime(CALIBER_TYPE caliber_type_l)
-{
-	switch (caliber_type_l){			
-						case DN25_TYPE: return VALVE_HADE_RUN_TIME_DN25 ;break;
-						case DN32_TYPE: return VALVE_HADE_RUN_TIME_DN32 ;break;
-						case DN40_TYPE: return VALVE_HADE_RUN_TIME_DN40 ;break;
-						case DN50_TYPE:	return VALVE_HADE_RUN_TIME_DN50 ;break;
-						case DN80_TYPE:	return VALVE_HADE_RUN_TIME_DN80 ;break;	
-						case DN100_TYPE:	return VALVE_HADE_RUN_TIME_DN100 ;break;
-						case DN150_TYPE:	return VALVE_HADE_RUN_TIME_DN150 ;break;							
-						case DN200_TYPE:	return VALVE_HADE_RUN_TIME_DN200 ;break;						
-						default:	return VALVE_HADE_RUN_TIME_DN200 ;break;
-				}
-}
-
-
-void ValveCtrlHade(CALIBER_TYPE caliber_type_l,FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p)
-{
-	if(valve_ctrl_para_g.valve_ctrl_order == VC_OPEN){
-		if(Read_OP_CL_VALVE_Status(0) == VALVE_OPEN){
-			ValveMotorStop();
-			save_valve_para_g.valve_status = VALVE_OPEN;
-			valve_ctrl_para_g.close_time_cnt = 0;
-			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-			
-		}else{
-			if(0){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
-			
-			}else{
-				valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
-		
-				ValveMotorOpenRun();
-
-				save_valve_para_g.valve_status = VALVE_OPENING;
-				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-				
-			}
-			
-		}
-		
-		
-	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_CLOSE){
-		if(Read_OP_CL_VALVE_Status(0) == VALVE_CLOSE){
-			ValveMotorStop();
-			save_valve_para_g.valve_status = VALVE_CLOSE;
-			valve_ctrl_para_g.open_time_cnt = 0;
-			valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-			
-		}else{
-			if(0){ //?Զ����485�ɼ���������ӳ�ִ�з��Ŷ���
-			
-			}else{
-				
-				valve_ctrl_para_g.close_time_cnt = GetValveRunMaxTime(caliber_type_l);
-				ValveMotorCloseRun();
-
-				save_valve_para_g.valve_status = VALVE_CLOSING;
-				valve_ctrl_para_g.valve_ctrl_order = VC_NONE;
-				
-			}
-			
-		}
-	}else if(valve_ctrl_para_g.valve_ctrl_order == VC_LOCK){
-		save_valve_para_g.valve_lock_state = VL_LOCK;
-		
-	}
-	
-	
-	//?�жϿ��ط��Ƿ�λ
-	if(save_valve_para_g.valve_status==VALVE_OPENING){
-		if(valve_ctrl_para_g.open_time_cnt==0){
-			//?��ʱ����
-			ValveMotorStop();
-			save_valve_para_g.valve_status = VALVE_ERROR;
-			
-		}else{
-			valve_ctrl_para_g.open_time_cnt--;
-		}
-		
-		if(valve_ctrl_para_g.force_open_status ==SET){
-			//��������������ǿ�����ر�����
-			ValveMotorStop();
-		}
-			
-			
-		
-	}else if(save_valve_para_g.valve_status==VALVE_CLOSING){
-		if(valve_ctrl_para_g.close_time_cnt==0){
-			//?��ʱ����
-			ValveMotorStop();
-			save_valve_para_g.valve_status = VALVE_ERROR;
-			
-		}else{
-			valve_ctrl_para_g.close_time_cnt--;
-		}
-		
-		if(valve_ctrl_para_g.force_open_status ==SET){
-			//�ط�����������ǿ�����ر�������״̬�ı�ɿ����У����ÿ�����ʱ
-			ValveMotorStop();
-			save_valve_para_g.valve_status = VALVE_OPENING;
-			valve_ctrl_para_g.open_time_cnt = GetValveRunMaxTime(caliber_type_l);
-		}
-	}
-	
-	
-	if((save_valve_para_g.valve_status==VALVE_OPENING)||(save_valve_para_g.valve_status==VALVE_CLOSING))
-		sys_fun_run_ctrl_p->valve_ctrl_flag.running_flag = SET;
+	if(check_cal_g.device_type == G6 || check_cal_g.device_type == G10)
+		BsTimer_Init(12000,VALVE_SWITCHING_G6_G10); // 1Khz = 1ms
 	else
-		sys_fun_run_ctrl_p->valve_ctrl_flag.running_flag = RESET;
-	
+		BsTimer_Init(12000,VALVE_SWITCHING_G16_G25); // 1Khz = 1ms
+	BSTIM_EGR_UG_Setable(ENABLE); //ʹ��UG�Ĵ������ڸ���ARR��PSC
+	BSTIM_ISR_UIF_Clr();		
 }
 
 
-//����������
-ErrorStatus ValveCtrlOrder(VALVE_CTEL_TYPE_T valve_ctrl_order_l) 
+// ����
+SYS_ALARM_VALVE_T Valve_Open(SYS_ALARM_VALVE_T op_cl_cause_id)
 {
-	switch(valve_ctrl_order_l){
-		case VC_NONE:break;
-		case VC_OPEN:
-			if((save_valve_para_g.valve_status == VALVE_CLOSE)&&(valve_ctrl_para_g.force_open_status==RESET)){
-				valve_ctrl_para_g.valve_ctrl_order = VC_OPEN;
-				return PASS;
+  if (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_CL) // ����
+  {
+		Valve_Awaken_Init();
+		ValveCtl_BsTimer_Clk_Init();
+    /*���磬����*/
+		SYS_BST_EN;
+    VALVE_PWR_ON;
+    VALVE_OPEN;
+		BSTIM_CR1_CEN_Setable(ENABLE);//������ʱ��TIM
+    __VALVE_WORK_TYPE_SET(VWT_OPEN);
+    __SYS_STATUS_BYTES_STATUS(valve_state, VALVE_OPENING, AV_NORMAL);
+#ifdef RS232_PRINTF
+    printf("---> ������ <---\r\n");
+#endif	
+		op_cl_valve_cause_id = op_cl_cause_id;	
+  }
+	return AV_NORMAL;
+}
+
+// �ط�
+SYS_ALARM_VALVE_T Valve_Close(SYS_ALARM_VALVE_T op_cl_cause_id)
+{
+  if (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_OP) // ���ſ�
+  {
+		Valve_Awaken_Init();
+		ValveCtl_BsTimer_Clk_Init();
+    /*���磬�ط�*/
+		SYS_BST_EN;
+    VALVE_PWR_ON;
+    VALVE_CLOSE;
+		BSTIM_CR1_CEN_Setable(ENABLE);//������ʱ��TIM
+    if (__SYS_STATUS_BYTES_GET(valve_lock) == SET)
+      __VALVE_WORK_TYPE_SET(VWT_FORCED_CLOSE);
+    else
+      __VALVE_WORK_TYPE_SET(VWT_NORMAL_CLOSE);
+    __SYS_STATUS_BYTES_STATUS(valve_state, VALVE_CLOSING, AV_NORMAL);
+#ifdef RS232_PRINTF
+    printf("---> �ط��� <---\r\n");
+#endif
+#if GPRS_PROTOCOL_SELECT
+        gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.valve_close_reason = op_cl_valve_cause_id = op_cl_cause_id; // ����Զ���ط�ԭ��ID
+#else
+        op_cl_valve_cause_id = op_cl_cause_id;     // ����Զ���ط�ԭ��ID
+#endif		
+		
+  }
+	return AV_NORMAL;
+}
+/*�жϿ��ط���λ*/
+void Valve_StateSet(void)
+{
+  if (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_CLOSING || __SYS_STATUS_BYTES_GET(valve_state) == VALVE_OPENING)
+  {
+		IWDT_Clr();
+    if (valve_signal_complete_g) // �е�λ�ź�
+    {
+      valve_signal_complete_g = RESET;
+			if(zero_drift_valve_flag == 0)
+				__SYS_ALARM_BYTES_SET(valve_change,SET);
+			else 
+				zero_drift_valve_flag = 0;
+      if (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_CLOSING) // �ı�״̬��־λ
+        __SYS_STATUS_BYTES_STATUS(valve_state, VALVE_CL, AV_NORMAL);
+      else if (__SYS_STATUS_BYTES_GET(valve_state) == VALVE_OPENING)
+        __SYS_STATUS_BYTES_STATUS(valve_state, VALVE_OP, AV_NORMAL);
+#ifdef RS232_PRINTF
+      printf("---> ��/�ط���� <---\r\n");
+#endif
+    }
+#ifdef RS232_PRINTF
+    printf("PE2 = %d,PE3 = %d,PE4 = %d\r\n", GPIO_ReadOutputDataBit(VALVE_CMD_A_PORT, VALVE_CMD_A_PIN),
+           GPIO_ReadOutputDataBit(VALVE_CMD_B_PORT, VALVE_CMD_B_PIN),
+           GPIO_ReadOutputDataBit(VALVE_CMD_C_PORT, VALVE_CMD_C_PIN));
+#endif
+  }
+}
+
+
+/*���������������ж�*/
+uint8_t Valve_Open_SpecialJudge(__IO SYS_STATUS_T *state_bytes_p)
+{
+  /*���������ȼ�����״̬�֡������ֵȹ��ù��ܵ�����*/
+  uint8_t power_temp_press_status = state_bytes_p->lith_under | state_bytes_p->lith_low | state_bytes_p->lith_remove |
+                                    state_bytes_p->alka_under | state_bytes_p->alka_low | state_bytes_p->alka_remove |
+                                    state_bytes_p->temp_down | state_bytes_p->temp_down_down | state_bytes_p->temp_up | state_bytes_p->temp_up_up |
+                                    state_bytes_p->press_down | state_bytes_p->press_down_down | state_bytes_p->press_up | state_bytes_p->press_up_up;
+
+  return !power_temp_press_status;
+}
+
+void Valve_Process(SYS_ALARM_VALVE_T * pOp_cl_cause)
+{
+  if (LargeCurrent_LimitingProcess() & 1)
+  {
+    /*�����Ҫ�ط�*/
+    if (*pOp_cl_cause != V_KEY_OP && *pOp_cl_cause != AV_NORMAL)
+		{
+			uint8_t valve_ctl_temp = 0;
+			// �����ط�
+			if (*pOp_cl_cause == V_KEY_CL)
+			{
+#ifdef RS232_PRINTF
+				printf("�����Թط�\r\n");
+#endif
+				*pOp_cl_cause = Valve_Close(*pOp_cl_cause);
 			}
-		break;
-		
-		case VC_CLOSE:
-			if((save_valve_para_g.valve_status != VALVE_CLOSE)&&(valve_ctrl_para_g.force_open_status==RESET)){
-				valve_ctrl_para_g.valve_ctrl_order = VC_CLOSE;
-				return PASS;
-			}
-		break;
-		
-		case VC_UNLOCK:
-			save_valve_para_g.valve_lock_state = VL_UNLOCK;
-			return PASS;
-		break;
-		
-		case VC_LOCK:
-			save_valve_para_g.valve_lock_state = VL_LOCK;
-			return PASS;
-		break;
-		
-		default: break;
-	}
-	
-	return FAIL;
-}
-
-
-void ValveForceOpenSignalCheck(void)
-{
-	uint8_t force_open_io_status=(uint8_t)Bit_RESET;
-	Force_Open_GPIO_Init();
-	if(VALVE_FORCE_OPEN_IO_READ==Bit_SET){
-		delay_ms(5);
-		if(VALVE_FORCE_OPEN_IO_READ==Bit_SET)
-			force_open_io_status=(uint8_t)Bit_SET;	
-	}
-	
-	if(force_open_io_status==(uint8_t)Bit_SET){
-		if(valve_ctrl_para_g.force_open_status !=SET){
-			valve_ctrl_para_g.force_open_status =SET;
-			//��ʼ����ǿ��
+			else
+			{
+				// �ط����жϹط�
+				for (uint8_t i = 0; i < VALVE_CLOSE_FUNC_TABLE_NUM; i++)
+				{
+					// ���
+					if (valve_close_tab_func[i].valve_close_flag == *pOp_cl_cause && valve_close_tab_func[i].valve_close_byte != NULL)
+					{
+						valve_ctl_temp = (*valve_close_tab_func[i].valve_close_byte >> valve_close_tab_func[i].offset_bit) & 0x0003;
+						if (valve_ctl_temp & 0x01) // ��Ҫ�ط�
+						{
+							if (valve_ctl_temp & 0x02) // ǿ���Թط�
+							{
+								//�Ѿ��о����Թط����ֲ�����ǿ���Թط�����Ҫ�ı�ط�ID�����ڸ�ֱ�۵���ʾ
+								if(__SYS_STATUS_BYTES_GET(valve_state) == VALVE_CL && __SYS_STATUS_BYTES_GET(valve_lock) == RESET)
+								{
+									__VALVE_WORK_TYPE_SET(VWT_LOCK);
+									op_cl_valve_cause_id = *pOp_cl_cause;
+								}
+								__SYS_STATUS_BYTES_STATUS(valve_lock, SET, AV_NORMAL); // ����
+#ifdef RS232_PRINTF
+								printf("ǿ���Թط�\r\n");
+#endif
+							}
+							else // �����Թط�
+							{
+#ifdef RS232_PRINTF
+								printf("�����Թط�\r\n");
+#endif
+							}
+							*pOp_cl_cause = Valve_Close(*pOp_cl_cause);
+						}
+						else
+							*pOp_cl_cause = AV_NORMAL;
+						break;
+					}
+				}
+			}	
 		}
-			
-		
-	}else{
-		if(valve_ctrl_para_g.force_open_status ==SET){
-			valve_ctrl_para_g.force_open_status =RESET;
-			//��ʼ�ر�ǿ��
+		else if (*pOp_cl_cause == V_KEY_OP) // ����
+		{
+			//�춨ģʽ��ǿ���Թط����Զ���������Ҫ������־Ҳȥ��
+			if(__SYS_STATUS_BYTES_GET(valve_lock) == SET && sys_display_para_g.sys_and_display_mode == CALIB_MODE)
+				__SYS_STATUS_BYTES_STATUS(valve_lock, RESET, AV_NORMAL);
+		// �ж�ijЩ״̬�Ƿ�ָ�������״̬���жϣ�or �춨ģʽ
+//      if (Valve_Open_SpecialJudge(&sys_admin_g.sys_admin.state_bytes) || (sys_display_para_g.sys_and_display_mode == CALIB_MODE)) 
+//      {
+			*pOp_cl_cause = Valve_Open(*pOp_cl_cause);
+//      }
 		}
-		
-	}
-	
-	
-	if((valve_ctrl_para_g.force_open_status ==SET)&&(Read_OP_CL_VALVE_Status(0)==VALVE_OPEN)){
-		//?��⵽ǿ�������Ƿ���״̬��ȡ�Ѿ�����λ����ʾ�Ƴ�ǿ����Դ��
-	}
-	
+  }
+	Valve_StateSet();
 }
-
-void	valveCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p) //?  ���Ҫ������������ú���ValveCtrlOrder��VC_OPEN��;��δ����������
-{
-	
-	ValveForceOpenSignalCheck();//?ǿ���жϴ���
-	
-	ValveCtrlHade(equipment_basic_inf_g.caliber_type,sys_fun_run_ctrl_p);//���·��Ų���������
-	
-	
-}
-
 
 

--
Gitblit v1.9.3