標(biāo)題:
增量式PID算法C++源碼
[打印本頁]
作者:
1234zhang123456
時間:
2018-5-20 10:00
標(biāo)題:
增量式PID算法C++源碼
C++源程序如下:
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <Windows.h>
//定義PID變量的結(jié)構(gòu)體
struct _pid
{
float SetSpeed;
float ActualSpeed;
float err;
float err_last; //定義上上個偏差
float err_next; //定義上一個偏差值
float Kp,Ki,Kd;
}pid;
//初始化變量
void PID_init(void)
{
printf ("pid_value_init_begin\n");
pid.ActualSpeed = 0.0;
pid.SetSpeed = 0.0;
pid.err = 0.0;
pid.err_last = 0.0;
pid. err_next = 0.0;
pid.Kp = 0.2;
pid.Ki = 0.015;
pid.Kd = 0.2;
printf("pid_init end \n");
}
//增量式算法
float PID_calculate(float speed)
{
pid.SetSpeed = speed;
pid.err = pid.SetSpeed - pid.ActualSpeed;
float incrementSpeed = pid.Kp * (pid.err - pid.err_next) + pid.Ki * pid.err + pid.Kd * (pid.err - 2 * pid.err_next + pid.err_last);
pid.ActualSpeed += incrementSpeed;
pid.err_last = pid.err_next; //定義上一個偏差值
pid.err_next = pid.err;
return pid.ActualSpeed;
}
int main(void)
{
int setcount = 0;
printf ("Please begin \n");
PID_init();
while (setcount < 100)
{
float speed = PID_calculate(250.0);
printf ("value is %f\n",speed);
setcount++;
Sleep(300);
}
system("pause");
return 0;
}
復(fù)制代碼
所有資料51hei提供下載:
增量式PID.rar
(13.49 MB, 下載次數(shù): 43)
2018-5-20 09:59 上傳
點擊文件名下載附件
算法
下載積分: 黑幣 -5
作者:
l1051324850
時間:
2019-5-30 14:11
運行不了啊
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1