文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)04-0081-03
0 引言
隨著工業(yè)技術(shù)的急劇發(fā)展,,虛擬儀器在機(jī)械控制及測量分析領(lǐng)域得到了廣泛應(yīng)用。虛擬儀器除了可以完成傳統(tǒng)測量儀器的功能外,,還擁有龐大的數(shù)據(jù)處理能力[1],。LabVIEW便是由美國國家儀器(National Instruments,NI)公司發(fā)布的一款虛擬儀器軟件,。LabVIEW可以與NI公司的數(shù)據(jù)采集卡實(shí)現(xiàn)無縫連接,,針對這種數(shù)據(jù)卡,只需要在程序框圖中選擇對應(yīng)的圖標(biāo)并編程便可實(shí)現(xiàn)USB連接及數(shù)據(jù)采集,,這種情況無需設(shè)置專門的驅(qū)動(dòng)程序,。但對于非NI公司的USB接口數(shù)據(jù)采集卡,必須使用LabVIEW自行編寫驅(qū)動(dòng)程序才能夠驅(qū)動(dòng)USB并完成數(shù)據(jù)采集,。
可編程的片上系統(tǒng)(Programmable System-on-Chip,,PSoC)是賽普拉斯公司推出的系列芯片。其中PSoC3的單個(gè)芯片集微控制器,、存儲器,、模擬和數(shù)字外設(shè)功能為一體,,具有USB等通信接口。借助PSoC Creator這一原理圖設(shè)計(jì)及輸入工具,,便可以輕松完成片上的模擬數(shù)字系統(tǒng)設(shè)計(jì),。
為了使LabVIEW能夠更普遍地使用通用USB設(shè)備,本文系統(tǒng)地闡述了LabVIEW與PSoC3通過USB通信的四種方式,,最后列舉了其中兩種方式的LabVIEW設(shè)計(jì)程序和測試效果,。
1 LabVIEW連接USB的方式
對于非NI公司的通用USB接口設(shè)備,,必須使用LabVIEW編寫對應(yīng)的驅(qū)動(dòng)程序,。一般有四種方法:使用調(diào)用庫函數(shù)節(jié)點(diǎn)(Call Library Function Node,CLF)方式調(diào)用動(dòng)態(tài)數(shù)據(jù)庫,;使用代碼接口節(jié)點(diǎn)(Code Interface Node,,CIN)調(diào)用外部代碼;使用虛擬儀器軟件架構(gòu)(NI-Virtual Instrument Software Architecture,,NI-VISA)配置USB,;將USB接口轉(zhuǎn)換為LabVIEW已定義的外設(shè)接口類型,例如聲卡,、串口等類型,。
1.1 CLF方式
CLF方式為在程序框圖中使用庫函數(shù)節(jié)點(diǎn)調(diào)用動(dòng)態(tài)鏈接庫(Dynamic Link Library,DLL),。DLL是一種允許多個(gè)程序共享并執(zhí)行某些代碼或者資源的可執(zhí)行文件[3],。LabVIEW沒有非NI公司USB接口設(shè)備的驅(qū)動(dòng)程序,用戶需要使用其他開發(fā)軟件(VC++,、C等)自行開發(fā)驅(qū)動(dòng)程序并封裝為DLL,,以供LabVIEW調(diào)用[4]。
LabVIEW調(diào)用動(dòng)態(tài)鏈接庫的步驟如下:在程序框圖中放置庫函數(shù)節(jié)點(diǎn),,其位置在“互連接口——庫與可執(zhí)行程序——調(diào)用庫函數(shù)節(jié)點(diǎn)”,,雙擊庫函數(shù)節(jié)點(diǎn)或者右擊選擇配置菜單選項(xiàng),進(jìn)入配置對話框,。在“函數(shù)”標(biāo)簽中選擇自己編寫并封裝的DLL庫函數(shù)名稱及某個(gè)功能函數(shù),。在“參數(shù)”標(biāo)簽中設(shè)置庫函數(shù)節(jié)點(diǎn)的輸入輸出參數(shù)及數(shù)據(jù)類型。由于只有指針類型的輸出參數(shù)能夠正確傳出,,所以要注意將輸出參數(shù)的傳遞屬性設(shè)置為指針類型,。
1.2 CIN方式
LabVIEW的CIN圖標(biāo)可以通過USB接口實(shí)現(xiàn)與其他編程語言的通信。使用CIN圖標(biāo)同樣需要設(shè)置輸入輸出參數(shù),。當(dāng)LabVIEW程序運(yùn)行到CIN節(jié)點(diǎn)時(shí),,通過輸入端口進(jìn)入其他語言源代碼中,運(yùn)行完源代碼之后再通過輸出端口返回到LabVIEW程序,。在其他語言源代碼中要獲取USB設(shè)備句柄并設(shè)置USB接口值等參數(shù),。從LabVIEW 2010升級版取消了代碼接口節(jié)點(diǎn)后,,此方式已較少使用。
1.3 NI-VISA方式
VISA是一個(gè)用來與各種儀器總線進(jìn)行通信的高級應(yīng)用編程接口,。NI-VISA從3.0版本開始支持USB通信,,它的兩種VISA類函數(shù)可以控制兩類USB設(shè)備:USB儀器(Instruction,INSTR)設(shè)備與USB 讀寫(Read And Write,,RAW)設(shè)備,,NI-VISA與這兩種USB設(shè)備實(shí)現(xiàn)通信的編程是不同的[5]。
1.3.1 NI-VISA與USB INSTR設(shè)備的通信
這種方式不需要配置NI-VISA,,直接使用圖1所示程序便可實(shí)現(xiàn)兩者的通信,。
1.3.2 NI-VISA與USB RAW設(shè)備的通信
這種方式需要配置NI-VISA,配置步驟如下:
(1)對下位機(jī)PSoC3供電并將USB總線接入個(gè)人電腦,。
(2)打開NI-VISA Driver Wizard,,將USB作為缺省驅(qū)動(dòng)程序。
(3)進(jìn)入基本信息設(shè)置窗口,,設(shè)置USB的基本信息,。在Device List中可以選擇Other選項(xiàng),點(diǎn)擊Next進(jìn)入U(xiǎn)SB的基本信息填寫對話框,。但因?yàn)橐呀?jīng)連接了USB設(shè)備,,所以此處可以直接單擊連接的USB設(shè)備,在下方自動(dòng)填寫USB設(shè)備對應(yīng)的供應(yīng)商ID,、產(chǎn)品ID,、制造商名稱和型號名稱。
(4)指定INF文檔的存放文件夾,。
(5)安裝INF文檔,。
設(shè)置完畢,運(yùn)行上位機(jī)時(shí),,便可以在“VISA資源名”顯示框中搜索到連接的USB設(shè)備,。如圖2,此時(shí)表示PSoC3可與LabVIEW實(shí)現(xiàn)通信,。
1.4 使用LabVIEW已有的驅(qū)動(dòng)類型
因?yàn)長abVIEW本身具有一些設(shè)備驅(qū)動(dòng)程序,,例如聲卡、串口等,,LabVIEW可直接利用這些已有的圖標(biāo)完成編程,。此時(shí)需要將下位機(jī)PSoC3構(gòu)建為這些設(shè)備。
2 將PSoC3構(gòu)建為USB設(shè)備的方式
PSoC3集成開發(fā)環(huán)境(PSoC Creator)中的全速USB組件USBFS(Full Speed USB)為控制端點(diǎn)提供了低層驅(qū)動(dòng)程序,。此組件提供了USBFS自定義程序,,從而可以方便實(shí)現(xiàn)描述符的構(gòu)建[6]。根據(jù)傳輸數(shù)據(jù)的不同,開發(fā)者可以構(gòu)建普通的USB設(shè)備,,也可以構(gòu)建基于USB類的設(shè)備,。構(gòu)建為基于USB類的設(shè)備的最大優(yōu)勢是操作系統(tǒng)中集成了這些類設(shè)備的驅(qū)動(dòng)程序,免去了開發(fā)者編寫驅(qū)動(dòng)的過程,。例如需要中斷傳輸,,可以構(gòu)建基于人機(jī)接口類的設(shè)備(USB_DEVICE_CLASS_HUMAN INTERFACE,HID),;需要批量傳輸,,可以構(gòu)建為基于通信類的設(shè)備(USB_DECICE_CLASS_COMMUNICATIONS,CDC),;需要等時(shí)傳輸可以構(gòu)建為基于音頻類的設(shè)備(USB_DEVICE_ CLASS_AUDIO,,Audio)。
2.1 將PSoC3構(gòu)建為普通的USB設(shè)備
此方式為PSoC3端最簡單的方式,。雖然各種描述符的構(gòu)建相對簡單,,可以根據(jù)需要使用中斷傳輸,、等時(shí)傳輸,、批量傳輸?shù)葌鬏敺绞剑鷥r(jià)是USB主機(jī)端(如PC)設(shè)計(jì)的復(fù)雜度大大提高,。開發(fā)者必須針對此設(shè)備編寫相應(yīng)的驅(qū)動(dòng)程序,,否則該設(shè)備將無法運(yùn)行。NI-VISA雖然可以簡化驅(qū)動(dòng)程序的編寫過程,,但是簡單的接口描述符和端點(diǎn)描述符決定了此種方式很難完成大量復(fù)雜的數(shù)據(jù)傳輸,。因此,這種方式只適合普通,、少量的數(shù)據(jù)傳輸,。
2.2 將PSoC3構(gòu)建為基于HID類、CDC類的設(shè)備
HID類是應(yīng)用最為廣泛的標(biāo)準(zhǔn)USB類,,操作系統(tǒng)的支持使HID類的開發(fā)變得較為容易,。USB主機(jī)通過HID報(bào)表描述符獲取主機(jī)所接收到的數(shù)據(jù)的意義,以及應(yīng)該發(fā)送什么數(shù)據(jù)給USB設(shè)備,。對于PSoC3來說,,HID類只適合傳輸一些低傳輸速率的數(shù)據(jù),這是因?yàn)镠ID類在實(shí)際應(yīng)用方面有一些限制:(1)所有的數(shù)據(jù)傳輸類型必須為控制傳輸和中斷傳輸,;(2)一次最多傳輸64字節(jié),,1 ms傳輸一次,所以速率限制為64 kb/s,;(3)僅支持一個(gè)輸入端點(diǎn)和一個(gè)輸出端點(diǎn),;(4)只能由USB主機(jī)周期性輪詢請求數(shù)據(jù)傳輸[7]。
基于CDC類的器件可以彌補(bǔ)HID類在以上方面的限制,。開發(fā)者可以根據(jù)PSoC Creator中的USBUART組件將PSoC3構(gòu)建為基于CDC類的器件,,而操作系統(tǒng)通常都自帶CDC類的設(shè)備驅(qū)動(dòng)程序,。PSoC3通過USB口連接到PC后,PC端識別為普通串口設(shè)備,。這樣USB接口在LabVIEW與PSoC3之間相當(dāng)于透明的,,LabVIEW端完全可以忽略USB的存在,只當(dāng)PC端連接到了一個(gè)普通的串口設(shè)備,,使用串口的一系列圖標(biāo)便可實(shí)現(xiàn)數(shù)據(jù)的傳輸,。相對于HID類設(shè)備,既提高了傳輸速度,,又簡化了程序設(shè)計(jì)的復(fù)雜程度,。
2.3 將PSoC3構(gòu)建為基于Audio類的設(shè)備
以上兩種方式在實(shí)際應(yīng)用上并不能應(yīng)對所有的PSoC3和LabVIEW之間的通信問題。例如USB連接的多路信號采集顯示及分析設(shè)備,,需要將多路信號數(shù)據(jù)通過USB實(shí)時(shí)地上傳到LabVIEW端,。將PSoC3配置為基于Audio類的設(shè)備有助于處理好系統(tǒng)所需的實(shí)時(shí)性和上位機(jī)下位機(jī)之間采樣率同步等問題。和HID類與CDC類相同的是,,一般的計(jì)算機(jī)操作系統(tǒng)中都集成了Audio類的驅(qū)動(dòng)程序,,將配置好的PSoC3連接到PC后,PC端識別為USB音頻設(shè)備,,USB接口在LabVIEW與PSoC3之間也相當(dāng)于透明的,。LabVIEW與PSoC3之間借用音頻的左右聲道傳輸數(shù)據(jù),并且可以利用Audio類對數(shù)據(jù)格式,、同步和采樣率的協(xié)議進(jìn)行數(shù)據(jù)的傳輸和同步處理,,從而大大簡化了LabVIEW和PSoC3之間此類數(shù)據(jù)的傳輸復(fù)雜程度。
3 LabVIEW與PSoC3基于USB通信的測試
3.1 通過配置NI-VISA實(shí)現(xiàn)通信的測試
通過NI-VISA配置USB設(shè)備的前面板與程序框圖如圖3,、圖4所示,,此方法中上位機(jī)LabVIEW使用配置NI-VISA方式,下位機(jī)將PSoC3構(gòu)建為普通的USB設(shè)備,。點(diǎn)擊圖3中實(shí)時(shí)采集按鈕,,實(shí)時(shí)顯示采集的數(shù)據(jù)。圖4的程序框圖中使用的是USB RAW設(shè)備配置方法,。
3.2 將PSoC3構(gòu)建為基于Audio類設(shè)備的測試
此方法的前面板與程序框圖如圖5、圖6所示,。此方法中上位機(jī)LabVIEW直接使用聲卡驅(qū)動(dòng)完成數(shù)據(jù)采集與實(shí)時(shí)顯示,,下位機(jī)將PSoC3構(gòu)建為基于Audio類的設(shè)備。圖5中上位機(jī)將接收到的數(shù)據(jù)解包后實(shí)時(shí)顯示,,采集到的是四個(gè)具有相位差的正弦信號,,圖6是通過聲卡驅(qū)動(dòng)編寫的程序,。
4 總結(jié)
本文系統(tǒng)地介紹了LabVIEW與PSoC3基于USB的幾種通信方式,,各種方式都有各自的適用場合,。LabVIEW的四種方式中,,CLF可以調(diào)用設(shè)備的驅(qū)動(dòng)程序,但驅(qū)動(dòng)程序的編寫對開發(fā)者來說相對困難,。CIN方式雖可以與其他編程語言實(shí)現(xiàn)鏈接,但目前LabVIEW已取消了這個(gè)節(jié)點(diǎn)函數(shù),。NI-VISA使用更方便,應(yīng)用更廣泛,。將PSoC3構(gòu)建為基于USB類設(shè)備的方式可以避免對驅(qū)動(dòng)程序的編寫及VISA的配置,可直接使用LabVIEW已有驅(qū)動(dòng)程序,,更簡化了程序的實(shí)現(xiàn),。根據(jù)傳輸數(shù)據(jù)類型的不同,可以將PSoC3配置為基于HID類,、CDC類和Audio類的設(shè)備,。
參考文獻(xiàn)
[1] 伍星華,王旭.國內(nèi)虛擬儀器技術(shù)的應(yīng)用研究現(xiàn)狀及展望[J].現(xiàn)代科學(xué)儀器,,2011(4):112-116.
[2] 劉宇芳,,李秀娟.Labview平臺下基于DLL的USB通信技術(shù)應(yīng)用[J].安徽工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2008(2):168-170,,189.
[3] 王平,,蘇濤,方浩?。赨SB2.0的高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),,2007(1):81-84.
[4] 周青云,王建勛.基于USB接口與LabVIEW的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索,,2011(8):238-240.
[5] Cypress.Full Speed USB(USBFS)[EB/OL].[2014-02-25].http://www.cypress.com/?rID=48924.
[6] Cypress.USB General Data Transfer with Standard HID Drivers[EB/OL].[2014-09-22].http://www.cypress.com/rID=70131.
[7] 方尚俠.基于LabVIEW和USB接口的虛擬晶體管特性圖示儀[D].成都:電子科技大學(xué),,2006.