由于時變非線性和強耦合的控制系統還沒有精確的數學模型,因而傳統的依賴被控對象數學模型的控制策略及其控制系統的封閉式結構很難對其實施有效控制。神經網絡控制能夠很好地克服系統中模型參數的變化和非線性等不確定因素影響[1],并且隨著可編程片上系統SoPC和大規模現場可編程門陣列FPGA 的出現,為神經網絡控制器的硬件實現提供了新的載體[2]。 本文以Altera FPGA及內含的一個Nios II嵌入式軟核處理器作為上位機來研究機械手臂直流電機速度控制器的片上可編程系統(SoPC)。根據模塊化的設計思想,采用Verilog HDL語言,將神經網絡控制器和其他電路模塊在FPGA芯片內以硬件方式實現。 1 系統總體結構 系統控制部分采用Altera公司的CycloneII EP2C35芯片,取代了傳統的單片機或DSP。FPGA與單片機最大的區別是它的并行性,FPGA能夠并行地采集、處理和輸出信號,是實現神經網絡并行運算的關鍵,對提高系統的運行速度起了很大的作用。其FPGA芯片內集成的Nios II軟核處理器作為上位機,根據末端執行器的速度,采用C++語言進行坐標變換和軌跡規劃,定時向伺服控制系統發出控制命令和運行參數。系統總體框圖如圖1所示。 2 神經網絡速度控制器 2.1 神經網絡參數辨識自適應控制的基本原理 用作自適應控制器的BPNNC,輸入為電機給定轉速y與實際轉速yf相比較得到的轉速誤差e及其變化率ec,輸出為PWM的控制信號 Vp(k)。用作參數辨識的BPNNI的輸入為驅動系統的實際輸入(即BPNNC的輸出值Vp)和電機實際轉速yf,輸出為辯識的系統輸出y*,y*為預測轉速,利用y*代替yf,用作RBFNNC的在線訓練。圖2為參數辨識自適應控制方框圖。 本文所用的兩個BPNN都是雙輸入單輸出網絡,離線訓練的樣本均通過實驗方法獲得。NNC的輸入樣本向量為Xci={e(k),ec(k)},輸出樣本向量為Yci={Vp(k)};NNI的輸入樣本向量XIi={Vp(k-1),yf(k-1)},輸出樣本向量YIi={y*(k)}。網絡參數的學習分兩步進行:先在離線訓練中確定隱層節點的個數及其各層的網絡連接初始權值,再通過在線訓練自適應地調整權值。 兩個BPNN都采用三層網絡。輸入層結點只起信號傳輸作用,隱含層和輸出層神經元的激活函數采用Sigmoid函數: 網絡訓練采用負梯度下降的誤差反向傳播算法。 2.2 BPNN在FPGA中的硬件可重構實現 目前基于SRAM工藝的FPGA具有易失性的特點,每次重新加電后FPGA都要重配置,才能使其進入工作狀態。配置信息通常存放在片外存儲器中,因此導致FPGA器件的資源配置可改變特性剛好可以滿足由上述可知的BP網絡的結構可重構、激活函數可重構和學習算法可重構的要求。 從計算的角度考慮,BP網絡的算法可以分為三個步驟,即前向傳播、誤差反向傳播以及權值更新。但是考慮到神經網絡的復雜性和設計文件的復用性,BP神經網絡的硬件實現必須解決與算法有關的運算速度、計算精度、并行性和可存儲性等問題。本文本著層次化、模塊化的原則,采用由 VerilogHDL硬件描述語言輸入的自上而下的設計方法,把BP神經網絡分為前向運算模塊、誤差反傳及權值調整模塊、權值存儲模塊、權值分配模塊等幾大功能模塊。系統結構如圖3。 將上述各個BP網絡運算模塊組合后就可以實現一整套人工神經網絡。但是僅僅將這些模塊簡單連在一起并不能讓網絡進行工作或訓練,還必須精確設定在每一個時鐘沿對每一個模塊發出正確的使能信號,使每一個模塊處在工作狀態或者停滯狀態,并且還必須有合適的地址信號發生器在正確的時間產生正確的地址信號,使每一次數據都能從正確位置讀出并寫入正確的位置。本文根據BP算法的運算規則設計控制模塊,并且在整個系統中采用一個共用的地址發生器。控制模塊有七個輸出信號,分別是:前向模塊使能信號、學習模塊使能信號、片內RAM及地址產生模塊使能信號、片內RAM寫入控制信號 wen、片內RAM讀出控制信號ren、片外存儲器寫控制信號save、片外存儲器讀控制信號load。因此最后的控制器可以使網絡進行離線訓練時將前向模塊、誤差反傳模塊和相應的控制模塊同時配置到FPGA中進行網絡訓練。當訓練好的網絡正常工作時,只要在FPGA中配置前向模塊和相應的控制模塊就可以高速運行該神經網絡。邏輯工作流程如圖4所示。 2.3 BP網絡控制器的仿真結果 文獻[6]中,通過對一些典型應用的研究和分析發現,16位定點數是不削弱神經網絡能力的最小精度要求。為避免運算規模過于龐大和節約芯片資源,本設計對32位的輸出數據進行了截尾操作,僅取32位中的前16位。 源代碼通過功能仿真和時序仿真測試后綜合生成網表文件,最后在Altera公司的Cyclone II EP2C35器件中實現。BP網絡控制器的QuartusⅡ仿真結果如圖5所示。由圖5可知經過多次訓練后系統輸出值f越來越接近于給定值t,誤差err 變小,小于給定誤差。 3 應用舉例 根據前面的仿真結果,把神經網絡速度控制器應用在一個機械臂上,具體實驗與結果如圖6。 如圖6,運動控制系統模塊接收到速度給定信號和命令后進行速度調節。速度調節器的輸出就是PWM脈寬調制電路的控制信號,之后產生PWM信號傳給伺服電機驅動器驅動電機。速度反饋信號由裝在電機軸上的光電編碼器產生。為了提高反饋信號的分辨率,對光電編碼器的輸出信號進行倍頻,從而提高了編碼器的分辨率,也就提高了速度反饋信號的分辨率。速度調節采用神經網絡參數辨識自適應控制。 驅動對象是一臺直流力矩電機,輸入電壓為DC27V,額定電流2.5A,最大空載轉速600r/min。圖7為空載狀態下轉速指令由0上升到 110 r/min的階躍輸入時的系統跟蹤結果。由圖7可知,系統能快速響應給定轉速的變化,有較好的跟蹤能力和穩定性。 本文運用神經網絡控制方法并且通過FPGA中的硬件實現速度反饋調控電路,采用C++語言在FPGA片內集成的Nios Ⅱ軟核處理器中進行坐標變換和軌跡規劃,構成一個完整的機械臂關節速度控制器的SoPC系統。此方案使控制器系統的集成度變高,增加了系統的抗干擾性和穩定性,同時提高了系統調試效率和控制精度,是現代機器人伺服系統向模塊化、智能化發展的方向。 參考文獻 1. 周兆勇.李鐵才.高橋敏男 基于矢量控制的高性能交流電機速度伺服控制器的FPGA實現 [期刊論文] -中國電機工程學報2004(05) 2. 范崢.劉宏飛.戚新波 交流伺服電動機神經PID自適應控制器的研究與開發 [期刊論文] -微特電機2006(08) 3. 王金明 Verilog HDL 程序設計教程 2005 4. 魏海坤 神經網絡結構設計的理論與方法 2005 5. 李昂.王沁.李占才 基于 FPGA的神經網絡硬件實現方法 [期刊論文] -北京科技大學學報2007(01) 6. Hikawa H A new digital pulse-mode neuron with adjustable activation function 2003(01) 7. 夏長亮 基于 RBF神經網絡的超聲波電機參數辨識與模型參考自適應控制 [期刊論文] -中國電機工程學報2004(07) 作者:河南科技大學 李利歌 閻保定 侯韶劍 姚良沽 來源:單片機與嵌入式系統 2008(10) |