[国产单片机] 闲谈PID控制

[复制链接]
10037|46
zl_123 发表于 2012-10-21 22:02 | 显示全部楼层
 楼主| McuPlayer 发表于 2012-11-20 17:31 | 显示全部楼层
整定涉及到的东西太多了,以后有空再写吧
lantao210 发表于 2012-12-23 11:35 | 显示全部楼层
naga568 发表于 2012-12-24 12:54 | 显示全部楼层
readdai 发表于 2013-1-7 17:20 | 显示全部楼层
新手呀新手 发表于 2013-1-9 16:09 | 显示全部楼层
顶,受教
lhandstt 发表于 2013-1-9 17:12 | 显示全部楼层
我来学习一下,thanks
a601121246 发表于 2013-1-10 16:19 | 显示全部楼层
碧云天书 发表于 2013-2-12 01:30 | 显示全部楼层
本帖最后由 碧云天书 于 2013-2-12 17:00 编辑
McuPlayer 发表于 2012-9-10 09:17
PID最简单的变种----分段式PID
   

正在做PID温控程序,参考了楼主的贴。但是,发现PID程序似乎有点问题。
看楼主的程序,应该是独立积分式算法,该算法的核心算式如下
y(k) = Kp * e(k) + Ki * i(k) + Kd*(e(k) –e(k-1))其中的 i(k) = i(k-1) + e(k)
详细推导过程可以参考https://bbs.21ic.com/icview-252576-1-1.html

5楼的程序段如下,前三行刚好就是独立积分式的算式。但是,第四行应该是多余的。
        pid = kp * e0
        pid = pid + ki * (e0 + e1 + e2 + e3)
        pid = pid + kd * (e0 - e1)
        out = out + pid       ------ 是否是 y(k) = y(k-1) + pid 的意思?


如果我理解没有错误,加上第四行以后,算式就变成了 y(k) = y(k-1) + Kp*e(k) + Ki*i(k) + Kd*(e(k)-e(k-1))
这与增量式的PID算法形似,但算式中Kp、Ki和Kd的意义就完全不同了。
增量式PID算式为 y(k) = y(k-1) + Kp * (e(k) – e(k-1) +Ki*e(k) + Kd* (e(k) -2*e(k-1) +e(k-2))
可见,楼主程序中的kp实际上是PID算法中的Ki,kd实际上是Kp。
因此,在5楼图例中,添加kp(实际上是Ki)后,温度控制能够达到足够高的精度,这刚好与PID原理中提到的积分环节能够消除误差是一致的。

zj168 发表于 2013-2-17 11:34 | 显示全部楼层
学习中。。。谢谢了!!!
826085540 发表于 2013-4-25 12:46 | 显示全部楼层
下了试试看
frlop 发表于 2013-4-25 14:15 | 显示全部楼层
经典。。
Yahom_ 发表于 2013-4-28 10:58 | 显示全部楼层
andyding 发表于 2013-4-28 12:42 | 显示全部楼层
那位大侠传授一下自整定PID呗!
一般首席 发表于 2013-4-28 16:16 | 显示全部楼层
不错 谢谢
君莫道前路 发表于 2013-5-4 11:32 | 显示全部楼层
感谢楼主分享
泥巴 发表于 2013-6-13 00:20 | 显示全部楼层
liuzhongkai123 发表于 2013-6-13 10:42 | 显示全部楼层
真心不错 学学PID
ljhcx0310 发表于 2013-7-14 08:25 | 显示全部楼层
受教了,最近正纠结PID呢。及时雨!!!!:handshake
tuzihog 发表于 2013-7-14 09:41 | 显示全部楼层
好帖留名
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部