雷玉錦,陶以政
(中國工程物理研究院計算機應用研究所,綿陽 621900)
在工業自動化領域系統常見的通信編程多為串并口通信編程。計算機串并口編程常用的工具有VC++、Delphi、VB 等開發工具,VC ++由于其適用性廣、效率高,同時也得到Microsoft 系統的最好支持,因此常使用VC++作為開發工具,實現計算機與硬件設備的通信。MATLAB是一套高性能的數值計算和可視化軟件,已廣泛應用于數字信號處理、圖像處理、系統識別等領域[1]。VC ++與Matlab 在軟件開發和數值計算方面各有其優勢,因此,實現VC++與Matlab的混合編程,能夠集中兩者的優勢,提高軟件開發效率[2-3]。
根據結構動力學原理,任何一個結構件的動力學特性都由其自身的質量、剛度、阻尼決定,因此,每一個不同的結構件,其動力學特性都是不同的,而能夠反映結構狀態特性的非參數模型(即頻響函數或傳遞函數、脈沖響應函數),可以通過振動測量的方法得到。通過搭建專用的測試系統,采用聲音掃頻激勵的方法測試結構件的響應,以區分不同結構的狀態。
一般的振動問題都是由激勵、結構體和響應三部分組成,根據研究目的的不同,可以有選擇的選取測試內容,通過采用已知激勵和響應信號來分析結構體的狀態。由于選擇使用聲音進行激勵,因此需要使用聲學換能器將電信號轉換為聲信號,為了保證激勵信號的相位不變,使用SR830 鎖相放大器作為信號發生器,同時也具有接收信號的功能。搭建的測試系統原理框圖如圖1 所示。
其工作原理為:首先由計算機控制鎖相放大器生成正弦掃頻信號經功率放大器放大,驅動換能器(聲波換能器)作用在測試對象上;響應換能器(聲波換能器)接收測試對象產生的共振信號(被測結構件的共振頻率),經電荷放大器對響應信號放大,然后信號傳回鎖相放大器;計算機利用軟件實現與鎖相放大器之間的異步通訊來讀取測試數據。

圖1 測試系統原理框圖
計算機與外設之間需經過接口進行連接,常見的接口類型有并行接口、串行接口、磁盤接口、SCSI接口、USB 接口等,用戶可根據外設的接口類型選擇相應的連接方式。SR830 鎖相放大器與計算機之間使用的是RS232 串口通信,因此重點論述串口通信的實現方法。
目前Win32 中基于VC++的常用串口通信[4-7]方式有MSComm 控件、使用Windows API 函數編程和TAPI 編程等方式。MSComm 控件通過串行端口傳輸和接收數據,為應用程序提供串行通信功能,MSComm 控件在串口編程時非常方便,程序員不必去花時間了解較為復雜的API 函數。MSComm是Microsoft 公司提供的簡化Windows 下串行通信編程的ActiveX 控件,它為應用程序提供了通過串行接口收發數據的簡便方法。
首先打開VC ++6.0 集成開發環境,建立一個基于MFC的應用程序工程,命名為JgZtJcTEST,在VC++ 主界面上點“工程”→“增加到工程”→“Components and Controls”,在出現的對話框中選擇“Microsoft Communication Control”,單擊插入按鈕,即可將通信控件插入該工程,然后在對話框窗口中添加需要的控件,如需要設置的儀器參數Sensitivity,Scan Length,Phase Shift,Reference Mode,Sweep Fraq.Range 等。
MSComm的屬性很多,用戶可根據需要對控件的屬性進行設置。首先要對串口進行初始化,一般來說要完成通信端口號的設定,通信協議的設定,傳輸速率等參數的設定等等。
由于SR830 內嵌有自身的函數命令,只需將設定的參數通過計算機傳給SR830 即可,這里就用到了串口讀寫操作,通過對MSComm 類中的讀寫函數GetInput()和SetOutput()的設定實現信息傳輸。
VC++與Matlab 混合編程有很多種方法[8],目前常用的幾種方法是:VC++調用matlab 引擎、基于數據文件交換的方法、基于COM 技術的方法、使用MATCOM 方法、基于ActiveX 控件的方法和使用Matlab Add-in 等混合編程方法。該測試系統軟件使用基于COM 技術的方法完成VC ++與Matlab的混合編程。
首先使用Matlab 軟件創建數據處理的M 文件(實現對測試數據的繪圖和計算分段相關系數),并將文件保存為shujuhuitu.m。
然后通過Matlab 創建COM 組件,包括配置Matlab COM 編譯器,編譯生成的M 文件,在VC ++的工作目錄下復制編譯產生的.h,.dll,.lib 文件,添加頭文件,添加路徑,完善代碼等等。
通過搭建的測試系統,使用配套的測試軟件(如圖2 所示)完成對Fe,Cu,Al,Wu 四種材料結構件(外形尺寸一樣)的狀態檢測,結果如圖3 所示。

圖2 結構狀態檢測系統軟件

圖3 四種材料結構件狀態檢測結果
從圖3 可以看出,四個結構件雖然外形體積相同,但由于材質不同,其共振頻率存在明顯的差異,計算得到Fe、Cu 兩種材料測試結果的分段相關系數,分別為0.1514,0.9939,0.7627,…,0.2037。相關系數越接近于1,則說明兩種材料越接近,有可能是同種材料;反之則說明是不同種類的材料。
為實現不同材料結構件的狀態檢測,通過使用VC++與Matlab 混合編程的方法,設計了專用的測試系統軟件及數據處理程序,能夠實現對不同材料結構的共振頻率檢測,并能夠應用于狀態識別領域。由于混合編程的方式很多,因此應根據自身工作需要,選擇合適的方式。
[1]王周益,劉繼興,柳長安.VC ++與MATLAB 混合編程研究及開發實例[J].計算機應用研究,2006(5):154-155.
[2]毛文,孫偉嵩.VC ++ 與Matlab 混合編程方法研究[J].電腦知識與技術,2009,5(18):4772-4774.
[3]李健,韓國棟,孫志鵬.VC ++調用Matlab的方法[J].計算機與現代化,2009(7):151-154.
[4]王華,岳麗全,岳志高.MSComm 控件在VC ++6.0 串口通信中的應用[J].長春工程學院學報(自然科學版),2009,10(1):72-73.
[5]吉翔,李永全.VC++下MSComm 控件的串口通信方法[J].電腦開發與應用,2009,22(12):34-35.
[6]陳細軍,譚民.VC 編程中的串口通信技術[J].計算機應用,2001,21(9):94-95.
[7]王正強.VC 中應用MSComm 控件實現串口通信[J].電子測試,2010(5):73-76.
[8]張文軍,萬宇.基于COM的Matlab 混合編程技術常見問題分析[J].計算機與現代化,2011(4):153-155.