#ifndef __VALVECONTROL_H #define __VALVECONTROL_H #include "datatype.h" #include "sys.h" //#define SZV101_VALVE 1 //#define SZV102_VALVE 2 //#define SZV103_VALVE 3 //#define VALVE_TYPE SZV101_VALVE #define VALVE_OPEN_TIME_LIMIT 350 #define Motor_A_PIN_NUM GPIO_Pin_10 #define Motor_A_PIN_GROUP GPIOE #define Motor_A_EN PEout(10) //#define Motor_B_PIN_NUM GPIO_Pin_9 //#define Motor_B_PIN_GROUP GPIOE //#define Motor_B_EN PEout(9) #define Motor_B_PIN_NUM GPIO_Pin_15 #define Motor_B_PIN_GROUP GPIOD #define Motor_B_EN PDout(15) //#define Motor_OP_PIN_NUM GPIO_Pin_15 //#define Motor_OP_PIN_GROUP GPIOD //#define Motor_OP_PIN_READ PDin(15) #define Motor_OP_PIN_NUM GPIO_Pin_9 #define Motor_OP_PIN_GROUP GPIOE #define Motor_OP_PIN_READ PEin(9) #define Motor_CL_PIN_NUM GPIO_Pin_4 #define Motor_CL_PIN_GROUP GPIOD #define Motor_CL_PIN_READ PDin(4) #define FORCE_OPEN_INT_PIN_NUM GPIO_Pin_10 #define FORCE_OPEN_INT_PIN_GROUP GPIOC #define FORCE_OPEN_INT_READ PCin(10) #define VALVE_ALKA_LOW_A_PIN_NUM GPIO_Pin_11 #define VALVE_ALKA_LOW_A_PIN_GROUP GPIOC #define VALVE_ALKA_LOW_A_PIN_READ PCin(11) typedef enum { VALVE_CLOSE_CLASS_SYSTEM_SATE_CHANGE=0x01 , VALVE_CLOSE_CLASS_SYSTEM_BAT , VALVE_CLOSE_CLASS_SYSTEM_TEM_PRE , VALVE_CLOSE_CLASS_SYSTEM_METERING , VALVE_CLOSE_CLASS_SYSTEM_FLOW , VALVE_CLOSE_CLASS_SYSTEM_VALVE , VALVE_CLOSE_CLASS_SYSTEM_EX_TERMINAL , VALVE_CLOSE_CLASS_SYSTEM_BILLING , VALVE_CLOSE_CLASS_SYSTEM_KEY_CMD , }VALVE_CLOSE_CLASS; //#define VALVE_CLOSE_CLASS_SYSTEM_SATE_CHANGE //#define VALVE_CLOSE_CLASS_SYSTEM_SATE_CHANGE //#define VALVE_OP 0x01 //#define VALVE_CL 0x02 //#define VALVE_OPENING 0x03 //#define VALVE_CLOSING 0x04 //#define VALVE_ERROR 0x05 //#define VALVE_MISSING 0x99 //¶ÏÏßÎÞ·¨¼ì²â typedef enum { SZV101_VALVE = 1U, SZV102_VALVE, SZV103_VALVE } VALVE_TYPE_T; // ·§ÃÅÀàÐÍ typedef enum { VALVE_NONE = 0U, VALVE_OP, VALVE_CL, VALVE_OPENING, VALVE_CLOSING, VALVE_ERROR, VALVE_MISSING = 99U } VALVE_STATE_T; // ·§ÃÅ״̬ÀàÐÍ typedef enum { VALVE_ACTION_NONE = 0, VALVE_ACTION_CLOSE_UNLOCK, VALVE_ACTION_LOCK, VALVE_ACTION_OPEN, VALVE_ACTION_CLOSE_LOCK, VALVE_ACTION_UNLOCK, }VALVE_ACTION_TYPE; #pragma pack(1) typedef struct{ u32 OpenValveAuthorizeTimeCnt; //Æ½Ì¨Ç¿ÖÆ¿ª·§ÊÚȨʱ¼ä¡£ ÆÕͨ¿ª·§Ö»ÊÚȨһ´Î£¬²¢ÇÒÔÚÎÞÒ쳣״̬Ï¿ɿª·§£¬Ç¿ÖÆ¿ª·§ÊÚȨÓÐnÌì¿É¿ªÆôʱЧ£¬ÔÚʱ¼äÄÚÈÎÒ⿪·§£¬ÇÒ²»ÊÜÒ쳣״̬ӰÏ죬Ò쳣״̬Ҳ²»»áµ¼Ö¹ط§ u16 ValveCloseClass; //¹Ø·§Àà±ð u8 ValveCloseType;//³£Ì¬ÎªVALVE_ACTION_OPEN °´¼ü¿ª·§VALVE_ACTION_OPEN u8 ValveCloseForceFLAG; ////¹Ø·§Ç¿ÖƱêÖ¾£¬·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§»áÖÃ2£¬½öÓà¶îÔì³ÉµÄ¾¯¸æÐԹط§ÖÃ1£¬ÊÚȨ¿ª·§µÄʱºòÖÃ0¡£ ²»Îª2ʱ£¬Èç¹ûÓà¶îÔì³ÉµÄÇ¿ÖÆ¹Ø·§Ö®ºó£¬Óà¶î»Ö¸´Ö®ºó¸øÓëÊÚȨ£¬ÔÊÐí°´¼ü¿ª·§¡£ u8 Trigger_check_valve_status_flag;//´¥·¢·§ÃÅ״̬¼ì²â±êÖ¾ volatile u8 Valve_Bat_down_IRQ_flag; //·§µçµôµçÖжÏÐźűêÖ¾ u8 Valve_Bat_down_check_step; //·§µçµôµç¼ì²â¹ý³Ì u8 Force_Open_status; //0:ÎÞÇ¿¿ªÐźţ¬1ÓÐÇ¿¿ªÐźŠu8 Force_Open_Flag; //²úÉúÇ¿¿ª´¦ÀíÁ÷³ÌµÄ±êÖ¾ u8 Force_Open_for_check_Flag; //Ç¿¿ªÖ®ºóÒª¼ì²âopºÍcl u16 OpenValveTime; //¿ª·§Ê±¼ä u16 CloseValveTime; //¹Ø·§Ê±¼ä u8 CurrentState; //µçÁ÷״̬£¬ OP CLµçƽΪ¸ßʱ£¬ËµÃ÷ûÓдóµçÁ÷£¬Ã»ÓжÂת £» ΪµÍʱ£¬ËµÃ÷ÓдóµçÁ÷£¬¶ÂתÁË£¬Ò²ËµÃ÷µ½Î»ÁË¡£ u8 CurrentState0Time;//¶Âת¼ì²â´ÎÊý£¬·§¿ØÆÚ¼ä¼ì²âµ½2´ÎΪ0£¬´ó¸ÅÂÊ˵Ã÷ÕæµÄ¶ÂתÁË u32 ValveHaveClosedTime; //·§ÒѾ­¹Ø±Õʱ¼ä£¬·§ÃÅÒ쳣ʱ²»ËãÔÚÄÚ u8 PowerLowContinueTimes; //µÍµç¼ì²â³ÖÐøÊ±¼ä£¬ ³ÖÐø¶àÃë»ò¶à´ÎÓÐЧ u8 PowerHighContinueTimes; //µÍµç¼ì²â³ÖÐøÊ±¼ä£¬ ³ÖÐø¶àÃë»ò¶à´ÎÓÐЧ u16 ForceOpenLowContinueTimes; //Ç¿¿ªÐźżì²â³ÖÐøÊ±¼ä£¬ ³ÖÐø¶àÃë»ò¶à´ÎÓÐЧ u16 ForceOpenHighContinueTimes; //Ç¿¿ªÐźżì²â³ÖÐøÊ±¼ä£¬ ³ÖÐø¶àÃë»ò¶à´ÎÓÐЧ u8 Emergency_close_valve_flag; //½ô¼±¹Ø·§±êÖ¾£¬±ÈÈçϵͳµôµçµÈ½ô¼±Çé¿öÐèÒªÁ¢¼´Ö´Ðйط§ }VALVE_CONTROL_PARM; #pragma pack() void Motor_GPIO_Init(void); void Motor_GPIO_Init_sleep_mode(void); void Force_Open_GPIO_Init(void); void Force_Open_GPIO_Init_sleep_mode(void); void Valve_Alka_Low_A_GPIO_Init(void); void Valve_Alka_Low_A_GPIO_Init_sleep_mode(void); void Valve_Alka_Low_A_READ_GPIO_Init(void); void Valve_run_para_init(void); void Valve_Power_First_Check(void); void Valve_Control(void); u8 Valve_Open(void); u8 Valve_Close(void); void Valve_Control_Fun(void); void Valve_OpenTimesRecord(void); void Valve_CloseTimesRecord(void); void ValveCloseIdTypeSet(u16 valvecloseid,u8 valveclosetype); void ValveCloseAuthorizeFlagSet(u16 valvecloseid,u8 valveclosetype); void Valve_Motor_Stop(void); u8 GetValveCloseIDClass(u16 valvecloseid); void ValveActionJudge(); VALVE_STATE_T Read_OP_CL_VALVE_Status(u16 delay_time_ms); extern uint16_t Time_For_valve_run; extern unsigned char OpenValveFLAG; extern VALVE_CONTROL_PARM Valve_control_parm; extern u16 Valve_Force_Open_Flag; extern VALVE_CTL_BYTES_T valve_ctl_bytes_g; #endif