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