張麗 楊俊飛 陳立劍
(中國(guó)船舶重工集團(tuán)公司第七一二研究所,武漢 430064)
隨著計(jì)算機(jī)和軟件技術(shù)的發(fā)展,虛擬儀器軟件開(kāi)發(fā)平臺(tái)LabView加上多功能數(shù)據(jù)采集卡的實(shí)現(xiàn)方案,具有簡(jiǎn)便靈活的特點(diǎn),因此正在逐漸成為測(cè)試領(lǐng)域的發(fā)展方向。LabVIEW是業(yè)界領(lǐng)先的高效圖形化開(kāi)發(fā)環(huán)境,是美國(guó) NI(National Instrument)公司研制的具有革命性的虛擬儀器開(kāi)發(fā)環(huán)境,LabVIEW功能非常強(qiáng)大,它是帶有可擴(kuò)展函數(shù)庫(kù)和子程序的通用程序設(shè)計(jì)系統(tǒng),不僅可以用于一般的Windows桌面應(yīng)用程序設(shè)計(jì),而且還提供了用于GPIB設(shè)備控制、VXI總線控制、串行口設(shè)備控制,以及數(shù)據(jù)分析、顯示和存儲(chǔ)等應(yīng)用程序模塊,其強(qiáng)大的專用函數(shù)庫(kù)使得它非常適合編寫用于測(cè)試、測(cè)量以及工業(yè)控制的應(yīng)用程序。
隨著測(cè)試系統(tǒng)的發(fā)展,實(shí)時(shí)控制系統(tǒng)的應(yīng)用越來(lái)越廣泛。實(shí)時(shí)系統(tǒng)的開(kāi)發(fā)和應(yīng)用,與傳統(tǒng)的基于Windows平臺(tái)的系統(tǒng)在設(shè)計(jì)與編程方式都有很大的不同。普通Labview程序還是建立于通用的操作系統(tǒng)上,如Windows系統(tǒng),因此這些系統(tǒng)仍然無(wú)法提供很高的實(shí)時(shí)性能。Labview RT系統(tǒng)通過(guò)在普通的Labview開(kāi)發(fā)環(huán)境中增加的RT模塊,配合必要的硬件平臺(tái),最終可以將開(kāi)發(fā)完成的程序下載到一些指定的硬件環(huán)境中(稱為目標(biāo)環(huán)境),而在目標(biāo)環(huán)境中運(yùn)行實(shí)時(shí)操作系統(tǒng),進(jìn)而提供實(shí)時(shí)性。本文主要介紹基于Labview 的實(shí)時(shí)系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)的測(cè)試系統(tǒng)。
絕大部分實(shí)時(shí)系統(tǒng)的核心是實(shí)時(shí)操作系統(tǒng)。與通用的操作系統(tǒng)比較,實(shí)時(shí)操作系統(tǒng)最大的特點(diǎn)是其可以保證在最差的情況下對(duì)外部事件的響應(yīng)延時(shí),而通用的操作系統(tǒng)如Windows,Mac等為多任務(wù)系統(tǒng),外部事件通常放入一個(gè)隊(duì)列中等待處理,因而很難保證實(shí)時(shí)特性。因此建立在實(shí)時(shí)操作系統(tǒng)上的應(yīng)用系統(tǒng)一般有如下的實(shí)時(shí)特性:①系統(tǒng)具有確定性。確定性定義為系統(tǒng)在給定的時(shí)間內(nèi)對(duì)事件響應(yīng)的一致性。②實(shí)時(shí)系統(tǒng)提供最大的可靠性。③實(shí)時(shí)系統(tǒng)大多不需要用戶的交互干涉。在嵌入式系統(tǒng)中應(yīng)用廣泛。
Labview VI程序編譯、下載和通信必須與一定的目標(biāo)環(huán)境配合,必須使用特定的支持實(shí)時(shí)系統(tǒng)的硬件平臺(tái)。目前NI公司針對(duì)不同的實(shí)時(shí)應(yīng)用要求,提供了3種平臺(tái):RT系列采集卡、RT系列PXI、RT系列的FieldPoint模塊,本測(cè)試系統(tǒng)中使用的就是第三種。
本測(cè)試系統(tǒng)包括兩個(gè)主要設(shè)備,一個(gè)是放置于集控室內(nèi)的數(shù)采控制臺(tái),一個(gè)是放置于試驗(yàn)現(xiàn)場(chǎng)的現(xiàn)地采集柜。數(shù)采控制臺(tái)內(nèi)主要設(shè)備為工控機(jī)、集線器和外圍電路設(shè)備等。
采集柜內(nèi)的主要設(shè)備為實(shí)時(shí)系統(tǒng)的硬件即NI公司的CFP(Compact Field Point)系列設(shè)備和外圍電路等,CFP屬于可編程自動(dòng)化控制器,其優(yōu)勢(shì)在于結(jié)合了 PLC的穩(wěn)固性和 PC的靈活性。本測(cè)試系統(tǒng)目標(biāo)環(huán)境CFP硬件的基本結(jié)構(gòu)分為兩部分,一部分為處理器和存儲(chǔ)器部分,運(yùn)行實(shí)時(shí)操作系統(tǒng),將 Labview的實(shí)時(shí) VI程序下載至其存儲(chǔ)器,使其在實(shí)時(shí)系統(tǒng)下運(yùn)行;第二部分為采集和控制部分,即輸入輸出通道。CFP設(shè)備的機(jī)架為8槽機(jī)架,上面依次安裝有實(shí)時(shí)控制器、溫度采集模塊、開(kāi)關(guān)量采集模塊、電壓采集模塊、頻率采集模塊。待測(cè)設(shè)備上的信號(hào)通過(guò)傳感器傳至CFP的采集模塊,通過(guò)下載至控制器內(nèi)的程序?qū)Υ郎y(cè)設(shè)備的相關(guān)運(yùn)行參數(shù)(包括轉(zhuǎn)速、壓力、溫度、流量和開(kāi)關(guān)量等)進(jìn)行實(shí)時(shí)采集,并將采集到的實(shí)時(shí)數(shù)據(jù)通過(guò) TCP/IP協(xié)議通過(guò)網(wǎng)線上傳至數(shù)采控制臺(tái)內(nèi)的上位機(jī)。
測(cè)試系統(tǒng)軟件包括上位機(jī)的 Windows下的Labview軟件和 CFP內(nèi)運(yùn)行的實(shí)時(shí)系統(tǒng)下的Labview RT軟件,如圖1。上位機(jī)的開(kāi)發(fā)環(huán)境運(yùn)行Windows操作系統(tǒng),包括普通的Labview開(kāi)發(fā)模塊程序和RT模塊程序,普通的Labview開(kāi)發(fā)模塊程序,用來(lái)對(duì)數(shù)采程序的人機(jī)界面進(jìn)行開(kāi)發(fā),上位機(jī)的數(shù)采程序具有對(duì)數(shù)據(jù)進(jìn)行海量存儲(chǔ)、查詢、定制報(bào)表和圖表等功能,并且以簡(jiǎn)潔直觀的方式在數(shù)采控制臺(tái)上的顯示器上進(jìn)行顯示。其中RT模塊提供實(shí)時(shí)采集程序和通信程序開(kāi)發(fā)的功能,將 Labview的 VI程序編譯下載到執(zhí)行的目標(biāo)環(huán)境即CFP的控制器內(nèi),實(shí)現(xiàn)兩者之間的數(shù)據(jù)通信功能。
圖1 測(cè)試系統(tǒng)結(jié)構(gòu)
在Labview環(huán)境下,用戶的應(yīng)用程序稱為虛擬儀器VI,人機(jī)交互接口稱為前面板。一般而言,實(shí)時(shí)系統(tǒng)的運(yùn)行不需要圖形界面,但有時(shí)在不影響系統(tǒng)實(shí)時(shí)運(yùn)行的前提下,也可通過(guò)前面板監(jiān)視系統(tǒng)的運(yùn)行狀況。此時(shí),VI程序與前面板之間的聯(lián)系就是通過(guò)利用RT開(kāi)發(fā)系統(tǒng)內(nèi)置的通訊功能實(shí)現(xiàn)的。但這種情況的缺點(diǎn)就是只能進(jìn)行監(jiān)視,不能實(shí)現(xiàn)數(shù)據(jù)的大量交互。因此,為了實(shí)現(xiàn)數(shù)據(jù)的大量交互,在一個(gè)大型自動(dòng)測(cè)試系統(tǒng)中,上位機(jī)Labview程序主要運(yùn)行非實(shí)時(shí)程序,而通過(guò)軟件調(diào)用方式來(lái)訪問(wèn)實(shí)時(shí)程序。軟件調(diào)用方式與非實(shí)時(shí)任務(wù)相對(duì)獨(dú)立,提高了系統(tǒng)的穩(wěn)定性。一般而言,通過(guò)軟件調(diào)用有三種方式:
(1)TCP/IP:采用網(wǎng)絡(luò)地址訪問(wèn)實(shí)時(shí)系統(tǒng)。TCP/IP協(xié)議通信的優(yōu)點(diǎn)是傳輸數(shù)據(jù)量大、網(wǎng)絡(luò)通信可靠性高。在網(wǎng)絡(luò)出錯(cuò)時(shí),能夠提示報(bào)錯(cuò)信息。
(2)UDP:采用網(wǎng)絡(luò)地址和端口訪問(wèn)實(shí)時(shí)系統(tǒng)。UDP協(xié)議的優(yōu)點(diǎn)是通信方式簡(jiǎn)單,即只發(fā)送數(shù)據(jù)不提示網(wǎng)絡(luò)錯(cuò)誤,缺點(diǎn)是網(wǎng)絡(luò)可靠性較低。
(3)共享變量:共享變量編程方式很簡(jiǎn)單,只需將實(shí)時(shí)系統(tǒng)內(nèi)的數(shù)據(jù)送至共享變量即可,在數(shù)據(jù)量通信很少時(shí),可以使用共享變量方式。但在通信數(shù)據(jù)量較大的情況下,會(huì)造成程序的擁堵。
鑒于本測(cè)試系統(tǒng)的要求與實(shí)際情況,實(shí)時(shí)系統(tǒng)與上位機(jī)采用TCP/IP的通信方式,當(dāng)出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤時(shí),上位機(jī)的監(jiān)視軟件界面能夠提示錯(cuò)誤,并等待再次連接。下載至CFP內(nèi)實(shí)時(shí)系統(tǒng)內(nèi)的程序,在網(wǎng)絡(luò)出現(xiàn)錯(cuò)誤期間,實(shí)時(shí)程序中的上傳數(shù)據(jù)子程序停止,實(shí)時(shí)程序中本地存儲(chǔ)程序啟動(dòng)并將采集到的數(shù)據(jù)存儲(chǔ)在CFP本地的存儲(chǔ)器內(nèi)。當(dāng)網(wǎng)絡(luò)恢復(fù)正常時(shí),上位機(jī)與CFP再次正常連接,本地存儲(chǔ)程序停止,上傳數(shù)據(jù)程序啟動(dòng)并將采集到的數(shù)據(jù)繼續(xù)通過(guò)網(wǎng)線傳送至上位機(jī)。
本測(cè)試系統(tǒng)軟件基本開(kāi)發(fā)步驟可分為三步:
(1)在上位機(jī)Labview平臺(tái)上開(kāi)發(fā)應(yīng)用程序。這是系統(tǒng)開(kāi)發(fā)的第一步,也是最重要的步驟。開(kāi)發(fā)人員在運(yùn)行Windows系統(tǒng)的上位機(jī)上,開(kāi)發(fā)實(shí)時(shí)應(yīng)用程序(即將下載的實(shí)時(shí)采集程序)與非實(shí)時(shí)程序(即監(jiān)視與其他功能的上位機(jī)程序),通過(guò)網(wǎng)絡(luò)與目標(biāo)硬件系統(tǒng)連接。
(2)下載實(shí)時(shí)應(yīng)用程序。將完成的應(yīng)用實(shí)時(shí)程序通過(guò)網(wǎng)絡(luò)下載至目標(biāo)硬件系統(tǒng)中。
(3)在目標(biāo)硬件系統(tǒng)平臺(tái)實(shí)時(shí)系統(tǒng)中運(yùn)行下載的程序,這時(shí)目標(biāo)硬件系統(tǒng)與上位機(jī)之間的控制量通過(guò)少量的共享變量進(jìn)行交互,大量數(shù)據(jù)通過(guò)TCP/IP協(xié)議上傳,在上位機(jī)的界面上即可顯示來(lái)自目標(biāo)硬件系統(tǒng)的數(shù)據(jù)。
目標(biāo)硬件將采集模塊采集到的各種數(shù)據(jù)通過(guò)TCP/IP通信程序上傳,上位機(jī)的程序接收采集數(shù)據(jù),并將接收到的數(shù)據(jù)進(jìn)行顯示和存儲(chǔ)。下面僅介紹通信部分的程序。目標(biāo)硬件系統(tǒng)中運(yùn)行的實(shí)時(shí)程序采用生產(chǎn)者—消費(fèi)者程序結(jié)構(gòu),采用生產(chǎn)者—消費(fèi)者程序結(jié)構(gòu)的優(yōu)點(diǎn)是將采集功能與通信功能分開(kāi),使得兩個(gè)任務(wù)分別在兩個(gè)循環(huán)中完成,而不會(huì)互相影響。生產(chǎn)者循環(huán)主要用于各種數(shù)據(jù)(溫度、壓力、流量和開(kāi)關(guān)量)的采集,采集程序中用到實(shí)時(shí)編程模塊CFP的采集子VI,并在檢測(cè)到網(wǎng)絡(luò)出錯(cuò)時(shí)將采集到的數(shù)據(jù)以二進(jìn)制文件的形式存儲(chǔ)在本地的存儲(chǔ)卡中;消費(fèi)者循環(huán)用于在網(wǎng)絡(luò)正常的情況下將生產(chǎn)者循環(huán)內(nèi)的各種數(shù)據(jù)通過(guò)通信程序上傳至上位機(jī)。程序如圖2。上位機(jī)中運(yùn)行的程序亦是使用生產(chǎn)者—消費(fèi)者程序結(jié)構(gòu),生產(chǎn)者循環(huán)用來(lái)讀取實(shí)時(shí)程序上傳的實(shí)時(shí)數(shù)據(jù),消費(fèi)者循環(huán)將生產(chǎn)者讀取到的數(shù)據(jù)存入數(shù)據(jù)庫(kù)。程序如圖3。通信程序中用到的是TCP/IP編程模塊中的子VI,包括TCP偵聽(tīng)VI、讀取TCP數(shù)據(jù)VI、寫入TCP數(shù)據(jù)VI、關(guān)閉TCP連接VI和隊(duì)列VI。
圖2 實(shí)時(shí)系統(tǒng)內(nèi)運(yùn)行的通信程序
圖3 上位機(jī)內(nèi)運(yùn)行的通信程序
Labview RT在原有圖形化編程的基礎(chǔ)上,通過(guò)RT模塊和相應(yīng)的硬件系統(tǒng)提供了實(shí)時(shí)控制的功能,又結(jié)合了實(shí)時(shí)操作系統(tǒng)處理實(shí)時(shí)任務(wù)的優(yōu)越性能,將在實(shí)時(shí)數(shù)據(jù)采集、嵌入式實(shí)時(shí)控制領(lǐng)域得到廣泛的應(yīng)用。基于實(shí)時(shí)系統(tǒng)開(kāi)發(fā)的測(cè)試系統(tǒng)具有一般通用操作系統(tǒng)無(wú)法保證的實(shí)時(shí)性和高可靠性;而且采集與數(shù)據(jù)處理分別運(yùn)行在兩個(gè)硬件系統(tǒng)中,使得測(cè)試系統(tǒng)在設(shè)計(jì)與使用方面更加可靠和靈活。
[1]王磊等. 精通LabVIEW8.0. 北京:電子工業(yè)出版社,2007, 1.
[2]項(xiàng)曉峰, 田作華, 張憶. Labview RT實(shí)時(shí)控制開(kāi)發(fā)系統(tǒng)結(jié)構(gòu)與開(kāi)發(fā)應(yīng)用. 測(cè)控技術(shù), 2003, 3.
[3]李雯, 肖凱. 應(yīng)用LabVIEW RT開(kāi)發(fā)實(shí)時(shí)測(cè)試系統(tǒng).微計(jì)算機(jī)信息, 2003, 8.