http://m.007sbw.cn 2011-06-28 23:38 來源:中國自動化學會專家咨詢工作委員會
摘要:為了推進實驗教學改革,充分利用有限的實驗設(shè)備,設(shè)計了一種基于Labwindows/CVI平臺的控制系統(tǒng)網(wǎng)絡(luò)實驗室。在介紹網(wǎng)絡(luò)實驗室的框架結(jié)構(gòu)和主要功能的基礎(chǔ)上,詳細闡述了三種關(guān)鍵技術(shù)。
引言
高校實驗室承擔著專業(yè)教學及實驗的主體工作。而大多數(shù)高校的資源有限,學生實驗教學只能分批、分時地進行,導(dǎo)致學生的理論知識學習與實驗?zāi)芰ε囵B(yǎng)難以同步。建立網(wǎng)絡(luò)實驗室,可以不受時間和空間的限制,它是對傳統(tǒng)實驗室的補充;同時,它也將成為未來實驗教學的重要途徑,具有重要的現(xiàn)實意義。
Labwindows/CVl是美國NI公司開發(fā)的面向計算機測控領(lǐng)域的軟件開發(fā)平臺,它采用直觀圖形用戶界面設(shè)計,利用函數(shù)面板輸入函數(shù)的參數(shù),并采用事件驅(qū)動方式和回調(diào)函數(shù)方式的編程技術(shù),提高了工程設(shè)計的效率和可靠性。因此,本課題組開發(fā)了基于LabWindows/CVI的控制系統(tǒng)網(wǎng)絡(luò)實驗室,設(shè)計了直流電機轉(zhuǎn)速、溫度控制等實驗。
一、系統(tǒng)架構(gòu)設(shè)計
本系統(tǒng)采用C/S模式(并非傳統(tǒng)意義的“胖客戶端/瘦服務(wù)器”) ,針對高校實驗室的特點設(shè)計了一種服務(wù)器(實驗服務(wù)器)與客戶端一一對應(yīng)為了推進實驗教學改革,充分利用有限的實驗設(shè)備,設(shè)計了一種基于Labwindows/CVI平臺的控制系統(tǒng)網(wǎng)絡(luò)實驗室。在介紹網(wǎng)絡(luò)實驗室的框架結(jié)構(gòu)和主要功能的基礎(chǔ)上,詳細闡述了三種關(guān)鍵技術(shù),即Labwindows/CVI與Matlab的軟接口技術(shù)、TCP/IP與DataSocket相結(jié)合的混合通信技術(shù)以及利用Microsoft Access與SQL Toolkit建立網(wǎng)絡(luò)實驗室的數(shù)據(jù)庫管理系統(tǒng)的技術(shù)。實驗結(jié)果表明,三種技術(shù)構(gòu)建了結(jié)構(gòu)較為完整、技術(shù)較為先進的控制系統(tǒng)網(wǎng)絡(luò)實驗室,實現(xiàn)了網(wǎng)絡(luò)實驗室的高效、可靠和實時運行。的實驗系統(tǒng)。系統(tǒng)由客戶端、實驗服務(wù)器和總服務(wù)器三部分構(gòu)成,其結(jié)構(gòu)框圖如圖l所示。
圖l中:數(shù)字l為Datasocket技術(shù),數(shù)字2為TCP/IP技術(shù)。
客戶端(學生宿舍)在終端安裝客戶端軟件即虛擬實驗平臺的操作界面,學生就可通過該界面和Internet網(wǎng)絡(luò)遠程登陸到實驗服務(wù)器(學校的計算機控制實驗設(shè)備)進行仿真和實物實驗,并可與服務(wù)器(包括實驗服務(wù)器)進行師生對話、文件傳輸?shù)?。實驗服?wù)器主要負責接收客戶端實驗參數(shù),進行實物或仿真實驗,向客戶端反饋實驗結(jié)果等活動??偡?wù)器除了能完成實驗服務(wù)器的所有功能外,還可進行實驗數(shù)據(jù)庫管理、實驗分配、確定客戶端與實驗服務(wù)器對應(yīng)的IP登陸地址等功能。
要實現(xiàn)以上功能,基于Labwindows/CVI技術(shù)的控制系統(tǒng)網(wǎng)絡(luò)實驗室需要實現(xiàn)以下幾個關(guān)鍵技術(shù)。
二、關(guān)鍵技術(shù)的研究
2.1Labwindows/CVI與Matlab的軟接口
網(wǎng)絡(luò)仿真實驗是本系統(tǒng)的一個重要組成部分。Labwindows/CVI是一個優(yōu)秀的虛擬儀器開發(fā)平臺,但無法直接實現(xiàn)現(xiàn)代控制和信號處理的先進理論算法。Matlab是一款優(yōu)秀的數(shù)學應(yīng)用軟件,擁有豐富的工程計算函數(shù)庫和接口,可以方便地集成到其他編程語言中,但其界面開發(fā)能力較差,硬件控制和數(shù)據(jù)輸入比較繁瑣。
鑒于CVI與Matlab各自的優(yōu)缺點,在開發(fā)過程中充分利用二者優(yōu)勢:用CVI設(shè)計用戶圖形界面、負責數(shù)據(jù)采集和網(wǎng)絡(luò)通信;在后臺利用Matlab進行大型算法,提供數(shù)據(jù)供CVI調(diào)用,實現(xiàn)混合編程。
由于實驗者要將仿真參數(shù)傳送給Matlab,由Matlab進行系統(tǒng)仿真,并將輸出返回給實驗者,因此,實現(xiàn)Lahwindows/CVI和Matlab結(jié)合的關(guān)鍵是其數(shù)據(jù)和命令的交換,即軟接口技術(shù)。Labwindows/CVI與Matlab的軟接口是為了能在Labwindows/CVI環(huán)境下調(diào)用Matlab的功能函數(shù),運行Matlab環(huán)境下的程序,實現(xiàn)CVI環(huán)境下的混合編程。為方便開發(fā)者實現(xiàn)CVI環(huán)境中與Matlab的混合編程,NI公司專門配置了一個接口函數(shù)文件。該文件在Samples/Active/Matlab目錄下,文件名為Matlabutil。
以Labwindows/CV16.0環(huán)境為例,其接口的初始化方法步驟如下。
①在CVI工程文件窗口中,運行Tool→Create ActiveX→Automation Control,運行后將出現(xiàn)ActiveX的服務(wù)控件選擇框。
②在選擇框選擇Matlab Automation Server Type Library,出現(xiàn)一個函數(shù)對話框;在對話框中選中所有動態(tài)鏈接目標函數(shù),然后生成并保存文件,文件名為Matlabsrvr;最后系統(tǒng)將生成Matlabsrvr.fp(函數(shù)面板文件)、Matlabsrvr.c和Matlabsrvr.h等相關(guān)五個文件。其中,在Matlabsrvr.c中包含混合編程所需的最基本功能函數(shù)。這些函數(shù)有接收發(fā)送矩陣函數(shù)、打開關(guān)閉Matlab函數(shù)等。
?、圩詈髮⑸鲜鑫鍌€文件添加到工程文件中,并將它們和應(yīng)用程序文件一并編譯。生成的文件被包含在CVI環(huán)境下,實現(xiàn)了同Matlab混合編程所要用到的最基本的功能函數(shù)。但考慮到環(huán)境變量,Matlab要求在CVI之前安裝為宜。
電機轉(zhuǎn)速仿真實驗時的仿真波形界面如圖2所示。
2.2TCP/IP和Datasocket的混合通信
Labwindows/CVI具有強大的網(wǎng)絡(luò)通信功能,用戶可以用CVI編譯具有較強網(wǎng)絡(luò)通信能力的應(yīng)用軟件。 Nl公司在CVI支持TCP/IP協(xié)議的同時,開發(fā)了Datasocket技術(shù)。Datasocket是Nl公司基于Microsoft的ActiveX和COM技術(shù)開發(fā)的一種面向網(wǎng)絡(luò)進行實時數(shù)據(jù)高速交換的新技術(shù),它簡化了網(wǎng)絡(luò)通信編程。針對網(wǎng)絡(luò)控制系統(tǒng)通信復(fù)雜性的需求,本課題創(chuàng)新性地將TCP/IP和Datasocket兩種網(wǎng)絡(luò)技術(shù)相互結(jié)翻綜合運用,提供了一種基于CVI平臺的虛擬實驗朔絡(luò)通信的實現(xiàn)方案。
客戶端和服務(wù)器進行師生對話、文件傳輸(遞交與接收實驗報告)、實驗參數(shù)的傳輸?shù)染W(wǎng)絡(luò)通信都是依靠TCP/IP傳輸協(xié)議,通過Labwindows/CVI的TC/lP庫函數(shù)編程,將數(shù)據(jù)以數(shù)組的形式進行傳輸。但TCP/IP傳輸協(xié)議是較為復(fù)雜的底層編程,數(shù)據(jù)量較大,傳輸速率較慢,在傳輸動態(tài)數(shù)據(jù)方面較難實現(xiàn)。為了實現(xiàn)數(shù)據(jù)的實時傳輸,如客戶端和服務(wù)器之間觸驗數(shù)據(jù)(包括實驗參數(shù)、實驗結(jié)果等),我們應(yīng)用了面向網(wǎng)絡(luò)化測試進行實時數(shù)據(jù)高速交換的編程技術(shù)-Datasocket技術(shù),其專門用于傳輸和共享的化測試的實時數(shù)據(jù)。
Labwindows/CVI中引入了TCP/IP技術(shù),并封裝了TCP類庫,提高了網(wǎng)絡(luò)應(yīng)用程序的開發(fā)能力。在網(wǎng)絡(luò)虛擬實驗室中,使用TCP進行網(wǎng)絡(luò)通信時,每個連接必須包括一個服務(wù)器和一個客戶。利用TCP庫函數(shù)進行網(wǎng)絡(luò)傳輸?shù)膶嵸|(zhì)是實現(xiàn)TCP服務(wù)器端與客戶端應(yīng)用程序之間數(shù)據(jù)的發(fā)送和接收,并通過TCP回調(diào)函數(shù),對傳輸雙方通信發(fā)生的不同事件做出不同響應(yīng),使應(yīng)用程序可以接收并處理TCP事件。
教師在服務(wù)器端接收學生實驗報告利用的就是TCP/IP技術(shù),服務(wù)器接收文件的流程如圖3所示。
Datasocket由Datasocket API(應(yīng)用程序接口)和Datasocket Serve:(服務(wù)器)兩部分組成。Datasocket API提供了從多種語言訪問多種數(shù)據(jù)類型的單一接口泡括四個基本動作:open、read、write、close。采用Datasoclet Server發(fā)布數(shù)據(jù)需要具備三個部分:發(fā)布者、服務(wù)器和接收者。發(fā)布者和接收者都是客戶端,發(fā)布者用于發(fā)布數(shù)據(jù),接收者用于接收數(shù)據(jù)。
以直流電機轉(zhuǎn)速實驗為例,其工作過程如下:客戶端把Kp、Ki、Kd等參數(shù)通過Datasocket API寫入Datasocket Server,服務(wù)器程序通過Datasocket API讀Datas0Clet Server,并通過串口和單片機控制直流電機運行,然后將轉(zhuǎn)速、誤差等數(shù)據(jù)寫入Datasocket Server, 客戶端應(yīng)用程序從Datasocket Server讀取最后的實驗結(jié)果。由于軟件系統(tǒng)利用Datasocket機制實現(xiàn)通信,因此,程序的源代碼中必須包含頭文件“Dataskt.h”。購啟動Datasocket服務(wù)器,獲得URL地址并進行實時數(shù)據(jù)的傳輸是編寫Datasocket程序的關(guān)鍵。
2.3數(shù)據(jù)庫的開發(fā)與應(yīng)用
在控制系統(tǒng)網(wǎng)絡(luò)實驗室中,數(shù)據(jù)庫是不可缺少的重要組成部分。用戶登錄、學生的實驗時間、實驗參數(shù)濱驗結(jié)果等數(shù)據(jù)的存儲和管理都需要用統(tǒng)一的數(shù)據(jù)庫機制來實現(xiàn)。
SQL (structure query language)Toolkit是NI公司的數(shù)據(jù)庫系統(tǒng)應(yīng)用軟件工具包,它支持SQL語句。CVI.5及以后的版本提供了支持數(shù)據(jù)庫的SQL Tool-Lit,使CVI對數(shù)據(jù)庫的操作能力增強。CVI支持對數(shù)據(jù)庫的訪問,不支持數(shù)據(jù)庫的開發(fā)。因此,可以用其他數(shù)據(jù)庫開發(fā)工具將需要的數(shù)據(jù)庫開發(fā)出來,然后在Lab Windows/CVI環(huán)境下使用。
SQL T00lkit包含了可以完成數(shù)據(jù)庫任務(wù)的高級函數(shù)庫集,可實現(xiàn)定制任務(wù)等高級功能。在CVI開發(fā)環(huán)勒使用SQL Toolkit時,需要在安裝CVI之后單獨安裝它。
在開發(fā)數(shù)據(jù)庫應(yīng)用程序時,可以像添加儀器驅(qū)動器一樣把sql_db.fq加載到項目工程的儀器(instrument)菜單,而且最好也把它作為工程文件加載到工程項目管理窗口;再通過Windows控制面板中的“ODBC數(shù)據(jù)源”添加數(shù)據(jù)源。這樣就可以在CVI中用sQL Toolkit函數(shù)庫來開發(fā)含有數(shù)據(jù)庫的應(yīng)用程序。
本課題采用Microsoft Access建立數(shù)據(jù)庫,通過SQL Toolkit實現(xiàn)數(shù)據(jù)處理。設(shè)計中,利用TABLE控件的特點與數(shù)據(jù)庫建立連接,并把相應(yīng)的變量進行綁定,從而使CVI的人機界面能夠操作數(shù)據(jù)庫,進行數(shù)據(jù)的讀寫,并使數(shù)據(jù)得以保存。TABLE控件起到橋梁的作用,指導(dǎo)教師不需要打開數(shù)據(jù)庫就可以直接操作,大大節(jié)省了實驗的步驟和時間。
通過CVI提供的SQL Toolkit工具包實現(xiàn)對數(shù)據(jù)管理與處理,指導(dǎo)教師可以在服務(wù)器端的應(yīng)用軟件平臺上方便地操作使用數(shù)據(jù)庫,完成應(yīng)用程序與數(shù)據(jù)庫的通信。
本設(shè)計所需要的數(shù)據(jù)庫表包含實驗時間、用戶姓名、學號、Kp、Ki、Kd、采樣時間、誤差等巧個實驗測得的數(shù)據(jù)。將TABLE控件的設(shè)計與數(shù)據(jù)庫相結(jié)合實現(xiàn)了包括屬性設(shè)置、數(shù)據(jù)輸入/輸出等功能。TABLE控件設(shè)計的關(guān)鍵在于利用SetTableCellval( )函數(shù),將生成的記錄時間、姓名、學號以及一些測試數(shù)據(jù)寫入相應(yīng)的單元格中,其程序代碼如下:
TABLE控件中單元格的數(shù)據(jù)類型必須與變量的數(shù)據(jù)類型一致,并且填入的順序要相符,否則,寫入的數(shù)據(jù)會出錯,甚至使程序無法運行。在SQL Toolkit數(shù)據(jù)庫中進行數(shù)據(jù)庫激活時,本課題采用了映射的方式,即首先調(diào)用DBBeginMap函數(shù)定義映射,此函數(shù)所需的唯一參數(shù)是由DBConnect 返回的連接句柄“hdbc”, 返回值即為映射句柄;映射定義完成后,必須使用 “DBMap ColumnTo”綁定函數(shù)類映射數(shù)據(jù)庫中將被讀入程序變量的列。所有DBMap ColumnTo函數(shù)使用下列參數(shù):映射句柄、列名、目標、目標變量地址和狀態(tài)變量地址。以下代碼是數(shù)據(jù)庫中的各列和程序中存放對應(yīng)列值的變量,即數(shù)據(jù)綁定的操作,包括姓名、學號、Kp、Ki、Kd、采樣時間等。
三、結(jié)束語
本文針對網(wǎng)絡(luò)實驗室的不同要求,成功地將Lab-Windows/CVI與Matlab的軟接口技術(shù),TCP/IP、Datasocket技術(shù)以及SQL Toolkit技術(shù)有機地結(jié)合在一起,建成了控制系統(tǒng)網(wǎng)絡(luò)實驗室。該實驗室不僅能夠進行仿真實驗,也可進行實物實驗,同時也實現(xiàn)了實驗參數(shù)、結(jié)果的實時傳輸,以及與實驗數(shù)據(jù)的管理。通過與傳統(tǒng)教學方式的緊密結(jié)合,網(wǎng)絡(luò)實驗室不僅提高了教學效果,更培養(yǎng)了學生的實驗動手能力、綜合素質(zhì)和創(chuàng)新能力。