2023年pid控制算法的c語言實現(xiàn) pdf pid算法積分作用優(yōu)質(zhì)

字號:

    在日常的學習、工作、生活中,肯定對各類范文都很熟悉吧。大家想知道怎么樣才能寫一篇比較優(yōu)質(zhì)的范文嗎?下面是小編幫大家整理的優(yōu)質(zhì)范文,僅供參考,大家一起來看看吧。
    pid控制算法的c語言實現(xiàn) pdf pid算法積分作用篇一
    導(dǎo)語:c語言的設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。下面我們來看看pid算法的c語言實現(xiàn):抗積分飽和的pid優(yōu)化,希望對大家有所幫助。
    積分飽和通俗講就是系統(tǒng)在一個偏差方向上的.飽和,比如一個系統(tǒng)設(shè)定了輸出不會超過100,但因為出現(xiàn)一個方向上的偏差積分使得輸出超過了100,此時達到了飽和狀態(tài),如果繼續(xù)在這個方向上積分會導(dǎo)致pid控制超過100系統(tǒng)卻運行在100,相當于積分調(diào)節(jié)對系統(tǒng)輸出沒有作用,就出現(xiàn)失控的狀態(tài),這是系統(tǒng)不能接受的,而且飽和積分越深,退出飽和就越久。上面是在正向的飽和,負向的飽和類似!
    為了解決這個問題,我們采用抗積分飽和算法,其思路就是:如果上一次的輸出控制量超過了飽和值,飽和值為正,則這一次只積分負的偏差,飽和值為負,則這一次只積分正的偏差,從而避免系統(tǒng)長期留在飽和區(qū)!
    //位置型+抗積分飽和+積分分離 pid控制算法
    struct _pid{
    float setspeed;
    float actualspeed;
    float err;
    float err_last;
    float kp,ki,kd;
    float voltage;
    float integral;
    float umax; //最大正飽和上限值
    float umin; //最大負飽和下限值
    }pid;
    void pid_init(void)
    {
    printf("pid_init begin! ");
    ed = 0;
    speed = 0;
    = 0;
    _last = 0;
    = 0.2;
    = 0.1; //增大了積分環(huán)節(jié)的值
    = 0.2;
    e = 0;
    al = 0;
    = 400; //正飽和值為400
    = -200; //負飽和值為-200
    printf("pid_init end! ");
    }
    float pid_cal(float speed)
    {
    unsigned char index;
    ed = speed;
    = ed - speed;
    if(speed>) //如果上一次輸出變量出現(xiàn)正向的飽和
    {
    if(abs()>200)
    {
    index = 0;
    }
    else
    {
    index = 1;
    if(<0)
    {
    al += ; //正飽和只積分負偏差
    }
    }
    }
    else if(speed {
    if(abs()>200)
    {
    index = 0;
    }
    else
    {
    index = 1;
    if(>0)
    {
    al += ; //負飽和只積分正偏差
    }
    }
    }
    else
    {
    if(abs()>200) //
    {
    index = 0;
    }
    else
    {
    index = 1;
    al += ;
    }
    }
    e = * +index**al + *( - _last);
    _last = ;
    speed = e*1.0;
    return speed;
    }
    int main(void)
    {
    int count = 0 ;
    printf("system begin! ");
    pid_init();
    while(count<1000)
    {
    float speed = pid_cal(200.0);
    printf("-%d-%f-",count,speed);
    count++;
    }
    return 0;
    }
    s("content_relate");
    【pid算法的c語言實現(xiàn):抗積分飽和的pid優(yōu)化】相關(guān)文章:
    pid算法的c語言實現(xiàn)
    12-16
    c語言中實現(xiàn)kmp算法實例
    11-19
    希爾排序算法的c語言實現(xiàn)示例
    12-07
    6種常見的排序算法的c語言實現(xiàn)
    12-06
    c語言的排序算法
    12-12
    c語言實現(xiàn)歸并排序算法實例
    11-21
    kmp算法的c#實現(xiàn)方法
    10-24
    c語言排序的幾種算法
    12-03
    c語言優(yōu)化階段
    12-14