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