From 5ac1d0febb8de5e91ce2463baea68ddac3f66091 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Thu, 16 May 2024 20:00:17 +0800
Subject: [PATCH] 完善脉冲计费和485采集处理

---
 Function/VALVE/valve_control.c |  565 +++++++++++++++++++++++++++++--------------------------
 1 files changed, 297 insertions(+), 268 deletions(-)

diff --git a/Function/VALVE/valve_control.c b/Function/VALVE/valve_control.c
index 25ade7a..28098fa 100644
--- a/Function/VALVE/valve_control.c
+++ b/Function/VALVE/valve_control.c
@@ -1,291 +1,320 @@
 #include "valve_control.h"
 #include "gpio.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"
+#include "system_mem_para.h"
 
-VALVE_WORK_TYPE op_cl_valve_log_flag_g = VWT_NONE; // ��/�ط���־��־λ�������ж��Ƿ���Ҫ��־�洢�����棩
+__IO VALVE_CTRL_PARA_T	valve_ctrl_para_g;
 
-SYS_ALARM_VALVE_T op_cl_valve_cause_id = AV_NORMAL; // ���ط�ԭ��ID��������ʾ/�ط�ԭ��ID�洢��
 
-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)
+void Motor_AB_GPIO_Init(void)
 {
-	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);
+	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 Valve_CTRL_GPIO_Init(void)
+{
+	Motor_AB_GPIO_Init();
+	Motor_A_LOW;
+	Motor_B_LOW;
+	Motor_OP_CL_GPIO_Init_sleep_mode();
 	
-	VALVE_SLEEP;
-	VALVE_PWR_OFF;
-}
-
-#define VALVE_SWITCHING_G6_G10	1750U
-#define VALVE_SWITCHING_G16_G25	2300U
-void Valve_OpenCloseTimeInit(void)
-{
-	if(check_cal_g.device_type == G6 || check_cal_g.device_type == G10)
-		BsTimer_Init(12000,VALVE_SWITCHING_G6_G10); // 1Khz = 1ms
-	else
-		BsTimer_Init(12000,VALVE_SWITCHING_G16_G25); // 1Khz = 1ms
-	BSTIM_EGR_UG_Setable(ENABLE); //ʹ��UG�Ĵ������ڸ���ARR��PSC
-	BSTIM_ISR_UIF_Clr();		
 }
 
 
-// ����
-SYS_ALARM_VALVE_T Valve_Open(SYS_ALARM_VALVE_T op_cl_cause_id)
+
+
+
+void ValveMotorOpenRun(void)
 {
-  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;
+	Motor_AB_GPIO_Init();
+	Motor_OP_CL_GPIO_Init();
+	Motor_A_HIGH;
+	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);
 }
 
-// �ط�
-SYS_ALARM_VALVE_T Valve_Close(SYS_ALARM_VALVE_T op_cl_cause_id)
+void ValveMotorCloseRun(void)
 {
-  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		
+	Motor_AB_GPIO_Init();
+	Motor_OP_CL_GPIO_Init();
+	Motor_A_LOW;
+	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 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_LOW;
+}
+
+
+
+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;
+	}
+	
+}
+
+
+
+void  ValveRunParaInit(VALVE_TYPE valve_type_in)
+{
+//	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;
 		
-  }
-	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
-  }
+		default:break;
+	}
+	
+	//������Ҫ��ʼ���IJ���
+	
 }
 
 
-/*���������������ж�*/
-uint8_t Valve_Open_SpecialJudge(__IO SYS_STATUS_T *state_bytes_p)
+uint16_t GetValveRunMaxTime(CALIBER_TYPE caliber_type_l)
 {
-  /*���������ȼ�����״̬�֡������ֵȹ��ù��ܵ�����*/
-  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);
-			}
-			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;
-					}
+	switch (caliber_type_l){			
+						case DN25_TYPE: return VALVE_HADE_RUN_TIME_DN25 ;
+						case DN32_TYPE: return VALVE_HADE_RUN_TIME_DN32 ;
+						case DN40_TYPE: return VALVE_HADE_RUN_TIME_DN40 ;
+						case DN50_TYPE:	return VALVE_HADE_RUN_TIME_DN50 ;
+						case DN80_TYPE:	return VALVE_HADE_RUN_TIME_DN80 ;
+						case DN100_TYPE:	return VALVE_HADE_RUN_TIME_DN100 ;
+						case DN150_TYPE:	return VALVE_HADE_RUN_TIME_DN150 ;							
+						case DN200_TYPE:	return VALVE_HADE_RUN_TIME_DN200 ;						
+						default:	return VALVE_HADE_RUN_TIME_DN200 ;
 				}
-			}	
-		}
-		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);
-//      }
-		}
-  }
-	Valve_StateSet();
 }
 
 
+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;
+	else
+		sys_fun_run_ctrl_p->valve_ctrl_flag.running_flag = RESET;
+	
+}
+
+
+//���Ų�������������������������У������ط�������Ҫֹͣ������ת�����йط�
+ErrorStatus ValveCtrlOrder(VALVE_CTEL_TYPE_T valve_ctrl_order_l) 
+{
+	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;
+			}
+		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{
+		if(valve_ctrl_para_g.force_open_status ==SET){
+			valve_ctrl_para_g.force_open_status =RESET;
+			//��ʼ�ر�ǿ��
+		}
+		
+	}
+	
+	
+	if((valve_ctrl_para_g.force_open_status ==SET)&&(Read_OP_CL_VALVE_Status(0)==VALVE_OPEN)){
+		//?��⵽ǿ�������Ƿ���״̬��ȡ�Ѿ�����λ����ʾ�Ƴ�ǿ����Դ��
+	}
+	
+}
+
+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