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