| | |
| | | #include "valve_control.h" |
| | | #include "gpio.h" |
| | | #include "system_mem_para.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" |
| | | |
| | | __IO VALVE_CTRL_PARA_T valve_ctrl_para_g; |
| | | VALVE_WORK_TYPE op_cl_valve_log_flag_g = VWT_NONE; // ¿ª/¹Ø·§ÈÕÖ¾±ê־루ÓÃÓÚÅжÏÊÇ·ñÐèÒªÈÕÖ¾´æ´¢²¢´¢´æ£© |
| | | |
| | | SYS_ALARM_VALVE_T op_cl_valve_cause_id = AV_NORMAL; // ¿ª¹Ø·§ÔÒòID£¨ÓÃÓÚÏÔʾ/¹Ø·§ÔÒòID´æ´¢£© |
| | | |
| | | void Motor_AB_GPIO_Init(void) |
| | | 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µÄ²ÎÊý, 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) |
| | | { |
| | | 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 ValveMotorOpenRun(void) |
| | | { |
| | | Motor_AB_GPIO_Init(); |
| | | Motor_OP_CL_GPIO_Init(); |
| | | Motor_A_HIGH; |
| | | 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 ValveMotorCloseRun(void) |
| | | { |
| | | Motor_AB_GPIO_Init(); |
| | | Motor_OP_CL_GPIO_Init(); |
| | | Motor_A_LOW; |
| | | 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); |
| | | } |
| | | |
| | | 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_HIGH; |
| | | } |
| | | |
| | | |
| | | |
| | | 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; |
| | | } |
| | | 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); |
| | | |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | |
| | | void ValveRunParaInit(void) |
| | | // ¿ª·§ |
| | | SYS_ALARM_VALVE_T Valve_Open(SYS_ALARM_VALVE_T op_cl_cause_id) |
| | | { |
| | | // VALVE_STATUS valve_status; |
| | | switch (save_valve_para_g.valve_type){ |
| | | case VM_PENGSHENG: ; |
| | | case VM_HADE: |
| | | save_valve_para_g.valve_status = Read_OP_CL_VALVE_Status(0); |
| | | 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; |
| | | } |
| | | |
| | | break; |
| | | // ¹Ø·§ |
| | | SYS_ALARM_VALVE_T Valve_Close(SYS_ALARM_VALVE_T op_cl_cause_id) |
| | | { |
| | | 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 |
| | | |
| | | default: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 |
| | | } |
| | | } |
| | | |
| | | |
| | | uint16_t GetValveRunMaxTime(CALIBER_TYPE caliber_type_l) |
| | | /*¿ª·§µÄÌØÊâÌõ¼þÅжÏ*/ |
| | | uint8_t Valve_Open_SpecialJudge(__IO SYS_STATUS_T *state_bytes_p) |
| | | { |
| | | switch (caliber_type_l){ |
| | | case DN25_TYPE: return VALVE_HADE_RUN_TIME_DN25 ;break; |
| | | case DN32_TYPE: return VALVE_HADE_RUN_TIME_DN32 ;break; |
| | | case DN40_TYPE: return VALVE_HADE_RUN_TIME_DN40 ;break; |
| | | case DN50_TYPE: return VALVE_HADE_RUN_TIME_DN50 ;break; |
| | | case DN80_TYPE: return VALVE_HADE_RUN_TIME_DN80 ;break; |
| | | case DN100_TYPE: return VALVE_HADE_RUN_TIME_DN100 ;break; |
| | | case DN150_TYPE: return VALVE_HADE_RUN_TIME_DN150 ;break; |
| | | case DN200_TYPE: return VALVE_HADE_RUN_TIME_DN200 ;break; |
| | | default: return VALVE_HADE_RUN_TIME_DN200 ;break; |
| | | /*Ïê¼û¡¶·§ºÍÈ¼Æø±íµÄ״̬×Ö¡¢±¨¾¯×ֵȹ²Óù¦ÄܵÄÊáÀí¡·*/ |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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) |
| | | { |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | //·§ÃŲÙ×÷º¯Êý |
| | | 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(void) //? Èç¹ûÒª²Ù×÷·§ÃÅÔòµ÷Óú¯ÊýValveCtrlOrder£¨VC_OPEN£©;Èë²Î´ú±í²Ù×÷ÄÚÈÝ |
| | | { |
| | | |
| | | ValveForceOpenSignalCheck();//?Ç¿¿ªÅжϴ¦Àí |
| | | |
| | | ValveCtrlHade(equipment_basic_inf_g.caliber_type);//¹þµÂ·§ÃŲÙ×÷´¦Àíº¯Êý |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |