| | |
| | | #include "gpio.h" |
| | | #include "system_mem_para.h" |
| | | |
| | | |
| | | __IO VALVE_CTRL_PARA_T valve_ctrl_para_g; |
| | | |
| | | |
| | | void Motor_AB_GPIO_Init(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(); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | void ValveMotorOpenRun(void) |
| | | { |
| | | Motor_AB_GPIO_Init(); |
| | | Motor_OP_CL_GPIO_Init(); |
| | | Motor_A_HIGH; |
| | | Motor_B_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); |
| | | } |
| | | |
| | | void ValveMotorCloseRun(void) |
| | | { |
| | | Motor_AB_GPIO_Init(); |
| | | Motor_OP_CL_GPIO_Init(); |
| | | Motor_A_LOW; |
| | | Motor_B_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_HIGH; |
| | | Motor_B_LOW; |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | if((Open_status==(uint8_t)Bit_RESET)&&(Close_status==(uint8_t)Bit_SET)) |
| | | { |
| | | return VALVE_OP; |
| | | return VALVE_OPEN; |
| | | }else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_RESET)) |
| | | { |
| | | return VALVE_CL; |
| | | return VALVE_CLOSE; |
| | | }else if((Open_status==(uint8_t)Bit_SET)&&(Close_status==(uint8_t)Bit_SET)) |
| | | { |
| | | return VALVE_ERROR; |
| | |
| | | |
| | | |
| | | |
| | | void ValveRunParaInit(void) |
| | | void ValveRunParaInit(VALVE_TYPE valve_type_in) |
| | | { |
| | | VALVE_STATUS valve_status; |
| | | |
| | | switch (save_valve_para_g.valve_status) |
| | | { |
| | | // 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; |
| | | |
| | | default:break; |
| | | } |
| | | |
| | | //ÆäËûÐèÒª³õʼ»¯µÄ²ÎÊý |
| | | |
| | | } |
| | | |
| | | |
| | | uint16_t GetValveRunMaxTime(CALIBER_TYPE caliber_type_l) |
| | | { |
| | | 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 ; |
| | | } |
| | | } |
| | | |
| | | |
| | | 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; |
| | | |
| | | } |
| | | |
| | | |
| | | void valveCtrlPro(void) //? |
| | | //·§ÃŲÙ×÷º¯Êý£¬Èç¹û·§ÃÅÕý¿ª¹ý³ÌÖУ¬´¥·¢¹Ø·§£¬ÔòÐèҪֹͣ¿ª·§£¬×ª¶ø½øÐйط§ |
| | | 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);//¹þµÂ·§ÃŲÙ×÷´¦Àíº¯Êý |
| | | |
| | | |
| | | } |