智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 12440|回复: 57
打印 上一主题 下一主题

PID经验代码

  [复制链接]

32

主题

289

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5311

论坛元老奖章

威望
603
贡献
4572
兑换币
10
注册时间
2011-3-10
在线时间
68 小时
跳转到指定楼层
1#
发表于 2011-3-19 13:55:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
完整 PID 代码:
//声明变量
//定义变量
float Kp; //PID 调节的比例常数
float Ti; //PID 调节的积分常数
float T; //采样周期
float Td; //PID 调节的微分时间常数
float a0;
float a1;
float a2;
float ek; //偏差e[k]
float ek1; //偏差e[k-1]
float ek2; //偏差e[k-2]
float uk; //u[k]
int uk1; //对uk 四舍五入求整
int adjust; //最终输出的调整量
//变量初始化,根据实际情况初始化
Kp=;
Ti=;
T=;
Td=;
a0=Kp*(1+T/Ti+Td/T);
a1=-Kp*(1+2*Td/T);
a2=Kp*Td/T;
// Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数
ek=0;
ek1=0;
ek2=0;
uk=0;
uk1=0;
adjust=0;
int pid(float ek)
{
if(gabs(ek)<ee) //ee 为误差的阀值,小于这个数值的时候,不做PID 调整,避免误差较小
时频繁调节引起震荡。ee 的值可自己设
{
adjust=0;
}
else
{
uk=a0*ek+a1*ek1+a2*ek2;
ek2=ek1;
ek1=ek;
uk1=(int)uk;
if(uk>0)
{
if(uk-uk1>=0.5)
{
uk1=uk1+1;
}
}
if(uk<0)
{
if(uk1-uk>=0.5)
{
uk1=uk1-1;
}
}
adjust=uk1;
}
return adjust;
}
float gabs(float ek)
{
if(ek<0)
{
ek=0-ek;
}
return ek;
}

1

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
威望
240
贡献
48
兑换币
0
注册时间
2011-3-13
在线时间
5 小时
2#
发表于 2011-3-19 14:56:39 | 只看该作者
学习了,谢谢
回复 支持 反对

使用道具 举报

19

主题

104

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1163
QQ
威望
766
贡献
197
兑换币
23
注册时间
2010-10-16
在线时间
100 小时
3#
发表于 2011-3-19 16:19:16 | 只看该作者
楼主能把注释写的再详细点吗?虽然已经很详细,但我还是初学者,对PID的各个部分还不了解(看的资料都很抽象),不知所以然。想通过楼主的例题中了解!!拜托了!!
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
威望
238
贡献
32
兑换币
0
注册时间
2010-10-16
在线时间
34 小时
4#
发表于 2011-3-20 13:39:48 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
338
威望
238
贡献
32
兑换币
0
注册时间
2010-10-16
在线时间
34 小时
5#
发表于 2011-3-20 13:39:56 | 只看该作者
回复 支持 反对

使用道具 举报

1

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
298
威望
211
贡献
69
兑换币
0
注册时间
2010-10-30
在线时间
9 小时
6#
发表于 2011-4-2 10:47:17 | 只看该作者
论坛里好像有这个资料的压缩包啊,是你上传的吗
回复 支持 反对

使用道具 举报

1

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
329
威望
267
贡献
52
兑换币
0
注册时间
2010-12-2
在线时间
5 小时
7#
发表于 2011-4-2 15:35:38 | 只看该作者
谢了
回复 支持 反对

使用道具 举报

1

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
591
QQ
威望
396
贡献
79
兑换币
6
注册时间
2011-2-28
在线时间
58 小时
8#
发表于 2011-4-2 23:12:31 | 只看该作者
同求
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
111
威望
173
贡献
28
兑换币
0
注册时间
2011-4-12
在线时间
0 小时
9#
发表于 2011-4-12 23:38:12 | 只看该作者
回复 支持 反对

使用道具 举报

4

主题

226

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
QQ
威望
472
贡献
584
兑换币
0
注册时间
2010-8-30
在线时间
91 小时
10#
发表于 2011-4-13 00:08:43 | 只看该作者
学习
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 20:46 , Processed in 0.078224 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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