雷玉錦,陶以政
(中國工程物理研究院計(jì)算機(jī)應(yīng)用研究所,綿陽 621900)
在工業(yè)自動(dòng)化領(lǐng)域系統(tǒng)常見的通信編程多為串并口通信編程。計(jì)算機(jī)串并口編程常用的工具有VC++、Delphi、VB 等開發(fā)工具,VC ++由于其適用性廣、效率高,同時(shí)也得到Microsoft 系統(tǒng)的最好支持,因此常使用VC++作為開發(fā)工具,實(shí)現(xiàn)計(jì)算機(jī)與硬件設(shè)備的通信。MATLAB是一套高性能的數(shù)值計(jì)算和可視化軟件,已廣泛應(yīng)用于數(shù)字信號(hào)處理、圖像處理、系統(tǒng)識(shí)別等領(lǐng)域[1]。VC ++與Matlab 在軟件開發(fā)和數(shù)值計(jì)算方面各有其優(yōu)勢(shì),因此,實(shí)現(xiàn)VC++與Matlab的混合編程,能夠集中兩者的優(yōu)勢(shì),提高軟件開發(fā)效率[2-3]。
根據(jù)結(jié)構(gòu)動(dòng)力學(xué)原理,任何一個(gè)結(jié)構(gòu)件的動(dòng)力學(xué)特性都由其自身的質(zhì)量、剛度、阻尼決定,因此,每一個(gè)不同的結(jié)構(gòu)件,其動(dòng)力學(xué)特性都是不同的,而能夠反映結(jié)構(gòu)狀態(tài)特性的非參數(shù)模型(即頻響函數(shù)或傳遞函數(shù)、脈沖響應(yīng)函數(shù)),可以通過振動(dòng)測(cè)量的方法得到。通過搭建專用的測(cè)試系統(tǒng),采用聲音掃頻激勵(lì)的方法測(cè)試結(jié)構(gòu)件的響應(yīng),以區(qū)分不同結(jié)構(gòu)的狀態(tài)。
一般的振動(dòng)問題都是由激勵(lì)、結(jié)構(gòu)體和響應(yīng)三部分組成,根據(jù)研究目的的不同,可以有選擇的選取測(cè)試內(nèi)容,通過采用已知激勵(lì)和響應(yīng)信號(hào)來分析結(jié)構(gòu)體的狀態(tài)。由于選擇使用聲音進(jìn)行激勵(lì),因此需要使用聲學(xué)換能器將電信號(hào)轉(zhuǎn)換為聲信號(hào),為了保證激勵(lì)信號(hào)的相位不變,使用SR830 鎖相放大器作為信號(hào)發(fā)生器,同時(shí)也具有接收信號(hào)的功能。搭建的測(cè)試系統(tǒng)原理框圖如圖1 所示。
其工作原理為:首先由計(jì)算機(jī)控制鎖相放大器生成正弦掃頻信號(hào)經(jīng)功率放大器放大,驅(qū)動(dòng)換能器(聲波換能器)作用在測(cè)試對(duì)象上;響應(yīng)換能器(聲波換能器)接收測(cè)試對(duì)象產(chǎn)生的共振信號(hào)(被測(cè)結(jié)構(gòu)件的共振頻率),經(jīng)電荷放大器對(duì)響應(yīng)信號(hào)放大,然后信號(hào)傳回鎖相放大器;計(jì)算機(jī)利用軟件實(shí)現(xiàn)與鎖相放大器之間的異步通訊來讀取測(cè)試數(shù)據(jù)。
圖1 測(cè)試系統(tǒng)原理框圖
計(jì)算機(jī)與外設(shè)之間需經(jīng)過接口進(jìn)行連接,常見的接口類型有并行接口、串行接口、磁盤接口、SCSI接口、USB 接口等,用戶可根據(jù)外設(shè)的接口類型選擇相應(yīng)的連接方式。SR830 鎖相放大器與計(jì)算機(jī)之間使用的是RS232 串口通信,因此重點(diǎn)論述串口通信的實(shí)現(xiàn)方法。
目前Win32 中基于VC++的常用串口通信[4-7]方式有MSComm 控件、使用Windows API 函數(shù)編程和TAPI 編程等方式。MSComm 控件通過串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能,MSComm 控件在串口編程時(shí)非常方便,程序員不必去花時(shí)間了解較為復(fù)雜的API 函數(shù)。MSComm是Microsoft 公司提供的簡(jiǎn)化Windows 下串行通信編程的ActiveX 控件,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。
首先打開VC ++6.0 集成開發(fā)環(huán)境,建立一個(gè)基于MFC的應(yīng)用程序工程,命名為JgZtJcTEST,在VC++ 主界面上點(diǎn)“工程”→“增加到工程”→“Components and Controls”,在出現(xiàn)的對(duì)話框中選擇“Microsoft Communication Control”,單擊插入按鈕,即可將通信控件插入該工程,然后在對(duì)話框窗口中添加需要的控件,如需要設(shè)置的儀器參數(shù)Sensitivity,Scan Length,Phase Shift,Reference Mode,Sweep Fraq.Range 等。
MSComm的屬性很多,用戶可根據(jù)需要對(duì)控件的屬性進(jìn)行設(shè)置。首先要對(duì)串口進(jìn)行初始化,一般來說要完成通信端口號(hào)的設(shè)定,通信協(xié)議的設(shè)定,傳輸速率等參數(shù)的設(shè)定等等。
由于SR830 內(nèi)嵌有自身的函數(shù)命令,只需將設(shè)定的參數(shù)通過計(jì)算機(jī)傳給SR830 即可,這里就用到了串口讀寫操作,通過對(duì)MSComm 類中的讀寫函數(shù)GetInput()和SetOutput()的設(shè)定實(shí)現(xiàn)信息傳輸。
VC++與Matlab 混合編程有很多種方法[8],目前常用的幾種方法是:VC++調(diào)用matlab 引擎、基于數(shù)據(jù)文件交換的方法、基于COM 技術(shù)的方法、使用MATCOM 方法、基于ActiveX 控件的方法和使用Matlab Add-in 等混合編程方法。該測(cè)試系統(tǒng)軟件使用基于COM 技術(shù)的方法完成VC ++與Matlab的混合編程。
首先使用Matlab 軟件創(chuàng)建數(shù)據(jù)處理的M 文件(實(shí)現(xiàn)對(duì)測(cè)試數(shù)據(jù)的繪圖和計(jì)算分段相關(guān)系數(shù)),并將文件保存為shujuhuitu.m。
然后通過Matlab 創(chuàng)建COM 組件,包括配置Matlab COM 編譯器,編譯生成的M 文件,在VC ++的工作目錄下復(fù)制編譯產(chǎn)生的.h,.dll,.lib 文件,添加頭文件,添加路徑,完善代碼等等。
通過搭建的測(cè)試系統(tǒng),使用配套的測(cè)試軟件(如圖2 所示)完成對(duì)Fe,Cu,Al,Wu 四種材料結(jié)構(gòu)件(外形尺寸一樣)的狀態(tài)檢測(cè),結(jié)果如圖3 所示。
圖2 結(jié)構(gòu)狀態(tài)檢測(cè)系統(tǒng)軟件
圖3 四種材料結(jié)構(gòu)件狀態(tài)檢測(cè)結(jié)果
從圖3 可以看出,四個(gè)結(jié)構(gòu)件雖然外形體積相同,但由于材質(zhì)不同,其共振頻率存在明顯的差異,計(jì)算得到Fe、Cu 兩種材料測(cè)試結(jié)果的分段相關(guān)系數(shù),分別為0.1514,0.9939,0.7627,…,0.2037。相關(guān)系數(shù)越接近于1,則說明兩種材料越接近,有可能是同種材料;反之則說明是不同種類的材料。
為實(shí)現(xiàn)不同材料結(jié)構(gòu)件的狀態(tài)檢測(cè),通過使用VC++與Matlab 混合編程的方法,設(shè)計(jì)了專用的測(cè)試系統(tǒng)軟件及數(shù)據(jù)處理程序,能夠?qū)崿F(xiàn)對(duì)不同材料結(jié)構(gòu)的共振頻率檢測(cè),并能夠應(yīng)用于狀態(tài)識(shí)別領(lǐng)域。由于混合編程的方式很多,因此應(yīng)根據(jù)自身工作需要,選擇合適的方式。
[1]王周益,劉繼興,柳長(zhǎng)安.VC ++與MATLAB 混合編程研究及開發(fā)實(shí)例[J].計(jì)算機(jī)應(yīng)用研究,2006(5):154-155.
[2]毛文,孫偉嵩.VC ++ 與Matlab 混合編程方法研究[J].電腦知識(shí)與技術(shù),2009,5(18):4772-4774.
[3]李健,韓國棟,孫志鵬.VC ++調(diào)用Matlab的方法[J].計(jì)算機(jī)與現(xiàn)代化,2009(7):151-154.
[4]王華,岳麗全,岳志高.MSComm 控件在VC ++6.0 串口通信中的應(yīng)用[J].長(zhǎng)春工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2009,10(1):72-73.
[5]吉翔,李永全.VC++下MSComm 控件的串口通信方法[J].電腦開發(fā)與應(yīng)用,2009,22(12):34-35.
[6]陳細(xì)軍,譚民.VC 編程中的串口通信技術(shù)[J].計(jì)算機(jī)應(yīng)用,2001,21(9):94-95.
[7]王正強(qiáng).VC 中應(yīng)用MSComm 控件實(shí)現(xiàn)串口通信[J].電子測(cè)試,2010(5):73-76.
[8]張文軍,萬宇.基于COM的Matlab 混合編程技術(shù)常見問題分析[J].計(jì)算機(jī)與現(xiàn)代化,2011(4):153-155.