×
单片机 > 单片机程序设计 > 详情

PID调节C51程序(1)

发布时间:2020-05-16 发布时间:
|

关于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]    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    {
        TempOut = 0;
    }
    hottimer_set[path] = TempOut;
    
    if ( Tparam[ path *2 ] < 50 )
    {
        Tparam[ 8 ] &= ~( 0x11 << path ); //如果不需要加温则清除出错标志
    };
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计