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