OpenEdv-开源电子网

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

谁会PID啊?教教我呗

[复制链接]

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-1-8
在线时间
0 小时
发表于 2013-1-11 09:42:22 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

314

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1116
金钱
1116
注册时间
2011-10-19
在线时间
256 小时
发表于 2013-1-11 10:02:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-1-11 12:45:23 | 显示全部楼层
回复【楼主位】红尘客栈:
---------------------------------
比例积分微分的那个?
回复 支持 反对

使用道具 举报

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-1-8
在线时间
0 小时
 楼主| 发表于 2013-1-11 13:10:51 | 显示全部楼层
回复【3楼】lsj9383:
---------------------------------
是呀是呀
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-1-11 13:36:20 | 显示全部楼层
回复【4楼】红尘客栈:
---------------------------------
就是一个公式而已
比如说dm=p*x[k] + i*x[k-1] + d*x[k-2]

x[k]目标值和当前值的差
x[k-1]目标值和上次值的差
x[k-2]目标值和上上次值的差

dm是需要改变的量。

我打个一个简单的比方嘛,只以增量式PID的比例运算(P)为例子:
首先需要定义一个比例系数

#define p 定值

现在有个方程是y=f(m).但是你并不知道f(m)到底是一个什么样的式子。
当m=0时,y=某个值y1(把y1理解成为当前值吧)
但是你需要y=set_y怎么办呢(set_y是目标值)

你就需要改变m,但是你不知道改变多少,不知道的话那就一点一点的改来试啊!

set_y - y1 就是当前值和目标值的差,

设差为x,

x = set_y-y1,

那么根据这个x和定义的比例系数p,来决定改变m的多少,

dm = p*x.这样就确定了改变量。

m += dm 得到新的m

y = f(m)  把新的m带入函数

又得到新的y1,

然后继续和目标值做比较,知道y1趋近与set_y目标值时,可以认为已经达到标准了。

比例系数太大会产生震荡,意思就是在目标值上下来回震荡,并且和目标值差的很远,这是由于比例系数太大,造成m的改变过大,y1的改变一会儿大,一会儿小,而无法趋近于目标值。

比例系数太小,会造成趋近速度很慢,很久都不能趋近。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

呼呼,算清晰了吧,算是复习了下pid。虽然我不是做控制的、、
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-1-11 13:38:00 | 显示全部楼层
p要取合适,一般都是慢慢调。

就像做小车一样,PWM觉得了小车的速度,但是你不知道PWM和小车速度之间的函数关系(PWM和小车速度之间肯定是非线性的,单调上升的曲线)。所以要用PID。
回复 支持 反对

使用道具 举报

21

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
355
金钱
355
注册时间
2012-3-11
在线时间
49 小时
发表于 2013-1-11 21:22:22 | 显示全部楼层
同楼上,一般增量型够用的,给一份入门资料

pid算法.pdf

11.75 KB, 下载次数: 769

这辈子只会两件事:这也不会,那也不会!
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2012-11-24
在线时间
0 小时
发表于 2013-1-13 09:54:51 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-1-8
在线时间
0 小时
 楼主| 发表于 2013-1-14 14:10:41 | 显示全部楼层
回复【5楼】lsj9383:
---------------------------------
谢谢,学习中。。。
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-1-16 11:45:03 | 显示全部楼层
回复【9楼】红尘客栈:
---------------------------------
你可以写程序模拟一下PID的,用vc6.0++都可以模拟
回复 支持 反对

使用道具 举报

28

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2013-4-14
在线时间
24 小时
发表于 2013-5-3 17:20:54 | 显示全部楼层
学习了!学了这么久的PID,第一次这么清晰!感谢楼上的大哥!我也是成都人!哈哈
回复 支持 反对

使用道具 举报

28

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2013-4-14
在线时间
24 小时
发表于 2013-5-3 17:21:23 | 显示全部楼层
回复【10楼】lsj9383:
---------------------------------
感谢感谢!又学到了!
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-5-3 21:45:30 | 显示全部楼层
回复【12楼】布沙尼神甫:
---------------------------------
O(∩_∩)O~
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-5-4 08:07:56 | 显示全部楼层
回复【5楼】lsj9383:
---------------------------------
呵呵,不错哦!有专门调试PID的职业,可想而知这系数多难调了。dm=p*x[k] + i*x[k-1] + i*x[k-2],写错了,最后的i应该是d微分系数才对。如果能写出什么时候需要带积分环节,什么时候带微分环节就更棒了!
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-5-4 11:03:23 | 显示全部楼层
回复【14楼】tian123chi:
---------------------------------
嗯...谢谢,打错了...
回复 支持 反对

使用道具 举报

28

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2013-4-14
在线时间
24 小时
发表于 2013-5-4 17:28:38 | 显示全部楼层
回复【13楼】lsj9383:
---------------------------------
大哥,什么时候也发发您对I和D的解释,小弟们好重新理解理解!谢谢
回复 支持 反对

使用道具 举报

27

主题

774

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1473
金钱
1473
注册时间
2013-4-12
在线时间
77 小时
发表于 2013-5-18 21:30:40 | 显示全部楼层
回复【5楼】lsj9383:
---------------------------------
简单是多么的快乐,而快乐就因你而简单!微芯动力LTKKS
回复 支持 反对

使用道具 举报

31

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2012-9-3
在线时间
4 小时
发表于 2013-5-19 23:46:45 | 显示全部楼层
回复【6楼】lsj9383:
---------------------------------
参加过飞思卡尔的?握个手~
打造完美
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2013-5-21
在线时间
0 小时
发表于 2013-5-31 08:12:32 | 显示全部楼层
学习学习。。
回复 支持 反对

使用道具 举报

4

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2013-5-30
在线时间
0 小时
发表于 2013-6-2 03:26:43 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2013-5-18
在线时间
1 小时
发表于 2013-6-6 10:50:05 | 显示全部楼层
顶!!!!!!!!!!!
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-8 09:39:39 | 显示全部楼层
回复【5楼】lsj9383:
---------------------------------
在小车上怎么调节PID的值,不会是一次一次修改程序中P的值吧?还是有什么简单的办法;
还有一个问题是:在凑试法中,置调节器积分时间Ti =∞,微分时间Td =0,在比例系数 按经验设置的初值条件下,将系统
投入运行,由小到大整定比例系数Kp 。求得满意的 1/4衰减度过渡过程曲线。
这个1/4衰减度过渡过程曲线怎么看出来的,是用什么软件吗?求解疑问啊
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-8-8 13:16:38 | 显示全部楼层
回复【22楼】捷:
---------------------------------
基本上没有其他更好的办法了,也可以建立模型,用模糊自整定和遗传自整定算法来做,但是要找关系,比直接凑更麻烦。

过渡曲线,是通过采集回数据信息,然后用matlab描图观测,至少我一般是这样弄得,呵呵~~
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-8-8 13:23:15 | 显示全部楼层
回复【22楼】捷:
---------------------------------
注意哦,上面我回复的时候,是由于当时还没有弄清楚的pid含义,只是明白个大概。
上面那个
u(k) += p*err(k) + I*err(k-1) + D*err(k-2)
只是一个 非标准 ID公式,里面P、I、D系数,并不能直观的反映出比例、积分、微分的关系。

所以,虽然这个公式可以作为增量式PID的公式使用,但是系数不能根据输出的图形曲线,进行相应的调整,也就是说不好调参数。

最终还是要用标志的PID公式,才行。
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-8 19:00:35 | 显示全部楼层
我现在有个疑惑,
#define _DATA 100 
#define I_DATA  0.6 
#define D_DATA  1 

sptr->roportion = _DATA; //比例常数  roportional Const
sptr->Integral = I_DATA; //积分常数 Integral Const   
sptr->Derivative = D_DATA; //微分常数  Derivative Const 

iIncpid = sptr->roportion * iError //E[k]项   
             - sptr->Integral * sptr->LastError //E[k-1]项   
            + sptr->Derivative * sptr->revError; //E[k-2]项   

? k u=(Aek)+(Bek-1)+(Cek-2)
其中 A=Kp(1+T/Ti+Td/T)
       B=Kp(1+2Td/T)
       C=Kp(Td/T)


所谓的调P   I    D就是调A    B     C吗?还是调P就是调Ks,调I就是调Ki,调D就是调Kd???
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-8-8 19:03:56 | 显示全部楼层
不是ABC
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-9 20:32:14 | 显示全部楼层
回复【26楼】lsj9383:
---------------------------------
iIncpid = sptr->roportion * iError //E[k]项    
             - sptr->Integral * sptr->LastError //E[k-1]项    
            + sptr->Derivative * sptr->revError; //E[k-2]项    

? k u=(A E[k]  )+(B  E[k-1])+(C  E[k-2]) 


以上两个不就可以知道A=sptr->roportion,B=sptr->Integral ,C=sptr->Derivative,难道 不是调Proportion,Integral,Derivative这三个参数?
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-8-9 21:44:15 | 显示全部楼层
回复【27楼】捷:
---------------------------------
A、B、C不能直观的反应P I D这三个参数啊。
比如想抗干扰。

A*err(k) + B*err(k-1) + C*err(k-2)
怎么调ABC,这样就不得而知了。

所以要用标准的PID公式。
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2246
金钱
2246
注册时间
2010-12-16
在线时间
202 小时
发表于 2013-8-9 22:41:17 | 显示全部楼层
为什么不用标准PID呢,总体运算量差不多,调整更直观,虽然也不是很容易一步到位.

PID只是一种实现方式,具体的调整策略,还是透彻理解自动控制原理才好搞,包括各个参数和运算在环路的"物理"意义,不理解的话,也就只能在"试凑"的路上踏步而已.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

76

主题

355

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2012-9-19
在线时间
5 小时
发表于 2013-8-10 10:09:25 | 显示全部楼层
摸啊克@mark
具有资深STM32点灯技术,
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-10 16:08:40 | 显示全部楼层
回复【29楼】shihantu:
---------------------------------
谢谢赐教
回复 支持 反对

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2013-4-24
在线时间
0 小时
发表于 2013-8-10 16:10:08 | 显示全部楼层
回复【28楼】lsj9383:
---------------------------------
嗯,我再好好捉摸捉摸
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2013-8-8
在线时间
0 小时
发表于 2013-9-5 16:05:59 | 显示全部楼层
回复【26楼】lsj9383:
---------------------------------
请问是用标准的公式来调,三个参数吗
在做旋转倒立板,好烦
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2234
金钱
2234
注册时间
2012-4-30
在线时间
7 小时
发表于 2013-9-7 21:10:42 | 显示全部楼层
回复【33楼】hzchenhangqi:
---------------------------------
嗯,标准公式。
呵呵,我们也做的倒立摆、
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-1-3
在线时间
11 小时
发表于 2014-1-3 14:05:35 | 显示全部楼层
受教了!
回复 支持 反对

使用道具 举报

17

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
金钱
298
注册时间
2016-7-24
在线时间
107 小时
发表于 2016-8-25 15:33:29 | 显示全部楼层
讲的好详细,突然懂了PID
回复 支持 反对

使用道具 举报

16

主题

197

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2012-4-20
在线时间
91 小时
发表于 2016-8-25 15:53:45 | 显示全部楼层
我是控制小车巡线的,很简单。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-30 13:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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