PID控制算法的C语言实现八 变积分的PID控制算法C语言实现
变积分PID可以看成是积分分离的PID算法的更一般的形式。在普通的PID控制算法中,由于积分系数ki是常数,所以在整个控制过程中,积分增量是不变的。但是,系统对于积分项的要求是,系统偏差大时,积分作用应该减弱甚至是全无,而在偏差小时,则应该加强。积分系数取大了会产生超调,甚至积分饱和,取小了又不能短时间内消除静差。因此,根据系统的偏差大小改变积分速度是有必要的。
变积分PID的基本思想是设法改变积分项的累加速度,使其与偏差大小相对应:偏差越大,积分越慢; 偏差越小,积分越快。 这里给积分系数前加上一个比例值index: 当abs(err)<180时,index=1;
当180
最终的比例环节的比例系数值为ki*index; 具体PID实现代码如下:
pid.Kp=0.4;
pid.Ki=0.2; //增加了积分系数 pid.Kd=0.2;
float PID_realize(float speed){ float index;
pid.SetSpeed=speed;
pid.err=pid.SetSpeed-pid.ActualSpeed;
if(abs(pid.err)>200) //变积分过程 {
index=0.0;
}else if(abs(pid.err)<180){ index=1.0;
pid.integral+=pid.err; }else{
index=(200-abs(pid.err))/20; pid.integral+=pid.err; }
pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);
pid.err_last=pid.err;
pid.ActualSpeed=pid.voltage*1.0; return pid.ActualSpeed; }
最终结果可以看出,系统的稳定速度非常快(测试程序参见本系列教程3):
120.000000 64.000000 148.800003 96.959999 165.632004 120.934395 177.300476 139.081223 185.469742 152.898834 191.139313 163.452988 195.022278 171.538986 197.635025 177.753738 199.350967 182.546188 200.439255 186.254608 201.093094 189.134460 201.450439 191.379044 201.609268 193.135010 201.638611 194.513870 201.586670 195.600708 201.486694 196.460571
201.361328 197.143387 201.225632 197.687561 201.089340 198.122787 200.958511 198.472076 200.836655 198.753296 200.725555 198.980423 200.625870 199.164398 200.537506 199.313843 200.459900 199.435547 200.392258 199.534912 200.333679 199.616211 200.283203 199.682877 200.239899 199.737640 200.202866 199.782700 200.171295 199.819855 200.144470 199.850525
200.121704 199.875870 200.102432 199.896851 200.086136 199.914230 200.072372 199.928635 200.060776 199.940582 200.051010 199.950500 200.042801 199.958755 200.035904 199.965622 200.030090 199.971344 200.025223 199.976105 200.021118 199.980057 200.017700 199.983353 200.014832 199.986099 200.012421 199.988403 200.010391 199.990326 200.008698 199.991928
200.007263 199.993256 200.006088 199.994370 200.005081 199.995300 200.004257 199.996063 200.003555 199.996719 200.002975 199.997253 200.002487 199.997711 200.002075 199.998077 200.001740 199.998398 200.001465 199.998657 200.001221 199.998886 200.001007 199.999084 200.000839 199.999237 200.000702 199.999359 200.000580 199.999451 200.000488 199.999542
200.000397 199.999619 200.000336 199.999680 200.000275 199.999725 200.000229 199.999756 200.000198 199.999802 200.000168 199.999832 200.000137 199.999863 200.000107 199.999893 200.000092 199.999908 200.000076 199.999924 200.000061 199.999939 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046
200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954
199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046 199.999954 200.000046