#include "1ValveControl.h"
|
|
#include "para.h"
|
#include "e2p.h"
|
#include "1gprs.h"
|
#include "devicegpioinit.h"
|
#include "systaskinit.h"
|
u8 Bat_Lith_status =0; //0µç³ØÕý³££¬1µç³Ø¹ýµÍ£¬
|
u8 Bat_Alka_status=0; //0µç³ØÕý³££¬2µç³Ø¹ýµÍ
|
|
unsigned char OpenValveFLAG =0; //¿ª·¢±êÖ¾£¬Óпª·§ÔòÔÚÖ÷Ñ»·Öпª·§£¬ÈçÓжÁÈ¡ºÍÉÏ·¢ÈÎÎñ£¬Ôò¶ÁÈ¡ÉÏ·¢½áÊøºó¿ª·§£¬Èô°´¼ü¿ª·§ÔÚÏÈ£¬ÔòÏÈ¿ª·§µ½Î»Ôٲɼ¯ÉÏ·¢¡£
|
unsigned char OpenValveAuthorizeFLAG ; //ƽ̨¿ª·§ÊÚȨ±êÖ¾£¬ËùÓпª·§¶¯×÷ÐèҪƽ̨ÊÚȨ¡£0x00:ûÓпª·§ÊÚȨ 0x01:ÆÕͨ¿ª·§ÊÚȨ 0x11:Ç¿ÖÆ¿ª·§ÊÚȨ1Ìì±êÖ¾ 0x21
|
u32 OpenValveAuthorizeTimeCnt; //Æ½Ì¨Ç¿ÖÆ¿ª·§ÊÚȨʱ¼ä¡£ ÆÕͨ¿ª·§Ö»ÊÚȨһ´Î£¬²¢ÇÒÔÚÎÞÒ쳣״̬Ï¿ɿª·§£¬Ç¿ÖÆ¿ª·§ÊÚȨÓÐnÌì¿É¿ªÆôʱЧ£¬ÔÚʱ¼äÄÚÈÎÒ⿪·§£¬ÇÒ²»ÊÜÒ쳣״̬ӰÏ죬Ò쳣״̬Ҳ²»»áµ¼Ö¹ط§
|
VALVE_CONTROL_PARM Valve_control_parm;
|
u16 ValveOpenTimes,ValveCloseTimes;
|
u16 Valve_Force_Open_Flag;
|
|
void Valve_Control(void)
|
{
|
//if Open_status =0,Close_status=1 means valve has been opened ,else meas valve is closed or not opened fully.
|
uint8_t Open_status,Close_status;
|
|
if(Valve_control_parm.Valve_Type == SZV102_VALVE)
|
{
|
if((Bat_Alka_status==0)||(HWID0_READ==0))
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 16 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 27 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 27 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 28 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 30;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 40;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 60;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 70;
|
}
|
else
|
{
|
Time_For_valve_open = 70;
|
}
|
|
Motor_GPIO_Init();
|
EX_Motor_op_cl_config();
|
|
delay_ms(2);
|
if(OpenValveFLAG==1)
|
{
|
|
Motor_A_EN_H;
|
Motor_B_EN_L;
|
|
Valve_control_parm.OpenValveTime = 0;
|
}else if(OpenValveFLAG==2)
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_H;
|
|
Valve_control_parm.CloseValveTime = 0;
|
}
|
|
Valve_control_parm.CurrentState0Time = 0;
|
|
}
|
else
|
{
|
OpenValveFLAG = 0;
|
}
|
}
|
else if(Valve_control_parm.Valve_Type == SZV103_VALVE)
|
{
|
if((Bat_Alka_status==0)||(HWID0_READ==0))
|
{
|
if(OpenValveFLAG==1)
|
{
|
Open_status = Motor_OP_PIN_READ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==0)&&(Close_status==1))
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
gprs_protocol_header.Valve_Status = 1;
|
Valve_control_parm.ValveHaveClosedTime = 0;
|
|
OpenValveFLAG = 0;
|
}
|
else
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 105 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 285;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 445;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 490;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 520;
|
}
|
else
|
{
|
Time_For_valve_open = 520;
|
}
|
|
Motor_A_EN_H;
|
Motor_B_EN_L;
|
Valve_control_parm.OpenValveTime=0;
|
Valve_control_parm.CurrentState0Time=0;
|
|
}
|
}
|
else if(OpenValveFLAG==2)
|
{
|
Open_status = Motor_OP_PIN_READ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==1)&&(Close_status==0))
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
gprs_protocol_header.Valve_Status = 2;
|
Valve_control_parm.ValveHaveClosedTime = 1;
|
|
OpenValveFLAG = 0;
|
}
|
else
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 105 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 285;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 445;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 490;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 520;
|
}
|
else
|
{
|
Time_For_valve_open = 520;
|
}
|
delay_ms(3);
|
|
Motor_A_EN_L;
|
Motor_B_EN_H;
|
Valve_control_parm.CloseValveTime=0;
|
Valve_control_parm.CurrentState0Time=0;
|
|
}
|
}
|
}
|
else
|
{
|
OpenValveFLAG = 0;
|
}
|
}
|
else
|
{
|
if((Bat_Alka_status==0)||(HWID0_READ==0))
|
{
|
Open_status = Motor_OP_PIN_READ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==0)&&(Close_status==1))
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
gprs_protocol_header.Valve_Status = 1;
|
Valve_control_parm.ValveHaveClosedTime = 0;
|
|
OpenValveFLAG = 0;
|
}
|
else
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 360 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 410 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 410 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 420 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 580;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 720;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 720;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 720;
|
}
|
else
|
{
|
Time_For_valve_open = 720;
|
}
|
|
Motor_A_EN_H;
|
Motor_B_EN_L;
|
|
}
|
}
|
else
|
{
|
OpenValveFLAG = 0;
|
}
|
}
|
}
|
|
u8 Valve_open(void) //·µ»Ø0 ³É¹¦ ·µ»Ø1 ʧ°Ü
|
{
|
if(gprs_protocol_header.Valve_Status==2)
|
{
|
if(OpenValveFLAG==0)
|
{
|
OpenValveFLAG = 1;
|
Valve_OpenTimesRecord();
|
return 0;
|
}else
|
{
|
return 1;
|
}
|
}else
|
{
|
return 1;
|
}
|
}
|
|
u8 Valve_close(void)//·µ»Ø0 ³É¹¦ ·µ»Ø1 ʧ°Ü
|
{
|
uint8_t Open_status,Close_status;
|
if((Valve_control_parm.Valve_Type == SZV102_VALVE)||(Valve_control_parm.Valve_Type == SZV103_VALVE))
|
{
|
if(gprs_protocol_header.Valve_Status!=2)
|
{
|
if(OpenValveFLAG==0)
|
{
|
OpenValveFLAG = 2;
|
Valve_CloseTimesRecord();
|
return 0;
|
}else
|
{
|
return 1;
|
}
|
}else
|
{
|
return 1;
|
}
|
}else
|
{
|
if(gprs_protocol_header.Valve_Status == 2)
|
{
|
gprs_protocol_header.Valve_Status = 2;
|
Valve_control_parm.ValveHaveClosedTime = 1;
|
|
OpenValveFLAG = 0;
|
return 0;
|
}
|
else
|
{
|
Valve_CloseTimesRecord();
|
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
delay_ms(50);
|
|
Motor_A_EN_L;
|
Motor_B_EN_H;
|
delay_ms(1000);
|
|
Open_status = Motor_OP_PIN_READ ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==0)&&(Close_status==1))
|
{
|
delay_ms(1000); ///jlcÔÝʱ¹Ø·§¾ÍÖ»ÓÐ500msÑÓʱ£¬ËùÓпھ¶£¬Óдý²âÊÔ
|
}
|
|
Open_status = Motor_OP_PIN_READ ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==0)&&(Close_status==1))
|
{
|
delay_ms(1000); ///jlcÔÝʱ¹Ø·§¾ÍÖ»ÓÐ500msÑÓʱ£¬ËùÓпھ¶£¬Óдý²âÊÔ
|
}
|
|
Open_status = Motor_OP_PIN_READ ;//PCin(10);
|
Close_status = Motor_CL_PIN_READ;//PCin(11);
|
if((Open_status==1)&&(Close_status==0))
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
|
OpenValveFLAG = 0; //Èç¹û¿ª·§µ½Ò»°ëÖ´Ðйط§£¬Ôò¿ª·§µÈ´ý²»¼ÌÐø £¬Ö±½ÓÖ´Ðйط§£¬Í˳ö¿ª·§¹ý³Ì¡£
|
gprs_protocol_header.Valve_Status = 2;
|
Valve_control_parm.ValveHaveClosedTime = 1;
|
system_alarm.alarm_Valve_close = 1;///jlc·§ÃÅ¿ª¹ØÏȲ»±¨¾¯
|
|
valve_abnormal_para_g.valveCloseFirstCum =0;
|
valve_abnormal_para_g.valveCloseFirstFlag = 0;
|
valve_abnormal_para_g.valveCloseNextCum =0;
|
valve_abnormal_para_g.valveCloseNextFlag = 0; //101µÄ ·§ÃŹØÉÏÒԺ󣬰ÑÕâЩ±äÁ¿ÇåÁã
|
}
|
else
|
{
|
Motor_A_EN_L;
|
Motor_B_EN_L;
|
OpenValveFLAG = 0;
|
gprs_protocol_header.Valve_Status = 0x03;
|
system_alarm.alarm_Valve_Abnormal_time ++;
|
if(system_alarm.alarm_Valve_Abnormal_time>=250)
|
{
|
system_alarm.alarm_Valve_Abnormal_time = 250;
|
}
|
if(system_alarm.alarm_Valve_Abnormal_time<=2) //ÿÌìÖ»±¨2´Î¡£
|
{
|
system_alarm.alarm_Valve_Abnormal = 1;
|
}
|
}
|
}
|
|
return 0;
|
}
|
}
|
|
void Valve_Control_Fun(void)
|
{
|
u16 ii_index = 0;
|
u16 Time_out_valve=0;
|
if(Valve_control_parm.Valve_Type == SZV102_VALVE)
|
{
|
Time_out_valve = 100;
|
}
|
else if(Valve_control_parm.Valve_Type == SZV103_VALVE)
|
{
|
Time_out_valve = 550;
|
}
|
else
|
{
|
Time_out_valve = 800;
|
}
|
|
|
if((OpenValveFLAG != 0)&&((Bat_Alka_status==0)||(HWID0_READ==0))) //¿ª·§Á÷³Ì£¬Èç¹ûÓжÁÈ¡ºÍÉÏ·¢ÈÎÎñ£¬¶¼»áÔÚÏàÓ¦ÈÎÎñµÄwhileÑ»·ÖУ¬²»»áÖ´Ðе½¿ª·§£¬Í¬Àí£¬Èç¹ûÓпª·§Ò²»áwhileÑ»·µÈ´ý£¬²»»áÖ´ÐÐÆäËûÈÎÎñ¡£
|
{
|
ii_index =0;
|
Valve_Control();
|
while(OpenValveFLAG) //Óпª·§Ö¸ÁîÔòÖ´Ðпª·§£¬Ñ»·µÈ´ý£¬Èç¹û¿ª·§µ½Î»£¬ÖÃ0Í˳ö£¬Èç¹û¿ª·§Ã»µ½Î»£¬Ôò¼ÆÊýVALVE_OPEN_TIME_LIMIT+290Ç¿ÐÐÍ˳ö¡£Èç¹û¿ª·§Í¼ÖÐÔÙÀ´Ò»´Î¿ª·§£¬
|
{
|
|
ii_index++;
|
IWDT_Clr();
|
delay_ms(1000);
|
if(ii_index>Time_out_valve) //Ŀǰ×î´ó¿Ú¾¶×¿ªÊ¼Ê±¼äΪ600Ãë×óÓÒ
|
{
|
OpenValveFLAG = 0;
|
break;
|
}
|
|
}
|
|
if(Valve_control_parm.Valve_Type == SZV102_VALVE)
|
{
|
Motor_GPIO_Init_sleep_mode();
|
EX_Motor_op_cl_disable();
|
}
|
else
|
{
|
|
}
|
}
|
else if((Bat_Alka_status==1)&&(HWID0_READ==1)) //¼îµç³ØÇ·Ñ¹£¬¿ª·§Ö±½ÓÎÞЧ£¬±ÜÃâ»»µç³ØÊÇ»¹±£Áô×Å¿ª·§Ö¸Áî
|
{
|
OpenValveFLAG = 0;
|
}
|
else if((Bat_Lith_status==1)&&(HWID0_READ==1)) //ï®µç³ØÃ»µçͬÉÏ
|
{
|
OpenValveFLAG = 0;
|
}
|
}
|
|
void Valve_OpenTimesRecord(void)
|
{
|
ValveOpenTimes++;
|
if(ValveOpenTimes>=65530)
|
ValveOpenTimes=65530;
|
|
FM25V02_data_write_uint16(VALVE_OPEN_TIMES_ADDR,ValveOpenTimes);
|
}
|
|
void Valve_CloseTimesRecord(void)
|
{
|
ValveCloseTimes++;
|
if(ValveCloseTimes>=65530)
|
ValveCloseTimes=65530;
|
|
FM25V02_data_write_uint16(VALVE_CLOSE_TIMES_ADDR,ValveCloseTimes);
|
}
|
|
void Valve_Force_Open_Time_Judge(void)
|
{
|
if(Valve_control_parm.Valve_Type == SZV102_VALVE)
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 16 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 27 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 27 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 28 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 30;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 40;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 60;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 70;
|
}
|
else
|
{
|
Time_For_valve_open = 70;
|
}
|
}
|
else if(Valve_control_parm.Valve_Type == SZV103_VALVE)
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 105 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 155 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 285;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 445;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 490;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 520;
|
}
|
else
|
{
|
Time_For_valve_open = 520;
|
}
|
}
|
else
|
{
|
if(regDevSerialNum.EquipmentCaliberAndModel==0x01) //25
|
{
|
Time_For_valve_open = 360 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x02) //32
|
{
|
Time_For_valve_open = 410 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x03) //40
|
{
|
Time_For_valve_open = 410 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x04) //50
|
{
|
Time_For_valve_open = 420 ;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x05)//80
|
{
|
Time_For_valve_open = 580;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x06)//100
|
{
|
Time_For_valve_open = 720;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x07) //150
|
{
|
Time_For_valve_open = 720;
|
}
|
else if(regDevSerialNum.EquipmentCaliberAndModel==0x08) //200
|
{
|
Time_For_valve_open = 720;
|
}
|
else
|
{
|
Time_For_valve_open = 720;
|
}
|
}
|
|
// Time_For_valve_open = Time_For_valve_open * 0.33;
|
}
|