forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

周巍
2024-04-11 91ef77c00ed797b1048c5187f416e351e646a009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#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