??? 摘 要: 針對(duì)燃料電池電動(dòng)汽車所用大功率DC/DC" title="DC/DC">DC/DC變換器" title="變換器">變換器開發(fā)了一套基于LabVIEW和USB-CAN" title="USB-CAN">USB-CAN卡的數(shù)據(jù)采集" title="數(shù)據(jù)采集">數(shù)據(jù)采集" title="實(shí)時(shí)數(shù)據(jù)采集" title="實(shí)時(shí)數(shù)據(jù)采集">實(shí)時(shí)數(shù)據(jù)采集">實(shí)時(shí)數(shù)據(jù)采集和控制系統(tǒng),實(shí)現(xiàn)了PC機(jī)與CAN總線間的通信。
??? 關(guān)鍵詞: 虛擬儀器? LabVIEW? USB-CAN? ActiveX? 數(shù)據(jù)采集
?
??? 大功率DC/DC變換器在燃料電池電動(dòng)汽車中是關(guān)鍵零部件之一。為了研究其變換規(guī)律及進(jìn)行數(shù)據(jù)分析,需要對(duì)其各類參數(shù)進(jìn)行數(shù)據(jù)采集。LabVIEW是美國NI公司推出的一種虛擬儀器軟件開發(fā)工具,是當(dāng)今計(jì)算機(jī)輔助測(cè)試(CAT)領(lǐng)域的一項(xiàng)重要技術(shù),功能強(qiáng)大,開發(fā)效率高,界面友好美觀,因此采用基于LabVIEW的開發(fā)平臺(tái)研究大功率DC/DC變換器數(shù)據(jù)采集系統(tǒng)是一種有效可行的途徑。
1 測(cè)試系統(tǒng)結(jié)構(gòu)圖
??? 燃料電池電動(dòng)汽車用DC/DC變換器功率高達(dá)100kW以上,輸入輸出電壓電流、工作溫度是變換器的主要狀態(tài)參數(shù)。為了及時(shí)準(zhǔn)確地了解和分析DC/DC的工作狀態(tài)就需要記錄并分析上述各參數(shù),因此,開發(fā)一套DC/DC變換器實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)是必要的。
??? CAN總線因具有實(shí)時(shí)性強(qiáng)、可靠性高、通信速率快、總線協(xié)議錯(cuò)誤處理機(jī)制完善等特點(diǎn)而廣泛應(yīng)用于汽車電子業(yè);USB總線因其傳輸速率快、即插即用、通用性強(qiáng)、易擴(kuò)展和性價(jià)比高等特點(diǎn)而越來愈多地應(yīng)用于數(shù)據(jù)采集系統(tǒng)中。本系統(tǒng)采用TI公司的DSP2407作為下位機(jī)DC/DC變換器控制板主控芯片,通過改變PWM驅(qū)動(dòng)波形來控制主電路IGBT開關(guān)管通斷,以實(shí)現(xiàn)對(duì)出口電壓電流的調(diào)節(jié)。同時(shí)通過霍爾傳感器將上述參數(shù)采集到2407芯片中通過CAN總線經(jīng)USB-CAN轉(zhuǎn)換器將信號(hào)發(fā)送到PC機(jī)的USB口,并用LabVIEW處理顯示,硬件平臺(tái)如圖1所示。
?????????????????
??? LabVIEW提供了PCI總線、GPIB總線、VIX總線、串口總線的圖形化驅(qū)動(dòng)程序,但是沒有直接支持USB總線驅(qū)動(dòng)程序的功能模塊,這給使用USB設(shè)備完成數(shù)據(jù)采集的用戶帶來了一定的困難。
2 軟件編程設(shè)計(jì)思路
2.1 虛擬儀器開發(fā)層次圖
??? 虛擬儀器的核心思想是“軟件即是儀器”,用軟件來代替?zhèn)鹘y(tǒng)的硬件儀器,以節(jié)約成本,提高開發(fā)效率和增強(qiáng)系統(tǒng)的靈活性。它的層次結(jié)構(gòu)圖如圖2所示[1]。
??????????????????
??? 圖2中每個(gè)模塊都具有標(biāo)準(zhǔn)化接口,可以縱向與相鄰的模塊互相通信,也可以使同層次的虛擬模塊之間互連。底層驅(qū)動(dòng)程序是整個(gè)軟件的基礎(chǔ),其功能首先是利用硬件模塊標(biāo)準(zhǔn)接口對(duì)其進(jìn)行控制和管理,同時(shí)為上一層模塊提供標(biāo)準(zhǔn)的調(diào)用接口,使上一層軟件設(shè)計(jì)與硬件無關(guān),從而使整個(gè)系統(tǒng)的開發(fā)與儀器的硬件變化無關(guān)。
2.2 USB總線驅(qū)動(dòng)模型
??? 由于本系統(tǒng)的硬件平臺(tái)是通過USB總線實(shí)現(xiàn)與PC機(jī)通信,了解和掌握USB總線的驅(qū)動(dòng)機(jī)制是有必要的。Windows操作系統(tǒng)下USB總線驅(qū)動(dòng)模型如圖3所示[2]。
?????????????????????
??? USB驅(qū)動(dòng)程序?qū)儆赪DM(Win32 Driver Module)驅(qū)動(dòng)程序,采用分層驅(qū)動(dòng)模式。驅(qū)動(dòng)程序最上層包含一個(gè)函數(shù)驅(qū)動(dòng)程序,它可以是一個(gè)類別驅(qū)動(dòng)程序或一個(gè)特定的設(shè)備驅(qū)動(dòng)程序,用于管理應(yīng)用層與較低層總線間的通信;驅(qū)動(dòng)程序模型最底層包含一個(gè)總線驅(qū)動(dòng)程序,用于管理函數(shù)驅(qū)動(dòng)程序與設(shè)備硬件之間的通信;驅(qū)動(dòng)程序中間有一個(gè)或數(shù)個(gè)過濾驅(qū)動(dòng)程序用來輔助函數(shù)驅(qū)動(dòng)程序與總線驅(qū)動(dòng)程序。應(yīng)用程序使用Win32 API函數(shù)與操作系統(tǒng)通信,驅(qū)動(dòng)程序彼此間使用I/O請(qǐng)求封包IRP(I/O Request Packet)來通信。Windows定義了一群驅(qū)動(dòng)程序可以使用的IRP,每一個(gè)IRP執(zhí)行一個(gè)輸入或輸出要求??偩€驅(qū)動(dòng)程序由操作系統(tǒng)提供,用戶不需要自己編程開發(fā),設(shè)備驅(qū)動(dòng)程序可以由操作系統(tǒng)提供,也可以由設(shè)備生產(chǎn)廠商提供[2]。
3 具體編程實(shí)現(xiàn)
3.1 VCI函數(shù)調(diào)用流程圖
??? 本系統(tǒng)采用德國IXXAT公司的USB-CAN卡完成信號(hào)轉(zhuǎn)換。與諸多CAN卡廠商一樣,IXXAT公司為其每塊PC/CAN-Interface都提供了一套功能強(qiáng)大的軟件開發(fā)包VCI(Virtual CAN Interfaces),以備用戶在PC機(jī)上開發(fā)應(yīng)用程序使用,該開發(fā)包包含了基于Windows API函數(shù)的Demo程序和通用通信程序模塊DLL文件,剩下的工作主要是通過LabVIEW實(shí)現(xiàn)提供的各種功能函數(shù)的調(diào)用,從而完成應(yīng)用程序?qū)υO(shè)備的訪問。具體操作流程圖如圖4所示。
?????????????????????????????
3.2 LabVIEW編程實(shí)現(xiàn)
??? 在LabVIEW中實(shí)現(xiàn)對(duì)VCI的訪問有兩種方法:一種方法是通過Advanced面板中CLF(Call Library Function)節(jié)點(diǎn)調(diào)用動(dòng)態(tài)鏈接庫,另一種方法是通過Communication 面板中的ActiveX控件[3]直接使用VCI中的方法和屬性。
??? CLF節(jié)點(diǎn)的配置方法如圖5所示:用戶通過Library Name or Path來選擇DLL存放的路徑,通過Function Name來選擇要使用的函數(shù)名,Calling Conventions來選擇WinAPI或是自己開發(fā)的C函數(shù),通過Add/Delete Parameter來增加或刪除參數(shù),通過Parameter來設(shè)置參數(shù)名,通過Type來指定參數(shù)類型。該節(jié)點(diǎn)使得LabVIEW的功能更加全面靈活,應(yīng)用極為廣泛。本系統(tǒng)采用的是第二種方法,即用ActiveX控件來實(shí)現(xiàn)函數(shù)的調(diào)用。
????????????????????????????
3.2.1 ActiveX簡介
??? ActiveX通常翻譯為“微軟倡導(dǎo)的網(wǎng)絡(luò)化多媒體對(duì)象技術(shù)”,它實(shí)際上是一整套建立在COM(The Component Object Model組件對(duì)象模型)和OLE(Object Linked And Embedded對(duì)象連接與嵌入)基礎(chǔ)之上跨越編程語言的軟件開發(fā)方法與規(guī)范。所有的ActiveX 控件都是屬性和方法的組合體,一組屬性和方法就構(gòu)成了通常所說的接口。通過利用ActiveX,LabVIEW 既可以作為客戶機(jī)控制其他外部應(yīng)用程序,又可以擔(dān)當(dāng)服務(wù)器,從外部應(yīng)用程序控制LabVIEW [3]。LabVIEW 中的ActiveX Controls 子模板提供的控制型控件包括:包容器(container)、變體數(shù)據(jù)類型(variant)、自動(dòng)化標(biāo)志(automation refnum)、調(diào)用節(jié)點(diǎn)(Invoke Node)及屬性節(jié)點(diǎn)(Property Node)。對(duì)于這些控件來說,LabVIEW已經(jīng)變?yōu)榭蛻舳?。一般情況下, 任何ActiveX控件都可以嵌入到LabVIEW中,然后使用其屬性和方法,實(shí)現(xiàn)所需的功能[4],從而使程序功能更加強(qiáng)大,節(jié)約開發(fā)時(shí)間。
??? 本系統(tǒng)是以LabVIEW作為客戶端,以VCI作為服務(wù)器實(shí)現(xiàn)PC與USB-CAN卡的通信。
3.2.2 USB-CAN卡初始化
??? 欲調(diào)用VCI對(duì)象的屬性和方法,首先要通過Automation Open節(jié)點(diǎn)來開啟ActiveX服務(wù)器,而Automation Open節(jié)點(diǎn)的Refnum輸入是由Automation Refnum節(jié)點(diǎn)提供的。如圖6所示,在前面板放置Automation Refnum節(jié)點(diǎn),右擊鼠標(biāo)彈出菜單,選擇Select ActiveX Class,從子菜單選擇“Browse”,可以看到能夠獲取的控件及其屬性列表以及系統(tǒng)中的LabVIEW接口,在這里筆者選擇VCIWrapper 1.0 Type Library Version 1.0中的VCIWrap對(duì)象,再將該節(jié)點(diǎn)與Automation Open節(jié)點(diǎn)相連,這樣就打開了與VCI服務(wù)器相連的Refnum。通過該Refnum傳遞給模板中其他節(jié)點(diǎn)函數(shù),進(jìn)而編程實(shí)現(xiàn)具體功能。
???????????????????????????
??? USB-CAN卡初始化是通過Invoke Node節(jié)點(diǎn)調(diào)用VCI_SelectHardware和VCI_PrepareBoard兩個(gè)函數(shù)完成,前者讀取設(shè)備號(hào)、設(shè)備類型、名稱、廠商等信息,后者生成Board-Handle以供后續(xù)程序使用。
3.2.3 CAN總線初始化
??? CAN總線初始化是通過VCI_InitCan、VCI_SetAccMask、VCI_ConfigQueue、VCI_ConfigRx-QueObj和VCI_StartCAN這幾個(gè)函數(shù)完成的。根據(jù)約定的協(xié)議,調(diào)用VCI_InitCan設(shè)置CAN通道、波特率(250kbps)和工作模式(擴(kuò)展幀),調(diào)用VCI_SetAccMask、VCI_ConfigQueue和VCI_ConfigRxQueObj設(shè)置PC機(jī)接收ID及其掩碼以及接收和發(fā)送隊(duì)列長度等準(zhǔn)備工作,最后由VCI_StartCAN啟動(dòng)CAN總線。
3.2.4 數(shù)據(jù)發(fā)送和接收
??? 發(fā)送采取手動(dòng)方式,當(dāng)發(fā)送按鈕按下時(shí),給定的電壓、電流和電源工作方式信號(hào)將通過VCI_TransmitObj函數(shù)送出給DSP2407。接收端采用循環(huán)采樣方式接收2407每隔50ms發(fā)送過來的數(shù)據(jù),該數(shù)據(jù)包括DC/DC實(shí)際電流、電壓、溫度、life值和Status_Flag狀態(tài)碼。
3.2.5? 數(shù)據(jù)顯示和儲(chǔ)存
??? 采樣進(jìn)來的電壓和電流信號(hào)可以通過LabVIEW前面板中的Numeric Control以數(shù)字方式顯示,也可以通過Waveform Chart以波形方式實(shí)時(shí)顯示,溫度信號(hào)可以通過Thermometer顯示,Life值通過Horizontal Graduated Bar顯示;數(shù)據(jù)存儲(chǔ)一般是用Excel表完成的,可以通過使用LabVIEW中文件I/O模塊或用ActiveX調(diào)用Excel組件[4],筆者認(rèn)為前者更方便些,用戶可以根據(jù)自己的喜好選擇。
3.2.6 實(shí)驗(yàn)數(shù)據(jù)結(jié)果
??? 圖7是通過Excel實(shí)時(shí)記下的實(shí)驗(yàn)數(shù)據(jù)。可以看出,基于LabVIEW的大功率DC/DC變換器數(shù)據(jù)采集系統(tǒng)實(shí)現(xiàn)了數(shù)據(jù)采集的實(shí)時(shí)性,在上位機(jī)上能夠動(dòng)態(tài)地顯示采集到的電壓、電流等數(shù)值和波形,并可以將采集到的數(shù)據(jù)以電子表格的形式保存下來,達(dá)到設(shè)計(jì)的要求。
???????????????????????
??? 本文設(shè)計(jì)了一種硬件基于USB-CAN卡,軟件基于LabVIWE的實(shí)時(shí)數(shù)據(jù)采集控制系統(tǒng),分析了開發(fā)虛擬儀器與USB總線通信的軟件編程思路,詳述了基于ActiveX技術(shù)的VCI功能的調(diào)用,成功實(shí)現(xiàn)了LabVIEW與USB-CAN卡的數(shù)據(jù)交換。通過調(diào)試和實(shí)際使用,本測(cè)試系統(tǒng)達(dá)到了設(shè)計(jì)要求,效果良好。
參考文獻(xiàn)
[1] ?吳立力. 信號(hào)采集系統(tǒng)中的信號(hào)傳輸顯示與處理[D].北京:北京工業(yè)大學(xué),2001.
[2] ?宋吉超. 基于USB2.0接口的虛擬儀器研究[D]. 西安:西安電子科技大學(xué),2005.
[3] ?楊樂平,李海濤,趙勇,等. LabVIEW高級(jí)程序設(shè)計(jì)[M].北京: 清華大學(xué)出版社,2003.
[4] ?雷振山. LabVIEW 7 Express實(shí)用技術(shù)教程[M]. 北京:中國鐵道出版社,2004.