tec控制pid程序_PID温度控制程序的一个疑问

关于PID温度控制,在网上找了个程序,看了看有个问题弄不懂,请教各位高手,就是下面程序中的最后几行,当实际温度大于等于设定温度时,应该就关闭加热了,hightime应该等于0啊,但为...

关于PID温度控制,在网上找了个程序,看了看有个问题弄不懂,请教各位高手,就是下面程序中的最后几行,当实际温度大于等于设定温度时,应该就关闭加热了,hightime应该等于0啊,但为什么会出来如下这几行,搞不懂。请教高手。谢谢!

if(uk<0)

{

hightime=100-(-uk);

}

else

{

hightime=100-uk;

}

下面是程序:

/******************************

温度比较 PID算法

*******************************/

void pid_ys()

{

if(rltemp

{

if(settemp-rltemp>20) // 如果相差2度

{

hightime=100;//全速加热

}

else //否则运行PID算法进行平滑加热

{

e1 = settemp-rltemp;

duk=(kp*(e1-e2)+ki*e1+kd*(e1-e2*2+e3))/10;

uk = uk+duk;

if(uk>100)

uk = 100;

else if(uk

uk = -100;

if(uk<0)

{

hightime=-uk;

}

else

{

hightime=uk;

}

e3 = e2;

e2 = e1;

}

}

if(rltemp>=settemp)//如果实际温度大于设定值

{

if(rltemp-settemp>0) //只要实际温度与设定值有偏差

{

hightime=0; //停止加热

}

else //其他情况运行PID算法,但参数与前面的刚好相反

{

e1 = rltemp-settemp;

duk=(kp*(e1-e2)+ki*e1+kd*(e1-e2*2+e3))/10;

uk = uk+duk;

if(uk>100)

uk = 100;

else if(uk

uk = -100;

if(uk<0)

{

hightime=100-(-uk);

}

else

{

hightime=100-uk;

}

e3 = e2;

e2 = e1;

}

}

展开

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贤娃

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值