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