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