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