智能车制作

标题: PID经验代码 [打印本页]

作者: 781697669    时间: 2011-3-19 13:55
标题: PID经验代码
完整 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;
}
作者: lai688long    时间: 2011-3-19 14:56
学习了,谢谢
作者: 庄严    时间: 2011-3-19 16:19
楼主能把注释写的再详细点吗?虽然已经很详细,但我还是初学者,对PID的各个部分还不了解(看的资料都很抽象),不知所以然。想通过楼主的例题中了解!!拜托了!!
作者: hfshanhaifeng    时间: 2011-3-20 13:39

作者: hfshanhaifeng    时间: 2011-3-20 13:39

作者: wangshiyang    时间: 2011-4-2 10:47
论坛里好像有这个资料的压缩包啊,是你上传的吗
作者: zhouzhuolin    时间: 2011-4-2 15:35
谢了
作者: jf1989117    时间: 2011-4-2 23:12
同求
作者: 血汗奔驰    时间: 2011-4-12 23:38

作者: 437334816    时间: 2011-4-13 00:08
学习
作者: chenyongjie830    时间: 2011-4-16 23:04
谢谢
作者: cylinzy    时间: 2011-4-16 23:44

作者: zh1992    时间: 2011-4-18 16:58
请问楼主 PID里的e是怎么测的啊、
作者: 4819142    时间: 2011-4-18 23:03
学习了  谢谢楼主
作者: zqcwxd    时间: 2011-4-19 20:58
学习了,谢谢
作者: prince_rong    时间: 2011-4-20 09:32
学习
作者: ansnak    时间: 2011-4-20 16:37
学习了  谢谢楼主
作者: az22985342    时间: 2011-4-23 00:42
楼主漂亮!
作者: az22985342    时间: 2011-4-23 00:42
楼主漂亮!
作者: az22985342    时间: 2011-4-23 00:42
楼主漂亮!
作者: az22985342    时间: 2011-4-23 00:42
楼主漂亮!
作者: 福光普照诶    时间: 2011-4-23 08:55

作者: 萝卜    时间: 2011-4-23 18:45
哎 还是看不懂
作者: E08610225    时间: 2011-4-29 20:00
楼主漂亮!
作者: sunrong    时间: 2011-5-10 21:10
good
作者: yijingjing    时间: 2011-5-10 21:12
看看
作者: iloveautomation    时间: 2011-5-16 18:57

作者: iloveautomation    时间: 2011-5-16 18:58

作者: haicong1000    时间: 2011-5-16 20:32
学习一下
作者: wjj273155814    时间: 2011-5-16 23:35
关注&……
作者: hello1043    时间: 2011-5-18 19:59
谢了
作者: Lermonto    时间: 2011-5-28 00:29
这个?是完整代码吗?表示很怀疑,呵呵
作者: 宝爷    时间: 2011-5-28 01:01
雪中送炭,
作者: kai123    时间: 2011-5-30 16:38
ZHEN BU CUO
作者: xxl470    时间: 2011-6-1 20:34
好好研究下吧
作者: xpj007yeahnet    时间: 2011-6-1 22:34
恩,感觉那个阀值很重要,可以很有效地防止震荡,我之前用阀值后,直接P调节都可以
作者: az8898    时间: 2011-6-12 15:49

作者: baiyawen    时间: 2011-6-28 20:25
大爱楼主啊
作者: luopeiyuan    时间: 2011-9-22 13:20
谢过
作者: 7751    时间: 2011-9-23 01:43
学习下
作者: 7751    时间: 2011-9-23 01:44
学习下
作者: 竹子    时间: 2011-10-19 20:57
强烈感谢楼主。。。
作者: xnhzl    时间: 2011-11-1 18:07

作者: QianDE1991    时间: 2011-11-4 20:44
学习~~
作者: 陈泽昂    时间: 2011-11-5 09:38
强~~~
作者: 坚持每一次123    时间: 2011-11-9 20:29

作者: 飘51    时间: 2011-11-19 00:03
学习
作者: 561609030    时间: 2011-12-13 21:00

作者: 人生入戏    时间: 2011-12-18 17:44
谢啦
作者: 人生入戏    时间: 2011-12-18 17:45
我会好好学习的
作者: 人生入戏    时间: 2011-12-18 17:45
楼主辛苦了
作者: 艾玛    时间: 2012-2-13 15:40
可是要想确定
Kp=;
Ti=;
T=;
Td=;
作者: 艾玛    时间: 2012-2-13 15:41

Kp=;
Ti=;
T=;
Td=;

可是要想确定以上几个参数又谈何容易呢?LZ能再具体说说吗?这四个值要是一个个测还真是头大的啊
作者: RAH——66    时间: 2012-3-19 22:09

作者: 一毛钱~~~~~~    时间: 2012-5-4 18:25
我是为看lz的头像才过来的。。。。
作者: wushshsha    时间: 2012-5-4 21:11
学习

作者: songhuilee    时间: 2012-8-17 20:58

作者: 644822830    时间: 2013-7-19 17:01





欢迎光临 智能车制作 (http://www.znczz.com/) Powered by Discuz! X3.2