張靈靈
(安徽省廣播電視臺(tái)淮北市發(fā)射臺(tái),安徽 淮北 235000)
LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一種圖形化的編程語(yǔ)言的開(kāi)發(fā)環(huán)境,它廣泛地被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室所接受,視為一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件,同時(shí)它也是目前多數(shù)虛擬儀器系統(tǒng)所采用的開(kāi)發(fā)軟件。在這種基于圖形化編程語(yǔ)言的開(kāi)發(fā)環(huán)境中,LabVIEW可以高效、快速地編寫(xiě)出相應(yīng)的應(yīng)用程序,完成諸如數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)顯示以及儀器控制和通信等多種功能。在我國(guó)由于引進(jìn)時(shí)間短,了解和熟悉它的人不多,還遠(yuǎn)遠(yuǎn)沒(méi)被認(rèn)識(shí)和推廣應(yīng)用。
VISA(Virtual Instrument Software Architecture)是一個(gè)用來(lái)與各種儀器總線進(jìn)行通訊的高級(jí)應(yīng)用編程接口(API)。它不受平臺(tái)、總線和環(huán)境的限制。因此,可以通過(guò)NI-VISA來(lái)控制USB設(shè)備進(jìn)行相互之間的通信。
首先,配置NI-VISA來(lái)控制USB設(shè)備。安裝好VISA,接著分3步完成操作:
(1)使用Driver Development Wizard(驅(qū)動(dòng)程序開(kāi)發(fā)向?qū)?創(chuàng)建INF文檔。為了使用NI-VISA,先讓W(xué)indows將NI-VISA作為設(shè)備的缺省驅(qū)動(dòng)程序使用。在Windows環(huán)境中可以通過(guò)INF文檔做到這一點(diǎn)。NI-VISA3.0中包含的VISA Driver Development Wizard(DDW)將為USB設(shè)備創(chuàng)建一個(gè)INF文檔。
選擇Start>>Programs>>National Instruments>>VISA>>VISA Driver DeveloperWizard,打開(kāi)DDW。
可以用這個(gè)向?qū)镻XI/PCI或USB設(shè)備創(chuàng)建一個(gè)INF文檔。由于是在為USB設(shè)備創(chuàng)建驅(qū)動(dòng)程序,因此選擇USB,并點(diǎn)擊Next。此時(shí)出現(xiàn)圖1所示的VISA DDW基本設(shè)備信息窗口。
圖1 VISA DDW基本設(shè)備信息窗口
進(jìn)行這一步時(shí),您需要清楚USB儀器的USB供應(yīng)商ID和產(chǎn)品ID。這些數(shù)字可以在您安裝USB設(shè)備的時(shí)候?qū)ζ溥M(jìn)行確認(rèn),并在您想要與設(shè)備通訊的時(shí)候,尋找它的地址。依據(jù)USB的規(guī)格,兩個(gè)數(shù)字都是16位十六進(jìn)制數(shù)字,并應(yīng)該由設(shè)備制造商提供。在相應(yīng)欄內(nèi)輸入設(shè)備的供應(yīng)商ID、產(chǎn)品ID、制造商名稱和型號(hào)名稱。
USB Instrument Prefix(USB儀器前綴)只是一個(gè)描述符,您可以用它來(lái)識(shí)別本設(shè)備所用的相關(guān)文檔。在USB Instrument Prefix中輸入相應(yīng)信息,并在“output file directory”中選擇存放這些文檔的目錄,然后點(diǎn)擊Finish。INF文檔就被建好并保存在您指定的位置了。
(2)安裝INF文檔,并使用INF文檔的USB設(shè)備。在Windows XP操作系統(tǒng)中,DDW創(chuàng)建INF文檔時(shí),INF文檔頂部的標(biāo)題中會(huì)包含安裝指導(dǎo)。因?yàn)镮NF文檔是ASCII文本文件,所以可以通過(guò)諸如記事本之類的任何文本編輯器進(jìn)行閱讀。如果要了解有關(guān)安裝INF文檔的詳細(xì)信息,就在文本編輯器中打開(kāi)您的INF文檔,然后遵照文檔頂部的指導(dǎo)行事。
(3)使用NI-VISA Interactive Control(NI-VISA互動(dòng)控制工具)對(duì)設(shè)備進(jìn)行測(cè)試。
VISA Interactive Control(VISAIC)是一個(gè)實(shí)用程序,可用來(lái)輕而易舉地與任何VISA資源進(jìn)行通訊。做好使用VISA的配置之后,USB設(shè)備就會(huì)被列入U(xiǎn)SB分項(xiàng)之中。雙擊該設(shè)備,打開(kāi)設(shè)備的VISA對(duì)話框。應(yīng)出現(xiàn)如圖2所示的窗口。
圖2 “VISA交互控制”打開(kāi)VISA對(duì)話框
使用VISAIC打開(kāi)VISA Session時(shí),會(huì)自動(dòng)選擇“Template(模板)”表格與“Property Node(Read)”(屬性節(jié)點(diǎn)(只讀))表格。選擇想要讀取的屬性并點(diǎn)擊Execute,以讀取此項(xiàng)屬性?!癈urrent Value”(當(dāng)前值)指示欄中即顯示“Attribute Name”(屬性名稱)中指定屬性的當(dāng)前值。上圖中,可以看到Resource Name(資源名稱)的屬性。
在NI-VISA與USB設(shè)備進(jìn)行通訊后。現(xiàn)在,在LabVIEW中,我們可以使用“VISA打開(kāi)”、“VISA關(guān)閉”、“VISA讀取”和“VISA寫(xiě)入”進(jìn)行數(shù)據(jù)的傳輸了。
圖3 LabVIEW通信界面
設(shè)備連接成功以后,下一步可以用LabVIEW來(lái)設(shè)計(jì)這里的應(yīng)用程序。
Labview通信主界面如圖3所示。
在上述圖中,首先從VISA resource name中選擇一個(gè)端口號(hào)(這個(gè)端口與外部?jī)x器連接到電腦上的端口是相一致的),接著對(duì)流控制,奇偶校驗(yàn)位,數(shù)據(jù)的傳送速率,數(shù)據(jù)位,停止位等這些參數(shù)進(jìn)行相關(guān)的設(shè)置。此時(shí),LabVIEW與外部?jī)x器的連接已經(jīng)完成,下面就要進(jìn)行數(shù)據(jù)的發(fā)送了。在Lab-VIEW通信中,先在發(fā)送字符框中寫(xiě)入一個(gè)字符,如果這個(gè)字符是外部?jī)x器默認(rèn)的字符,這時(shí)再點(diǎn)擊發(fā)送按鈕,外部?jī)x器中的數(shù)據(jù)將傳送到LabVIEW中(如果這個(gè)字符與外部?jī)x器默認(rèn)的字符不符,外部?jī)x器中的數(shù)據(jù)將不會(huì)傳送過(guò)來(lái)),再點(diǎn)擊接收按鈕,此時(shí)數(shù)據(jù)將在圖中的示波器上顯示出來(lái)。與此同時(shí),讀取字節(jié)數(shù)框內(nèi)也顯示了讀取的總字節(jié)數(shù)。從而實(shí)現(xiàn)了LabVIEW與外部?jī)x器之間的相互通信。如果想保存?zhèn)魉偷降臄?shù)據(jù),單擊保存按鈕就可以了。所有的功能實(shí)現(xiàn)完以后,再單擊退出按鈕便可以退出了。
當(dāng)單擊保存按鈕時(shí),傳送到LabVIEW里的數(shù)據(jù)默認(rèn)以文本文檔的形式保存到磁盤(pán)里,當(dāng)然也可以選擇別的格式保存,而保存的路徑則可以自主選擇。
軟件具體實(shí)現(xiàn)的步驟是:
(1)調(diào)用VISA Configure Serial Port完成串口參數(shù)的設(shè)置,包括串口資源分配、波特率、數(shù)據(jù)位、停止位、校驗(yàn)位和流控等。
(2)使用VISA Write發(fā)送數(shù)據(jù),使用VISARead接收數(shù)據(jù).在接收數(shù)據(jù)之前需要使用VISAByt es at Serial Port查詢當(dāng)前串口接收緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),如果VISA Read要讀取的字節(jié)數(shù)大于緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù),VISA Read操作將一直等待,直至Timeout或者緩沖區(qū)中的數(shù)據(jù)字節(jié)數(shù)達(dá)到要求的字節(jié)數(shù).當(dāng)然也可以分批讀取接收緩沖區(qū)的數(shù)據(jù)或者只從中讀取一定字節(jié)的數(shù)據(jù)。
(3)串口使用結(jié)束后,用VISA Close結(jié)束與V ISA resource name指定的串口之間的會(huì)話。
程序設(shè)計(jì)時(shí),第一步實(shí)現(xiàn)LabVIEW與外部?jī)x器間的相互通信。正確安裝NI-VISA驅(qū)動(dòng)程序后,接著進(jìn)行通信接口程序的完成。具體的程序框圖如圖4所示。
圖4 通信接口程序框圖
與外部?jī)x器通信連接成功以后,下一步就是進(jìn)行雙方的的發(fā)送和接收數(shù)據(jù)。首先通過(guò)LabVIEW向外部?jī)x器發(fā)送一個(gè)字符,如果該字符與儀器中設(shè)置的字符相符合,則儀器便向LabVIEW發(fā)送數(shù)據(jù)過(guò)來(lái)。而發(fā)送過(guò)來(lái)的數(shù)據(jù)在LabVIEW前面板框圖中的示波器中顯示出來(lái)。
綜上所述,通過(guò)通信接口和數(shù)據(jù)的處理與顯示這兩個(gè)程序框圖從而實(shí)現(xiàn)了LabVIEW與外部?jī)x器間的相互通信。
從最終測(cè)試得到的數(shù)據(jù)表明,文章設(shè)計(jì)串口通信的方案是有效,可行的。它成功實(shí)現(xiàn)了LabVIEW與外部?jī)x器之間的相互通信。該方法簡(jiǎn)單方便,對(duì)儀器發(fā)送到LabVIEW的數(shù)據(jù),可以進(jìn)行進(jìn)一步的測(cè)量,處理和檢測(cè),操作完成以后再把處理過(guò)的數(shù)據(jù)再發(fā)送到外部?jī)x器上。這種通信方式在儀器儀表與虛擬儀器之間的數(shù)據(jù)交換和檢測(cè)等方面,有較高的實(shí)用價(jià)值。
[1]楊樂(lè)平.LabVIEW程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[2]徐永和.USB外圍設(shè)備設(shè)計(jì)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2002.
[3]龍志強(qiáng),趙海龍.虛擬儀器測(cè)試技術(shù)研究[J].儀表技術(shù),2000,(3).
[4]楊樂(lè)平,李海濤,肖相生.LabVIEW程序設(shè)計(jì)與應(yīng)用》[M].北京:電子工業(yè)出版社,2001.
[5]逯穎.基于LabVIEW的串行通信接口設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2006,29(17):123-124.
[6]賴永泉,王毅,曹銀強(qiáng).基于DLL虛擬儀器系統(tǒng)開(kāi)發(fā)技術(shù)[J].儀器儀表與檢測(cè)技術(shù),2004,29(4):62-65.
[7]李文軍,田瑞利,易利鵬.基于LabVIEW的數(shù)據(jù)采集與信號(hào)處理系統(tǒng)[J].現(xiàn)代電子技術(shù),2005,28(20):10-11,17.
[8]曾水生,謝云,易波.Labview實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)的USB2.0接口實(shí)現(xiàn)[J].機(jī)床與液壓,2005,(5):89-91.