sange
发表于 2010-9-15 17:23:35
标记。。。。
rodger
发表于 2010-9-15 18:05:18
good & mark
326498096
发表于 2010-11-10 08:44:35
good & mark
lindabell
发表于 2010-11-10 10:58:11
前些日子弄一个控制电机转速的PID,一直没有弄好。值的参考!!
xqlftg
发表于 2010-11-14 23:49:21
mark
liusoldier
发表于 2010-11-15 07:00:21
这个要MARK一下。
ycwjl728
发表于 2010-12-18 16:40:36
Mark!
感谢楼主!
liguanmao
发表于 2010-12-19 14:00:47
niu
xsydzw
发表于 2010-12-20 13:49:53
楼主是用什么仪器测量的呢?
mountainqy
发表于 2010-12-20 15:41:51
mark
k10k10
发表于 2010-12-27 22:07:40
mark
just_interest
发表于 2010-12-28 12:57:34
mark
lijintao
发表于 2010-12-28 13:15:43
赞一个!
harng
发表于 2011-1-12 09:57:50
mark
zuceyige
发表于 2011-1-12 10:16:10
mark!!!
pang7
发表于 2011-1-12 10:16:25
pid mark
728196
发表于 2011-1-12 10:40:32
mark
xczxwy
发表于 2011-1-12 10:42:21
以后也许用的上呢~~
miminzhang
发表于 2011-1-12 12:35:00
路过
deadline2012
发表于 2011-1-12 12:56:17
mk ,温度PID
kongan
发表于 2011-1-12 13:38:41
几号
hellotwty
发表于 2011-1-12 14:06:04
以后用到再来看看啊
eric_wang
发表于 2011-1-12 14:15:03
MARK PID
i7456
发表于 2011-1-12 15:12:42
PID mark
pinocchio
发表于 2011-1-12 16:35:28
PID在初始化的时候,把Error和SumError 初始化为0,这样在第一次运行PID的时候,Error会很大,同时造成SumError也很大,对处理结果影响很大,不知道这个怎么处理?还是不用管?
zuceyige
发表于 2011-1-12 17:22:15
好贴,学习!
wpnx
发表于 2011-1-12 18:25:37
mark
NUAA_hp
发表于 2011-1-12 18:47:36
挺好的~!
proco
发表于 2011-1-13 08:27:25
很好的资料,谢谢分享!
ju748
发表于 2011-1-17 19:02:04
这样好的帖子~一定要顶
jiabin1024
发表于 2011-1-18 14:03:23
讲的很清楚
abcdzhy
发表于 2011-1-18 18:47:54
mark
ZacharyGuo
发表于 2011-1-18 19:04:21
收藏~
yoko
发表于 2011-2-1 23:55:09
mark
saintyou
发表于 2011-2-2 14:56:58
回复【楼主位】fsmcu
-----------------------------------------------------------------------
mark
pwcpp
发表于 2011-2-3 01:39:45
找到一篇老外写的继电器法自整定PID,或许可以参考一下
点击此处下载 ourdev_614499E39LAH.pdf(文件大小:957K) (原文件名:Relay Method Automates PID Loop Tuning.pdf)
wukong
发表于 2011-2-8 14:41:44
mark
hizzx
发表于 2011-2-12 15:47:19
做个记号
gc56198
发表于 2011-2-12 20:36:37
mark
mosidao
发表于 2011-2-13 08:25:26
标记下呵呵
xiaolinr
发表于 2011-2-15 14:46:21
MARK11
03024003
发表于 2011-2-15 16:00:11
hao pid楼主牛
aahui
发表于 2011-2-19 21:47:40
治学态度严谨啊
fw190d9
发表于 2011-2-19 22:11:25
mark
gxy508
发表于 2011-2-23 14:51:12
mark
7120223
发表于 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
是输出这么小的瓦数么,感觉我应该是错了啊,但不知哪里出错,望指点!
omlarn
发表于 2011-2-23 22:34:43
MARK
CHENSHENGG
发表于 2011-2-26 11:32:44
哇,好帖,学习了
red_pig
发表于 2011-2-26 12:36:17
mark
leif
发表于 2011-2-26 15:19:22
mark
yywin
发表于 2011-2-26 17:05:32
很好的资料,谢谢分享!
Hello_World
发表于 2011-2-27 02:35:19
mark
myhonour
发表于 2011-2-28 10:48:46
mark
bmw53
发表于 2011-3-4 07:55:29
能用PROTEUS做仿真吗,楼主努力。
wjkly
发表于 2011-3-4 09:19:14
学习了
Chester
发表于 2011-3-7 09:47:33
顶LZ
xinxinEC
发表于 2011-3-8 13:58:11
请教楼主:可控硅的型号?
mawanli25
发表于 2011-3-9 12:32:53
很好的资料,谢谢楼主,及同志们!
jt6245
发表于 2011-3-15 21:45:47
mark,学习!
lcmdw
发表于 2011-3-16 13:43:02
mark pid
xdco
发表于 2011-3-18 01:42:16
mark
fesu02
发表于 2011-3-18 13:17:00
标记
yu_wen
发表于 2011-3-18 16:06:52
mark
hwdpaley
发表于 2011-3-22 14:38:26
现在才看到,也不迟
zhaoguoqing297
发表于 2011-3-25 10:38:53
mark with bigPEN
cunlingwang
发表于 2011-3-30 12:00:41
顶,受益匪浅啊!
dwywwz
发表于 2011-4-15 15:27:14
我弄了一个控温系统,调节p无论多大都不会出现震荡,不知啥原因啊
avr-job
发表于 2011-4-15 15:42:21
mark
csqfine
发表于 2011-4-15 18:37:04
mark
user_cou
发表于 2011-4-23 13:05:37
回复【楼主位】fsmcu
-----------------------------------------------------------------------
楼主,pid 的参数的计算周期怎么确定的,上面看到是5秒。
原文是:
——————————
因为是对加热的铁块温度进行控制,属于滞后效应系统,所以采样周期先定为5秒(这里指的是PID计算的周期,注意我的温度采样是时时的),
——————————
ithink987
发表于 2011-5-2 11:38:33
mark下
zyqcome
发表于 2011-5-2 11:59:16
好东东,收藏了
ithink987
发表于 2011-5-2 19:57:33
收藏之,确实很优秀的帖子
rafd
发表于 2011-5-2 22:09:25
支持
zprs
发表于 2011-5-2 22:29:18
mark
mmy168
发表于 2011-5-5 13:58:13
好文
bluecat322
发表于 2011-5-6 14:32:09
mark
wkgwz
发表于 2011-5-6 16:12:43
mark
zyw4210
发表于 2011-5-9 18:51:13
回复【楼主位】fsmcu
-----------------------------------------------------------------------
好东西呀,刚好用上,楼主还讲的这么详细,太感谢了
szq790601
发表于 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 * + kd *
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 *
pid_sum = ppid.sum;
dterm = ppid.kd * (ppid.errk_1 - ppid.errk_2); //kd * 这里与楼主源程序有点区别,源程序是(ppid.errk - ppid.errk_1)
ppid.Last_Out = pterm + iterm + dterm; //u(t) = kp * e(t) + ki * + kd *
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 * ,我从最低温加热到设定的温度,这个值会很大,我的达到了几千,再小的Ki与他相乘也会变得
很大,是这样计算的吗?
求高人指点一下我,可怜我昨晚一直做实验到天亮。
http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_640383GV74AA.JPG
(原文件名:临界震荡.JPG)
littlepig
发表于 2011-5-17 23:39:45
mark
wxx116zh
发表于 2011-5-18 09:26:48
MARK
tuoyinhe
发表于 2011-5-28 10:16:46
mark
hlt512
发表于 2011-6-1 20:49:39
MARK
leang521
发表于 2011-6-1 21:58:51
mark
cong2010
发表于 2011-6-3 10:42:47
帖子很棒
feng200808
发表于 2011-6-3 10:47:47
留名
hydraulics
发表于 2011-6-3 14:10:50
mark
anvy178
发表于 2011-6-4 09:16:20
MARK
lcmdw
发表于 2011-6-4 16:04:51
mark
updown
发表于 2011-6-4 22:43:42
remind
rafd
发表于 2011-6-4 23:07:56
支持
waking
发表于 2011-6-20 08:44:13
MARK
lhb0709
发表于 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
**********************************************************************************************
参数表怎么来的?求高手解答~~~~
bingshuihuo888
发表于 2011-6-24 22:03:06
标记!!!!!
vjcmain
发表于 2011-6-24 22:07:01
mark
beiguoqishi
发表于 2011-6-26 23:01:04
怎么没有matlab的程序啊,期待楼主共享啊
mengzhihu2
发表于 2011-6-27 00:49:54
理论,实践贴,先mark先了
chushichongyu
发表于 2011-6-27 01:52:57
自动化的学生飘过。。。
pcwhy
发表于 2011-6-27 02:09:19
呵呵,好帖子啊、。