OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6687|回复: 14

PID控制经验,回复别人问题时不小心写的,觉得有必要以自己名义发帖

[复制链接]

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-2-28
在线时间
8 小时
发表于 2015-3-17 10:39:42 | 显示全部楼层 |阅读模式
   在回复别人问题时不小心写了这么多,觉得有必要以自己名义发帖.
   ID控制很简单,但初学者可能比较晕.
   控制转向一般用位置式PD(也有用PID的,建议不用I), 控制速度一般用增量式PI(也可以加D). 注意别忘了限制最大最小输出!!!

参数设置要根据具体对象而定. 一般原则如下:
这里先假设系统参数如下:
   输入数据(如温度值,速度,代表被控对象的指标)范围[InMin,InMax] = [0,1]
   输出数据范围[OutMin,OutMin] = [-1,1]
   控制周期dt=1ms
   系统时间常数为T=3s

---------------------------------------------------------------------------------------------------------
对于位置式PD,  OutVal = P*(InNew-InSet) + D*(InNew-InOld);
参数调节:
   1. 一般先调P, 初次设参数时, 估计单独的"P*(InMax-InMin)"能使输出达到最大. 此处建议初始值P = (OutMax-OutMin)/(InMax-InMin). 然后修改参数P已达到一个较好效果, 很可能达不到要求, 调到效果无法明显改善为止.
   2. 接着调D, 先注意InOld很可能不是上一次采集的值, 可能是10次甚至20次前的值(视情况而定), 以削弱随机误差的影响.  若采用上面的计算式, D一般设置成P的好几倍, 初始设定, 可设置成3P.
   最后, 修改轮流修改PD参数,调到效果无法明显改善为止.
   S:一般经过几次修改后, 再改参数效果就不明显, 这种情况,可能的原因有两种:   1. 参数改的幅度太小.   2. 确实到极限了,这就需要从其他方面想办法.

---------------------------------------------------------------------------------------------------------
对于增量式PI,  这种方式一般用于控制大滞后的系统(如速度/温度控制), OutVal += P*(InNew-InOld) + I*(InNew-InSet) ;
注意:
   1. P后面乘的是偏差的微分(差分), I后面乘的是偏差, 这是因为这个方程本质上是实现积分(累加)功能,  偏差的微分(差分)经过积分(累加)后就是偏差(对应参数P), 而偏差经过积分(累加)后就对应I.
   2. 后续代码记得限制OutVal∈[OutMin,OutMax]
   3. 此处的InOld一般是上一次采集的数据,不必是多次前的, 用多次之前的数据反而会降低系统的实时性, 因为理论上积分可以削弱随机误差的影响.  然而控制系统实际情况难以完全用理论概括, 具体实现视情况而定!!!
参数调节:
   1. 先调I参数,  关于初始值的设置, 一般I*(InMax-InMin)能使OutVal在T内达到最大值(T为被控对象的时间常数). 则初始值可设置为I=(OutMax-OutMin)/(InMax-InMin)*dt/T=[1-(-1)]/(1-0) * 0.001/3=0.00066666666666667!
   2. 接着P参数, 类似位置式P, 初始值P=(OutMax-OutMin)/(InMax-InMin).
   最后就是以PI参数为基础, 进行调节, 而调节的各种技巧, 实在是太多, 总之一句话 "好看的就是好的".  另外调参数还得看具体指标.
   注意:对于飞思卡尔竞赛速度控制宁愿反应稍慢,也别冒险产生震荡, 震荡(即便看起来不明显)会减小车轮的摩擦力, 进而减小弯道速度.

------------------------------------------------------------------------------------------------------------
    忘了说符号问题, 对于一般的控制系统(能用PID控制的系统一般可用这个原则),以增量式PI控制举例说下:
如果OutVal(如PWM)增大会使InNew(如电机转速)增大,则I<0,因为这样一来才能形成负反馈. 所谓负反馈,简而言之就是,测量值得增大,通过控制后,能达到减小的效果.
    InNew(测速)↑ -> 累加+I*(InNew-InSet)↓ -> OutVal(输出PWM)↓ -> InNew(测速)↓

------------------------------------------------------------------------------------------------------------
    X, 不小心写了这么多, 以上仅代表个人经验&观点, 如有雷同纯属巧合!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-3-17 20:57:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2015-3-17 20:57:43 | 显示全部楼层
谢谢分享,准备空闲时间搞下PID,收藏了
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2015-5-4
在线时间
2 小时
发表于 2015-5-6 20:58:33 | 显示全部楼层
十分感谢,最近最近在学习PID
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-4-26
在线时间
0 小时
发表于 2015-5-8 21:48:14 | 显示全部楼层
P = (OutMax-OutMin)/(InMax-InMin).这个我有疑问 我速度最大是1000,最小是10,输入最大最小也差不多 ,按照这样算的话岂不是P给的很大
求解释
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-2-28
在线时间
8 小时
 楼主| 发表于 2015-5-12 20:19:55 | 显示全部楼层
回复【5楼】hy战斗吧:
---------------------------------
不知道你再说什么.  输出是占空比  怎么会和速度一样
如果数字恰好差不多, 应该是接近1, 不可能很大
P = (OutMax-OutMin)/(InMax-InMin), 分子分母如果差不多大   应该接近1
回复 支持 反对

使用道具 举报

1

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-4-26
在线时间
0 小时
发表于 2015-5-16 09:37:27 | 显示全部楼层
回复【6楼】xBrain:
---------------------------------
我调的最终的P取得是0.00364
回复 支持 反对

使用道具 举报

2

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-2-28
在线时间
8 小时
 楼主| 发表于 2015-5-18 13:35:20 | 显示全部楼层
回复【7楼】hy战斗吧:
---------------------------------
这个你确定是P而不是其他参数,P还和具体偏差的计算方式有关
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-1-5
在线时间
1 小时
发表于 2016-1-5 18:41:32 | 显示全部楼层
先mark。最近准备学习一下
回复 支持 反对

使用道具 举报

3

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
373
金钱
373
注册时间
2015-3-7
在线时间
43 小时
发表于 2016-1-5 18:54:13 | 显示全部楼层
Mark一下~谢谢分享。
为人莫作千年计,三十河东四十西,莫欺少年穷。
回复 支持 反对

使用道具 举报

62

主题

902

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3555
金钱
3555
注册时间
2016-1-8
在线时间
543 小时
发表于 2016-4-24 10:02:05 | 显示全部楼层
mark以下啊
回复 支持 反对

使用道具 举报

8

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2016-3-11
在线时间
47 小时
发表于 2016-4-24 15:27:28 来自手机 | 显示全部楼层
解决了我好多不懂
回复 支持 反对

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-4-26
在线时间
12 小时
发表于 2016-5-17 19:27:12 | 显示全部楼层
好东西,正在学习!
回复 支持 反对

使用道具 举报

32

主题

230

帖子

0

精华

高级会员

Rank: 4

积分
508
金钱
508
注册时间
2016-4-14
在线时间
113 小时
发表于 2016-5-19 17:50:01 | 显示全部楼层
么么么么么么么么么么
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2016-6-4
在线时间
2 小时
发表于 2016-8-8 15:17:23 | 显示全部楼层
摸摸大
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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