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