羅 建, 雷 勇,黃 昊,李 蓉,張 茜
(四川大學(xué) 電氣信息學(xué)院,四川 成都 610065)
遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)是指將虛擬儀器技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)相結(jié)合,用戶可對實(shí)驗(yàn)設(shè)備進(jìn)行遠(yuǎn)程控制,并對數(shù)據(jù)進(jìn)行遠(yuǎn)程采集和分析的實(shí)驗(yàn)系統(tǒng)。利用遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)不僅教師可以在課堂上用互聯(lián)網(wǎng)直觀而又生動地給學(xué)生演示各種教學(xué)實(shí)驗(yàn),方便學(xué)生的理解,學(xué)生也可以突破時(shí)間和空間的限制在本地計(jì)算機(jī)上完成各種實(shí)驗(yàn),獲得與真實(shí)實(shí)驗(yàn)一樣的體會,從而豐富感性認(rèn)識,加深對教學(xué)內(nèi)容的理解。該實(shí)驗(yàn)系統(tǒng)不僅為異地實(shí)驗(yàn)和學(xué)術(shù)交流提供了平臺, 也很好地解決了現(xiàn)有實(shí)驗(yàn)設(shè)備和規(guī)模不足的問題,滿足了學(xué)生實(shí)驗(yàn)的需求。同時(shí)還提高實(shí)驗(yàn)效率, 節(jié)省了實(shí)驗(yàn)設(shè)備的投入資金, 該系統(tǒng)還可延伸到工業(yè)中進(jìn)行設(shè)備的遠(yuǎn)程控制與檢測[1-2]。
在參考了傳統(tǒng)的B/S結(jié)構(gòu)和C/S結(jié)構(gòu)的優(yōu)缺點(diǎn)之后,系統(tǒng)網(wǎng)絡(luò)構(gòu)架采用將2種結(jié)構(gòu)模型相結(jié)合,建立一套基于BC/S模式的的遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)。其中網(wǎng)頁服務(wù)器/客戶端是采用B/S結(jié)構(gòu),它負(fù)責(zé)處理前端交互事件;虛擬儀器資源服務(wù)器/客戶端則是C/S 結(jié)構(gòu)的,它負(fù)責(zé)處理后端交互事件,這也是系統(tǒng)真正進(jìn)行實(shí)驗(yàn)的場所。它們都是通過服務(wù)器端程序和客戶端程序間的通信,從而實(shí)現(xiàn)遠(yuǎn)程實(shí)驗(yàn)的目的。通過這種方式,用戶可以隨時(shí)隨地利用互聯(lián)網(wǎng)終端來訪問遠(yuǎn)程虛擬實(shí)驗(yàn)室,可自主選擇實(shí)驗(yàn)并進(jìn)行操作,還可通過參數(shù)控制以及實(shí)時(shí)檢測來觀察服務(wù)端反饋的實(shí)驗(yàn)結(jié)果,實(shí)現(xiàn)實(shí)時(shí)測控實(shí)驗(yàn)的目的。系統(tǒng)的網(wǎng)絡(luò)構(gòu)架圖如圖1所示[3-5]。
圖1 系統(tǒng)網(wǎng)絡(luò)構(gòu)架
這里我們以“三相異步電機(jī)的空載實(shí)驗(yàn)”為例,來介紹本地實(shí)驗(yàn)室系統(tǒng)的硬件結(jié)構(gòu)。該實(shí)驗(yàn)由應(yīng)用服務(wù)器、數(shù)據(jù)采集卡、單片機(jī)開發(fā)板、串口控制繼電器、步進(jìn)電機(jī)、步進(jìn)電機(jī)驅(qū)動器以及電機(jī)實(shí)驗(yàn)臺組成。其中上位機(jī)是本地計(jì)算機(jī),是整個硬件系統(tǒng)的核心;下位機(jī)由單片機(jī)負(fù)責(zé),通過其I/O口控制步進(jìn)電機(jī)的轉(zhuǎn)動,從而實(shí)現(xiàn)步進(jìn)電機(jī)對自耦調(diào)壓器輸出電壓進(jìn)行調(diào)節(jié)。上位機(jī)運(yùn)行LabVIEW軟件平臺,負(fù)責(zé)與下位機(jī)的通信,為遠(yuǎn)程用戶提供訪問服務(wù)以及數(shù)據(jù)采集[6]。本地實(shí)驗(yàn)系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
整個系統(tǒng)的通信數(shù)據(jù)可以分為2種:各種系統(tǒng)控制命令和狀態(tài)監(jiān)控?cái)?shù)據(jù)。對于控制指令數(shù)據(jù)來說,是不允許有數(shù)據(jù)丟包情況出現(xiàn)的,TCP/IP是可靠數(shù)據(jù)傳輸協(xié)議,利用它可以保證控制命令的有效發(fā)送和接收;對于系統(tǒng)的狀態(tài)監(jiān)控?cái)?shù)據(jù)來說,我們只關(guān)心數(shù)據(jù)的最新值,所以數(shù)據(jù)丟包情況的出現(xiàn)對檢測結(jié)果基本上沒有任何影響。經(jīng)過仔細(xì)的研究和反復(fù)的實(shí)驗(yàn),我們采用LabVIEW自帶的通信協(xié)議——dstp協(xié)議進(jìn)行。利用LabVIEW中的DataSocket函數(shù),可以方便地在服務(wù)器和客戶端之間進(jìn)行大量的測量數(shù)據(jù)的傳輸。系統(tǒng)網(wǎng)絡(luò)通信示意圖如3所示。
圖2 本地實(shí)驗(yàn)系統(tǒng)硬件結(jié)構(gòu)圖
圖3 網(wǎng)絡(luò)通信示意圖
對于本地服務(wù)器、單片機(jī)和繼電器,則通過串口與其進(jìn)行通信,以改變測量電路的開關(guān)狀態(tài)和實(shí)現(xiàn)電壓值的調(diào)節(jié)。關(guān)于單片機(jī)的具體控制我們將在下一節(jié)進(jìn)行解釋。
這里需要指出的是利用LabVIEW的多線程技術(shù)。我們可以將服務(wù)器的主程序分為3個線程:網(wǎng)絡(luò)通信線程、下位機(jī)控制線程和實(shí)時(shí)數(shù)據(jù)采集線程。線程間的通信方式采用隊(duì)列的方式,以實(shí)現(xiàn)將通信線程接收到的控制命令傳輸?shù)娇刂凭€程。數(shù)據(jù)采集線程采集到的數(shù)據(jù)通過隊(duì)列的方式發(fā)送到網(wǎng)絡(luò)通信線程,可實(shí)現(xiàn)采樣數(shù)據(jù)的傳輸。這樣把數(shù)據(jù)采集和數(shù)據(jù)發(fā)送循環(huán)分離開來的好處是可以避免網(wǎng)絡(luò)延時(shí)給系統(tǒng)帶來不必要的錯誤。3個線程,每個線程都相互獨(dú)立、互不影響。這種將幾個任務(wù)分離開來的多線程的思想在很多高速數(shù)據(jù)采集系統(tǒng)中被廣泛地應(yīng)用[7-8]。
為了避免控制命令的發(fā)送和使用錯誤,我們將控制參數(shù)的指令和數(shù)據(jù)捆綁在一起,自定義了一種基于TCP/IP協(xié)議的簡單消息發(fā)送協(xié)議,每次在發(fā)送控制參數(shù)時(shí),先發(fā)送指令,再發(fā)送數(shù)據(jù)。在服務(wù)器端通信線程接收到參數(shù)時(shí),先將數(shù)據(jù)通過隊(duì)列發(fā)送至控制線程,控制線程在接收到數(shù)據(jù)時(shí),先進(jìn)行指令解析,然后使用狀態(tài)機(jī)來決定數(shù)據(jù)的消費(fèi)。這樣就可以避免下位機(jī)的控制發(fā)生數(shù)據(jù)的錯誤使用而出現(xiàn)不可預(yù)見的問題。在接收服務(wù)器端也是先接收消息指令,對指令進(jìn)行解析后再將消息數(shù)據(jù)傳遞給顯示界面。
下位機(jī)與上位機(jī)的通信是通過單片機(jī)的串口和上位機(jī)串口之間的硬件連接實(shí)現(xiàn)的。系統(tǒng)采用LabVIEW編寫上位機(jī)的控制程序。程序編寫用到的VISA函數(shù),其實(shí)質(zhì)是一個標(biāo)準(zhǔn)的I/O函數(shù)庫。這些庫函數(shù)用于編寫儀器的驅(qū)動程序,完成計(jì)算機(jī)與儀器間的命令和數(shù)據(jù)傳輸,進(jìn)而實(shí)現(xiàn)對儀器的程控[9]。上位機(jī)控制流程圖如圖4所示。
圖4 上位機(jī)控制流程圖
系統(tǒng)選用了STC89C52單片機(jī)作為下位機(jī)控制系統(tǒng),單片機(jī)接口程序采用C51語言編寫。在程序中,定義了2個I/O口來分別對應(yīng)定時(shí)器脈沖輸出和方向控制信號,利用上位機(jī)串口發(fā)送來的控制命令對方向控制信號端口輸出電壓進(jìn)行控制,進(jìn)而實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)功能,達(dá)到對自耦變壓器輸出進(jìn)行調(diào)節(jié)的目的。在main函數(shù)部分,先調(diào)用“串口初始化程序”,再對控制命令字進(jìn)行解析以實(shí)現(xiàn)電機(jī)的速度和轉(zhuǎn)向控制。下面給出命令字解析程序段。
void INT_UartRcv(void) interrupt 4
{
if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時(shí)置為1)
{
RI=0; // 接收標(biāo)志位清零
switch(SBUF)
{
case′F′:
TR0=1;DIR=1;//定時(shí)器開啟,輸出脈沖,方向?yàn)檎?,電機(jī)正轉(zhuǎn),電壓升高
break;
case′B′:
TR0=1;DIR=0;//定時(shí)器開啟,輸出脈沖,方向?yàn)榉矗姍C(jī)反轉(zhuǎn),電壓下降
break;
case′S′:
TR0=0;CLK=0;//定時(shí)器關(guān)閉,停止輸出脈沖,電機(jī)停止,電壓保持不變
}
}
}
命令字解析程序段
將設(shè)計(jì)好的實(shí)驗(yàn)題目通過LabVIEW封裝成EXE格式文件上傳到預(yù)先建立好的虛擬儀器實(shí)驗(yàn)室網(wǎng)站上,學(xué)生通過網(wǎng)絡(luò)瀏覽器輸入用戶名和密碼后,就可以登錄到課程網(wǎng)站,進(jìn)入到遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)[1]。網(wǎng)站主頁界面圖如圖5所示。在網(wǎng)站主頁上列出了所有可提供的實(shí)驗(yàn)題目、實(shí)驗(yàn)指導(dǎo)書以及實(shí)驗(yàn)儀器的介紹,學(xué)生在選擇相應(yīng)實(shí)驗(yàn)后可下載相應(yīng)的客戶端,運(yùn)行下載文件,如圖6所示。此處以“三相異步電機(jī)空轉(zhuǎn)”實(shí)驗(yàn)為例。
圖5 實(shí)驗(yàn)系統(tǒng)主頁面界面圖
圖6 遠(yuǎn)程客戶前面板界面圖
利用LabVIEW子面板技術(shù)和模塊化編程的思想,可以方便地對不同類型的實(shí)驗(yàn)功能進(jìn)行調(diào)用和添加,還可在不同的實(shí)驗(yàn)中方便地進(jìn)行切換,無需退出系統(tǒng)進(jìn)行重新操作。點(diǎn)擊需要完成的實(shí)驗(yàn)類型即可將該實(shí)驗(yàn)的程序加載到子面板中運(yùn)行,并可進(jìn)行遠(yuǎn)程實(shí)驗(yàn)的操作和數(shù)據(jù)記錄。
當(dāng)客戶端讀取的數(shù)據(jù)滿足用戶要求時(shí),往往會將數(shù)據(jù)記錄下來,留待后續(xù)分析。為了滿足這種數(shù)據(jù)記錄功能,系統(tǒng)提供了實(shí)驗(yàn)報(bào)告生成功能來記錄數(shù)據(jù)。系統(tǒng)已提前將實(shí)驗(yàn)報(bào)告的標(biāo)準(zhǔn)格式做成模板,當(dāng)實(shí)驗(yàn)人員需要記錄數(shù)據(jù)時(shí),可點(diǎn)擊“報(bào)表生成”按鈕,即可在本地生成一份和模板格式一樣的Word文檔,而不需要再去手動抄寫實(shí)驗(yàn)數(shù)據(jù)和實(shí)驗(yàn)報(bào)告[10],這樣就可以方便地在實(shí)驗(yàn)報(bào)告中對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行后續(xù)分析。
以LabVIEW 為基礎(chǔ)的遠(yuǎn)程虛擬實(shí)驗(yàn)室,開發(fā)周期短、可擴(kuò)展性強(qiáng)、使用效率高、成本低,充分體現(xiàn)了虛擬儀器技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)在現(xiàn)代遠(yuǎn)程測量技術(shù)中的優(yōu)勢[11]。系統(tǒng)平臺在部分實(shí)驗(yàn)中的試運(yùn)行的情況表明:該平臺運(yùn)行穩(wěn)定并有效提高了本校的電工電子技術(shù)實(shí)驗(yàn)水平,在一定程度上解決了遠(yuǎn)程教育中實(shí)驗(yàn)設(shè)備不足的問題。同時(shí)也為本校的教學(xué)實(shí)驗(yàn)改革和建設(shè)提供了新思路和手段。系統(tǒng)還可以進(jìn)一步擴(kuò)展,應(yīng)用到工業(yè)生產(chǎn)過程中虛擬儀器的遠(yuǎn)程檢測與控制當(dāng)中。
[1] 程俊靜.基于LabVIEW 的遠(yuǎn)程虛擬實(shí)驗(yàn)系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化,2006(4):73-75.
[2] 劉蘊(yùn)紅.網(wǎng)絡(luò)實(shí)驗(yàn)室的構(gòu)建及其在實(shí)驗(yàn)教學(xué)中的應(yīng)用[J].微計(jì)算機(jī)信息,2009(25):128-130.
[3] 周亞輝,朱昊,周愛平,等.基于LabVIEW的工程光學(xué)遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2006,23(10):63-65.
[4] 李湘林,江兵,封馳.基于LabView 的遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].測控自動化,2012(28):47-49.
[5] 程琳.基于LabVIEW的遠(yuǎn)程實(shí)驗(yàn)平臺構(gòu)建[J].常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012(1):16-18.
[6] 賈燕茹.基于 LabVIEW 的 PID 電動機(jī)遠(yuǎn)程實(shí)驗(yàn)平臺[J].礦山機(jī)械,2011(5):109-111.
[7] 龔舉權(quán).基于LabvIEW RT的實(shí)時(shí)系統(tǒng)中網(wǎng)絡(luò)通信的實(shí)現(xiàn)[J].網(wǎng)絡(luò)與信息技術(shù),2007(26):56-62.
[8] 劉太陽.基于LabVIEW RT的數(shù)據(jù)實(shí)時(shí)傳輸系統(tǒng)[J].計(jì)算機(jī)測量與控制,2008,16(2):270-272.
[9] 莊瑞榮.基于LabVIEW的步進(jìn)電機(jī)控制[J].現(xiàn)代電子技術(shù),2012,35(4):202-204.
[10] 侯國屏,王坤,葉齊鑫,等.LabVIEW7.1 編程與虛擬儀器設(shè)計(jì)[M].北京: 清華大學(xué)出版社, 2005.
[11] 張仁杰,趙燕玉.遠(yuǎn)程教育中實(shí)驗(yàn)方式的探索和展望[J].開放教育研究,2000(4):37-38.