700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > pid控制算法程序c语言 PID控制算法C源码(示例代码)

pid控制算法程序c语言 PID控制算法C源码(示例代码)

时间:2022-12-13 07:29:17

相关推荐

pid控制算法程序c语言 PID控制算法C源码(示例代码)

#include #include //C语言中memset函数头文件

#define unsigned int uint typedefstructPID {double SetPoint; //设定目标Desired value

double Proportion; //比例常数Proportional Const

double Integral; //积分常数Integral Const

double Derivative; //微分常数Derivative Const

double LastError; //Error[-1]

double PrevError; //Error[-2]

double SumError; //Sums of Errors

}PID;

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

====================================================PID计算部分 =======================

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

double PIDCalc( PID *pp, doubleNextPoint )

{doubledError, Error;

Error= pp->SetPoint - NextPoint; //偏差

pp->SumError += Error; //积分

dError = Error - pp->LastError; //当前微分

pp->PrevError = pp->LastError;

pp->LastError =Error;return (pp->Proportion * Error //比例项

+ pp->Integral * pp->SumError //积分项

+ pp->Derivative * dError //微分项

);

}/*=======================================================

============================================= Initialize PID Structure PID参数初始化 =============

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

void PIDInit (PID *pp)

{

memset ( pp,0,sizeof(PID));

}/*======================================================

============================================== Main Program 主程序 ===================

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

double sensor (void) //Dummy Sensor Function

{return 100.0;

}//void actuator(double rDelta)//Dummy Actuator Function//{}

void main(void) {

PID sPID;//PID Control Structure

double rOut; //PID Response (Output)

double rIn; //PID Feedback (Input)

PIDInit ( &sPID ); //Initialize Structure

sPID.Proportion = 0.5; //Set PID Coefficients

sPID.Integral = 0.5;

sPID.Derivative= 0.0;

sPID.SetPoint= 100.0; //Set PID Setpoint

for (;;) { //

Mock Up of PID Processing

rIn= sensor (); //Read Input

rOut = PIDCalc ( &sPID,rIn ); //Perform PID Interation//actuator ( rOut );//Effect Needed Changes

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。