自頂向下基于DSP Builder的PID控制系統開(kāi)發(fā)
而近年來(lái),微電子技術(shù)的迅速發(fā)展,使得集成電路設計和工藝水平有了很大的提高,隨著(zhù)超深亞微米技術(shù)的發(fā)展,使得原先由許多IC組成的電子系統集成在一個(gè)單片硅片上成為可能,構成所謂的片上系統(System 0n Chip,SOC),同時(shí)也促進(jìn)了相應EDA工具的蓬勃發(fā)展。
控制算法的極大豐富和微電子領(lǐng)域工藝技術(shù)及EDA工具的飛速發(fā)展,使得我們可以將兩個(gè)領(lǐng)域的應用優(yōu)勢集合在一起,在EDA工具的幫助
2離散PID控制算法
2.1 PID算法
比例、積分、微分(PID)控制是控制系統中技術(shù)最成熟,運用最廣泛的一種控制方式。其基本原理是根據反饋控制系統的偏差值按比例、積分、微分函數關(guān)系進(jìn)行運算,所得結果輸出給執行機構,執行機構根據偏差值的運算結果來(lái)控制被控對象。
e(t)為控制器的輸入即控制系統的給定量與輸出量的偏差;u(t)為控制器的輸出;Kp為比例系數;Tl為積分時(shí)間常數;TD為微分時(shí)間常數。 在連續時(shí)間域中,PID控制器算法的表達式為:
2.2 PID算法的離散化
由于計算機控制只能根據采樣時(shí)刻的偏差值計算控制量,因此需對上式進(jìn)行離散化處理。按模擬PID控制算法式(1),以一系列的采樣時(shí)刻點(diǎn)kT代表連續時(shí)間t,以矩形法數值積分(和式)近似代替積分,以一階向后差分(增量)近似代替微分,即:
可得離散PID表達式:
式中,積分系數K1=KP/Tl,微分系數KD=KPTD,T為采樣周期,k為采樣序號,k=1,2,…,e(k一1)和e(k)分別為第(k一1)和第k時(shí)刻所得的偏差信號。
2.3 PID控制系統框圖
一般控制系統的PID系統控制框圖如圖1所示。其中,source為系統設定值,feedback為系統反饋值,e(t)為反饋誤差,u(t)為PID控制器輸出值。圖中"PID控制算法"框圖子系統即需要我們在算法級用DSP Builder進(jìn)行自頂向下的設計仿真。
3基于DSP Builder的PID控制系統FPGA設計步驟與開(kāi)發(fā)
3.1 Simulink工具箱的A1tera DSP Builder 組件
在利用FPGA進(jìn)行系統的開(kāi)發(fā)應用上,已有了全新的設計工具和設計流程。DSP Builder。就是Altera公司推出的一個(gè)面向DSP之類(lèi)的芯片級開(kāi)發(fā)的系統級工具。他是作為Matlab的一個(gè)Simulink工具箱(Tool Box)出現的,他使得用FPGA設計專(zhuān)用芯片系統完全可以通過(guò)Simulink的圖形化界面進(jìn)行,只要簡(jiǎn)單地對DSP Builder工具箱中的模塊進(jìn)行調用即可。值得注意的是,DSP Builder中的基本模塊是以算法級的描述出現的,易于用戶(hù)從系統或者算法級進(jìn)行理解,甚至不需要十分了解FPGA本身和硬件描述語(yǔ)言。這為傳統控制系統領(lǐng)域的工程師開(kāi)發(fā)基于FPGA/ASIC的可靠控制系統芯片自頂向下的算法級設計提供了便利的條件。
3.2 在Matlab中用DSP Builder完成頂層算法設計
設計方法可以從與硬件完全無(wú)關(guān)的系統級開(kāi)始,首先利用Matlab強大的系統設計、分析能力和DSP Builder提供的模塊(或IP核)完成頂層系統設計及系統仿真測試。
根據圖1的原理,在Matlab中進(jìn)行設計仿真,Simulink頂層設計模型如圖2所示。
在頂層設計模型中,除"PID控制子系統"外,其他部分均采用一般Simulink組件設計。為了在驗證仿真時(shí)更貼近實(shí)際系統,給被控對象加上可調延時(shí)深度的延時(shí)即節。信號發(fā)生器給出系統設定值,對一般實(shí)際應用的控制系統而言,可以使用典型的矩形波,這里用數個(gè)矩形波與正弦波的疊加來(lái)仿真系統設定值的給出。
模型中的"PID控制子系統"實(shí)現PID算法部分。該子系統經(jīng)仿真設計后,將通過(guò)DSP Builder中的SignalCompiler轉換為FPGA的HDL 語(yǔ)言設計,所以這部分除了仿真觀(guān)察所需的示波器等外需全部采用DSP Builder組件來(lái)設計,否則Signal Compiler編譯時(shí)不能識別。
為了簡(jiǎn)單地說(shuō)明如何用DSP Builder自頂向下的設計基于FPGA的控制系統,這里用普通的位置式PID算法進(jìn)行舉例。位置式PID算法的PID控制子系統設計框圖如圖3所示。
在圖3中,輸入誤差信號采用了16位精度。而為了實(shí)現比例、積分、微分系數的精確可調,在這里PID系數采用了8位精度,使系數至少可以精確到百分位。同時(shí),在系統設計過(guò)程中為了盡量避免浮點(diǎn)數的運算,這里將PID系數取成整型,先放大數據值到24位,而在并行加法器運算單元后用IOBus中的總線(xiàn)轉換器單元對累加后的數據進(jìn)行位數轉換,實(shí)現FPGA中的浮點(diǎn)數運算。
Matlab仿真結果如圖4所示。其中,source為系統設定值,feedback為系統反饋值。
波形仿真成功后,需要將Matlab中圖形化的頂層設計模型轉換成能夠被FPGA開(kāi)發(fā)軟件識別的HDL語(yǔ)言描述文件。在圖2中,打開(kāi)Signal Compiler模塊,配置相關(guān)參數,可以將DSP Builder 設計的"PID
3.3在ModelSim中實(shí)現HDL代碼功能仿真
在ModelSim菜單中執行Tools一>Execute Macro,打開(kāi)前述Signal Compiler編譯生成文件tb_System-Name.tcl(VHBL)或tb_vo_SystemName.tcl(Verilog),調試成功后,仿真得到圖5結果。功能仿真結果與Matlab中基本一致,證明頂層設計基本成功。
3.4 在Quartus中實(shí)現FPGA開(kāi)發(fā)
在Quartus中打開(kāi)前述Signal Compiler編譯生成文件SystemName.qpf。設定相應器件Device,在Tcl Scripts中運行SystemName_quartus.tcl配置此工程項目變量,然后編譯。調試成功后,載入SystemName.vec波形仿真文件運行時(shí)序仿真工具,得到圖6結果,與圖5基本相符,證明設計成功。
4結 語(yǔ)
這里給出了一個(gè)最初用于FPGA的系統級設計工具DSP Builder在自動(dòng)控制領(lǐng)域的應用,目前在已出版的國內期刊及論文庫中似乎還沒(méi)有相關(guān)文獻談到這個(gè)交叉領(lǐng)域的應用。
在控制領(lǐng)域里,當各種復雜的新型PID算法應用于實(shí)際控制系統中時(shí),由于傳統單片機與分立元件電路系統的局限性,硬件指標和軟件復雜度都使得新的應用及研發(fā)設計進(jìn)展緩慢;普通FPGA/CPLD沒(méi)計又存在著(zhù)沒(méi)計周期長(cháng)、可重復利用性差等缺點(diǎn)。我們將日益完善的SoC設計工具應用于自動(dòng)控制領(lǐng)域,不僅在算法設計上有了新的方便快捷的設計工具,同時(shí)籍由FPGA硬件本身的優(yōu)點(diǎn)也可以解決單片機及分立元件存在的電磁干擾、系統復雜度高等各類(lèi)問(wèn)題,從而大大提高將各種新型PID算法廣泛應用于實(shí)際工業(yè)控制系統的可行性。
在系統設計中進(jìn)一步的探討:由于設計是從與硬件完全無(wú)關(guān)的Matlab系統級仿真開(kāi)始,因此便于傳統控制領(lǐng)域工程師們可以迅速地將算法級的構思應用于控制系統設計中,從而可以將有限的精力專(zhuān)注于系統級算法的設計,而避免陷入重復繁瑣的電路設計中去,縮短從人腦構思到實(shí)際系統實(shí)現的時(shí)間周期。其中單個(gè)設計MDL文件甚至可以考慮封裝成"算法包"的形式進(jìn)行資源重復利用,以實(shí)現功能單元的便捷增減和縮短產(chǎn)品開(kāi)發(fā)時(shí)間。這里可能存在著(zhù)控制領(lǐng)域里可重用算法及相應"包"的接口標準。這種情況或許和SOC領(lǐng)域IP核的現象有部分類(lèi)似,本文就不再多述。
評論