搜索
bottom↓
回复: 160

PID调节经验总结

  [复制链接]

出0入0汤圆

发表于 2011-8-5 22:46:54 | 显示全部楼层 |阅读模式
PID调节经验总结
PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。依据经验,一般PID参数确定的步骤如下[42]:
(1)        确定比例系数Kp
确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为
纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
(2)        确定积分时间常数Ti
比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。
(3)        确定微分时间常数Td
微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。
(4)        系统空载、带载联调
对PID参数进行微调,直到满足性能要求。





PID代码

//定义变量
float Kp;                       //PI调节的比例常数
float Ti;                       //PI调节的积分常数
float T;                        //采样周期
float Ki;
float ek;                       //偏差e[k]
float ek1;                      //偏差e[k-1]
float ek2;                      //偏差e[k-2]
float uk;                       //u[k]
signed int uk1;                 //对u[k]四舍五入取整
signed int adjust;              //调节器输出调整量

//变量初始化
    Kp=4;
    Ti=0。005;
    T=0.001;
// Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
    ek=0;
    ek1=0;
    ek2=0;
    uk=0;
    uk1=0;
    adjust=0;

int piadjust(float ek)  //PI调节算法
{
    if( gabs(ek)<0.1 )
    {
       adjust=0;
    }
    else
    {     
       uk=Kp*(ek-ek1)+Ki*ek;  //计算控制增量
       ek1=ek;
      
       uk1=(signed int)uk;
       if(uk>0)
       {
          if(uk-uk1>=0.5)
          {
             uk1=uk1+1;
          }
       }
       if(uk<0)
       {
          if(uk1-uk>=0.5)
          {
             uk1=uk1-1;
          }
       }
       adjust=uk1;   
    }        
   
   
    return adjust;
}

下面是在AD中断程序中调用的代码。
      
       。。。。。。。。。。。
       else //退出软启动后,PID调节,20ms调节一次
           {
              EvaRegs.CMPR3=EvaRegs.CMPR3+piadjust(ek);//误差较小PID调节稳住
              if(EvaRegs.CMPR3>=890)
              {
                 EvaRegs.CMPR3=890; //限制PWM占空比
              }        
           }

本文来自: DSP交流网(www.hellodsp.com) 详细出处参考:http://www.hellodsp.com/bbs/viewthread.php?tid=688

出0入0汤圆

 楼主| 发表于 2011-8-5 22:48:45 | 显示全部楼层
觉得还可以的话 不要忘了顶噢!!

出0入0汤圆

发表于 2011-8-9 17:18:35 | 显示全部楼层
要顶

出0入0汤圆

发表于 2011-8-9 17:35:06 | 显示全部楼层
一般PI就够用了。加D应该速度会更快一些吧

出0入0汤圆

发表于 2011-8-9 17:47:02 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-8-9 17:48:24 | 显示全部楼层
看看

出0入0汤圆

发表于 2011-8-9 19:40:01 | 显示全部楼层
是挺详细的并专业!顶下

出0入0汤圆

发表于 2011-8-9 22:22:31 | 显示全部楼层
PID,通俗。。

出0入0汤圆

发表于 2011-8-9 22:25:38 | 显示全部楼层
顶贴

出0入0汤圆

发表于 2011-8-9 23:22:27 | 显示全部楼层
记下,

出0入0汤圆

发表于 2011-8-9 23:28:53 | 显示全部楼层
Mark

出0入0汤圆

发表于 2011-8-10 08:53:50 | 显示全部楼层
顶贴

出0入0汤圆

发表于 2011-8-10 09:01:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-13 14:04:47 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-13 16:57:55 | 显示全部楼层
uk1=(signed int)uk;
       if(uk>0)
       {
          if(uk-uk1>=0.5)
          {
             uk1=uk1+1;
          }
       }
       if(uk<0)
       {
          if(uk1-uk>=0.5)
          {
             uk1=uk1-1;
          }
这部分干什么用的啊 ?感觉怪

出0入0汤圆

发表于 2011-8-13 16:57:56 | 显示全部楼层
uk1=(signed int)uk;
       if(uk>0)
       {
          if(uk-uk1>=0.5)
          {
             uk1=uk1+1;
          }
       }
       if(uk<0)
       {
          if(uk1-uk>=0.5)
          {
             uk1=uk1-1;
          }
这部分干什么用的啊 ?感觉怪

出0入0汤圆

发表于 2011-8-14 11:21:47 | 显示全部楼层
不错  学习了

出0入0汤圆

发表于 2011-8-15 20:07:05 | 显示全部楼层
不错。。。。。顶啊

出0入0汤圆

发表于 2011-8-16 10:21:48 | 显示全部楼层
要顶

出0入0汤圆

发表于 2011-8-16 22:51:28 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2011-8-17 16:33:01 | 显示全部楼层
回复【14楼】wwwzxfeng
-----------------------------------------------------------------------

小数处理,相当于四舍五入。

出0入0汤圆

发表于 2011-8-17 16:37:52 | 显示全部楼层
PID还没用过

出0入0汤圆

发表于 2011-8-20 09:53:51 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-21 21:27:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-22 21:30:22 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-8-24 09:45:25 | 显示全部楼层
怎么知道超调了,怎么测呢??楼主

出0入0汤圆

发表于 2011-8-24 15:44:40 | 显示全部楼层
受教了,有价值。

出0入0汤圆

发表于 2011-8-25 23:01:44 | 显示全部楼层
需要学习一下,马上就要用了

出0入0汤圆

发表于 2011-8-26 21:43:21 | 显示全部楼层
有用 !

出0入0汤圆

发表于 2011-8-26 22:18:37 | 显示全部楼层
很有用,谢谢楼主的辛苦!

出0入0汤圆

发表于 2011-8-30 09:42:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-8-30 21:03:40 | 显示全部楼层
顶贴,正找呢!谢谢哈

出0入0汤圆

发表于 2011-8-31 16:23:16 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-9-2 22:34:58 | 显示全部楼层
回复【31楼】li408326758li
-----------------------------------------------------------------------

我的做法是使用Delphi编写了一个靠串口通信的上位机软件时刻监测结果  这样可以观察控制信号响应

出0入0汤圆

发表于 2011-9-3 22:41:04 | 显示全部楼层

出0入0汤圆

发表于 2011-9-8 21:26:01 | 显示全部楼层

出0入0汤圆

发表于 2011-9-8 22:29:58 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-9 08:42:10 | 显示全部楼层
虽然不错 但很笼统

出0入0汤圆

发表于 2011-9-9 13:21:10 | 显示全部楼层
懂了就不难,不懂就很难。哈哈。。。

出0入0汤圆

发表于 2011-9-20 21:27:56 | 显示全部楼层
顶!

出0入0汤圆

发表于 2011-9-22 21:28:47 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-9-22 21:32:59 | 显示全部楼层
感谢楼主分享!!

     对PID算法不太熟悉,程序有点看不懂。。。我再慢慢琢磨。。。

出0入0汤圆

发表于 2011-9-29 13:48:54 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-9-29 14:26:05 | 显示全部楼层
回复【楼主位】pcbddd
-----------------------------------------------------------------------

这玩意用到数字测量和闭环里头很有用

出0入0汤圆

发表于 2011-9-29 14:36:37 | 显示全部楼层
感谢分享,顶一下!

出0入0汤圆

发表于 2011-9-29 14:40:34 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2011-9-29 16:55:50 | 显示全部楼层

出0入0汤圆

发表于 2011-9-30 09:38:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-6 22:34:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-10 16:44:42 | 显示全部楼层
按照楼主的程序,kp=4,ki=0.8怎么发散到最后溢出了啊 楼主来给卢克卢克:
uk= uk1 + kp*(ek-ek1)+ki*ek;
                ek1=ek;
                ek=aim-uk;
                uk1=uk;
循环调整,最后双精度都溢出了。。。

出0入0汤圆

发表于 2011-10-11 15:46:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-11 16:37:11 | 显示全部楼层
最近我也在看关于PID的,谢谢楼主了

出0入0汤圆

发表于 2011-10-11 17:03:39 | 显示全部楼层
实在愚钝,经过几次才集中精神看了一下,明白了

出0入0汤圆

发表于 2011-10-12 08:31:26 | 显示全部楼层
pid有自整定的。

出0入0汤圆

发表于 2011-10-16 09:07:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-16 20:08:29 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-10-17 20:50:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-10-24 19:35:23 | 显示全部楼层
PID很好

出0入0汤圆

发表于 2011-10-27 20:05:06 | 显示全部楼层
收藏!

出0入0汤圆

发表于 2011-10-29 13:17:23 | 显示全部楼层
收藏!

出0入0汤圆

发表于 2011-11-23 19:17:46 | 显示全部楼层
呵呵,过来看看

出0入0汤圆

发表于 2011-11-23 19:57:42 | 显示全部楼层
不错的资料,收了,谢谢楼主

出0入0汤圆

发表于 2011-11-23 21:59:33 | 显示全部楼层
留下记号备用。

出0入0汤圆

发表于 2011-12-4 00:15:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-4 01:03:30 | 显示全部楼层
好贴要顶

出0入0汤圆

发表于 2011-12-4 23:59:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-5 09:13:37 | 显示全部楼层
不错!

出0入0汤圆

发表于 2011-12-6 23:50:17 | 显示全部楼层

出0入0汤圆

发表于 2012-1-3 23:40:41 | 显示全部楼层
顶了,十分感谢!

出0入0汤圆

发表于 2012-1-9 09:23:42 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-1-9 14:50:48 | 显示全部楼层
坛子里面之前有人发过

出0入0汤圆

发表于 2012-1-17 09:12:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-8 18:49:23 | 显示全部楼层
MARK.,

出0入0汤圆

发表于 2012-2-8 21:28:59 | 显示全部楼层
回复【楼主位】pcbddd

-----------------------------------------------------------------------
学习中 帮顶

出0入0汤圆

发表于 2012-2-21 10:02:55 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2012-2-21 13:28:18 | 显示全部楼层
回复【3楼】kim5257  
一般pi就够用了。加d应该速度会更快一些吧

-----------------------------------------------------------------------

加d会减小上升时间,同时减小振荡

出0入0汤圆

发表于 2012-2-22 14:56:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2012-3-29 22:11:34 | 显示全部楼层
mark,要顶一下

出0入0汤圆

发表于 2012-3-29 23:01:13 | 显示全部楼层
收藏.....

出0入0汤圆

发表于 2012-5-15 13:27:22 | 显示全部楼层
MARK一下,正在学习捏。

出0入0汤圆

发表于 2012-5-21 10:06:52 | 显示全部楼层
定~!!

出0入0汤圆

发表于 2012-5-22 08:32:10 | 显示全部楼层
收藏了,谢谢啊

出0入0汤圆

发表于 2012-5-22 08:55:09 | 显示全部楼层
通俗易懂!!

出0入0汤圆

发表于 2012-5-23 10:17:49 | 显示全部楼层
mark                                    

出0入0汤圆

发表于 2012-5-24 15:06:01 | 显示全部楼层
新手学习了  

出0入0汤圆

发表于 2012-6-5 13:20:33 | 显示全部楼层
关注,顶贴

出0入0汤圆

发表于 2012-6-5 13:36:30 | 显示全部楼层
不错,好资料,好好学习

出0入0汤圆

发表于 2012-6-6 16:18:44 | 显示全部楼层
这计算出来的uk1和占空比有什么关系啊?就是怎么转化为占空比捏

出0入0汤圆

发表于 2012-6-8 18:22:48 | 显示全部楼层
我觉得挺好的,大家的看法呢

出0入0汤圆

发表于 2012-6-10 19:19:02 | 显示全部楼层
位置式PID

出0入0汤圆

发表于 2012-6-12 08:36:13 | 显示全部楼层

出0入0汤圆

发表于 2012-6-26 08:59:55 | 显示全部楼层
wwwzxfeng 发表于 2011-8-13 16:57
uk1=(signed int)uk;
       if(uk>0)
       {

应该是限幅的吧!!猜的

出0入0汤圆

发表于 2012-7-9 20:41:42 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2012-7-31 09:30:57 | 显示全部楼层
必须顶起!

出0入0汤圆

发表于 2012-8-4 17:17:01 | 显示全部楼层
好东西,顶一下

出0入0汤圆

发表于 2012-8-4 17:32:57 | 显示全部楼层
gabs( ) 这个函数是什么?哪里的?

出0入0汤圆

发表于 2012-9-3 16:42:27 | 显示全部楼层
mark。。。

出0入0汤圆

发表于 2012-9-6 22:44:25 | 显示全部楼层
PID的P,I系数确实是个问题
头像被屏蔽

出0入0汤圆

发表于 2012-10-15 23:55:39 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-12-1 17:35:24 | 显示全部楼层
顶下了,努力总结哦
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 09:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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