2023年pid十大算法c语言实现优质

格式:DOC 上传日期:2023-05-03 11:42:47
2023年pid十大算法c语言实现优质
时间:2023-05-03 11:42:47     小编:zdfb

范文为教学中作为模范的文章,也常常用来指写作的模板。常常用于文秘写作的参考,也可以作为演讲材料编写前的参考。大家想知道怎么样才能写一篇比较优质的范文吗?下面是小编帮大家整理的优质范文,仅供参考,大家一起来看看吧。

pid十大算法c语言实现篇一

c语言实习总结

推荐度:

c语言程序设计的实验报告

推荐度:

c语言课程设计个人总结

推荐度:

c语言程序设计实验报告

推荐度:

c语言程序设计开云官网app下载安装手机版

推荐度:

相关推荐

积分饱和通俗讲就是系统在一个偏差方向上的饱和,下面一起来跟着小编学习一下pid算法的c语言实现方法吧,希望可以帮助到大家!

比如一个系统设定了输出不会超过100,但因为出现一个方向上的偏差积分使得输出超过了100,此时达到了饱和状态,如果继续在这个方向上积分会导致pid控制超过100系统却运行在100,相当于积分调节对系统输出没有作用,就出现失控的状态,这是系统不能接受的,而且饱和积分越深,退出饱和就越久。上面是在正向的饱和,负向的饱和类似!

为了解决这个问题,我们采用抗积分饱和算法,其思路就是:如果上一次的输出控制量超过了饱和值,饱和值为正,则这一次只积分负的偏差,饱和值为负,则这一次只积分正的偏差,从而避免系统长期留在饱和区!

下面我以 位置型+抗积分饱和+控制算法c语言来观察调节结果:(相对应的代码可以参考以往的文章)

//位置型+抗积分饱和+积分分离 pid控制算法

struct _pid{

float setspeed;

float actualspeed;

float err;

float err_last;

float kp,ki,kd;

float voltage;

float integral;

float umax; //最大正饱和上限值

float umin; //最大负饱和下限值

}pid;

void pid_init(void)

{

printf("pid_init begin! ");

ed = 0;

speed = 0;

= 0;

_last = 0;

= 0.2;

= 0.1; //增大了积分环节的值

= 0.2;

e = 0;

al = 0;

= 400; //正饱和值为400

= -200; //负饱和值为-200

printf("pid_init end! ");

}

float pid_cal(float speed)

{

unsigned char index;

ed = speed;

= ed - speed;

if(speed>) //如果上一次输出变量出现正向的饱和

{

if(abs()>200)

{

index = 0;

}

else

{

index = 1;

if(<0)

{

al += ; //正饱和只积分负偏差

}

}

}

else if(speed {

if(abs()>200)

{

index = 0;

}

else

{

index = 1;

if(>0)

{

al += ; //负饱和只积分正偏差

}

}

}

else

{

if(abs()>200) //积分分离的pid优化,可参考以往的文章

{

index = 0;

}

else

{

index = 1;

al += ;

}

}

e = * +index**al + *( - _last);

_last = ;

speed = e*1.0;

return speed;

}

int main(void)

{

int count = 0 ;

printf("system begin! ");

pid_init();

while(count<1000)

{

float speed = pid_cal(200.0);

printf("-%d-%f-",count,speed);

count++;

}

return 0;

}

最后运行结果:

我们发现,相对以往的算法,还算法大大提高了调节的速度和稳定!

s("content_relate");

【pid算法的c语言实现】相关文章:

pid算法的c语言实现:抗积分饱和的pid优化

10-05

c语言中实现kmp算法实例

11-19

希尔排序算法的c语言实现示例

10-04

c语言实现归并排序算法实例

11-21

6种常见的排序算法的c语言实现

10-04

c语言的排序算法

10-05

kmp算法的c#实现方法

09-22

c语言排序的几种算法

10-03

c#实现轮询算法实例代码

09-23

【本文地址:http://www.pourbars.com/zuowen/2800884.html】

全文阅读已结束,如果需要下载本文请点击

下载此文档
Baidu
map