国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

增量式PID算法C++源碼

[復制鏈接]
樓主
山海致遠 發表于 2020-5-1 23:54:12 | 只看該作者 |倒序瀏覽 |閱讀模式
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #include <Windows.h>

  5. //定義PID變量的結構體
  6. struct _pid
  7. {
  8.         float SetSpeed;
  9.         float ActualSpeed;
  10.         float err;
  11.         float err_last;        //定義上上個偏差
  12.         float err_next;       //定義上一個偏差值
  13.         float Kp,Ki,Kd;
  14.       
  15. }pid;

  16. //初始化變量
  17. void PID_init(void)
  18. {
  19.         printf ("pid_value_init_begin\n");

  20.         pid.ActualSpeed = 0.0;
  21.         pid.SetSpeed = 0.0;

  22.         pid.err = 0.0;
  23.         pid.err_last = 0.0;
  24.         pid. err_next = 0.0;
  25.       
  26.       
  27.         pid.Kp = 0.2;
  28.         pid.Ki = 0.015;
  29.         pid.Kd = 0.2;

  30.         printf("pid_init end \n");
  31. }

  32. //增量式算法
  33. float PID_calculate(float speed)
  34. {

  35.         pid.SetSpeed = speed;
  36.         pid.err = pid.SetSpeed - pid.ActualSpeed;
  37.       
  38.         float incrementSpeed = pid.Kp * (pid.err - pid.err_next) + pid.Ki * pid.err + pid.Kd * (pid.err - 2 * pid.err_next + pid.err_last);

  39.         pid.ActualSpeed += incrementSpeed;

  40.         pid.err_last = pid.err_next;     //定義上一個偏差值
  41.         pid.err_next = pid.err;

  42.         return pid.ActualSpeed;

  43. }




  44. int main(void)
  45. {
  46.         int setcount = 0;
  47.         printf ("Please begin \n");
  48.         PID_init();

  49.         while (setcount < 100)
  50.         {
  51.                 float speed = PID_calculate(250.0);
  52.                 printf ("value is %f\n",speed);
  53.                 setcount++;
  54.                 Sleep(300);
  55.         }
  56.         system("pause");
  57.         return 0;
  58. }
復制代碼


您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 01:08

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表