PID调节C51程序(1)
扫描二维码
随时随地手机看文章
关于PID
比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节作用,微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
//PID参数设定常数(放大2倍)
#define Kp 15 // 实际7.5
#define Ki 3 // 实际1.5
#define Kd 25 // 实际14.5
void adcpro()
{
signed int tempP,tempI,tempD,TempOut;
// PID
tempP = Tparam[ path *2 ] - TpreTeat[path]; // 计算 e(t)..基本偏差
tempSigmaEt[path] += tempP; // sigma e(t)..累计偏差积分项
if (tempSigmaEt[path]>60) tempSigmaEt[path]= 60;// 过度积分的极限处理
if (tempSigmaEt[path]<-60) tempSigmaEt[path]= -60;
tempD = (tempP - tempEt[path]) * Kd; // Kd * (e(t)-e(t-1))微分项
tempEt[path] = tempP; // 纪录e(t)给下一次用e(t-1)比例项
tempI = tempSigmaEt[path] * Ki; // Ki * sigma e(t)积分部分
TempOut = (tempP * Kp + tempI + tempD)/2; // 综合输出函数
if (tempP>25)
{
TempOut = 200;
tempSigmaEt[path]=0;
}
else
{
if (TempOut<0)
{
TempOut = 0;
}
else
{
if(TempOut>200)
{
TempOut=200;
}
}
}
if (tempP<-2)
{
TempOut = 0;
}
hottimer_set[path] = TempOut;
if ( Tparam[ path *2 ] < 50 )
{
Tparam[ 8 ] &= ~( 0x11 << path ); //如果不需要加温则清除出错标志
};
}