PID算法程序C语言

更新时间:2023-03-09 19:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

#include\int E0=0; int E1=0; int E2=0; int Error0=0; int Error1=0; int Ppid=0;

int Pctr(int ch1,int ch2,int Kp,int Ki,int Kd) {

E0=ch1-ch2;//增量计算当前E0

Error0=E0-E1;//当前差值Eo是差值

Error1=E1-E2;//上一次差值上一次值也再上一次值得差值 Ppid=(int)(Ki*Error0+Kp*E0+Kd*(Error0-Error1)); E2=E1;//

E1=E0;//存储误差,用于下次计算

return Ppid;//Return }

/*====================================================================================================

增量式PID计算部分 //增量式PID算法核心部分!P控制误差D

=====================================================================================================*/ int IncPIDCalc(int NextPoint,PID sptr) {

int iError, iIncpid; //当前误差

iError =sptr.SetPoint-NextPoint; //增量计算 iIncpid = sptr.Proportion * iError //E[k]项 - sptr.Integral * sptr.LastError //E[k-1]项 + sptr.Derivative * sptr.PrevError; //E[k-2]项 //存储误差,用于下次计算 sptr.PrevError = sptr.LastError; sptr.LastError = iError; //返回增量值 return(iIncpid); }

void IncPIDInit(PID sptr ) {

sptr.SumError = 0;

sptr.LastError = 0; //Error[-1] sptr.PrevError = 0; //Error[-2]

sptr.Proportion = 0; //比例常数 Proportional Const sptr.Integral = 0; //积分常数Integral Const

sptr.Derivative = 0; //微分常数 Derivative Const sptr.SetPoint = 104;//的点 }

本文来源:https://www.bwwdw.com/article/vj8a.html

Top