位置式PID與增量式PID


//位置式PID

float Kp;
float Ki;
float Kd;

float eSum,e0,e1;

float pid_control(float now,float target)
{
    float pe,ie,de;
    float out;
    
    e0 = target - now;
    eSum += e0;
    
    pe = e0;
    ie = eSum;
    de = e0 - e1;
        
    out = pe*Kp + ie*Ki + de*Kd;
    
    out = limit(out,-LIMIT,LIMIT);

    e1 = e0;
    
    return out;
}

//增量式PID

float Kp;
float Ki;
float Kd;

float eSum,e0,e1,e2;

float pid_control(float now,float target)
{
    float pe,ie,de;
    float out;

    e0 = target - now;
    
    pe = e0 - e1;
    ie = e0;
    de = e0 - 2*e1 + e2;
    
    out = pe*Kp + ie*Ki + de*Kd;
    out = limit(out,-LIMIT,LIMIT);
    
    e2 = e1;
    e1 = e0;
    
    return out;
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM