沈楓 王孟蓮,2 梁樹甜
(1. 中國船舶重工集團公司第七一二研究所,武漢430064; 2. 武漢理工大學能源與動力工程學院,武漢430063)
如圖 1所示,診斷研究系統由 4個部分組成:上位機監視模塊、采集模塊、時序模塊及三相整流橋。其中三相整流橋為被診斷對象,診斷系統取其母線電壓波形為診斷輸入數據源;時序模塊根據母線電壓波形產生周期性方波脈沖,使得采集模塊能采集一個完整周期內得母線電壓數據;采集模塊以一定的采集頻率采集母線電壓以及時序模塊產生的周期性方波脈沖信號;上位機監視模塊完成數據的選取、處理,進行神經網絡的初始化、訓練,最終實現故障診斷。
如圖2所示,上位機監視模塊由人機界面、樣本管理模塊、數據篩選模塊、數據緩沖模塊、采集訪問模塊、MATLAB訪問模塊以及神經網絡等子模塊組成。其中,神經網絡采用三層 BP神經網絡,用于診斷整流橋故障;采集訪問模塊異步獲取采集模塊采集的數據;采集訪問模塊和MATLAB訪問模塊屏蔽對采集模塊、神經網絡訪問細節;數據緩沖模塊緩沖采集訪問模塊獲取的采集數據;數據篩選模塊對采集數據進行篩選形成樣本并向上提交個樣本管理模塊;樣本管理模塊管理神經網絡所需樣本;人機界面負責響應用戶輸入、顯示采集數據及診斷結果。

圖1 整流橋故障診斷研究系統體系結構
如圖 3所示,人機界面主要分為兩個部分:MATLAB操作區域及數據采集區,前者用于設置及顯示樣本信息、MATLAB執行結果信息,神經網絡操作設置,后者用于設置采集參數,顯示采集結果。

圖2 上位機監控模塊體系結構

圖3 上位機監視模塊人機界面
MATLAB是由美國 MATHWORKS公司研發的數學軟件,具有數值分析、矩陣運算、信號處理和圖形顯示等功能,其運算建立在向量數組和矩陣的基礎上,界面友好、開放性強,成為科學研究、工程設計及眾多學科領域應用最為廣泛的工具之一。但 MATLAB是一種解釋性語言,相比C/C++編譯、連接生成的執行代碼而言,其代碼執行速度較慢。另外,MATLAB人機界面交互性較差。Visual C++是 Microsoft推出的集成開發環境,是目前應用最為廣泛的基于Window平臺的 C++集成開發環境。Visual C++除開發效率高,還可根據用戶要求開發出豐富、友好的人機界面。
采用 Visual C++與 MATLAB混合編程來訪問 MATLAB的常用方法有以下幾種:調用MATLAB引擎、使用 mcc編譯器、利用Matcom技術實現Visual C++對MATLAB函數的調用[2,,3,4]。
MATLAB 引擎是基于 C/S(Client/Server)模式,結合 ActiveX自動化和 DDE技術實現Visual C++與 MATLAB之間的動態數據交換。采用Visual C++開發的應用程序是客戶端,負責用戶接口和MATLAB訪問請求,MATLAB屬于服務器端,向客戶端提供訪問服務,MATLAB引擎建立 Visual C++應用程序和 MATLAB之間的連接,完成數據動態交換。
在 MATLAB中,能通過設置相應的編譯器(如 C/C++編譯器等),將 MATLAB中.m程序文件編譯成與編譯環境相對應的執行代碼。因此,通過將MATLAB編譯器設置為Visual C++的編譯器,通過 mcc命令,MATLAB能將大部分的.m函數文件編譯成動態鏈接庫供 Visual C++調用。
Matcom是Mathworks公司推出的MATLAB到 C++的編譯開發軟件平臺,其編譯器可將MATLAB源代碼譯成同等功能的 C++代碼。Matcom 的 C++矩陣庫 Matrix<LIB>包含了六百多個經過測試的函數,包括線性代數、多項式處理、信號處理以及圖像處理等方面。相比前兩種混合編程方式,其最大優點在于可脫離MATLAB環境獨立執行。
通過 MATLAB引擎方式來進行混合編程雖然需要 MATLAB環境,但是它可以充分利用MATLAB的功能,包括調用工具箱函數和圖形函數,且成本較低,因此,本文主要利用這種方法進行訪問MATLAB。

表1 訪問MATLAB常用函數
首先,在 Visual C++工程中,添加mclmcrrt.lib libmx.lib libmat.lib mclmcr.lib libmex.lib libeng.lib等庫文件,在調用MATLAB引擎的編譯單元中添加頭文件 engine.h、mclmcr.h、mclcppclass.h及 matrix.h。
然后,通過調用以下幾個 MATLAB引擎提供的函數來訪問MATLAB,見表1。
BP神經網絡是指反向傳播神經網絡.它是應用最廣泛、效果最好的神經網絡之一。BP神經網絡模擬人腦的學習過程,讓網絡存儲變量之問非線性關系,通過大量樣本數據訓練,由輸入層輸入變量經隱含層逐層處理后向輸出層傳輸,在反向傳播過程中不斷修正和檢驗變量之間的連接權重,包括輸入層到隱含層的權重和隱含層到輸出層的權重),達到一個理想的收斂后,得到輸出變量[5]。然后將需測試的樣本數據輸入至該模型中,得到數據判斷結果。
本文采用三層BP神經網絡的結構為6-7—6,網絡結構如圖 4所示,其中隱層有 7個神經元,傳遞函數為tansig函數,輸出層有6個神經元,傳遞函數為purelin函數。
以圖4描述的三層BP神經網絡為實驗網絡采集樣本訓練,最大訓練次數取 8000,訓練誤差為10-5,信息更新速度為10。

圖4 三層BP神經網絡

圖5 1號晶閘管故障采樣波形
如圖 5所示,采集電路產生周期性脈沖方波,每兩個相鄰的方波上升沿標識一個完整采樣周期。采集模塊在一個周期內取 20個采集數據點,每個數據點間隔時間相同。以此方式采集 6種不同晶閘管故障波形,組成一個 20×6樣本矩陣作為神經網絡的訓練樣本。
如圖 6所示,神經網絡訓練短,收斂速度快,訓練精度高。
采集3號晶閘管故障波形作為診斷輸入,送入神經網絡,診斷正確,依次采集其它晶閘管故障波形送入神經網絡均診斷正確。

圖6 BP神經網絡訓練結果
但調整到其他電壓等級后,神經網絡診斷準確率出現下降。再次送入對應電壓等級的樣本訓練神經網絡時,在達到同樣的訓練誤差的情況下,收斂速度更快,如圖7所示。經過訓練后,神經網絡診斷準確率得到提升。
綜上分析研究發現,針對不同電壓等級,采集足夠的樣本訓練三層 BP神經網絡,經過訓練的神經網絡診斷三相整流橋發生的晶閘管故障,其診斷的準確性較高,且再次訓練神經網絡收斂速度快,訓練效果好。

圖7 神經網絡多次訓練結果
[1]陳賢明, 呂宏水, 劉國華等. 三相整流橋 PFC電路拓撲的分析及控制. 電力電子, 2009, 6.
[2]蘇金明, 劉宏, 劉波等. MATLAB高級編程. 北京:電子工業出版社, 2005年.
[3]劉維. 精通 MATLAB與 C/C++混合程序設計. 北京: 北京航空航天大學出版社, 2008.
[4]劉文濤, 孫文愛. VC++與MATLAB混合編程的研究與實現. 微計算機信息, 2008, 24(5-3): 257~258.
[5]樓順天, 施陽編著. 基于 MATLAB的系統分析與設計――神經網絡. 西安電子科技大學出版社.2000: 9~14.