PID控制算法的C语言实现八 变积分的PID控制算法C语言实现

 

   变积分PID可以看成是积分分离的PID算法的更一般的形式。在普通的PID控制算法中,由于积分系数ki是常数,所以在整个控制过程中,积分增量是不变的。但是,系统对于积分项的要求是,系统偏差大时,积分作用应该减弱甚至是全无,而在偏差小时,则应该加强。积分系数取大了会产生超调,甚至积分饱和,取小了又不能短时间内消除静差。因此,根据系统的偏差大小改变积分速度是有必要的。

   变积分PID的基本思想是设法改变积分项的累加速度,使其与偏差大小相对应:偏差越大,积分越慢; 偏差越小,积分越快。

   这里给积分系数前加上一个比例值index:

   当abs(err)<180时,index=1;

   当180<abs(err)<200时,index=(200-abs(err))/20;

   当abs(err)>200时,index=0;

   最终的比例环节的比例系数值为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
199.999954
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
199.999954
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
199.999954
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
199.999954
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
199.999954
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
199.999954
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
199.999954
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
 

 

原文地址:https://www.cnblogs.com/ITGUANCHAZHE/p/14319748.html