日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

芯動(dòng)大師
認(rèn)證:VIP會員
作者動(dòng)態(tài)
eFuse電子保險(xiǎn)絲,需要了解的技術(shù)干貨來啦
2天前
開關(guān)電源DC-DC應(yīng)用
5天前
電源緩啟動(dòng)(軟起動(dòng))原理
2星期前
關(guān)于LDO,讀懂這一篇就夠了
2星期前
什么是LDO?帶你熟悉LDO產(chǎn)品的基礎(chǔ)知識
2星期前

如何從單級PID進(jìn)階為串級PID

串級PID調(diào)參思路

從單級到串級

當(dāng)我們在進(jìn)行小球的位置控制時(shí),我們可能經(jīng)常會發(fā)現(xiàn)一個(gè)問題,如果小球與目標(biāo)之間的距離較遠(yuǎn)的話,小球在運(yùn)動(dòng)過程中的速度會很快,會導(dǎo)致較大的超調(diào),而且不論怎么修改參數(shù)都很難讓系統(tǒng)的表現(xiàn)更好一些。

單級PID控制小球效果

這時(shí)你可能會想,如果運(yùn)動(dòng)過程中的速度沒這么快就好了,這樣就不會沖過頭了。沒錯(cuò),這就要用到串級PID了。

我們上面所說的算法其實(shí)就是單級PID,目標(biāo)值和反饋值經(jīng)過一次PID計(jì)算就得到輸出值并直接作為控制量,但如果目標(biāo)物理量和輸出物理量之間不止差了一階的話,中間階次的物理量我們是無法控制的。比如:目標(biāo)物理量是位置,輸出物理量是加速度,則小球的速度是無法控制的。

而串級PID就可以改善這一點(diǎn)。串級PID其實(shí)就是兩個(gè)單級PID“串”在一起組成的,它的信號框圖如下:

串級PID信號框圖

圖中的外環(huán)和內(nèi)環(huán)就分別是一個(gè)單級PID,每個(gè)單級PID就如我們之前所說,需要獲取一個(gè)目標(biāo)值和一個(gè)反饋值,然后產(chǎn)生一個(gè)輸出值。串級PID中兩個(gè)環(huán)相“串”的方式就是將外環(huán)的輸出作為內(nèi)環(huán)的目標(biāo)值。

串級PID的物理量

如果將串級PID看作一個(gè)整體,可以看到他有三個(gè)輸入和一個(gè)輸出,而此時(shí)被控對象也需要提供兩個(gè)反饋量,那么它們都應(yīng)該對應(yīng)些什么物理量呢?

首先我們回到最開始的小球案例中,如果用串級PID完成同樣的任務(wù),應(yīng)該這樣設(shè)計(jì):

可用條件:小球?qū)崟r(shí)位置、小球?qū)崟r(shí)速度、施加在小球上的控制力

目標(biāo)值:小球目標(biāo)位置

外環(huán)反饋:小球?qū)崟r(shí)位置

內(nèi)環(huán)反饋:小球?qū)崟r(shí)速度

輸出值:施加在小球上的控制力

此時(shí)的信號框圖會變成這樣:

串級PID控制小球信號框圖

可以發(fā)現(xiàn),內(nèi)環(huán)與小球構(gòu)成了一個(gè)恒速系統(tǒng),PID內(nèi)環(huán)負(fù)責(zé)小球的速度控制;而如果把內(nèi)環(huán)和小球看作一個(gè)整體被控對象,外環(huán)又與這個(gè)對象一起構(gòu)成了一個(gè)位置控制系統(tǒng),外環(huán)負(fù)責(zé)位置控制;總體來說,外環(huán)負(fù)責(zé)根據(jù)小球位置誤差計(jì)算出小球需要達(dá)到的速度,而內(nèi)環(huán)負(fù)責(zé)計(jì)算出控制力使小球達(dá)到這個(gè)目標(biāo)速度,兩個(gè)環(huán)協(xié)同工作,就可以完成任務(wù)了。

如果不局限于這個(gè)案例來說,串級PID的內(nèi)環(huán)一般負(fù)責(zé)低階物理量的調(diào)節(jié),而外環(huán)負(fù)責(zé)高階物理量的調(diào)節(jié)并計(jì)算出低階物理量的目標(biāo)值,比如下面這個(gè)例子:

任務(wù):對電機(jī)進(jìn)行串級角度控制

可用條件:電機(jī)實(shí)時(shí)角度、電機(jī)實(shí)時(shí)轉(zhuǎn)速、可以控制電機(jī)電流大小

外環(huán)目標(biāo)值:需要電機(jī)達(dá)到的角度

外環(huán)反饋值:電機(jī)的實(shí)時(shí)角度

內(nèi)環(huán)反饋值:電機(jī)的實(shí)時(shí)速度

輸出值:電機(jī)電流大小

分析:外環(huán)負(fù)責(zé)電機(jī)角度控制,根據(jù)電機(jī)目標(biāo)角度和反饋角度計(jì)算出目標(biāo)轉(zhuǎn)速;內(nèi)環(huán)負(fù)責(zé)轉(zhuǎn)速控制,根據(jù)速度反饋和目標(biāo)轉(zhuǎn)速計(jì)算出電流

串級PID的效果

回到我們的小球控制案例,之前說使用串級之后我們就可以對速度進(jìn)行控制了,如何進(jìn)行控制呢?其實(shí)就是對外環(huán)PID的輸出進(jìn)行限幅,因?yàn)橥猸h(huán)PID輸出的是目標(biāo)速度,限制外環(huán)輸出就相當(dāng)于限制了小球目標(biāo)速度的最大值,內(nèi)環(huán)也就會維持小球的速度不超過這個(gè)最大值了。

串級PID控制小球效果

可以看到,使用串級PID后小球不再像之前那樣“著急”地奔著目標(biāo)而去,而是以近似勻速運(yùn)動(dòng)到達(dá)目標(biāo)點(diǎn)。由于位置誤差很大,外環(huán)輸出在大部分時(shí)間內(nèi)都處于限幅的最大值,因此小球在運(yùn)動(dòng)中接近勻速,這個(gè)速度就是所設(shè)定的外環(huán)輸出限幅。而且由于運(yùn)動(dòng)速度變慢了,超調(diào)也幾乎消失了。這就是我們想要的“控制位置的同時(shí)還能控制速度”的效果。

串級PID的C語言代碼

//此處需要插入之前的單級PID相關(guān)代碼

//串級PID的結(jié)構(gòu)體,包含兩個(gè)單級PID
typedef struct
{
    PID inner; //內(nèi)環(huán)
    PID outer; //外環(huán)
    float output; //串級輸出,等于inner.output
}CascadePID;
 
//串級PID的計(jì)算函數(shù)
//參數(shù)(PID結(jié)構(gòu)體,外環(huán)目標(biāo)值,外環(huán)反饋值,內(nèi)環(huán)反饋值)
void PID_CascadeCalc(CascadePID *pid, float outerRef, float outerFdb, float innerFdb)
{
    PID_Calc(&pid->outer, outerRef, outerFdb); //計(jì)算外環(huán)
    PID_Calc(&pid->inner, pid->outer.output, innerFdb); //計(jì)算內(nèi)環(huán)
    pid->output = pid->inner.output; //內(nèi)環(huán)輸出就是串級PID的輸出
}
 
CascadePID mypid = {0}; //創(chuàng)建串級PID結(jié)構(gòu)體變量
 
int main()
{
    //...其他初始化代碼
    PID_Init(&mypid.inner, 10, 0, 0, 0, 1000); //初始化內(nèi)環(huán)參數(shù)
    PID_Init(&mypid.outer, 5, 0, 5, 0, 100); //初始化外環(huán)參數(shù)
    while(1) //進(jìn)入循環(huán)運(yùn)行
    {
        float outerTarget = ...; //獲取外環(huán)目標(biāo)值
        float outerFeedback = ...; //獲取外環(huán)反饋值
        float innerFeedback = ...; //獲取內(nèi)環(huán)反饋值
        PID_CascadeCalc(&mypid, outerTarget, outerFeedback, innerFeedback); //進(jìn)行PID計(jì)算
        設(shè)定執(zhí)行機(jī)構(gòu)輸出大小(mypid.output);
        delay(10); //延時(shí)一段時(shí)間
    }
}

串級PID的調(diào)參

一般而言,需要先斷開兩環(huán)的連接,手動(dòng)指定內(nèi)環(huán)目標(biāo)值,進(jìn)行內(nèi)環(huán)調(diào)參,當(dāng)內(nèi)環(huán)控制效果較好后再接上外環(huán)進(jìn)行外環(huán)調(diào)參,具體的調(diào)參方法與單級PID相同。

此時(shí)大家也可以使用小球仿真環(huán)境體驗(yàn)一下串級控制的效果。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 8
收藏 7
關(guān)注 13
成為作者 賺取收益
全部留言
0/200
  • oysliang 08-11 16:36
    之前一直不理解串級。通過這篇文章入門了。
    回復(fù) 1條回復(fù)