如何設計一個運動控制系統
一、典型的運動控制系統的架構
工程實踐中,大多數控制系統為運動控制系統,比如飛機控制,其實就是通過控制飛機的幾個翅膀進而調解作用在飛機上的氣動力來調整飛機的姿態。飛機的翅膀上面(舵面)都安裝有作動器(簡稱舵機),通過作動器的位置控制就可以控制舵面的位置,最終實現飛機的控制。

我們一般都會見到如下的一個典型的控制框圖,即通過三個環路來實現位置控制(以電機作為最終的出力元件)。外環為位置環,中間為速度環,最內部為電流環,很多第一次接觸這種控制方式的人都會多多少少有點疑問:為什麼是這是三個環路?換一個行不行?

好了,如果我們將上面的環路稍微變形一下,可能會有助於大家的理解:

即最內環換成了加速度環,細心的童鞋可能已經注意到了某種規律——位置、速度、加速度,內環是外環的導數?這貌似是有那麼一點點規律!——其實呢內環電流環和加速度環是等價的,因為對於理想電機而言,其轉矩和電流成正比(比例就是轉矩係數),轉動慣量可近似認為是常值,這樣加速度就和電流成正比,因為電機中電流更容易測量,所以呢一般用電流環來代替加速度環。
好了,那怎麼理解這三個環路呢?為什麼位置換控制器的輸出就是速度環呢輸入呢?——可以這麼簡單的理解:要想控制位置,可以通過調節速度來實現,因為速度隨時間的積分就是位置,合適的速度經過一定的時間就能達到想要的位置;同樣,速度可以通過調節合適的電流來實現;那麼怎麼調節電流呢?——調節電壓啊,怎麼調節電壓呢?——逆變器啊!好了,是不是知識點都串起來了?——我們先簡單的瞭解一下,後面再進行理論分析。
二、如何設計一個直流電機電流環
先以簡單的直流電機為例,一個典型的直流電機的數學模型如下:

其中 為力矩係數,
為反電勢係數,
為線圈電感,
為線圈電阻,
為轉子轉動慣量,
為轉子阻尼係數,
為負載,
為轉子速度, 為轉子位置,
為端部電壓,這就是理想直流電機的數學模型,注意這是開環的電機模型。那電流環一般長什麼樣呢?
電流就是控制線圈中的電流,線圈的傳遞函式是 ,所以電流環的的一般控制模型為:

其中 為PI控制器。
好了,那這個小閉環系統長什麼樣子呢?我們不妨把它的傳遞函式寫出來分析一下:
前向通道的開環傳遞函式為: ,其中
,為繞組電氣時間常數。由於是單位負反饋,所以
,所以閉環傳遞函式為:
可見這是一個含有零點的二階系統,為簡單期間,我們先忽略零點的影響,將閉環傳遞函式簡化為:
我們知道,其瞬態響應主要取決於其極點分佈,其極點的分佈的方程為 ,我們不妨設這個方程的截止頻率 為
,阻尼比為 ,則通過
可以得到:
這樣只要我們設定了截止頻率和阻尼比,我們就能設計一個滿足要求的PI控制器了,此時階躍響應上升時間約為 ,穩定時間約為
。
舉個例子:摸個電機的電感 ,電阻為
,則傳遞函式為
,我們不妨設這個方程的截止頻率
為1000rad/s,阻尼比 為0.75(0.6-0.8都可以,看系統需要),則可以計算出:
所以設計的控制器為:
這樣我們不考慮零點的傳遞函式的為:
我們畫個伯德圖看一下這個系統的響應是多少!
figure('color','w'); H = tf([1e6],[1 1500 1e6]); bode(H); grid on;

可見在1000rad/s時系統的幅值衰減到-3.53dB,相位滯後90°。
前面我們都忽略了零點的作用,現在我們看一下完成的模型系統響應什麼樣!此時系統的閉環傳遞函式為:
figure('color','w'); H = tf([1450 1e6],[1 1500 1e6]); w=logspace(2,4,10000); bode(H,w); grid on;

可見,有零點之後1000rad/s時幅值響應為1.4dB,相位響應為-34.8°,和無零點的簡化模型有區別,但是主要特徵沒有發生明顯變化,為簡單期間呢,我們一般都會用無零點的模型進行控制器設計。
同時注意到,有零點的模型在截止頻率附近幅值響應是大於0dB的,也就是大於1的,因此可以預見,系統的響應會出現一定的超調,我們不妨搭個simulink模型看看:

當指令是階躍指令時,可以看到響應非常快,同時又一定的超調。

三、什麼是積分飽和
在 J Pan:如何入門自動控制理論 一文中,我們說了,一個系統的截止頻率越高,能通過的訊號的頻寬就越大,這樣系統的響應就約快速、越及時,響應時間就越短。按照第二節的描述,只要我們知道了電機的傳遞函式 ,理論上只要我們設定了想要的截止頻率
和阻尼比 ,我們都可以設計一個控制器進行整定,已達到我們設定的頻寬——等等,這好像和我們的常識有悖啊,沒聽說過哪個系統的頻寬可以無限寬啊!
問題在哪呢?——首先我們前面的理論分析完全沒有問題,理論上截止頻率確實可以達到無限寬,但有一個前提, 那就是我們要有一個能力無限大的電源! 如何理解這句話?
還是前面的例子,現在假設我要截止頻率為10000rad/s,阻尼比還是0.75,則可以計算出控制器的傳遞函式為

我們把PI控制器的輸出顯示出來,上圖中綠色示波器位置。

可以看出,為了達到較高的截止頻率,需要給繞組的電源電壓達到了接近300V,如果想提高截止頻率,這個值還會更高,而我們一般的供電電壓可能只有28V,那怎麼辦呢?我們需要在PI控制器後面加一個限幅,如下圖所示:

我們以為皆大歡喜了,可是我們計算完後又發現了問題,那就是加完限幅後系統出現了大的超調,如下圖所示,這是什麼原因呢?

原因也很簡單, 那就是積分器輸出飽和了! ——什麼意思?請看下圖,紅色線為原始的PI控制器輸出,因為限幅,其實際的輸出為綠色線所示(紅色和綠色線縱座標在右側,藍色線縱座標在左側)。在電流(藍色線)到達理論值前,由於誤差一直是正值,因此積分器不斷積分,數值也不斷增大,直到到達理論值時積分器達到達最大值,而這個值和限幅相比大的多(800比28)。在電流超過理論值後,誤差開始變為幅值,積分器的數值開始減小,但由於之前的數值太大了,需要一段時間後才能減小到零甚至幅值,在到零之前積分器還是正值,而且大部分時間都是很大的值,因此限幅後的PI控制器在電流到達理論值後還會維持一段時間的正值(見綠色線),導致電流出現了較大的超調,這種情況一般叫迎風超調(windup)。

那怎麼解決呢?——是不是可以減小PI控制器的積分增益呢?當然是可以的,但這樣會導致響應變慢,減小頻寬。一個最常見的方法就是採用抗積分飽和的方法(anti-windup),抗積分飽和的方法有很多種,比如積分遇限消弱法(clamping)、積分分離法以及反饋抑制抗飽和法以及變種等,我們簡要介紹一下反饋抑制飽和法。
反饋抑制飽和法的採用反饋的基本思想:當飽和時,對積分項加入負反饋,使其儘快退出飽和,具體實現見下圖:

對積分迴路增肌負反饋環節,即當積分器積分量多大時,通過負反饋減小其積分值,確保其在一定的範圍內。反饋增益 一般取值為
,當然也需要根據實際要求進行調整。進行積分抑制飽和後其電流的實際響應見下圖所示,可見響應時間略慢(因為電壓限幅了),但是也沒有出現較大的超調。

前面分析的都是理論情況,實際上還要複雜一點,比如PI控制器的輸出要經過一個計算週期( )才能更新一次,PWM計算模組計算的三極體門訊號最大可能延遲一個斬波週期(
),逆變器(比如IGBT)從接收到訊號到管子作用也要一個時間(
),以及反饋電流的採集、濾波都有延遲時間(
),這些要麼是延時環節,要麼是慣性環節,都會影響頻寬,引入這些環節的電流環設計與前面所述的方法是一致的,只是略複雜一點(即將這些量與繞組一起等效成一個大的慣性環節)。當然,一般這些量與電機的電氣時間常數
相比都比較小,大多數情況下為簡單期間可以先忽略。

四、如何設計速度環
有了電流環,我們就可以設計速度環了,完整的速度環框圖如下圖所示:

因為電訊號的變化是非常快的,電機的電氣時間常數一般比機械時間常數小的多,通常我們將電流環的截止頻率設計的儘量高,速度環的截止頻率要低一些。
在速度環裡,因為機械時間常數比電氣時間常數大的多,也就是說 在一個電氣時間常數裡面,電機的速度可以認為是不怎麼變的 ,也就是說為簡單期間,在速度環裡,電流環可以認為響應非常快,可以忽略掉,從而簡化成如下結構:

被控物件的傳遞函式簡化成: ,其中
為等效到轉子的轉動慣量,
為轉子阻尼係數,通常比較小,
為力矩係數。
我們可以得到速度環的前向傳遞函式為: ,閉環傳遞函式為:
可見這也是是一個含有零點的二階系統,同樣忽略零點的影響,將閉環傳遞函式簡化為:
其極點的分佈的方程為 ,若這個方程的截止頻率 為
,阻尼比為 ,則通過
可以得到:
假設速度環的截止頻率為 為100rad/s,阻尼比 為0.8,轉動慣量
為
,轉矩係數
為
,阻尼係數
為0,則可以計算出:
所以設計的控制器為:
同樣我們也加上積分反饋抑制飽和,完整simulink模組如下:

其電流響應曲線和速度響應曲線如下:

可見,最開始的時候,電流迅速達到設定的最大值,使電機達到最大速度,電流的穩定時間明顯比速度小,結束的時候,電流也迅速下降實現制動。
五、如何設計位置環
有了電流環和速度環,相信大家應該已經會設計位置環了。

同樣,假定位置環的截止頻率小於速度環,忽略速度環的響應時間,則系統可簡化為:

位置環的前向傳遞函式為: ,閉環傳遞函式為:
忽略零點的影響,將閉環傳遞函式簡化為:
其極點的分佈的方程為 ,若這個方程的截止頻率 為
,阻尼比為 ,則通過
可以得到:
怎麼樣,簡單吧,那就拿simulink自己試試吧,別忘了積分飽和哦。