#ifndef _VALVE_CONTROL_H_
|
#define _VALVE_CONTROL_H_
|
|
#include "define_all.h"
|
|
// ·§²Ù×÷ÀàÐÍÉèÖã¨ÓÃÓÚÆô¶¯´æ´¢²¢´¢´æ£©
|
#define __VALVE_WORK_TYPE_SET(__TYPE__) (op_cl_valve_log_flag_g = __TYPE__)
|
|
#define __VALVE_CLOSE_BYTES_NEED_SET(__NUM__, __HANDLE__, __FLAG_L__) \
|
do \
|
{ \
|
(&valve_ctl_bytes_g)->__NUM__.__HANDLE__ = __FLAG_L__; \
|
} while (0)
|
|
|
#define __VALVE_CLOSE_BYTES_MODE_SET(__NUM__, __HANDLE__, __MODE_H__) \
|
do \
|
{ \
|
(&valve_ctl_bytes_g)->__NUM__.__HANDLE__ = __MODE_H__; \
|
} while (0)
|
|
#define __VALVE_CLOSE_BYTES_GET(__NUM__, __HANDLE__) ((&valve_ctl_bytes_g)->__NUM__.__HANDLE__)
|
|
// Ç¿ÖÆ¿ª·§
|
#define VALVE_FORCED_OPEN_PORT GPIOA
|
#define VALVE_FORCED_OPEN_PIN GPIO_Pin_1
|
|
// ·§¿Ø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
|
|
|
// ¶Á·§Ãŵ½Î»ÐźÅ
|
//#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)
|
|
|
// ¹Ø·§×Ö³¤¶È
|
#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)
|
|
#define VALVE_CLOSE_FUNC_TABLE_NUM (sizeof(valve_close_tab_func) / sizeof(VALVE_CLOSE_FUNC_TABLE_DRV_T))
|
|
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Ïà¹ØµÄ²ÎÊý£¬È¼Æø±íÎÞÓÃ
|
} 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
|