作者:paradoxfx 隨著MCU、DSP等芯片技術的高速發展,數字控制系統幾乎占據了原來模擬控制系統把持的大部分江山。而且其開發設計相比模擬控制系統來說要簡單了許多,使得人們很容易上手。那是不是只要我們把程序用C代碼一寫,然后弄幾個定時中斷跑跑,只要程序執行時間不超過中斷周期,就萬事大吉了呢?有沒有改進的空間? 對于一些比較簡單的系統,這當然沒有問題:跑馬燈或者蜂鳴器永遠不需要關心后臺的控制器在做神馬;但是對于一些需要高性能處理能力的測試、控制系統,需要我們注意或者說可以改進的地方還是挺多的,這里就說一下數字控制系統中的延時問題。 首先,一個高性能的數字控制系統是需要有反饋的,例如在電機的控制里面,就需要電機電流、轉速等信息。電流、電壓等是模擬量,需要把傳感器的輸出信號經過A/D轉換送到控制器中,這就產生了第一類的延時問題,即采樣-保持延時。這個延時并不是值A/D轉換器本身的S/H窗口的時間和轉換時間,因為在大多數情況下,這個時間都是ns級別的,相對于幾十到幾百us的控制周期是微不足道的。這個采樣-保持延時是數字控制技術本身導致的,因為數字控制技術一般使用定時的采樣,在每次采樣的時候,采集到的數據和實際數據是一致的,但是在下一次采樣時刻到來之前,系統只能使用本次采樣時刻采集到的數據,這就相當于控制中使用的都是“舊”的數據,系統在兩次采樣時刻直接,也相當于運行在某種開環狀態下。這種延時平均算下來是半個采樣時間,減小這種延遲的方法自然是提高采樣頻率了,這需要更快的A/D。 轉速的信息則使用編碼器或者觀測器估算。觀測器的暫且不管,因為設計到更復雜的計算方法;就速度這物理量本身而言,顯然在一個孤立的采樣點上是無法計算速度的,至少要有兩個點并且知道了兩點間的時間差才能計算,這個時間差同時也造成了一種相位上的滯后,其滯后就是這個時間差,利用數值分析技術中的逆梯形微分可以較好地消除這種延時。 最后一種我們很少會提起的延時就是計算延時,貌似在控制教材里很少提起過,因為它們都太專注于數學運算了,實質性的東西反而沒多少。這種延遲的具體時間是不確定的,取決于很多因素,例如算法的復雜程度,越復雜則計算所花的時間越長,這個延時有時候是無法避免的,除非使用更高性能的處理器,或者使用協處理器專門完成復雜任務;編程的技巧,越冗余、粗糙的代碼計算所花的時間也越長,仔細地修飾代碼可以減小這種延時;離散方法的問題,例如同樣的一個積分環節,使用雙線性變化法和前向歐拉法就存在一個采樣周期的延時差別,這個延時的減小需要在設計離散化算法時特別注意。 以上的三種延時加在一起,就構成了數字控制系統中的計算延時;再把那些數字濾波器神馬的延時都加在一起,整個系統的穩定裕度也剩余不多了,當總相位延時為180度,反饋增益又為1的時候,系統就崩潰了。 在模擬控制系統中,因為沒有定時采樣這些概念,信號的變化都是實時的、連續的,所以其性能在某些場合仍是數字系統不能完全比擬的,這也就能解釋為什么在國外一些大公司的產品設計中,某些關鍵的控制系統仍然在使用模擬控制系統。當然,隨著數字控制系統性能的不斷提升,這些延時造成的穩定裕度下降也許有天可以達到忽略不計的水平。 |