胡俊立
(河南工業(yè)貿(mào)易職業(yè)學(xué)院 機(jī)電工程系,河南 鄭州 451191)
關(guān)鍵字:LabView;新能源汽車;電池管理中圖分類號:U469.72
動力電池組是新能源汽車主要的能量供給系統(tǒng),而電池管理系統(tǒng)是影響其能否正常、高效的工作決定性因素。電池管理系統(tǒng)主要主要對動力電池組的充電電流、放電電流、充放電電壓、放電深度等參數(shù)進(jìn)行控制,防止電池過充電或者過放電,控制并平衡電池組的工作,使各個電池發(fā)揮出最優(yōu)性能,最終保證電動車整車高質(zhì)量、高可靠性、高效率的運(yùn)行[1]。電池管理系統(tǒng)在工作時需要實(shí)時采集電池電壓、充放電電流、電池組溫度等關(guān)鍵參數(shù),對這些關(guān)鍵參數(shù)的實(shí)時采集并直觀顯示,不僅可以幫助測試人員及時發(fā)現(xiàn)電池組或者電池管理系統(tǒng)存在的問題,而且可以幫助電池管理系統(tǒng)程序開發(fā)人員發(fā)現(xiàn)程序的Bug 以及能否對外界信息作出正確、及時的響應(yīng)。
LabView(Laboratory Virtual Instrument Engineering)是一種圖形化的編程語言,它廣泛的被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室接受,是一個標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件。LabView 集成了與滿足GPIB、VXI、RS-232 和RS-485 協(xié)議的硬件及數(shù)據(jù)采集卡通信的全部功能[2]。它還內(nèi)置了便于應(yīng)用TCP/IP、ActiveX 等軟件標(biāo)準(zhǔn)的庫函數(shù),是一個強(qiáng)大且靈活的軟件。利用LabView 可以方便的建立自己的虛擬儀器,其圖形化的界面可以使編程和使用變得生動有趣。LabView提供了實(shí)現(xiàn)儀器編程和數(shù)據(jù)采集系統(tǒng)的便捷途徑,使用它進(jìn)行原理研究、設(shè)計(jì)、測試并實(shí)現(xiàn)儀器系統(tǒng)時可以大大提高工作效率。
本文基于LabView 平臺,使用CAN 總線為通訊媒介,設(shè)計(jì)了一個對電池管理系統(tǒng)數(shù)據(jù)進(jìn)行實(shí)時監(jiān)控并顯示的軟硬件系統(tǒng),實(shí)現(xiàn)了電池管理系統(tǒng)數(shù)據(jù)的收發(fā)、上報、保存等功能,并且使用可視化圖形界面將關(guān)鍵數(shù)據(jù)顯示出來。
系統(tǒng)由LabView2011 人機(jī)交互界面、主控PC 機(jī)和CAN總線收發(fā)器組成。其中LabView2011 人機(jī)交互界面用來顯示電池管理系統(tǒng)數(shù)據(jù),同時也可通過人機(jī)交互界面發(fā)送數(shù)據(jù)。主控PC 機(jī)主控計(jì)算機(jī)采用ThinkPadX1 筆記本電腦,采用英特爾酷睿 i5-8250U 處理器,通過USB 接口與CAN 總線收發(fā)器通信,主控PC 運(yùn)行LabView 人機(jī)交互界面程序,用來接收并存儲電池管理系統(tǒng)數(shù)據(jù)。CAN 總線收發(fā)器一方面用來接收來自電池管理系統(tǒng)的數(shù)據(jù)上傳至人機(jī)交互界面顯示,另一方面下發(fā)來自人機(jī)交互界面的標(biāo)定數(shù)據(jù),電池管理系統(tǒng)標(biāo)定之后將標(biāo)定結(jié)果返回給人機(jī)交互界面,以供測試人員正確決策。
CAN 總線收發(fā)器采用周立功USBCAN-II 收發(fā)設(shè)備,提供二次開發(fā)的庫文件,并且兼容USB2.0B 規(guī)范,支持2 路CAN 接口。使用該收發(fā)設(shè)備時,使用主控PC 機(jī)的USB 接口接入設(shè)備,連線簡單可靠。另外,該設(shè)備體積小、便于測試人員隨身攜帶,在可靠性方面,自帶光電隔離模塊,避免由于電磁干擾出現(xiàn)的亂碼情況。
本系統(tǒng)采用LabView2011 作為開發(fā)平臺實(shí)現(xiàn),完成的主要功能有:
(1)從電池管理系統(tǒng)接收運(yùn)行狀態(tài)參數(shù);
(2)對接收到的狀態(tài)參數(shù)進(jìn)行解碼,并且以圖形、圖表、數(shù)字等形式顯示;
(3)對電池管理系統(tǒng)中關(guān)鍵參數(shù)進(jìn)行實(shí)時存儲;
(4)根據(jù)用戶需要,對電池管理系統(tǒng)運(yùn)行參數(shù)進(jìn)行標(biāo)定,發(fā)送命令給電池管理系統(tǒng)。
系統(tǒng)使用的CAN 總線收發(fā)設(shè)備是周立功的USBCANII,提供二次開發(fā)的庫文件ControlCAN.dl。首先,把庫函數(shù)文件都放在工作目錄下。庫函數(shù)文件總共有三個文件:ControlCAN.h、ControlCAN.lib、ControlCAN.dll 和一個文件夾kerneldlls。軟件系統(tǒng)中主程序是整個系統(tǒng)的基礎(chǔ),在主程序中完成打開CAN 總線收發(fā)設(shè)備、初始化設(shè)備、開始CAN總線通信、啟動其他程序等功能,只有主程序中打開設(shè)備、CAN 總線通訊建立正常之后才能運(yùn)行其他程序。針對這一特點(diǎn),在主程序中使用平鋪結(jié)構(gòu),每一項(xiàng)操作為一幀,這樣既提高了軟件的運(yùn)行效率,又保證CAN 總線收發(fā)設(shè)備依次打開并進(jìn)行初始化,保證CAN 通信的正常運(yùn)行。通過調(diào)用庫文件中的VCI_OpenDevice 函數(shù)打開設(shè)備,VCI_InitCan 函數(shù)初始化某一路CAN,VCI_StartCan 函數(shù)來啟動某一路CAN。
CAN 總線數(shù)據(jù)接收程序,通過調(diào)用庫文件ControlCAN.dl 中的VCI_Receive 函數(shù)實(shí)現(xiàn)。通過設(shè)置timing0 和timing1來設(shè)置CAN 總線通訊波特率[3],必須和電池管理系統(tǒng)CAN總線波特率保持一致。VCI_CAN_OBJ 結(jié)構(gòu)體表示CAN 總線通訊數(shù)據(jù)結(jié)構(gòu)體,該結(jié)構(gòu)體是周立功USBCAN-II 收發(fā)器總線通信的基本數(shù)據(jù)結(jié)構(gòu)。在接收程序中使用While 循環(huán)結(jié)構(gòu),即循環(huán)執(zhí)行VCI_Receive 函數(shù),從而保證數(shù)據(jù)接收的實(shí)時性。另外,為了保證接收程序能夠及時響應(yīng)通信中產(chǎn)生的異常,在While 循環(huán)結(jié)構(gòu)中加入條件結(jié)構(gòu),當(dāng)異常產(chǎn)生時,能夠及時處理異常。VCI_Receive 接收到數(shù)據(jù)之后,在程序上是結(jié)構(gòu)體數(shù)組的形式,使用LabVIEW 中“簇”的按名稱解綁函數(shù)將數(shù)據(jù)從結(jié)構(gòu)體中抽取出來, 再根據(jù)CAN 總線通訊ID 將具體的數(shù)據(jù)進(jìn)行處理。在數(shù)據(jù)顯示過程中調(diào)用了選擇結(jié)構(gòu),將根據(jù)ID 的不同將不同的數(shù)據(jù)以不同的方式解讀和顯示。
CAN 總線數(shù)據(jù)發(fā)送程序,通過調(diào)用庫文件ControlCAN.dl 中的VCI_Transmit 函數(shù)實(shí)現(xiàn)。在發(fā)送一幀CAN 總線數(shù)據(jù)時,程序首先將ID、控制命令、參數(shù)等信息填充至VCI_CAN_OBJ結(jié)構(gòu)體中,同時將VCI_Transmit 函數(shù)放置在事件結(jié)構(gòu)中,當(dāng)需要發(fā)送時,產(chǎn)生自定義事件,該事件將觸發(fā)VCI_Transmit函數(shù)的執(zhí)行。通過事件結(jié)構(gòu)的使用,一方面降低對系統(tǒng)資源的占用,另一方面使得發(fā)送效率大大提高。
在系統(tǒng)的運(yùn)行過程中,會接收到來自電池管理系統(tǒng)的大量關(guān)鍵數(shù)據(jù),如電池溫度、充放電電流等,同時系統(tǒng)運(yùn)行過程中本身也會產(chǎn)生許多關(guān)鍵數(shù)據(jù),如參數(shù)標(biāo)定數(shù)值、標(biāo)定結(jié)果、操作狀態(tài)等等,這些數(shù)據(jù)電池管理系統(tǒng)的開發(fā)過程中起著極為重要的作用,必須妥善存儲。雖然LabView 中提供了一些保存數(shù)據(jù)的方式,比如文本文件、電子表格文件等等,但是這種方式保存的數(shù)據(jù)為單個文件、文件的大小、數(shù)據(jù)的類型、保存的頻率等都不可控,另外,也無法保證數(shù)據(jù)文件的安全性和對數(shù)據(jù)的集中使用。針對LabView 自身保存數(shù)據(jù)的這些缺點(diǎn),在本系統(tǒng)中選擇專業(yè)數(shù)據(jù)庫來保存數(shù)據(jù)。使用專業(yè)數(shù)據(jù)庫能夠存儲大量數(shù)據(jù),而且占用空間少;管理操作方便高效,可以通過網(wǎng)絡(luò)媒介對數(shù)據(jù)進(jìn)行共享,方便了電池管理系統(tǒng)開發(fā)過程中數(shù)據(jù)的分析和使用。在本系統(tǒng)中,使用SQLServer 數(shù)據(jù)庫。
LabView 中可以通過第三方數(shù)據(jù)庫訪問工具包LabSQL,實(shí)現(xiàn)多種方式訪問SQLServer 數(shù)據(jù)庫。而LabSQL 是通過調(diào)用自動化引用句柄,獲得相關(guān)方法,執(zhí)行SQL 相關(guān)功能,最終封裝成子VI。LabSQL 數(shù)據(jù)庫工具包通過4 個步驟實(shí)現(xiàn)對SQLServer 數(shù)據(jù)庫的操作:ADO Connection Create、ADO Connection Open、3SQL Execute、ADO Connection Close。在開發(fā)時只需要在字符串常量控件“數(shù)據(jù)源”處輸入DSN=SQLServer 即可(其中SQLServer 是ODBC 配置時候指定的名稱),然后在SQL 指令處讀寫操作需要輸入SQL 語句即可。
通過在LabView 當(dāng)中使用SQLServer 數(shù)據(jù)庫,本系統(tǒng)實(shí)現(xiàn)了對電池參數(shù)(單體電池電壓、電流、溫度),電池狀態(tài)(放電深度、荷電狀態(tài)、健康狀態(tài)),系統(tǒng)故障(故障類型、故障定位、故障信息)、報警信息的實(shí)時存儲,以及電池管理系統(tǒng)測試過程中通過對數(shù)據(jù)的分析,改進(jìn)了電池管理系統(tǒng)的諸多設(shè)計(jì)缺陷和問題,大大提高了工作效率。
本文基于LabView2011 圖形化編程平臺,設(shè)計(jì)了一套新能源汽車電池數(shù)據(jù)監(jiān)控系統(tǒng)。系統(tǒng)中以CAN 總線為通信媒介,通過使用圖形化界面采集電池管理系統(tǒng)中的關(guān)鍵數(shù)據(jù)并以圖形、圖表、數(shù)字的方式直觀顯示,并且對系統(tǒng)工作中產(chǎn)生的關(guān)鍵數(shù)據(jù)進(jìn)行實(shí)時存儲和分析。通過該系統(tǒng)的應(yīng)用,大大提高了現(xiàn)場測試人員的工作效率,對系統(tǒng)存儲的關(guān)鍵數(shù)據(jù)的分析也幫助電池管理系統(tǒng)開發(fā)人員發(fā)現(xiàn)了系統(tǒng)當(dāng)中存在的缺陷和不足,進(jìn)一步提高了電池管理系統(tǒng)的可靠性。同時,該系統(tǒng)也具有一定的通用性,只需要更改CAN 總線通訊波特率和命令I(lǐng)D 就可以方便的應(yīng)用于其他型號的電池管理系統(tǒng)。