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