搜索
bottom↓
楼主: fsmcu

温控PID参数调节实验过程

  [复制链接]

出0入0汤圆

发表于 2010-9-15 17:23:35 | 显示全部楼层
标记。。。。

出0入0汤圆

发表于 2010-9-15 18:05:18 | 显示全部楼层
good & mark

出0入0汤圆

发表于 2010-11-10 08:44:35 | 显示全部楼层
good & mark

出0入8汤圆

发表于 2010-11-10 10:58:11 | 显示全部楼层
前些日子弄一个控制电机转速的PID,一直没有弄好。值的参考!!

出0入0汤圆

发表于 2010-11-14 23:49:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-11-15 07:00:21 | 显示全部楼层
这个要MARK一下。

出0入24汤圆

发表于 2010-12-18 16:40:36 | 显示全部楼层
Mark!
感谢楼主!

出0入0汤圆

发表于 2010-12-19 14:00:47 | 显示全部楼层
niu

出0入0汤圆

发表于 2010-12-20 13:49:53 | 显示全部楼层
楼主是用什么仪器测量的呢?

出0入0汤圆

发表于 2010-12-20 15:41:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-27 22:07:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-28 12:57:34 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-28 13:15:43 | 显示全部楼层
赞一个!

出0入0汤圆

发表于 2011-1-12 09:57:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 10:16:10 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-1-12 10:16:25 | 显示全部楼层
pid mark

出0入0汤圆

发表于 2011-1-12 10:40:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 10:42:21 | 显示全部楼层
以后也许用的上呢~~

出0入0汤圆

发表于 2011-1-12 12:35:00 | 显示全部楼层
路过

出0入0汤圆

发表于 2011-1-12 12:56:17 | 显示全部楼层
mk ,温度PID

出0入0汤圆

发表于 2011-1-12 13:38:41 | 显示全部楼层
几号

出0入0汤圆

发表于 2011-1-12 14:06:04 | 显示全部楼层
以后用到再来看看啊

出0入0汤圆

发表于 2011-1-12 14:15:03 | 显示全部楼层
MARK PID

出0入0汤圆

发表于 2011-1-12 15:12:42 | 显示全部楼层
PID mark

出0入0汤圆

发表于 2011-1-12 16:35:28 | 显示全部楼层
PID在初始化的时候,把Error和SumError 初始化为0,这样在第一次运行PID的时候,Error会很大,同时造成SumError也很大,对处理结果影响很大,不知道这个怎么处理?还是不用管?

出0入0汤圆

发表于 2011-1-12 17:22:15 | 显示全部楼层
好贴,学习!

出0入0汤圆

发表于 2011-1-12 18:25:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-12 18:47:36 | 显示全部楼层
挺好的~!

出0入0汤圆

发表于 2011-1-13 08:27:25 | 显示全部楼层
很好的资料,谢谢分享!

出0入0汤圆

发表于 2011-1-17 19:02:04 | 显示全部楼层
这样好的帖子~一定要顶

出0入0汤圆

发表于 2011-1-18 14:03:23 | 显示全部楼层
讲的很清楚

出0入0汤圆

发表于 2011-1-18 18:47:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-18 19:04:21 | 显示全部楼层
收藏~

出0入0汤圆

发表于 2011-2-1 23:55:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-2 14:56:58 | 显示全部楼层
回复【楼主位】fsmcu
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2011-2-3 01:39:45 | 显示全部楼层
找到一篇老外写的继电器法自整定PID,或许可以参考一下

点击此处下载 ourdev_614499E39LAH.pdf(文件大小:957K) (原文件名:Relay Method Automates PID Loop Tuning.pdf)

出0入0汤圆

发表于 2011-2-8 14:41:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-12 15:47:19 | 显示全部楼层
做个记号

出0入0汤圆

发表于 2011-2-12 20:36:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-13 08:25:26 | 显示全部楼层
标记下呵呵

出0入0汤圆

发表于 2011-2-15 14:46:21 | 显示全部楼层
MARK11

出0入0汤圆

发表于 2011-2-15 16:00:11 | 显示全部楼层
hao pid  楼主牛

出0入0汤圆

发表于 2011-2-19 21:47:40 | 显示全部楼层
治学态度严谨啊

出0入0汤圆

发表于 2011-2-19 22:11:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-23 14:51:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-23 20:15:34 | 显示全部楼层
看了还是有好多不理解的地方。
如何先确定kp,如楼主kp = 9.0时对应程序就是       
ppid.errk = (float)(ppid.sp - ppid.pv);//目标温度 - 当前温度
pterm = ppid.kp * ppid.errk;
输出ppid.Last_Out = pterm;
如当前温度79度,目标温度80度 那么pterm = 9.2 * 1;那么只是输出9.2么,取整9,500等分,只占有9/500 *200W = 3.6W
是输出这么小的瓦数么,感觉我应该是错了啊,但不知哪里出错,望指点!

出0入0汤圆

发表于 2011-2-23 22:34:43 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-2-26 11:32:44 | 显示全部楼层
哇,好帖,学习了

出0入0汤圆

发表于 2011-2-26 12:36:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-26 15:19:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-26 17:05:32 | 显示全部楼层
很好的资料,谢谢分享!

出0入0汤圆

发表于 2011-2-27 02:35:19 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-28 10:48:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-4 07:55:29 | 显示全部楼层
能用PROTEUS做仿真吗,楼主努力。

出0入0汤圆

发表于 2011-3-4 09:19:14 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-3-7 09:47:33 | 显示全部楼层
顶LZ

出0入0汤圆

发表于 2011-3-8 13:58:11 | 显示全部楼层
请教楼主:可控硅的型号?

出0入0汤圆

发表于 2011-3-9 12:32:53 | 显示全部楼层
很好的资料,谢谢楼主,及同志们!

出0入0汤圆

发表于 2011-3-15 21:45:47 | 显示全部楼层
mark,学习!

出0入0汤圆

发表于 2011-3-16 13:43:02 | 显示全部楼层
mark pid

出0入0汤圆

发表于 2011-3-18 01:42:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-18 13:17:00 | 显示全部楼层
标记

出100入0汤圆

发表于 2011-3-18 16:06:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-22 14:38:26 | 显示全部楼层
现在才看到,也不迟

出0入0汤圆

发表于 2011-3-25 10:38:53 | 显示全部楼层
mark with bigPEN

出0入0汤圆

发表于 2011-3-30 12:00:41 | 显示全部楼层
顶,受益匪浅啊!

出0入0汤圆

发表于 2011-4-15 15:27:14 | 显示全部楼层
我弄了一个控温系统,调节p无论多大都不会出现震荡,不知啥原因啊

出0入0汤圆

发表于 2011-4-15 15:42:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-15 18:37:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-23 13:05:37 | 显示全部楼层
回复【楼主位】fsmcu
-----------------------------------------------------------------------

楼主,pid 的参数的计算周期怎么确定的,上面看到是5秒。

原文是:

——————————
因为是对加热的铁块温度进行控制,属于滞后效应系统,所以采样周期先定为5秒(这里指的是PID计算的周期,注意我的温度采样是时时的),
——————————

出0入0汤圆

发表于 2011-5-2 11:38:33 | 显示全部楼层
mark下

出0入0汤圆

发表于 2011-5-2 11:59:16 | 显示全部楼层
好东东,收藏了

出0入0汤圆

发表于 2011-5-2 19:57:33 | 显示全部楼层
收藏之,确实很优秀的帖子

出0入0汤圆

发表于 2011-5-2 22:09:25 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-5-2 22:29:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-5 13:58:13 | 显示全部楼层
好文

出0入0汤圆

发表于 2011-5-6 14:32:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-6 16:12:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 18:51:13 | 显示全部楼层
回复【楼主位】fsmcu
-----------------------------------------------------------------------
好东西呀,刚好用上,楼主还讲的这么详细,太感谢了

出0入0汤圆

发表于 2011-5-17 12:24:21 | 显示全部楼层
我按照楼主的说法做实验,折腾了一夜也没个结果,苦恼中。
我的加热设备是一个500w的电热块,被加热的设备是一个约3斤重的铝块;
也用MAX6675采集温度,用可控硅控制加热,通过串口将数据输出到电脑查看工作曲线;
也是5秒钟计算一次PID,定时器10ms中断一次,5秒钟中断500次;
通过计算得出5秒钟要导通的次数来控制加热量;
以上跟楼主做实验的设备原理基本上是一样的;

源程序如下:

struct pid
{
float sp;
float pv;
float errk;
float errk_1;
float errk_2;
float        sum;
float        kp;
float        ki;
float        kd;
float        Last_Out;
};
struct pid ppid;

//PID计算
void PID_Cal(void)
{
float pterm,iterm,dterm;

//把当前的温度和设定的目标温度定义好
ppid.pv = f_temp;                        //当前温度
ppid.sp = 110;                           //设定的温度

ppid.kp = 200;                           //先求临界震荡
ppid.ki = 0;
ppid.kd = 0;

//PID数学模型
//u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)]

ppid.errk = (float)(ppid.sp - ppid.pv);         //偏差 = 设定温度 - 当前温度

pterm = ppid.kp * ppid.errk;                    //比例系数 * 偏差   kp * e(t)

ppid.sum += ppid.errk;                          // e(1) + e(2) + ....+ e(t)
iterm = ppid.ki * ppid.sum;                     //ki * [e(1) + e(2) + ....+ e(t)]

pid_sum = ppid.sum;

dterm = ppid.kd * (ppid.errk_1 - ppid.errk_2);    //kd * [e(t) - e(t-1)]   这里与楼主源程序有点区别,源程序是(ppid.errk - ppid.errk_1)

ppid.Last_Out = pterm + iterm + dterm;    //u(t) = kp * e(t) + ki * [e(1) + e(2) + ....+ e(t)] + kd * [e(t) - e(t-1)]

ppid.errk_2 = ppid.errk_1;
ppid.errk_1 = ppid.errk;

if(ppid.Last_Out > SampleT)
ppid.Last_Out = SampleT;
else if(ppid.Last_Out < 0)
ppid.Last_Out = 0;

sprintf(tx_buf,"%5.2f\n",f_temp);  //输出测量的数据
v_sent_uart1_str(tx_buf,0);
   
}



开始试验,

我要控制达到的温度是110,而我实验比例调节时(Pi,Pd=0),只有KC = 200时,才会震荡,而KC低于70时,温度根本达不到设定的110,楼主的9.3是怎么来的?当kp=9.3时,当温度接近设

定温度时,如相差2度,则pterm = ppid.kp * ppid.errk=9.3*2=18.6,也就是每五秒钟只导通18.6/500*5=0.186秒?可能我理解的不对,可不知道错在哪里。
我试验的数据如图,我的图形远没有楼主的那么平滑。

根据数据我计算的PID参数:

振荡周期为:Pc=51*5=255
T=5s
Td=0.12Pc=30.6
Ti=0.5Pc=127.5
Kp=0.65KC=130
Kd=Kp*Td/T=795
Ki=Kp*T/Ti=5.1

把这些数据带到程序中,结果一运行,温度到180度都没停下,吓得我赶紧断了电。


另,关于pi的算法,根据公式ki * [e(1) + e(2) + ....+ e(t)],我从最低温加热到设定的温度,[e(1) + e(2) + ....+ e(t)]这个值会很大,我的达到了几千,再小的Ki与他相乘也会变得

很大,是这样计算的吗?

求高人指点一下我,可怜我昨晚一直做实验到天亮。


(原文件名:临界震荡.JPG)

出0入0汤圆

发表于 2011-5-17 23:39:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-18 09:26:48 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-5-28 10:16:46 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-1 20:49:39 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-1 21:58:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-3 10:42:47 | 显示全部楼层
帖子很棒

出0入0汤圆

发表于 2011-6-3 10:47:47 | 显示全部楼层
留名

出0入0汤圆

发表于 2011-6-3 14:10:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-4 09:16:20 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-4 16:04:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-4 22:43:42 | 显示全部楼层
remind

出0入0汤圆

发表于 2011-6-4 23:07:56 | 显示全部楼层
支持

出0入0汤圆

发表于 2011-6-20 08:44:13 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-24 16:15:09 | 显示全部楼层
Ziegler-Nichols参数  

控制器                Kp                Ti                Td  
P                0.50*Kc                /                /  
PD                0.65*Kc                /                0.12*Pc  
PI                0.45*Kc                0.85*Pc                /  
PID                0.65*Kc                0.5*Pc                0.12*Pc  

我先做PD实验:
根据临界增益KC=9.2 震荡周期Pc=225秒,计算出Kp=5.98,Td=27秒,公式Kd=Kp*Td/T=5.98*27/5=32.392
**********************************************************************************************
参数表怎么来的?求高手解答~~~~

出0入0汤圆

发表于 2011-6-24 22:03:06 | 显示全部楼层
标记!!!!!

出0入0汤圆

发表于 2011-6-24 22:07:01 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-26 23:01:04 | 显示全部楼层
怎么没有matlab的程序啊,期待楼主共享啊

出0入0汤圆

发表于 2011-6-27 00:49:54 | 显示全部楼层
理论,实践贴,先mark先了

出0入0汤圆

发表于 2011-6-27 01:52:57 | 显示全部楼层
自动化的学生飘过。。。

出10入0汤圆

发表于 2011-6-27 02:09:19 | 显示全部楼层
呵呵,好帖子啊、。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2023-1-29 23:12

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

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