pid算法的c语言实现和升级 fuzzypid的c语言算法

struct _pid{
floatSetSpeed;//定义设定值
floatActualSpeed;//定义实际值
floaterr;//定义偏差值
floaterr_last;//定义上一个偏差值
floatKp,Ki,Kd;//定义比例、积分、微分系数
floatvoltage;//定义电压值(控制执行器的变量)
floatintegral;//定义积分值
}pid;


void PID_init(){
printf("PID_init begin n");
pid.SetSpeed=0.0;
pid.ActualSpeed=0.0;
pid.err=0.0;
pid.err_last=0.0;
pid.voltage=0.0;
pid.integral=0.0;
pid.Kp=0.2;
pid.Ki=0.015;
pid.Kd=0.2;
printf("PID_init end n");
}


float PID_realize(float speed){
pid.SetSpeed=speed;
pid.err=pid.SetSpeed-pid.ActualSpeed;
pid.integral+=pid.err;
pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);
pid.err_last=pid.err;
pid.ActualSpeed=pid.voltage*1.0;
returnpid.ActualSpeed;
}

int main(){
printf("System begin n");
PID_init();
intcount=0;
while(count<1000)
{
float speed=PID_realize(200.0);
printf("%fn",speed);
count++;
}
return 0;
}



if(abs(pid.err)>200)
{
index=0;
}else{
index=1;
pid.integral+=pid.err;
}
pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);




if(pid.ActualSpeed>pid.umax)//灰色底色表示抗积分饱和的实现
{

if(abs(pid.err)>200)//蓝色标注为积分分离过程
pid算法的c语言实现和升级 fuzzypid的c语言算法
{
index=0;
}else{
index=1;
if(pid.err<0)
{
pid.integral+=pid.err;
}
}
}else if(pid.ActualSpeed<pid.umax)
{
if(abs(pid.err)>200)//积分分离过程
{
index=0;
}else{
index=1;
if(pid.err>0)
{
pid.integral+=pid.err;
}
}
}else{
if(abs(pid.err)>200)//积分分离过程
{
index=0;
}else{
index=1;
pid.integral+=pid.err;
}
}





if(abs(pid.err)>200)//变积分过程
{
index=0.0;
}elseif(abs(pid.err)<180){
index=1.0;
pid.integral+=pid.err;
}else{
index=(200-abs(pid.err))/20;
pid.integral+=pid.err;
}

1.比例系数Kp的作用是加快系统的响应速度,提高系统的调节精度。Kp越大,系统的响应速度越快,系统的调节精度越高,但是容易产生差调,甚至会使系统不稳定。Kp取值过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,是系统静态、动态特性变差;

2.积分作用系数Ki的作用是消除系统的稳态误差。Ki越大,系统的静态误差消除的越快,但是Ki过大,在响应过程的初期会产生积分饱和的现象,从而引起响应过程的较大超调。若Ki过小,将使系统静态误差难以消除,影响系统的调节精度;

3.微分系数Kd的作用是改善系统的动态特性,其作用主要是在响应过程中抑制偏差向任何方向的变化,对偏差变化进行提前预报。但是kd过大,会使响应过程提前制动,从而延长调节时间,而且会降低系统的抗干扰性。


1.比例环节Kp,作用是加快系统的响应速度,提高系统的调节精度,副作用是会导致超调;

2.积分环节Ki,作用是消除稳态误差,副作用是导致积分饱和现象;

3.微分环节Kd,作用是改善系统的动态性能,副作用是延长系统的调节时间。


  

爱华网本文地址 » http://www.aihuau.com/a/25101010/33832.html

更多阅读

天龙八部2谈六博装备的升星和升级次序 六博装备怎么升级

天龙八部2谈六博装备的升星和升级次序天龙八部2谈六博装备的升星和升级次序——步骤/方法天龙八部2谈六博装备的升星和升级次序 1、想做六博装备的一定要来看看六博装备升星,是2件装备合一件,类似武魂提高合成等级,2件4星合成一件5星,2

PID调节器的仿真研究_Collus matlab pid调节器

一、引言 由于PID调节器结构简单,各参数物理意义明确,在工程上易于实现,即使在控制理论日新月异发展的今天在工业过程控制中,90%以上的控制器仍然是PID调节器。 PID调节器人们又常称为PID控制器,是比例P(Proportional)、积分I (Integral)

利用auAutoUpgrader实现自动升级 auautoupgrader

在UtiMnid组件下,利用auAutoUpgrader实现自动升级(已经测试通过)第一步:下载AutoUpgrader.Pro.v4.6.4。第二步:打开AutoUpgrader.Pro.v4.6.4下面的Delphi7目录,双击AutoUpgraderProD7.package文件安装,点install,安装。完成后,在工具面板上

PID控制的原理和特点 pid控制器原理

在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参

声明:《pid算法的c语言实现和升级 fuzzypid的c语言算法》为网友倦鸟归林分享!如侵犯到您的合法权益请联系我们删除