王曉華,王有松
(1.西門子(中國)有限公司西門子中國研究院,北京 100102;2.銀河航天(北京)通信技術有限公司衛星研發部,北京 100085)
非線性動態系統辨識在基于模型的控制中得到了廣泛的應用。其中,神經網絡具有良好的非線性映射能力、容錯能力、自學習自適應能力和并行處理信息的能力[1],是非線性動態系統的一種有效辨識方法[2-5]。但很多實際應用的動態系統,比如電液伺服系統,存在階數高、非線性特性強等特點,因此尋求適當的神經網絡結構以解決高度復雜的動態系統辨識,是控制理論研究的一個重要分支,對控制系統設計具有重要作用[6-9]。
神經網絡具有巨量信息并行處理和大規模平行計算的特點。FPGA是1980年代中期發展起來的新型高性能可編程邏輯器件,可以實現并行任務的同步執行,快速地決策以及精確地定時和同步,而且還可以在硬件上執行定制算法[10]。因此,在FPGA的環境下實現神經網絡的系統辨識將極大縮短網絡運行時間,提高系統辨識性能,具有傳統方法不可比擬的優勢[11-13]。但是通常開發FPGA需要掌握VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)等編程知識,開發神經網絡應用具有較大的難度。NI公司將FPGA技術融入LabVIEW測試系統,可以使用LabVIEW圖形化編程定義FPGA芯片上的邏輯功能,因此不需要任何有關底層硬件描述語言,就能夠利用FPGA技術實現復雜的神經網絡,降低系統開發難度[13-14]。
遞歸模糊神經網絡引入了動態環節能夠自動記憶部分歷史信息,更適合非線性動態系統的辨識與控制[15-16]。但在實際應用中,發現它學習速度較慢,而且收斂到一定精度時就會停止收斂,甚至出現振蕩。對于一個時變系統,系統在一個時刻的輸出往往與它之前的輸出相關,如果在遞歸模糊網絡中引入輸出層的遞歸信號與隱層的遞歸信號以及輸入信號共同作為系統隱層的總輸入,應該能取得更好的學習效果。基于以上想法,設計了一種新型的神經網絡,稱為輸出反饋遞歸模糊神經網絡(Output Feedback Recurrent Fuzzy Neural Network,OFRFNN)。本文作者利用該神經網絡結合動態反向傳播算法(動態BP算法),在數字系統FPGA中實現系統辨識模型,對舵機位置伺服系統進行在線模型辨識。實驗證明了該系統滿足工業應用中高精度、高實時、高確定性的要求。
OFRFNN結構如圖1所示。第一層為輸入層,該層的結點直接與輸入量x連接,將輸入值傳送到下一層。

(1)
第三層的每個結點代表一條模糊規則,采用sum-product推理。規則層對應的輸出為
(2)
第四層為歸一化處理層,加快訓練網絡的收斂性,滿足網絡穩定性和魯棒性要求。該層的輸出為
(3)
第五層是輸出層,實現清晰化計算。
(4)

(5)
式中:yd(k)、y(k)和e(k)分別為k時刻被辨識系統的輸出、遞歸模糊神經網絡的輸出和辨識誤差。
由梯度下降法可得該遞歸模糊神經網絡辨識器的自適應學習算法如下:
(6)
式中:η為學習速率,j=l=1,2,…,m。上式中具體推導如下:
(7)
結構單元到隱層的連接權ωjl的學習算法展開為
(8)
式中:
輸出連接層到隱層權值ωyl的學習算法展開為
(9)
式中:
(10)
式中:
參數σj的學習算法展開為
(11)
式中:

FPGA的并行運行方式很好地滿足了神經網絡的并行計算需求,極大地縮短了網絡的計算時間。此外,FPGA的可重復配置特性和靈活性能夠滿足神經網絡反復學習、權值調整甚至結構變化的要求,因此基于FPGA的神經網絡系統設計已經成為新的研究熱點[11,14]。
此系統采用美國NI公司的高性能FPGA控制器,利用LabVIEW圖形化語言實現OFRFNN辨識系統。在FPGA中各個網絡層內的神經元數據同時計算并行處理,但在各個網絡層之間則是串行計算。因此,在FPGA中可以保持神經網絡中數據流的特定屬性[14,17]。神經網絡系統辨識在FPGA中的實現如圖2所示。
在使用FPGA執行神經網絡時應注意精度、并行性、可配置特性等。為了改進神經網絡設計的通用性,將動態遞歸神經網絡分為2個部分:前向單元和學習單元。前向單元完成信號處理和權值存儲的功能,主要包括權值的計算、積累以及激活函數的實現等;反向學習單元完成信號傳輸功能,包括學習算法的實現以及程序的并行運算。
通過LabVIEW FPGA模塊創建FPGA VI,將神經網絡的實時辨識程序在FPGA Target中實現。其中FPGA VI包括主VI和子VI,神經網絡激活函數、相應導函數以及權值調整學習算法等在子VI中實現,通過主VI調用子VI。在創建RFNN的FPGA VI程序后,將代碼編譯成為可以在NI RIO硬件設備上運行的程序。另外LabVIEW FPGA平臺提供了FPGA實時程序與Windows圖形用戶程序的交互功能,通過創建HOST VI實現在RIO設備的FPGA和主機處理引擎之間的數據傳輸。由于HOST VI與FPGA VI的運行方式是異步的,此系統采用DMA FIFOs的方法實現這2個VI間的信息交換和應用程序同步。圖3所示是創建一個FPGA應用程序所經歷的開發過程。
利用LabVIEW 2011的LabVIEW FPGA模塊實現遞歸模糊神經網絡的過程中,應當注意硬件資源的充分利用以及程序運行在設定的時間內。單周期定時環路(Single Cycle Timed Loop,SCTL)是LabVIEW FPGA中一個特殊結構,生成一個更為優化的電路圖,以期望達到在一個時鐘(脈沖)周期內執行完所有邏輯電路分支。因此利用SCTL可以優化程序降低FPGA中不必要資源的浪費并且縮短了程序的執行時間。此外,FPGA不支持浮點數,應將浮點數轉換為定點數進行運算。
實驗以舵機位置伺服系統為辨識對象,其最大輸出角位移是±45°。根據神經網絡隱層神經元數量的選擇規則和電液位置伺服系統的階數及特點,選用基于FPGA的三層改進的遞歸模糊神經網絡對舵機位置伺服系統進行在線辨識。以計算機控制系統的控制電壓值作為神經網絡的輸入,舵機馬達的輸出作為神經網絡的期望值。采用正向動力學辨識結構如圖4所示。
文中數字系統采用NI PXIe系列控制器和板卡,其中的FPGA板卡為NI PXI-7852R,是Xilinx公司推出的Virtex-5 LX50系列。整套硬件辨識系統如圖5所示。
Virtex-5LX50 FPGA性能優越,資源豐富,具有7 200個可編程邏輯模塊,每個模塊中具有4個查找表和4個觸發器,并且使用雙六輸入查找表。但實現三層遞歸模糊神經網絡仍需要對程序進行優化,減少硬件資源的使用,提高系統的辨識效率。其次,將編譯成功的二進制文件下載到硬件7852R中,完成下位機程序的執行。最后,上下位機通過DMA FIFO進行通信,用戶通過HOST VI實現人機交互、在線監測、數據記錄等功能,從而完成整套系統的開發。
在舵機位置伺服系統輸出方波和三角波的情況下分別進行模型辨識實驗。圖6所示為方波跟蹤時的實驗輸出與辨識結果,圖7所示為三角波跟蹤時的實驗輸出與辨識結果。
由圖7和圖8可知:三層OFRFNN對位置伺服系統的學習速度快、辨識精度高、穩定性強。主要原因是模糊邏輯適于表達模糊和定性知識,推理方式類似于人的思維模式,神經網絡具有自學習、自適應的能力,吸收二者的長處在模型辨識中具有更好的性能。并且在靜態結構的基礎上引入隱層和輸出層的反饋結構,使得OFRFNN每一時刻系統的輸出不僅與由當前時刻輸入有關,還與過去的數值有關,反映了系統的動態過程,且運算速度較快,更適合于非線性動態系統的辯識。
實驗中,測量基于FPGA的OFRFNN對舵機位置系統辨識過程的運行時間,即在數據采集之前和系統辨識輸出之后分別加入定時器,測得從數據采集到系統辨識權值調整再到數據輸出的執行時間僅為19 μs,并且辨識周期穩定無波動,完全滿足在線系統辨識高實時性、高確定性的要求。
文中研究了基于FPGA的遞歸模糊神經網絡對舵機位置伺服系統的辨識。首先給出了一種遞歸模糊神經網絡和動態BP學習算法,其次利用LabVIEW開發環境實現基于FPGA的非線性系統辨識以及運行在Windows上的人機交互數據管理等,最后將編譯無誤的FPGA程序下載到硬件PXI-7852R中完成整套在線辨識數字系統的開發。利用FPGA的靈活性、高可靠性和可定制性,結合LabVIEW圖形化編程,使系統設計簡單靈活、可靠性高、實用性強。通過實驗證明,采用動態BP算法的RFNN具有辨識精度高、適應性強、網絡學習算法收斂快等優點,而且OFRFNN在FPGA上實現完全并行的運行方式極大提高了系統辨識速度,滿足高實時、高確定系統在線辨識的要求。因此,基于FPGA的遞歸模糊神經網絡為非線性動態系統辨識的應用提供了一種新方向。