PID算法典型控制程序源代码

来源:本站
导读:目前正在解读《PID算法典型控制程序源代码》的相关信息,《PID算法典型控制程序源代码》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PID算法典型控制程序源代码》的详细说明。
简介:这是一个比较典型的PID处理程序,在使用单片机作为控制cpu时,请稍作简化,具体的PID参数必须由具体对象通过实验确定。由于单片机的处理速度和ram资源的限制,一般不采用浮点数运算,而将所有参数全部用整数,运算到最后再除以一个2的N次方数据(相当于移位),作类似定点数运算,可大大提高运算速度,根据控制精度的不同要求,当精度要求很高时,注意保留移位引起的“余数”,做好余数补偿。

这个程序只是一般常用pid算法的基本架构,没有包含输入输出处理部分。

//PID结构体定义

typedefstructPID{

doubleSetPoint;//设定目标Desiredvalue

doubleProportion;//比例常数ProportionalConst

doubleIntegral;//积分常数IntegralConst

doubleDerivative;//微分常数DerivativeConst

doubleLastError;//Error[-1]

doublePrevError;//Error[-2]

doubleSumError;//SumsofErrors

}PID;

//PID计算部分

doublePIDCalc(PID*pp,doubleNextPoint)

{

doubledError,

Error;

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

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

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

pp->PrevError=pp->LastError;

pp->LastError=Error;

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

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

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

);

}

//初始化PID结构

voidPIDInit(PID*pp)

{

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

}

//输入通道和输出通道

doublesensor(void)//DummySensorFunction

{

return100.0;

}

voidactuator(doublerDelta)//DummyActuatorFunction

{

}

//主函数

voidmain(void)

{

PIDsPID;//PIDControlStructure

doublerOut;//PIDResponse(Output)

doublerIn;//PIDFeedback(Input)

PIDInit(&sPID);//InitializeStructure

sPID.Proportion=0.5;//SetPIDCoefficients

sPID.Integral=0.5;

sPID.Derivative=0.0;

sPID.SetPoint=100.0;//SetPIDSetpoint

for(;;){//MockUpofPIDProcessing

rIn=sensor();//ReadInput

rOut=PIDCalc(&sPID,rIn);//PerformPIDInteration

actuator(rOut);//EffectNeededChanges

}

}

提醒:《PID算法典型控制程序源代码》最后刷新时间 2024-03-14 01:09:38,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PID算法典型控制程序源代码》该内容的真实性请自行鉴别。