|
int rise,hold,fall;//PID算法控制升温降温
rise = 0;
hold = 0;
fall = 0;
if(AD_tem<set_tem) //如果板内温度小于设定温度,执行循环
{
t=set_tem-AD_tem;
if(t>3*t_gate) //大幅调节
{
if(rise==0)
{
rise=1; //进行升温
hold=0; //系统不控温
tc_data=255; //标志位=255
DA_send(tc_data); //??DAC????
}
}
else //进行控温
{
if(hold==0) //???????????????
{
if(set_tem>=t_room)
//?????????????
{
tc_data=dbasa; //?????????????????????
}
else //???????????
{
tc_data=dbasb; //???????????????????
}
hold=1; //??????????
rise=0; //???????????
}
data_inc=1.0*(t-t_1)+1.5*t+3*(t-2*t_1+t_2); //PID??????
tc_data=tc_data+data_inc; //??DAC????
if(tc_data>255) tc_data=255; //??????????
if(tc_data<0) tc_data=0;
DA_send(tc_data); //??DAC????
}
}
else //????????????,????
{
t=AD_tem-set_tem; //??????
if(t>3*t_gate) //???????????
{
if(fall==0) //???????
{
fall=1; //?????????????
hold=0; //??????????
tc_data=0; //??DAC???0
DA_send(tc_data); //??DAC????
}
}
else //?????????????
{
if(hold==0) //??????
{
if(set_tem>=t_room) //?????????????
{
tc_data=dbasa; //?????????????????????
}
else //???????????
{
tc_data=dbasb; //???????????????????
}
hold=1; //??????????
fall=0; //???????????
}
t=-t; //???????
data_inc=1.0*(t-t_1)+1.5*t+3*(t-2*t_1+t_2); //PID??????
tc_data=tc_data+data_inc; //??DAC????
if(tc_data>255) tc_data=255; //??????????
if(tc_data<0) tc_data=0;
DA_send(tc_data); //??DAC????
}
}
t_2=t_1;
t_1=t;
}
}
}
t_1 t_2初值都是零 能帮我看看吗 |
|