智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8348|回复: 27
打印 上一主题 下一主题

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

    [复制链接]

3

主题

170

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13366
威望
10461
贡献
2555
兑换币
649
注册时间
2012-8-25
在线时间
175 小时
跳转到指定楼层
#
发表于 2015-3-17 10:59:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 淡定戈 于 2015-3-17 11:12 编辑

   在回复别人问题时不小心写了这么多,觉得有必要以自己名义发帖.
   PID控制很简单,但初学者可能比较晕.
   控制转向一般用位置式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参数,调到效果无法明显改善为止.
   PS:一般经过几次修改后, 再改参数效果就不明显, 这种情况,可能的原因有两种:   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参数为基础, 进行调节, 而调节的各种技巧, 实在是太多, 总之一句话 "好看的就是好的".  另外调参数还得看具体指标.
   注意:对于飞思卡尔竞赛速度控制宁愿反应稍慢,也别冒险产生震荡, 震荡(即便看起来不明显)会减小车轮的摩擦力, 进而减小弯道速度.



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


补充内容 (2015-3-18 15:23):
有朋友说我PID参数符号反了.
我确实忘了说符号问题, 对于一般的控制系统(能用PID控制的系统一般可用这个原则),举例说下:
如果OutVal(如PWM)增大会使InNew(如电机转速)增大,则P<0,因为这样一来才能形成负反馈.

补充内容 (2015-3-18 15:26):
InNew(测速)增大->P*(InNew-InSet)减小->OutVal(如PWM)减小->InNew(测速)减小
测量值得增大,通过控制后,有减小的效果.
回复

使用道具 举报

24

主题

1090

帖子

0

精华

常驻嘉宾

不会做车,只会瞎BB的毕业考研狗

Rank: 8Rank: 8

积分
5429

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
3088
贡献
663
兑换币
2343
注册时间
2012-11-4
在线时间
839 小时
毕业学校
河北联合大学
推荐
发表于 2015-3-18 11:22:51 | 只看该作者
OutVal = P*(InNew-InSet) + D*(InNew-InOld);输出反了吧?OutVal = P*(InSet-InNew) + D*(E-E‘);
回复 支持 1 反对 0

使用道具 举报

3

主题

170

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13366
威望
10461
贡献
2555
兑换币
649
注册时间
2012-8-25
在线时间
175 小时
26#
 楼主| 发表于 2015-5-8 16:55:32 | 只看该作者
shine稻草人 发表于 2015-3-29 14:19
你说的d项为3p,这得根据周期定,而且每种车不一样

只是初值, 根据经验设定, 后期还要调的, 以不震荡为原则
回复 支持 反对

使用道具 举报

5

主题

77

帖子

0

精华

高级会员

Rank: 4

积分
526
威望
294
贡献
160
兑换币
191
注册时间
2013-10-7
在线时间
36 小时
25#
发表于 2015-3-29 14:19:21 | 只看该作者
你说的d项为3p,这得根据周期定,而且每种车不一样
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

高级会员

Rank: 4

积分
529
QQ
威望
250
贡献
137
兑换币
156
注册时间
2014-12-5
在线时间
71 小时
24#
发表于 2015-3-29 13:23:14 | 只看该作者
:):):):)
回复 支持 反对

使用道具 举报

3

主题

170

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13366
威望
10461
贡献
2555
兑换币
649
注册时间
2012-8-25
在线时间
175 小时
23#
 楼主| 发表于 2015-3-22 20:04:48 | 只看该作者
Stan克 发表于 2015-3-20 12:33
初始设定, 可设置成3P

你懂的 , 我本来想写4P的
回复 支持 反对

使用道具 举报

3

主题

170

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13366
威望
10461
贡献
2555
兑换币
649
注册时间
2012-8-25
在线时间
175 小时
22#
 楼主| 发表于 2015-3-22 20:04:00 | 只看该作者
杨洋02 发表于 2015-3-21 09:21
转向PD不是应该P是D的几倍吗?

那要看偏差和偏差的微分是如何计算的, 采用我列的方式计算的话, D是P的几倍一般,转向控制是这样的.
回复 支持 反对

使用道具 举报

1

主题

92

帖子

0

精华

高级会员

Rank: 4

积分
756
QQ
威望
371
贡献
271
兑换币
246
注册时间
2014-10-12
在线时间
57 小时
21#
发表于 2015-3-21 09:21:19 | 只看该作者
转向PD不是应该P是D的几倍吗?
回复 支持 反对

使用道具 举报

1

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
243
贡献
127
兑换币
147
注册时间
2014-7-21
在线时间
46 小时
毕业学校
遂宁中学校
20#
发表于 2015-3-20 23:39:08 | 只看该作者
:):)
回复 支持 反对

使用道具 举报

22

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1068
威望
519
贡献
299
兑换币
308
注册时间
2014-10-15
在线时间
125 小时
毕业学校
zucc
19#
发表于 2015-3-20 12:33:59 | 只看该作者
初始设定, 可设置成3P
回复 支持 反对

使用道具 举报

17

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2064
QQ
威望
1008
贡献
622
兑换币
647
注册时间
2014-12-8
在线时间
217 小时
毕业学校
安徽师范大学
18#
发表于 2015-3-19 22:27:53 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

600

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4212

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
1909
贡献
1277
兑换币
1181
注册时间
2013-12-22
在线时间
513 小时
毕业学校
光谷一中
17#
发表于 2015-3-19 13:56:41 | 只看该作者
收藏了
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-1 03:20 , Processed in 0.077025 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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