在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PID公式的推導(dǎo)過(guò)程及實(shí)現(xiàn)代碼

            PID公式的推導(dǎo)過(guò)程及實(shí)現(xiàn)代碼

            作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
            一、PID框圖







            n0(t)是要穩(wěn)定的值
            n(t)是當(dāng)前輸出值
            e(t) = n0(t) - n(t)


            一、模擬PID控制原理
            這個(gè)公式網(wǎng)絡(luò)上很好找:

            本文引用地址:http://www.biyoush.com/article/201612/324482.htm

            二、數(shù)字PID控制
            由于模擬的微積分運(yùn)算對(duì)應(yīng)計(jì)算機(jī)來(lái)說(shuō)是不太好寫(xiě)代碼的,所以要利用采樣將數(shù)據(jù)離散化

            于是公式就可以轉(zhuǎn)換為:



            其中T為采樣時(shí)間,由于T之類的參數(shù)是常量,所以將Kp乘入公式中可以轉(zhuǎn)換成另一種寫(xiě)法
            這個(gè)公式叫位置式算法

            由于要不斷的累加ej,增加了計(jì)算量,所以這個(gè)公式又可以轉(zhuǎn)換為增量式算法:




            然后u(k) = u(k-1) + u

            三、參數(shù)的整定
            先將Ti設(shè)置為無(wú)窮大,Td設(shè)置為0,調(diào)節(jié)Kp
            然后再調(diào)節(jié)Ti,最后是Td

            四、實(shí)現(xiàn)代碼

            typedef struct PID
            {
            int SetPoint; //設(shè)定目標(biāo) Desired Value
            longSumError; //誤差累計(jì)
            double Proportion; //比例常數(shù) Proportional Cons
            double Integral; //積分常數(shù) Integral Const
            double Derivative; //微分常數(shù) Derivative Const
            int LastError; //Error[-1]
            int PrevError; //Error[-2]
            } PID;

            /*******************************************************************************
            * 函數(shù)名稱 : IncPIDCalc
            * 函數(shù)描述 : 增量式 PID 控制計(jì)算
            * 函數(shù)輸入 : int 當(dāng)前位置
            * 函數(shù)輸出 : 無(wú)
            *函數(shù)返回 : 增量式PID結(jié)果
            *******************************************************************************/
            int IncPIDCalc(int NextPoint)
            {
            int iError, iIncpid;
            //當(dāng)前誤差
            iError = sptr->SetPoint - NextPoint;
            //增量計(jì)算
            iIncpid = sptr->Proportion * iError //E[k]項(xiàng)
            - sptr->Integral * sptr->LastError //E[k-1]項(xiàng)
            + sptr->Derivative * sptr->PrevError; //E[k-2]項(xiàng)
            //存儲(chǔ)誤差,用于下次計(jì)算
            sptr->PrevError = sptr->LastError;
            sptr->LastError = iError;
            //返回增量值
            return(iIncpid);
            }
            /*******************************************************************************
            * 函數(shù)名稱 : LocPIDCalc
            * 函數(shù)描述 : 位置式 PID 控制計(jì)算
            * 函數(shù)輸入 : int 當(dāng)前位置
            * 函數(shù)輸出 : 無(wú)
            *函數(shù)返回 : 位置式PID結(jié)果
            *******************************************************************************/
            int LocPIDCalc(int NextPoint)
            {
            int iError,dError;
            iError = sptr->SetPoint - NextPoint; //偏差
            sptr->SumError += iError; //積分
            dError = iError - sptr->LastError; //微分
            sptr->LastError = iError;
            return(sptr->Proportion * iError //比例項(xiàng)
            + sptr->Integral * sptr->SumError //積分項(xiàng)
            + sptr->Derivative * dError); //微分項(xiàng)
            }


            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉