摘 要:設(shè)計(jì)了基于虛擬儀器的鎖相放大器遠(yuǎn)程實(shí)驗(yàn)的軟件系統(tǒng),用LabVIEW軟件編寫了客戶機(jī)與實(shí)驗(yàn)機(jī)程序,實(shí)現(xiàn)了串口與單片機(jī)系統(tǒng)的通信、聲卡采集信號(hào)、TCP/IP網(wǎng)絡(luò)通信等功能。用Linux中的IPtables防火墻技術(shù)實(shí)現(xiàn)實(shí)驗(yàn)機(jī)與服務(wù)器間的端口映射,使得互聯(lián)網(wǎng)上的所有用戶可以通過服務(wù)器訪問實(shí)驗(yàn)機(jī),進(jìn)行遠(yuǎn)程實(shí)驗(yàn)。
關(guān)鍵詞:虛擬儀器; 鎖相放大器; 遠(yuǎn)程實(shí)驗(yàn); 端口映射
中圖分類號(hào):TN911.23; TP337 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)14-0148-04
Design of Lock-in-Amplifier Remote Experiment System Based on Virtual Instrument
DAI Zhi-chao1, XIANG YING1, WU Xian-qiu2
(1.Guangdong Polytechnic Normal University, Guangzhou 510665, China;
2 South China Normal University, Guangzhou 510631, China)
Abstract: The lock-in-amplifier (LIA) remote experiment system based on the virtual instrument was designed. The programs for the client computers and the experiment computer were written with virtual instrument software LabVIEW. And various functions were realized, including communication with the signal chip microcomputer (SCM) through the serial port, real-time acquisition of the voltage by the LIA via the sound card and Internet communication by using TCP/IP technology. The port mapping between the experiment computer and the server was realized with Iptables Netfilter technology in Linux system. So all the users in Internet can accomplish the remote experiment via visiting the experiment computer through server.
Keywords:virtual instrument; lock-in-amplifier; remote experiment; port mapping
0 引 言
20世紀(jì)80年代末美國(guó)成功研制了虛擬儀器,虛擬儀器的發(fā)展標(biāo)志著自動(dòng)測(cè)試與電子測(cè)量?jī)x器領(lǐng)域技術(shù)發(fā)展的一個(gè)嶄新方向[1]。虛擬儀器是利用PC機(jī)的顯示模擬傳統(tǒng)儀器的控制面板,以多種形式表達(dá)輸出檢測(cè)結(jié)果,由PC機(jī)的強(qiáng)大軟件功能實(shí)現(xiàn)信號(hào)數(shù)據(jù)的運(yùn)算、分析、處理,由I/O接口設(shè)備完成信號(hào)的采集、測(cè)量與調(diào)理,從而完成各種測(cè)試功能的一種計(jì)算機(jī)儀器系統(tǒng)[2]。
基于互聯(lián)網(wǎng)的遠(yuǎn)程實(shí)驗(yàn)是遠(yuǎn)程教育的一個(gè)新的發(fā)展方向。遠(yuǎn)程實(shí)驗(yàn)從遠(yuǎn)程計(jì)算機(jī)上進(jìn)行實(shí)驗(yàn)操作和觀察,所得到的實(shí)驗(yàn)結(jié)果與本地得到的完全相同,如同在實(shí)驗(yàn)室真實(shí)操作實(shí)驗(yàn)設(shè)備一樣,突破了時(shí)空限制,極大地提高了實(shí)驗(yàn)教育的靈活性。將虛擬儀器技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合,實(shí)現(xiàn)網(wǎng)絡(luò)化虛擬儀器,并結(jié)合電路其他元件的遠(yuǎn)程控制,可實(shí)現(xiàn)基于虛擬儀器的遠(yuǎn)程實(shí)驗(yàn)[3]。
1 LabVIEW簡(jiǎn)介
LabVIEW(laboratory virtual instrument engineering workbench)是美國(guó)NI公司推出的一種基于G語言(graphics language)的虛擬儀器軟件開發(fā)工具,具有各種功能強(qiáng)大的函數(shù)庫,包括數(shù)據(jù)采集、網(wǎng)絡(luò)通信、串口控制、數(shù)據(jù)顯示及數(shù)據(jù)存儲(chǔ)等[4]。采用旋鈕、開關(guān)、波形圖等構(gòu)造用戶界面。
LabVIEW 提供了強(qiáng)大的網(wǎng)絡(luò)通信功能,TCP/IP(transmission control protocol/internet protocol)協(xié)議是Internet最基本的協(xié)議。函數(shù)庫的Communication子模板中提供了TCP節(jié)點(diǎn),可以實(shí)現(xiàn)客戶機(jī)/服務(wù)器模式下的雙機(jī)通信[4]。
2 遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)總體設(shè)計(jì)
本文開發(fā)了基于虛擬儀器的鎖相放大器遠(yuǎn)程實(shí)驗(yàn)系統(tǒng),實(shí)現(xiàn)了遠(yuǎn)程測(cè)量熱敏電阻溫度特性,遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
用戶打開客戶機(jī),運(yùn)行程序,在虛擬面板上可以設(shè)置鎖相放大器的相位調(diào)節(jié)、積分時(shí)間等參數(shù)[5]。同時(shí),通過虛擬面板可以改變加熱按鈕的狀態(tài),用戶在客戶機(jī)的虛擬面板上點(diǎn)擊加熱按鈕,接通加熱電源,控制繼電器閉合,加熱電路開始給熱敏電阻加熱,該狀態(tài)值通過Internet和服務(wù)器送往實(shí)驗(yàn)機(jī)。實(shí)驗(yàn)機(jī)將接收到的加熱控制狀態(tài)通過串口送入單片機(jī),通過單片機(jī)調(diào)節(jié)繼電器的狀態(tài),從而控制熱敏電阻的加熱狀態(tài)。熱敏電阻的溫度由DS18B20數(shù)字式溫度傳感器測(cè)得,送往單片機(jī)系統(tǒng),通過串口將被測(cè)熱敏電阻溫度值讀入到實(shí)驗(yàn)機(jī)中;音頻輸入電纜采集信號(hào)發(fā)生器輸出的參考方波和橋式電路輸出的電壓值,經(jīng)聲卡模/數(shù)轉(zhuǎn)換器送入實(shí)驗(yàn)機(jī)[6]。實(shí)驗(yàn)機(jī)中的被測(cè)信號(hào)通過服務(wù)器和Internet反饋給客戶機(jī)。用戶通過虛擬鎖相放大器和虛擬溫度計(jì)進(jìn)行觀察和測(cè)量,得到熱敏電阻溫度特性曲線。
圖1 遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)框圖
3 遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)的軟件設(shè)計(jì)
遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)采用C/S(client/server)模式,其典型運(yùn)作過程為:
(1) 服務(wù)器監(jiān)聽相應(yīng)端口的輸入;
(2) 客戶機(jī)發(fā)出一個(gè)請(qǐng)求;
(3) 服務(wù)器接收到此請(qǐng)求;
(4) 服務(wù)器處理此請(qǐng)求,并把結(jié)果返回給客戶機(jī);
(5) 重復(fù)上述過程,直至完成一次會(huì)話過程。
客戶機(jī)與實(shí)驗(yàn)機(jī)的通信利用TCP/IP協(xié)議實(shí)現(xiàn)。TCP協(xié)議是一個(gè)可靠的、基于連接的協(xié)議,能保證網(wǎng)絡(luò)間的可靠傳輸。C/S模式要分別編寫客戶機(jī)和實(shí)驗(yàn)機(jī)程序,采用TCP協(xié)議可正確傳送控制命令和數(shù)據(jù)[7]。
鎖相放大器遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)需要實(shí)現(xiàn)遠(yuǎn)程控制繼電器的狀態(tài),聲卡采集輸入信號(hào)和參考信號(hào),串口采集溫度值,并用鎖相放大器測(cè)量熱敏電阻輸出電壓,用虛擬溫度計(jì)測(cè)量熱敏電阻的溫度。在LabVIEW環(huán)境下分別編寫客戶機(jī)和實(shí)驗(yàn)機(jī)程序,實(shí)現(xiàn)測(cè)量熱敏電阻溫度特性曲線遠(yuǎn)程實(shí)驗(yàn)。
3.1 客戶機(jī)程序
3.1.1 客戶機(jī)程序的用戶界面
客戶機(jī)程序的用戶界面如圖2所示,集成了鎖相放大器的全部功能以及虛擬溫度計(jì),波形圖實(shí)時(shí)顯示了鎖相放大器工作過程中各個(gè)中間過程的波形。熱敏電阻的溫度值也實(shí)時(shí)顯示在虛擬溫度計(jì)上。
用戶點(diǎn)擊加熱按鈕,接通加熱電源,其狀態(tài)值經(jīng)由網(wǎng)絡(luò)送往實(shí)驗(yàn)機(jī),從而改變實(shí)驗(yàn)室內(nèi)測(cè)溫電路的繼電器狀態(tài),加熱電路開始對(duì)熱敏電阻進(jìn)行加熱。實(shí)驗(yàn)電路中橋式電路的輸出信號(hào)和熱敏電阻的溫度值,經(jīng)由網(wǎng)絡(luò)反饋給客戶機(jī),用戶通過虛擬儀器面板觀察各個(gè)點(diǎn)波形的顯示,同時(shí)讀取溫度值,完成熱敏電阻溫度特性測(cè)量。
服務(wù)器一欄設(shè)置為實(shí)驗(yàn)室內(nèi)服務(wù)器的IP地址,剩余時(shí)間一欄顯示用戶可用的時(shí)間。本實(shí)驗(yàn)控制真實(shí)的實(shí)驗(yàn)元件,每次只能有一位用戶操作。規(guī)定每位用戶的實(shí)驗(yàn)時(shí)間為30 min。30 min后,此客戶機(jī)與實(shí)驗(yàn)機(jī)的連接自動(dòng)斷開。
圖2 客戶機(jī)程序的用戶界面
3.1.2 客戶機(jī)軟件框圖程序
軟件框圖程序如圖3所示。程序分別設(shè)置了3個(gè)While循環(huán)結(jié)構(gòu),分別完成讀取溫度值、讀取電壓值以及發(fā)送控制繼電器狀態(tài)的功能。循環(huán)中止的條件為下列三者之一:用戶點(diǎn)擊了“退出”按鈕;用戶連接時(shí)間超過了30 min;實(shí)驗(yàn)過程中TCP連接出錯(cuò),如實(shí)驗(yàn)機(jī)程序先行中止,或系統(tǒng)錯(cuò)誤引起連接中止。
圖3 遠(yuǎn)程實(shí)驗(yàn)客戶端程序
客戶端程序的軟件部分采用3個(gè)獨(dú)立的While循環(huán),每個(gè)端口分別設(shè)置了獨(dú)立的服務(wù)器端口,依次是2322,2323和2324。
(1) 讀取反饋的實(shí)驗(yàn)數(shù)據(jù)。
對(duì)于數(shù)據(jù)接收,用2個(gè)TCP Read節(jié)點(diǎn)讀取實(shí)驗(yàn)機(jī)發(fā)送的聲卡采集的數(shù)據(jù)長(zhǎng)度和字符串?dāng)?shù)據(jù)。
2322端口接收串口讀取的溫度值,因?yàn)闇囟戎挡杉瘯r(shí)已經(jīng)轉(zhuǎn)換為4位BCD碼表示的十進(jìn)制數(shù),因此接收時(shí)讀取的字長(zhǎng)設(shè)置為4,讀取的溫度值送入虛擬溫度計(jì)并實(shí)時(shí)顯示出來。
2323端口對(duì)應(yīng)接收聲卡讀取的電壓值,因?yàn)槭亲蟆⒂衣暤栏鞑杉宦沸盘?hào),因此設(shè)置了2個(gè)Sequence結(jié)構(gòu),其中Sequence0接收左聲道讀取的橋式電路輸出信號(hào),送入鎖相放大器的信號(hào)輸入端;Sequence 1接收右聲道讀取參考方波,送入鎖相放大器的參考信號(hào)輸入端。同時(shí)將讀取的波形實(shí)時(shí)顯示在用戶界面上。
(2) 發(fā)送繼電器控制信號(hào)。
2324端口發(fā)送加熱控制電路的繼電器狀態(tài)值,用戶可以在虛擬面板上改變加熱按鈕的狀態(tài),并通過服務(wù)器反饋回實(shí)驗(yàn)機(jī),從而控制加熱電路中繼電器的狀態(tài)[8]。加熱按鈕其處于不同的位置時(shí),向網(wǎng)絡(luò)連接發(fā)送不同的命令字。將命令字放在一個(gè)CASE結(jié)構(gòu)中,這樣便于實(shí)現(xiàn)用戶將加熱按鈕置于不同的位置時(shí),發(fā)送不同的命令字。為有效傳送數(shù)據(jù),采用2個(gè)TCP Write節(jié)點(diǎn),第1個(gè)節(jié)點(diǎn)發(fā)送字符長(zhǎng)度,第2個(gè)節(jié)點(diǎn)發(fā)送字符數(shù)據(jù)。
3.2 端口映射
服務(wù)器平臺(tái)上安裝Linux操作系統(tǒng)。利用其IPtables防火墻技術(shù)進(jìn)行端口映射,使得互聯(lián)網(wǎng)上的計(jì)算機(jī)可以通過訪問服務(wù)器,間接訪問實(shí)驗(yàn)機(jī),進(jìn)行遠(yuǎn)程實(shí)驗(yàn)[9]。端口號(hào)的選擇要避開系統(tǒng)保留端口,即0~1023。假設(shè)實(shí)驗(yàn)機(jī)程序的監(jiān)聽端口為2322。在IPtables中,將服務(wù)器的2322端口映射到實(shí)驗(yàn)機(jī)。外界計(jì)算機(jī)訪問服務(wù)器的2322端口時(shí),若實(shí)驗(yàn)機(jī)程序正在2322端口監(jiān)聽,與客戶機(jī)的TCP連接就會(huì)建立,客戶機(jī)與實(shí)驗(yàn)機(jī)通信,傳送控制命令與實(shí)驗(yàn)數(shù)據(jù)。
3.3 實(shí)驗(yàn)機(jī)程序
3.3.1 實(shí)驗(yàn)機(jī)程序的用戶界面
實(shí)驗(yàn)機(jī)程序的用戶界面如圖4所示。波形顯示圖實(shí)時(shí)監(jiān)測(cè)聲卡采集的信號(hào);日志文件用于記錄與實(shí)驗(yàn)機(jī)建立連接的客戶數(shù)目、客戶地址和連接時(shí)間。Input format 設(shè)置了聲卡采樣的數(shù)字聲音格式;數(shù)據(jù)采集為立體聲格式,樣本位數(shù)為16 b;為了防止數(shù)據(jù)溢出,遠(yuǎn)程數(shù)據(jù)傳送時(shí)A/D轉(zhuǎn)換率采用11 025 Hz[10]。Constant為聲卡采集數(shù)據(jù)的縮小倍數(shù)。溫度顯示為串口采集到的熱敏電阻的溫度。
圖4 遠(yuǎn)程實(shí)驗(yàn)的實(shí)驗(yàn)機(jī)用戶界面
實(shí)驗(yàn)機(jī)程序?qū)崿F(xiàn)如下功能:
實(shí)驗(yàn)機(jī)接收用戶發(fā)送來的加熱信號(hào),通過串口送往單片機(jī)系統(tǒng),由單片機(jī)根據(jù)預(yù)先設(shè)置的指令驅(qū)動(dòng)繼電器,從而控制熱敏電阻的加熱狀態(tài)。熱敏電阻的溫度值由串口采集,送入實(shí)驗(yàn)機(jī);音頻輸入電纜左聲道采集熱敏電阻阻值改變后橋式電路的輸出電壓,右聲道采集信號(hào)發(fā)生器輸出的參考方波,通過聲卡送入實(shí)驗(yàn)機(jī)。實(shí)驗(yàn)機(jī)將采集到的所有信號(hào)經(jīng)由服務(wù)器和Internet反饋給客戶。
3.3.2 實(shí)驗(yàn)機(jī)軟件框圖程序
實(shí)驗(yàn)機(jī)框圖程序如圖5所示。實(shí)驗(yàn)機(jī)程序的軟件部分整體采用一個(gè)While循環(huán),其中又包含2個(gè)While循環(huán)。其中一個(gè)While循環(huán)中設(shè)置了一個(gè)順序結(jié)構(gòu),Sequence 0中包含了2322監(jiān)聽端口,用于監(jiān)聽串口讀取溫度值;Sequence 1中包含了2323端口,用于監(jiān)聽聲卡讀取電壓值。
圖5 遠(yuǎn)程試驗(yàn)實(shí)驗(yàn)機(jī)框圖程序
另外一個(gè)While循環(huán)中包含了一個(gè)2324 監(jiān)聽端口,用于接收客戶機(jī)發(fā)送來的當(dāng)前繼電器狀態(tài)值。當(dāng)接收到閉合繼電器控制指令時(shí),發(fā)送“30H”到單片機(jī),控制繼電器閉合;當(dāng)接收到斷開繼電器控制指令時(shí),發(fā)送“31H”到單片機(jī),控制繼電器斷開。單片機(jī)與實(shí)驗(yàn)機(jī)通過串行口通信,接收計(jì)算機(jī)發(fā)送的控制指令。
(1) 實(shí)驗(yàn)機(jī)與單片機(jī)的串行通信。
實(shí)驗(yàn)機(jī)與單片機(jī)的通信利用LabVIEW中的VISA庫(virtual instrument software architecture)實(shí)現(xiàn)。VISA作為新一代程控儀器I/O軟件規(guī)范,在接口無關(guān)性、平臺(tái)獨(dú)立性、可擴(kuò)展性和功能上都有很大提高。本文單片機(jī)帶有RS 232接口,計(jì)算機(jī)通過串口與之通信。
單片機(jī)通過串口與實(shí)驗(yàn)機(jī)相連,VISA Configure Serial Port節(jié)點(diǎn)中VISA Resouce Name 設(shè)為ASRL4:INSTR。參數(shù)與單片機(jī)的設(shè)置一致:傳輸速率4 800 b/s,起始位1位,數(shù)據(jù)位8位,停止位1位,無校驗(yàn)位。
(2) 聲卡采集電路信號(hào)。
用SI Read節(jié)點(diǎn)讀取聲卡采集的電路信號(hào),Stereo 16 b端口顯示讀取的數(shù)據(jù)。Index Array函數(shù)分別提取0列(左聲道)和1列(右聲道)的信號(hào),縮小一定倍數(shù)后,經(jīng)Type Cast函數(shù)轉(zhuǎn)為字符串?dāng)?shù)據(jù):Sequence 0發(fā)送音頻電纜左聲道采集的數(shù)據(jù),即熱敏電阻兩端的電壓;Sequence 1發(fā)送音頻電纜右聲道采集的數(shù)據(jù),即信號(hào)發(fā)生器輸出的參考方波。信號(hào)波形同時(shí)顯示在前面板波形顯示器中顯示。
4 結(jié) 語
本文開發(fā)了基于虛擬儀器的鎖相放大器遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)。用LabVIEW軟件編寫了客戶機(jī)與實(shí)驗(yàn)機(jī)程序,實(shí)現(xiàn)了遠(yuǎn)程測(cè)量熱敏電阻溫度特性曲線。 與傳統(tǒng)實(shí)驗(yàn) 相比,只需要一臺(tái)計(jì)算機(jī)、一臺(tái)信號(hào)發(fā)生器以及必要的硬件實(shí)驗(yàn)電路即可進(jìn)行實(shí)驗(yàn)。在此基礎(chǔ)上結(jié)合網(wǎng)絡(luò)技術(shù)和儀器控制技術(shù),實(shí)現(xiàn)遠(yuǎn)程實(shí)驗(yàn)。
參考文獻(xiàn)
[1]何光宏,陶純匡.虛擬現(xiàn)實(shí)、虛擬儀器及其對(duì)大學(xué)物理實(shí)驗(yàn)建設(shè)的影響[J].大學(xué)物理實(shí)驗(yàn),2003,16(2):17-21.
[2]鄧炎,王磊.LabVIEW7.1測(cè)試技術(shù)與儀器應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.
[3]丁曉紅.遠(yuǎn)程虛擬電子實(shí)驗(yàn)室的軟件技術(shù)研究[ D] .大連:大連理工大學(xué),2003.
[4]楊樂平,李海濤,楊磊.LabVIEW程序設(shè)計(jì)與應(yīng)用[M].2版.北京:電子工業(yè)出版社,2004.
[5]陳家勝.基于虛擬儀器技術(shù)的程控鎖相放大器的設(shè)計(jì)[J].電子技術(shù),2001,28(11):40-42.
[6]呂紅英.基于聲卡的虛擬儀器及其在電磁學(xué)遠(yuǎn)程實(shí)驗(yàn)教學(xué)中的應(yīng)用[D].廣州:華南師范大學(xué),2005.
[7]楊樂平,李海濤,楊磊,等.LabVIEW高級(jí)程序設(shè)計(jì)[M] .北京:清華大學(xué)出版社,2004.
[8]戴逸松.微弱信號(hào)檢測(cè)方法與儀器[M].北京:國(guó)防工業(yè)出版社,2004.
[9]吳先球,蔣珍美,林美環(huán),等.數(shù)字信號(hào)平均實(shí)驗(yàn)遠(yuǎn)程教學(xué)系統(tǒng)的研制[J].物理,2003,32(3):205-208.
[10]LEVIN M H. Use of a soundcard in teaching audio frequency and analog modem communications [J]. ACM SIGCSE Bulletin, 1999, 31(3):79-83.