[软件资料] 增量型PID的C语言实现

[复制链接]
594|0
 楼主| plsbackup 发表于 2022-11-24 12:00 | 显示全部楼层 |阅读模式
增量型PID的C语言实现,这里直接给出代码了。
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. struct _pid{
  4.     float SetSpeed;            //定义设定值
  5.     float ActualSpeed;        //定义实际值
  6.     float err;                //定义偏差值
  7.     float err_next;            //定义上一个偏差值
  8.     float err_last;            //定义最上前的偏差值
  9.     float Kp,Ki,Kd;            //定义比例、积分、微分系数
  10. }pid;

  11. void PID_init(){
  12.     pid.SetSpeed=0.0;
  13.     pid.ActualSpeed=0.0;
  14.     pid.err=0.0;
  15.     pid.err_last=0.0;
  16.     pid.err_next=0.0;
  17.     pid.Kp=0.2;
  18.     pid.Ki=0.015;
  19.     pid.Kd=0.2;
  20. }

  21. float PID_realize(float speed){
  22.     pid.SetSpeed=speed;
  23.     pid.err=pid.SetSpeed-pid.ActualSpeed;
  24.     float incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);
  25.     pid.ActualSpeed+=incrementSpeed;
  26.     pid.err_last=pid.err_next;
  27.     pid.err_next=pid.err;
  28.     return pid.ActualSpeed;
  29. }

  30. int main(){
  31.     PID_init();
  32.     int count=0;
  33.     while(count<1000)
  34.     {
  35.         float speed=PID_realize(200.0);
  36.         printf("%f\n",speed);
  37.         count++;
  38.     }
  39.     return 0;
  40. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

3384

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部