初中生
最后登录1970-1-1
在线时间 小时
注册时间2020-6-14
|
本帖最后由 皮皮涛 于 2020-12-19 21:59 编辑
我这里通过改变PWM的占空比来控制加热设备的加热功率,那增量式PID计算(通过温度传感器返回的温度值)后的输出值即一个增量,现在搞不明白如何将这个增量和PWM的占空比联系起来,希望大佬指点一下
//增量式PID
typedef struct{
int SetPoint; //目标值
long SumError; //误差累计
float P; //比例常数
float I; //积分常数
float D; //微分常数
int LastError; //上次偏差值
int PrevError; //上上次偏差值
}PID;
/*************************************************
*函数名称:int PID_Contrl(PID* sptr,int NextPoint)
*功 能: PID控制
*参 数: PID* sptr:上次参数 int NextPoint:当前实际值
*返 回 值: iIncPid :增量
*************************************************/
int PID_Contrl(PID* sptr,int NextPoint)
{
register int iError,iIncPid;
iError = sptr-> SetPoint - NextPoint; //当前误差 设定的目标值和实际值的偏差
iIncPid = sptr-> P * iError - sptr-> LastError //增量计算
+sptr-> I * iError
+ sptr-> D *(iError - sptr-> LastError + sptr-> PrevError);
/*存储误差 用于下次计算*/
sptr-> PrevError = sptr->LastError;
sptr-> LastError = iError;
return iIncPid; //返回增量值
}
|
|