找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3875|回复: 7
打印 上一主题 下一主题
收起左侧

各位大神,PID温度控制的程序不太懂,帮忙看下吧,小白感激不尽,黑币奉上!

[复制链接]
跳转到指定楼层
楼主
ID:103523 发表于 2016-5-12 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
我在做PID温度控制的时候,下面的这个函数有一部分不懂,我用红色标记出来,大神帮忙看一下,帮下小白哈,小白再次感激不尽!

  • /***********************************************************
  • 温度比较处理子程序
  • ***********************************************************/
  • void compare_temper()
  • {
  •     unsigned char i ;
  •     //EA=0;
  •     if(set_temper>temper)//设定值大于测量值
  •     {
  •         if(set_temper-temper>1)
  •         {
  •             high_time=100 ; //大于1°不进行PID运算
  •             low_time=0 ;
  •         }
  •         else
  •         {   //在1°范围内进行PID运算
  •             for(i=0;i<10;i++)                      //为什么要进行10次,这样前九次不是都没用了吗?
  •             {
  •                 //get_temper();
  •                 rin=s;
  •                 // Read Input
  •                 rout=PIDCalc(&spid,rin); //执行PID运算(位置式PID)
  •                 // Perform PID Interation
  •             }
  •             if(high_time<=100) //限制最大值
  •             high_time=(unsigned char)(rout/800);//这里为什么要除以800啊?
  •             else
  •             high_time=100;
  •             low_time=(100-high_time);
  •         }
  •     }
  • /****************************************/
  •     else if(set_temper<=temper) //当实际温度大于设置温度时
  •     {
  •         if(temper-set_temper>0)//如果实际温度大于设定温度
  •         {
  •             high_time=0 ;
  •             low_time=100 ;
  •         }
  •         else
  •         {
  •             for(i=0;i<10;i++)
  •             {
  •                 //get_temper();
  •                 rin=s ;
  •                 // Read Input
  •                 rout=PIDCalc(&spid,rin);
  •                 // Perform PID Interation
  •             }
  •             if(high_time<100) //此变量是无符号字符型
  •             high_time=(unsigned char)(rout/10000);//这里又为什么除以10000?
  •             else
  •             high_time=0 ;//限制不输出负值
  •             low_time=(100-high_time);
  •             //EA=1;
  •         }
  •     }
  • }
  • 各位大神帮忙看下,如果需要其他源程序,小白立马贴上。
  • 在这里再次感谢各位大神了。
  • 小白在线等,非常感谢!!!!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:103523 发表于 2016-5-12 18:53 | 只看该作者
有没有大神 帮忙看一下嘛 谢谢了!!!
回复

使用道具 举报

板凳
ID:97438 发表于 2016-5-13 08:49 | 只看该作者
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序
回复

使用道具 举报

地板
ID:103523 发表于 2016-5-13 10:28 | 只看该作者
luoluoluo136 发表于 2016-5-13 08:49
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序

你好,rout 就是那个PID控制里面的u(k)就是PID的输出值。帮忙看下  非常感谢哈!
回复

使用道具 举报

5#
ID:102012 发表于 2017-11-4 22:15 | 只看该作者
我也想知道,研究半天了
回复

使用道具 举报

6#
ID:246492 发表于 2017-11-6 12:35 | 只看该作者
1 rout是一个全局变量 2 为什么要除以10000要看你这个rout的定义,建议贴一下完整程序
回复

使用道具 举报

7#
ID:627396 发表于 2019-10-21 09:37 | 只看该作者
麻烦附上完整程序看看呢
回复

使用道具 举报

8#
ID:601756 发表于 2019-10-21 17:14 | 只看该作者
你好,方便加个qq一起研究下吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表