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