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