From 72def895431ad7a08e635b11f3da738e2b2c4618 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Thu, 13 Jun 2024 11:31:04 +0800
Subject: [PATCH] add lower model test

---
 Function/VALVE/valve_control.h |  410 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 327 insertions(+), 83 deletions(-)

diff --git a/Function/VALVE/valve_control.h b/Function/VALVE/valve_control.h
index c132e12..cd3b534 100644
--- a/Function/VALVE/valve_control.h
+++ b/Function/VALVE/valve_control.h
@@ -2,99 +2,343 @@
 #define _VALVE_CONTROL_H_
 
 #include "define_all.h" 
-#include "system_general_para.h"
+#include "administrator.h"
+// �������������ã����������洢�����棩
+#define __VALVE_WORK_TYPE_SET(__TYPE__) (op_cl_valve_log_flag_g = __TYPE__)
 
-/**********************IO����********************************/
-#define	Motor_A_PIN               GPIO_Pin_8
-#define	Motor_A_PORT            	GPIOB 
-#define Motor_A_HIGH 				      GPIO_SetBits(Motor_A_PORT,Motor_A_PIN)
-#define Motor_A_LOW 				      GPIO_ResetBits(Motor_A_PORT,Motor_A_PIN)
-
-#define	Motor_B_PIN               GPIO_Pin_9
-#define	Motor_B_PORT            	GPIOB 
-#define Motor_B_HIGH 				      GPIO_SetBits(Motor_A_PORT,Motor_A_PIN)
-#define Motor_B_LOW 				      GPIO_ResetBits(Motor_A_PORT,Motor_A_PIN)
-
-#define	Motor_OP_PIN              GPIO_Pin_6
-#define	Motor_OP_PORT           	GPIOB 
-#define	Motor_OP_IO_READ					GPIO_ReadInputDataBit(Motor_OP_PORT,Motor_OP_PIN)
-
-#define	Motor_CL_PIN              GPIO_Pin_7
-#define	Motor_CL_PORT           	GPIOB 
-#define	Motor_CL_IO_READ					GPIO_ReadInputDataBit(Motor_OP_PORT,Motor_OP_PIN)
-
-#define	VALVE_FORCE_OPEN_PIN			GPIO_Pin_12
-#define	VALVE_FORCE_OPEN_PORT           	GPIOC 
-#define	VALVE_FORCE_OPEN_IO_READ					GPIO_ReadInputDataBit(VALVE_FORCE_OPEN_PORT,VALVE_FORCE_OPEN_PIN)
-
-/**********************���Ʋ����궨��********************************/
-//���»�������ʱ��,���ʱ�䣬��������ʱ
-#define	VALVE_HADE_RUN_TIME_DN25		105U
-#define	VALVE_HADE_RUN_TIME_DN32		155U
-#define	VALVE_HADE_RUN_TIME_DN40		155U
-#define	VALVE_HADE_RUN_TIME_DN50		155U
-#define	VALVE_HADE_RUN_TIME_DN80		285U
-#define	VALVE_HADE_RUN_TIME_DN100		445U
-#define	VALVE_HADE_RUN_TIME_DN150		490U
-#define	VALVE_HADE_RUN_TIME_DN200		520U
+#define __VALVE_CLOSE_BYTES_NEED_SET(__NUM__, __HANDLE__, __FLAG_L__) \
+  do                                                                  \
+  {                                                                   \
+    (&valve_ctl_bytes_g)->__NUM__.__HANDLE__ = __FLAG_L__;            \
+  } while (0)
 
 
-typedef enum
-{
-	VM_NONE	= 0U,
-	VM_PENGSHENG,  //��ʢ����
-	VM_HADE,			 //���·���
-} VALVE_TYPE; // �����ͺ�
+#define __VALVE_CLOSE_BYTES_MODE_SET(__NUM__, __HANDLE__, __MODE_H__) \
+  do                                                                  \
+  {                                                                   \
+    (&valve_ctl_bytes_g)->__NUM__.__HANDLE__ = __MODE_H__;            \
+  } while (0)
 
-
-typedef enum
-{
-  VALVE_NONE = 0U,
-  VALVE_OPEN,
-  VALVE_CLOSE,
-  VALVE_OPENING,
-  VALVE_CLOSING,
-  VALVE_ERROR,
-//	VALVE_MISSING = 99U
-} VALVE_STATUS; // ����״̬����
-
-
-
-typedef enum
-{
-  VL_UNLOCK = 0U,
-	VL_LOCK
-} VALVE_LOCK_STATE_T; // ����״̬����
-
-typedef enum
-{
-	VC_NONE	= 0U,
-  VC_OPEN ,
-	VC_CLOSE,
-	VC_UNLOCK,             //����
-	VC_LOCK             //����
+#define __VALVE_CLOSE_BYTES_GET(__NUM__, __HANDLE__) ((&valve_ctl_bytes_g)->__NUM__.__HANDLE__)	
 	
-} VALVE_CTRL_TYPE_T; // ������������
-
-
-typedef struct{
+// ǿ�ƿ���	
+#define VALVE_FORCED_OPEN_PORT	GPIOA
+#define VALVE_FORCED_OPEN_PIN		GPIO_Pin_1	
 	
-	VALVE_STATUS	valve_status;
-	VALVE_CTRL_TYPE_T	valve_ctrl_order;
-	uint16_t	open_time_cnt;
-	uint16_t	close_time_cnt;
+// ����A
+#define VALVE_CMD_A_PORT 	GPIOE
+#define VALVE_CMD_A_PIN 	GPIO_Pin_2
+
+// ����B
+#define VALVE_CMD_B_PORT 	GPIOE
+#define VALVE_CMD_B_PIN		GPIO_Pin_3
+
+
+// ����C
+#define VALVE_CMD_C_PORT 	GPIOE	
+#define VALVE_CMD_C_PIN 	GPIO_Pin_4
+
 	
-	FlagStatus	force_open_status;
-}VALVE_CTRL_PARA_T;
+// �����ŵ�λ�ź�
+//#define VALVE_SINGAL_READ HAL_GPIO_ReadPin(VALVE_SINGAL_GPIO_Port, VALVE_SINGAL_Pin)
+// ���ŵ�Դ
+#define VALVE_PWR_ON 		GPIO_SetBits(VALVE_CMD_A_PORT, VALVE_CMD_A_PIN)
+#define VALVE_PWR_OFF 	GPIO_ResetBits(VALVE_CMD_A_PORT, VALVE_CMD_A_PIN) // ����
 
+// ����
+#define VALVE_OPEN                                                             \
+  do                                                                           \
+  {                                                                            \
+    GPIO_SetBits(VALVE_CMD_B_PORT, VALVE_CMD_B_PIN);   \
+    GPIO_ResetBits(VALVE_CMD_C_PORT, VALVE_CMD_C_PIN); \
+  } while (0)
+// �ط�
+#define VALVE_CLOSE                                                            \
+  do                                                                           \
+  {                                                                            \
+    GPIO_ResetBits(VALVE_CMD_B_PORT, VALVE_CMD_B_PIN); \
+    GPIO_SetBits(VALVE_CMD_C_PORT, VALVE_CMD_C_PIN);   \
+  } while (0)
+// ������
+#define VALVE_SLEEP 																													 \
+	do                                                                           \
+  {                                                                            \
+    GPIO_ResetBits(VALVE_CMD_B_PORT, VALVE_CMD_B_PIN); \
+    GPIO_ResetBits(VALVE_CMD_C_PORT, VALVE_CMD_C_PIN); \
+  } while (0)
+	
 
-extern __IO VALVE_CTRL_PARA_T	valve_ctrl_para_g;
+// �ط��ֳ���
+#define VALVE_CTL_LENGTH (sizeof(VALVE_STATUS_CHANGE_T) + sizeof(VALVE_BILLING_CHANGE_1_T) + sizeof(VALVE_BILLING_CHANGE_2_T) + \
+                          sizeof(VALVE_VOLTAGE_CHANGE_1_T) + sizeof(VALVE_VOLTAGE_CHANGE_2_T) + sizeof(VALVE_TP_ERR_1_T) +      \
+                          sizeof(VALVE_TP_ERR_2_T) + sizeof(VALVE_MEASURE_ERR_1_T) + sizeof(VALVE_MEASURE_ERR_2_T) +            \
+                          sizeof(VALVE_OTHER_ERR_1_T) + sizeof(VALVE_OTHER_ERR_2_T))
+#define VALVE_CTL_LEN sizeof(VALVE_CTL_BYTES_T)
 
-void Valve_CTRL_GPIO_Init(void);
+#define VALVE_CLOSE_FUNC_TABLE_NUM (sizeof(valve_close_tab_func) / sizeof(VALVE_CLOSE_FUNC_TABLE_DRV_T))
 
-void	valveCtrlPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p);
-void  ValveRunParaInit(VALVE_TYPE valve_type_in);
-void ValveMotorStop(void);
-ErrorStatus ValveCtrlOrder(VALVE_CTRL_TYPE_T valve_ctrl_order_l) ;
+typedef enum
+{
+  VWT_NONE = 0U,
+  VWT_NORMAL_CLOSE,
+  VWT_FORCED_CLOSE,
+  VWT_OPEN,
+  VWT_LOCK,
+  VWT_UNLOCK
+} VALVE_WORK_TYPE; // ����������
+
+#pragma pack(1)
+
+typedef struct
+{
+  uint16_t gprs_cmd_need_close_valve_flag : 1; // Զ������
+  uint16_t gprs_cmd_close_valve_type : 1;
+
+  uint16_t flow_direction_need_close_valve_flag : 1; // �����쳣
+  uint16_t flow_direction_close_valve_type : 1;
+
+  uint16_t power_sta_need_close_valve_flag : 1; // ���仯
+  uint16_t power_sta_close_valve_type : 1;
+  uint16_t : 2; //Ԥ��
+	
+	uint16_t uncap_1_need_close_valve_flag : 1; // ����
+  uint16_t uncap_1_close_valve_type : 1;
+	
+	uint16_t uncap_2_need_close_valve_flag : 1; // ������
+  uint16_t uncap_2_close_valve_type : 1;
+	uint16_t : 4; //Ԥ��
+} VALVE_STATUS_CHANGE_T;
+
+typedef struct
+{
+  uint16_t valve_error_need_close_valve_flag : 1; // �����쳣
+  uint16_t valve_error_close_valve_type : 1;
+
+  uint16_t balance_1_need_close_valve_flag : 1; // ����ٶ�1
+  uint16_t balance_1_close_valve_type : 1;
+
+  uint16_t balance_2_need_close_valve_flag : 1; // ����ٶ�2
+  uint16_t balance_2_close_valve_type : 1;
+
+  uint16_t balance_3_need_close_valve_flag : 1; // ����ٶ�3
+  uint16_t balance_3_close_valve_type : 1;
+
+  uint16_t balance_4_need_close_valve_flag : 1; // ����ٶ�4
+  uint16_t balance_4_close_valve_type : 1;
+
+  uint16_t balance_5_need_close_valve_flag : 1; // ����ٶ�5
+  uint16_t balance_5_close_valve_type : 1;
+  uint16_t : 4;
+} VALVE_BILLING_CHANGE_1_T;
+
+typedef struct
+{
+  uint16_t set_cumulate_need_close_valve_flag : 1; // ���õ��ۻ�������
+  uint16_t set_cumulate_close_valve_type : 1;
+
+  uint16_t no_use_gas_need_close_valve_flag : 1; // ������������
+  uint16_t no_use_gas_close_valve_type : 1;
+
+  uint16_t no_gprs_need_close_valve_flag : 1; // ���ϱ�����
+  uint16_t no_gprs_close_valve_type : 1;
+  uint16_t : 10;
+} VALVE_BILLING_CHANGE_2_T;
+
+typedef struct
+{
+  uint16_t lith_low_need_close_valve_flag : 1; // ﮵�͵�
+  uint16_t lith_low_close_valve_type : 1;
+
+  uint16_t lith_down_need_close_valve_flag : 1; // ﮵�Ƿ/����
+  uint16_t lith_down_close_valve_type : 1;
+
+  uint16_t lith_remove_need_close_valve_flag : 1; // ﮵��Ƴ�
+  uint16_t lith_remove_close_valve_type : 1;
+
+  uint16_t alka_low_need_close_valve_flag : 1; // ���͵�
+  uint16_t alka_low_close_valve_type : 1;
+
+  uint16_t alka_down_need_close_valve_flag : 1; // ���Ƿ/����
+  uint16_t alka_down_close_valve_type : 1;
+
+  uint16_t alka_remove_need_close_valve_flag : 1; // ����Ƴ�
+  uint16_t alka_remove_close_valve_type : 1;
+
+  uint16_t gprs_fail_need_close_valve_flag : 1; // gprsʧ��
+  uint16_t gprs_fail_close_valve_type : 1;
+  uint16_t : 2;
+} VALVE_VOLTAGE_CHANGE_1_T;
+
+typedef struct
+{
+  uint16_t reserve : 16; // ����Э�飬�����϶���SZV10X��صIJ�����ȼ��������
+} VALVE_VOLTAGE_CHANGE_2_T;
+
+typedef struct
+{
+  uint16_t temp_up_need_close_valve_flag : 1; // �¶ȳ�����
+  uint16_t temp_up_close_valve_type : 1;
+
+  uint16_t temp_up_up_need_close_valve_flag : 1; // �¶ȳ�������
+  uint16_t temp_up_up_close_valve_type : 1;
+
+  uint16_t temp_down_need_close_valve_flag : 1; // �¶ȳ�����
+  uint16_t temp_down_close_valve_type : 1;
+
+  uint16_t temp_down_down_need_close_valve_flag : 1; // �¶ȳ�������
+  uint16_t temp_down_down_close_valve_type : 1;
+
+  uint16_t press_up_need_close_valve_flag : 1; // ѹ��������
+  uint16_t press_up_close_valve_type : 1;
+
+  uint16_t press_up_up_need_close_valve_flag : 1; // ѹ����������
+  uint16_t press_up_up_close_valve_type : 1;
+
+  uint16_t press_down_need_close_valve_flag : 1; // ѹ��������
+  uint16_t press_down_close_valve_type : 1;
+
+  uint16_t press_down_down_need_close_valve_flag : 1; // ѹ����������
+  uint16_t press_down_down_close_valve_type : 1;
+} VALVE_TP_ERR_1_T;
+
+typedef struct
+{
+  uint16_t temp_err_need_close_valve_flag : 1; // �¶ȴ���
+  uint16_t temp_err_close_valve_type : 1;
+
+  uint16_t press_err_need_close_valve_flag : 1; // ѹ������
+  uint16_t press_err_close_valve_type : 1;
+
+  uint16_t cpu_temp_up_need_close_valve_flag : 1; // �����¶ȳ�����
+  uint16_t cpu_temp_up_close_valve_type : 1;
+
+  uint16_t cpu_temp_down_need_close_valve_flag : 1; // �����¶ȳ�����
+  uint16_t cpu_temp_down_close_valve_type : 1;
+	
+  uint16_t cpu_temp_drastic_change_close_valve_flag : 1; // �����¶Ⱦ��
+  uint16_t cpu_temp_drastic_change_valve_type : 1;
+  uint16_t : 6;
+} VALVE_TP_ERR_2_T;
+
+typedef struct
+{
+  uint16_t flow_vel_err_need_close_valve_flag : 1; // �����쳣
+  uint16_t flow_vel_err_close_valve_type : 1;
+
+  uint16_t tof_diff_err_need_close_valve_flag : 1; // ����ʱ����쳣
+  uint16_t tof_diff_err_close_valve_type : 1;
+
+  uint16_t sound_vel_err_need_close_valve_flag : 1; // �����쳣
+  uint16_t sound_vel_err_close_valve_type : 1;
+
+  uint16_t snr_err_need_close_valve_flag : 1; // ������쳣��Signal to Noise Ratio��
+  uint16_t snr_err_close_valve_type : 1;
+
+  uint16_t sig_up_need_close_valve_flag : 1; // ����
+  uint16_t sig_up_close_valve_type : 1;
+
+  uint16_t sig_th_err_need_close_valve_flag : 1; // �ź���ֵ�쳣��Threshold��
+  uint16_t sig_th_err_close_valve_type : 1;
+
+  uint16_t gain_err_need_close_valve_flag : 1; // �����쳣
+  uint16_t gain_err_close_valve_type : 1;
+
+  uint16_t ut_lose_need_close_valve_flag : 1; // ̽ͷ��ʧ��Ultrasonic Transducer��
+  uint16_t ut_lose_close_valve_type : 1;
+} VALVE_MEASURE_ERR_1_T;
+
+typedef struct
+{
+	uint16_t input_water_err_need_close_valve_flag : 1; // ��ˮ
+  uint16_t input_water_err_close_valve_type : 1;
+	
+  uint16_t media_err_need_close_valve_flag : 1; // �����쳣
+  uint16_t media_err_close_valve_type : 1;
+
+  uint16_t dismantle_need_close_valve_flag : 1; // ���
+  uint16_t dismantle_close_valve_type : 1;
+
+  uint16_t measure_err_err_need_close_valve_flag : 1; // ������Ԫ����
+  uint16_t measure_err_err_close_valve_type : 1;	
+  uint16_t : 8;
+} VALVE_MEASURE_ERR_2_T;
+
+typedef struct
+{
+  uint16_t leakage_need_close_valve_flag : 1; // ����й©�����ⲿ�������жϣ�
+  uint16_t leakage_close_valve_type : 1;
+
+  uint16_t lcd_up_need_close_valve_flag : 1; // lcd��ʾ����
+  uint16_t lcd_up_close_valve_type : 1;
+
+  uint16_t lcd_temp_low_need_close_valve_flag : 1; // lcd����
+  uint16_t lcd_temp_low_close_valve_type : 1;
+
+  uint16_t flow_up_1_need_close_valve_flag : 1; // ��������1
+  uint16_t flow_up_1_close_valve_type : 1;
+
+  uint16_t flow_up_2_need_close_valve_flag : 1; // ��������2
+  uint16_t flow_up_2_close_valve_type : 1;
+
+  uint16_t flow_up_3_need_close_valve_flag : 1; // ��������3
+  uint16_t flow_up_3_close_valve_type : 1;
+
+  uint16_t cl_constant_flow_need_close_valve_flag : 1; // �ط�������΢С����й©��
+  uint16_t cl_constant_flow_valve_type : 1;
+
+  uint16_t op_constant_flow_close_valve_flag : 1; // ��������
+  uint16_t op_constant_flow_valve_type : 1;
+} VALVE_OTHER_ERR_1_T;
+
+typedef struct
+{
+  uint16_t cl_have_flow_need_close_valve_flag : 1; // �ط�����
+  uint16_t cl_have_flow_valve_type : 1;
+
+  uint16_t e2p_write_err_need_close_valve_flag : 1; // e2pд�쳣
+  uint16_t e2p_write_err_flow_valve_type : 1;
+
+  uint16_t e2p_read_err_need_close_valve_flag : 1; // e2p���쳣
+  uint16_t e2p_read_err_flow_valve_type : 1;
+  uint16_t : 10;
+} VALVE_OTHER_ERR_2_T;
+
+typedef struct
+{
+  VALVE_STATUS_CHANGE_T valve_ctr_1;
+  VALVE_BILLING_CHANGE_1_T valve_ctr_2;
+  VALVE_BILLING_CHANGE_2_T valve_ctr_3;
+  VALVE_VOLTAGE_CHANGE_1_T valve_ctr_4;
+  VALVE_VOLTAGE_CHANGE_2_T valve_ctr_5;
+  VALVE_TP_ERR_1_T valve_ctr_6;
+  VALVE_TP_ERR_2_T valve_ctr_7;
+  VALVE_MEASURE_ERR_1_T valve_ctr_8;
+  VALVE_MEASURE_ERR_2_T valve_ctr_9;
+  VALVE_OTHER_ERR_1_T valve_ctr_10;
+  VALVE_OTHER_ERR_2_T valve_ctr_11;
+} VALVE_CTL_BYTES_T; // �ط�������
+
+typedef struct
+{
+  const uint16_t valve_close_flag;
+  const uint8_t offset_bit;
+  uint16_t * valve_close_byte;
+} VALVE_CLOSE_FUNC_TABLE_DRV_T;
+
+#pragma pack()
+
+extern SYS_ALARM_VALVE_T op_cl_valve_cause_id;
+
+extern VALVE_WORK_TYPE op_cl_valve_log_flag_g;
+
+extern FlagStatus valve_signal_complete_g;
+
+extern VALVE_CTL_BYTES_T valve_ctl_bytes_g;
+
+void Valve_IO_Init(void);
+
+void Valve_Process(SYS_ALARM_VALVE_T * pOp_cl_cause);
+void Valve_StateSet(void);
+void Valve_OpenCloseTimeInit(void);
 
 #endif

--
Gitblit v1.9.3