基于Xilinx System Generator的PID算法快速硬件實現(xiàn)
摘 要: 介紹了利用Xilinx System Generator平臺構(gòu)建模型化數(shù)字PID控制算法,并通過FPGA將數(shù)字PID算法結(jié)合傳感器與實際硬件控制對象快速建立控制模型,構(gòu)成完整的閉環(huán)控制。通過對控制效果的實驗驗證,證明了其控制方法的可行性。
關(guān)鍵詞: FPGA;system generator;PID算法
1 Xilinx System Generator簡介
Xilinx System Generator 是專門為數(shù)字信號算法處理而推出的模型化設(shè)計平臺,可以快速、簡單地將DSP系統(tǒng)的抽象算法轉(zhuǎn)換成可綜合的、可靠的硬件系統(tǒng),彌補了大部分對C語言以及Matlab工具很熟悉的DSP工程師對于硬件描述語言VHDL和Verilog HDL認識不足的缺陷[1]。
System Generator作為一個硬件設(shè)計工具包安裝在Matlab軟件中,提供了相當豐富的應(yīng)用子模塊[2]。設(shè)計者如同使用Matlab中其他模塊一樣,通過拖拽和連接就可以將子模塊搭建成一個完整的應(yīng)用系統(tǒng)。
2 增量式PID數(shù)字算法原理
在PID控制算法的應(yīng)用中有位置式和增量式兩種[3-4]。位置式PID控制算法中因運用了誤差的累加,控制的輸出量與過去所有時間的狀態(tài)有關(guān),所以位置式PID控制算法的累積誤差相對較大。而增量式PID控制算法中的調(diào)整量只是與當前及前兩個狀態(tài)有關(guān),并且增量式PID算法只是控制每次的輸出增量,而且一般執(zhí)行機構(gòu)都帶有記憶功能,一旦控制器出錯,能保持住原位,不會嚴重影響到系統(tǒng)的工作。
PID數(shù)學(xué)模型:
3 在System Generator中建立PID算法模型
根據(jù)公式(4)的增量式數(shù)字PID模型,可在Xilinx System Generator工具包中調(diào)用相關(guān)子函數(shù)模塊來構(gòu)建整個函數(shù)[5],如圖1所示。
設(shè)計中使用了自定義函數(shù)模塊(Mcode),該模塊是Xilinx System Generator中提供給DSP設(shè)計者的可編程邏輯模塊,可以使用Matlab語言編寫符合設(shè)計者要求的子函數(shù)。Mcode模塊分別支持控制邏輯、狀態(tài)邏輯、二位除法運算以及定點數(shù)運算等邏輯運算,并可靈活地定義輸入輸出的個數(shù)以及輸出數(shù)據(jù)的類型。最終在生成硬件邏輯時自動將Mcode中的代碼轉(zhuǎn)換成VHDL/Verilog硬件描述語言。另外,由于生成的是邏輯控制,對設(shè)計者來說運用起來十分便利,并且該模塊中的代碼在生成為硬件邏輯以后,幾乎是并行直接輸出,速度和效率都非常高。如圖2所示,在Mcode模塊中寫入了代碼之后,會生成對應(yīng)的自定義函數(shù)模塊。
4 控制對象與控制算法的級聯(lián)
在PID算法模塊構(gòu)建完成以后,需要嵌入到實際的控制對象中以達到預(yù)期的控制目的。
實驗采用的是一階RC控制對象,該對象在實驗中可以明顯有效地將控制效果反映出來。PID閉環(huán)控制系統(tǒng)框圖如圖3所示。對于一階RC控制對象,選擇電壓作為輸出的控制量,在設(shè)計中加入了A/D 以及D/A轉(zhuǎn)換模塊來完成采樣和控制量的輸出。
實驗平臺采用Xilinx公司的Spartan3E Start Kit,其中帶有兩路14 bit的A/D(LTC1407)輸入以及4路16 bit
(2)在PID算法的輸入與輸出端搭建數(shù)據(jù)轉(zhuǎn)換模塊。由于通過A/D采樣得到的數(shù)據(jù)和D/A輸出的數(shù)據(jù)都是二進制,而PID算法模塊中使用的是十進制數(shù)據(jù),并且小數(shù)點的位數(shù)也不一樣,所以需要在PID算法的輸入和輸出端插入數(shù)據(jù)轉(zhuǎn)換模塊。另外還必須加入Gateway in和Gateway out來實現(xiàn)數(shù)據(jù)的前端輸入和后端輸出。PID控制器完整模型如圖5所示。