陳華春 古茂兢






摘 ?要:本文介紹了一種基于CANDTU硬件和LabVIEW軟件平臺的遠程車載參數(shù)監(jiān)控系統(tǒng)的實現(xiàn)。系統(tǒng)按功能模塊可以分為CAN報文采集、4G上傳云服務(wù)器、LabVIEW數(shù)據(jù)處理分析三部分。通過CANDTU可將汽車總線各單元的數(shù)據(jù)上傳到指定云服務(wù)器,完成數(shù)據(jù)采集和存儲,然后在本地計算機上通過LabVIEW調(diào)用CANDTU提供的接口函數(shù)連接云服務(wù)器,有的CAN數(shù)據(jù)會被傳輸?shù)接嬎銠C上進行后續(xù)的處理和分析,借助LabVIEW可以生成專業(yè)的分析圖表,并通過圖表判斷是否滿足設(shè)計標準。
關(guān)鍵詞:CAN總線;LabVIEW;車載參數(shù)監(jiān)控
中圖分類號:TP277;U469.72 ? ? 文獻標識碼:A 文章編號:2096-4706(2019)16-0004-03
Abstract:This paper introduces a remote vehicle parameter monitoring system based on CANDTU hardware and LabVIEW software platform. According to function modules,the system can be divided into CAN message collection,4G cloud server uploading and LabVIEW data processing and analysis. The data of each unit of automobile bus can be uploaded to the designated cloud server through CANDTU to complete data acquisition and storage. Then the interface function provided by CANDTU is called by LabVIEW to connect the cloud server on the local computer. Some CAN data will be transferred to the computer for subsequent processing and analysis. With the help of LabVIEW,professional analysis charts can be generated,and the charts can be used to determine whether the design standards are met.
Keywords:CAN bus;LabVIEW;vehicle parameter monitoring
0 ?引 ?言
汽車是當(dāng)今最重要的交通工具之一。但是近年來,能源和環(huán)境污染問題日益嚴峻,國務(wù)院在2012年發(fā)布《節(jié)能與新能源汽車產(chǎn)業(yè)發(fā)展規(guī)劃(2012—2020年)》,規(guī)劃了以電驅(qū)動形式的汽車為主的新能源汽車的發(fā)展方向,以及整個汽車工業(yè)轉(zhuǎn)型的戰(zhàn)略方向。如今,中國已經(jīng)成為新能源汽車產(chǎn)銷第一大國。汽車性能檢測是現(xiàn)代汽車行業(yè)評價汽車性能的主要手段,新能源汽車的檢測需求也越來越多[1]。
汽車生產(chǎn)商每生產(chǎn)或升級一款新車,都需要做路測收集汽車行駛時各單元的實時狀態(tài),做具體的性能分析。CANDTU利用4G信號遠距離傳輸CAN數(shù)據(jù),結(jié)合LabVIEW簡單且強大的界面編輯功能,可以縮短測試軟件開發(fā)周期,降低測試人力成本,結(jié)果也能及時反饋。
1 ?系統(tǒng)設(shè)計
如圖1所示,系統(tǒng)主要由三個部分構(gòu)成:CAN報文采集、4G上傳云服務(wù)器、LabVIEW數(shù)據(jù)處理分析。
CANDTU支持4G通信,可將CAN總線上的數(shù)據(jù)上傳到指定的服務(wù)器上。CANDTU的CAN口并入待測總線,使用CANDTU配置工具配置對應(yīng)總線波特率、服務(wù)器IP和端口。
CANDTU云數(shù)據(jù)平臺具有遠程管理設(shè)備、配置設(shè)備、實時轉(zhuǎn)發(fā)數(shù)據(jù)等功能。設(shè)備通過4G無線連接到云數(shù)據(jù)平臺后,將設(shè)備ID添加到云數(shù)據(jù)平臺后,用戶即可遠程管理設(shè)備。同時,云數(shù)據(jù)平臺還支持CAN、GPS數(shù)據(jù)實時轉(zhuǎn)發(fā),可通過LabVIEW調(diào)用二次開發(fā)函數(shù)庫開發(fā)應(yīng)用,免去用戶搭建服務(wù)器的工作,從而快速搭建用戶應(yīng)用。
2 ?軟件設(shè)計
2.1 ?軟件功能結(jié)構(gòu)
如圖2所示,軟件系統(tǒng)由1個主控程序與4個功能子程序組成。
主控程序?qū)崿F(xiàn)用戶登錄服務(wù)器、獲取設(shè)備列表、啟動設(shè)備、斷開服務(wù)器連接、復(fù)位設(shè)備等人機交互操作,LabVIEW是事件結(jié)構(gòu)類似硬件的中斷方式,在降低CPU的占用率的情況下,能夠快速地響應(yīng)用戶事件,所以主界面的程序使用事件結(jié)構(gòu)編寫。其他4個子程序主要完成數(shù)據(jù)的接收、發(fā)送、顯示和存儲、解析,分4個獨立的線程運行。主控程序隨軟件啟動運行,它可以根據(jù)用戶的需求,通過選項卡選擇其余4個子程序,并將各子程序的運行結(jié)果傳遞給相關(guān)功能面板的顯示控件。
2.2 ?二次封裝接口函數(shù)
LabVIEW調(diào)用DLL也有一定的局限性,無法調(diào)用包含賦值或者返回值包含復(fù)雜數(shù)據(jù)結(jié)構(gòu)的DLL[2]。由于CANDTU提供的DLL包含上述復(fù)雜數(shù)據(jù)結(jié)構(gòu),所以需要重新封裝函數(shù)。構(gòu)建一個新的DLL,把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換成LabVIEW易于調(diào)用的數(shù)據(jù)類型。
使用Visual Studio 2013軟件重新編譯生成zlgcan_wrap.dll二次封裝函數(shù)。
2.3 ?軟件主界面實現(xiàn)
LabVIEW通過使用調(diào)用庫函數(shù)節(jié)點調(diào)用DLL,在調(diào)用庫函數(shù)節(jié)點的配置窗口的功能選項卡上,輸入DLL的路徑并選擇需要調(diào)用的功能,按照DLL的頭文件說明,手動添加定義函數(shù)原型,類似的調(diào)用方法如圖3所示。
程序主界面如圖4所示,程序中的各個子程序的調(diào)用都要根據(jù)用戶按需操作,即典型的HMI人機交互,要處理的事件包括:登錄服務(wù)器、獲取設(shè)備操作句柄、啟動接口卡、啟動各子程序等。為了提高程序運行效率,在While結(jié)構(gòu)中避免對這些事件不必要的輪詢操作,使用事件結(jié)構(gòu)來響應(yīng)用戶的操作。對于登錄服務(wù)器、初始化其相關(guān)參數(shù)等硬件加載過程,可以參考DLL的調(diào)用流程,其中有些是固定的流程,可以使用順序結(jié)構(gòu)執(zhí)行,程序簡單易讀。
2.4 ?接收發(fā)送實現(xiàn)
本系統(tǒng)的設(shè)計主要目的是遠程獲取汽車總線數(shù)據(jù),登錄服務(wù)器以后,從設(shè)備列表中選取在線設(shè)備,打開設(shè)備即可獲取對應(yīng)的設(shè)備索引。ZCAN_Receive是CANDTU接口卡用于接收數(shù)據(jù)的函數(shù),在LabVIEW中可以利用Calling Library Function Node對它進行調(diào)用。在按照函數(shù)規(guī)定的調(diào)用格式配置好相關(guān)參數(shù)后,即可通過接口卡進行數(shù)據(jù)的接收。ZCAN_Receive函數(shù)的輸出量具有規(guī)定的數(shù)據(jù)結(jié)構(gòu),在LabVIEW構(gòu)建類似C語言的結(jié)構(gòu)體,需要用到簇構(gòu)建。簇的構(gòu)建需要注意的是字節(jié)對齊問題,LabVIEW是單字節(jié)對齊方式,這意味著LabVIEW中的簇的內(nèi)存映射是無間隙的,簇實際占用空間等于簇中各個元素占用空間之和,如果不滿足對齊條件,可以通過空的占位符解決。為了緩存收到的數(shù)據(jù)幀,在數(shù)據(jù)接收子程序中創(chuàng)建一個隊列,當(dāng)ZCAN_Receive函數(shù)接收到數(shù)據(jù)后,使用Lossy Enqueue Element將結(jié)果存入其中,以供其他子程序調(diào)用。發(fā)送和接收并行處理的,同理可以創(chuàng)建ZCAN_Transmit函數(shù),完成對CAN數(shù)據(jù)的接收和發(fā)送,最終結(jié)果如圖5所示。
2.5 ?數(shù)據(jù)保存實現(xiàn)
數(shù)據(jù)列表與保存子程序用于顯示系統(tǒng)所采集到的數(shù)據(jù),并根據(jù)用戶需求保存結(jié)果。當(dāng)該子程序運行時,使用Dequeue Element向保存接收數(shù)據(jù)的隊列讀取結(jié)果。對于數(shù)據(jù)采集和分析系統(tǒng),在盡可能快速采集數(shù)據(jù)的同時,也不能因為顯示和處理的開銷導(dǎo)致采集丟幀。所以接收部分,使用的是生產(chǎn)者消費者結(jié)構(gòu),ZCAN_Receive接收數(shù)據(jù)作為生產(chǎn)者,消費者從數(shù)據(jù)緩存中提取所需要數(shù)據(jù),用于顯示和解析。顯示部分,可以通過多列表框(Multicolumn Listbox)以文本的方式顯示。通過字符串選項卡目錄下的功能節(jié)點,將所接收到的數(shù)據(jù)轉(zhuǎn)換成字符串,并顯示在多列表控件中。當(dāng)用戶要求保存數(shù)據(jù)時,程序會把每一幀接收到的數(shù)據(jù)按照列表中的格式寫入到指定的TXT文件中,以供其他軟件的調(diào)用與分析。
2.6 ?數(shù)據(jù)解析實現(xiàn)
從CANDTU上傳的數(shù)據(jù)是真實物理量經(jīng)過相關(guān)傳感器編碼及CAN協(xié)議轉(zhuǎn)換后得到的,一幀報文包括IP和最大8位數(shù)據(jù)。同一幀可能定義了不同含義的數(shù)據(jù),所以原始數(shù)據(jù)并不利于用戶的直觀觀測和理解,需要對幀ID進行篩選歸類,數(shù)據(jù)按位進行解析換算,將結(jié)果直接輸出顯示。需要對各數(shù)據(jù)幀的數(shù)據(jù)內(nèi)容進行設(shè)置、指定換算方法等,在汽車電子中,有DBC文件可供解析CAN節(jié)點的有效信息,在此構(gòu)建的是類似DBC解析的工作。包括:數(shù)據(jù)名稱、數(shù)據(jù)單位、數(shù)據(jù)類型,數(shù)據(jù)有效值在數(shù)據(jù)幀中所占據(jù)的字節(jié)位,以及如何處理換算等。對于數(shù)據(jù)處理換算的方法定義,采用Matlab Script實現(xiàn)。定義數(shù)據(jù)及換算方法、啟動監(jiān)測功能后,系統(tǒng)即可以將指定數(shù)據(jù)的真實物理量在監(jiān)測面板中實時顯示。
用USBCAN卡模擬汽車總線數(shù)據(jù),往CANDTU的CAN0口發(fā)送數(shù)據(jù),可以正常地接收和解析數(shù)據(jù),功能正常,運行穩(wěn)定,如圖6所示。
4 ?結(jié) ?論
本文介紹的遠程車載參數(shù)監(jiān)控方案與傳統(tǒng)的隨車或者離線測試系統(tǒng)相比有明顯的優(yōu)勢,它提供了簡便快速的汽車路況參數(shù)分析方案,結(jié)合了4G技術(shù)和LabVIEW快速開發(fā)的特點。本系統(tǒng)提供了實時數(shù)據(jù)傳輸和分析功能,因此在車輛測試時可及時修正系統(tǒng)參數(shù)。此方案的提出可有效降低測試人力和軟件開發(fā)成本。
參考文獻:
[1] 王懷興.基于LabVIEW技術(shù)的汽車發(fā)動機實時遠程網(wǎng)絡(luò)測試系統(tǒng)研究 [D].武漢:武漢理工大學(xué),2005.
[2] 陳樹學(xué),劉萱.LabVIEW寶典 [M].北京:電子工業(yè)出版社,2011.
作者簡介:陳華春(1989-),男,漢族,廣西玉林人,本科,技術(shù)支持工程師,研究方向:嵌入式系統(tǒng)設(shè)計;古茂兢(1990-),男,漢族,廣東茂名人,本科,技術(shù)支持工程師,研究方向:嵌入式系統(tǒng)設(shè)計。