李 敏,周先飛,陳萬順,湯 恒,張 振
(1.蕪湖職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,安徽 蕪湖 241006;2.江蘇新通達(dá)電子科技股份有限公司,江蘇 丹陽 212300)
車載網(wǎng)絡(luò)應(yīng)用技術(shù)是汽車智能技術(shù)專業(yè)的核心課程,該課程以車載主流CAN 總線知識為重點(diǎn)內(nèi)容開展教學(xué)實訓(xùn)。根據(jù)汽車及零部件企業(yè)的技術(shù)人才需求,特別是汽車儀表研發(fā)和制造企業(yè)急需具備基于車載CAN 總線和人機(jī)交互界面開發(fā)的工程技術(shù)人員[1]。因此,從教學(xué)實訓(xùn)和人才需求考慮,讓學(xué)生直觀了解車載CAN 總線軟硬件設(shè)計過程,掌握CAN 總線的工作原理、CAN報文的數(shù)據(jù)解析以及熟悉C#軟件開發(fā)流程,以汽車儀表為測試對象設(shè)計儀表測試程序。通過設(shè)計的界面按鈕操控儀表的運(yùn)行和停止,應(yīng)用輸入框設(shè)置測試數(shù)據(jù),顯示汽車儀表的車速、發(fā)動機(jī)轉(zhuǎn)速、發(fā)動機(jī)水溫數(shù)據(jù)及其他燈光信息,使學(xué)生深入理解具有CAN 總線的汽車儀表工作原理和測試流程。目前,一些汽車儀表企業(yè)都開發(fā)了測試平臺,硬件架構(gòu)多數(shù)采用PC 通過USB 接口連接CAN 分析儀,再將分析儀的CAN 總線連接汽車儀表,而測試軟件根據(jù)產(chǎn)品需求設(shè)計人機(jī)界面和測試項目,雖然能夠直觀演示儀表各模塊的測試過程和相關(guān)數(shù)據(jù)的顯示,但測試系統(tǒng)代碼不開放,不便于教學(xué)實訓(xùn)的開展和學(xué)生對專業(yè)知識的深入理解。因此,設(shè)計用于汽車智能技術(shù)專業(yè)核心課程教學(xué)的CAN 總線儀表測試平臺具有一定的應(yīng)用價值。
汽車儀表測試平臺由PC、Kavser CAN 分析儀、儀表接口跳線裝置、直流穩(wěn)壓電源、可調(diào)電阻箱、汽車儀表等硬件構(gòu)成,硬件架構(gòu)如圖1 所示。PC 機(jī)與Kavser CAN 分析儀通過USB 接口連接,Kavser CAN 分析儀通過CAN 總線連接到汽車儀表,由于測試儀表的油量信號是電阻型,由單獨(dú)信號源提供,而不是從CAN 總線傳輸[2-3]。因此,通過可調(diào)電阻箱輸出的電阻信號提供燃油值的輸入。根據(jù)AF 儀表的功能規(guī)范文件中引腳定義(見表1),信號連接如下:儀表1 腳接蓄電池電源,3 腳接 IG 電源,7 腳和 19 腳接油量信號,15 腳和 16 腳分別接 CANH 和 CANL,17 腳接地線。將直流電源電壓調(diào)至13.6 V,電源正極連接儀表1、3 腳,負(fù)極連接17 腳,可調(diào)電阻箱的輸出端連接7、19 腳,Kavser CAN 分析儀的CANH 和CANL 連接汽車儀表總線。軟件開發(fā)平臺使用VS2013 編程開發(fā)環(huán)境,采用C#軟件開發(fā)測試系統(tǒng),并加載Kavser CAN 的Driver 和CANLIB軟件。根據(jù)被測儀表的DBC 文件,解析出發(fā)動機(jī)轉(zhuǎn)速、車速、發(fā)動機(jī)水溫及汽車燈光的CAN 報文信息,根據(jù)儀表測試要求,將測試數(shù)據(jù)通過界面菜單寫入相應(yīng)的測試框中,通過按鍵分別控制儀表各模塊的測試,并能通過停止按鍵終止測試,而且各測試節(jié)點(diǎn)按照每隔100 ms 循環(huán)發(fā)送包括ID、DLC 和D0 ~D7 數(shù)據(jù)的報文信息,以保證儀表正常運(yùn)行,并在PC 端顯示測試數(shù)據(jù)。
圖1 汽車儀表測試平臺架構(gòu)Fig.1 Architecture of automotive instrumentation test platform
表1 汽車儀表引腳定義Tab.1 Definition of automotive instrumentation pins
儀表測試程序包括CAN 初始化程序、CAN 報文接收發(fā)送程序、CAN 報文顯示程序、按鈕事件程序、標(biāo)度變換程序、定時控制程序TIME1 和TIME2,其中TIME1 用于定時控制接收數(shù)據(jù),TIME2 用于定時控制發(fā)送數(shù)據(jù)。CAN 初始化分為初始化庫、建立CAN 通道、CAN 通信參數(shù)設(shè)置、CAN 通道使能4 個步驟[4]。CAN 報文發(fā)送分為CAN 數(shù)據(jù)發(fā)送和判斷數(shù)據(jù)發(fā)送成功與否兩部分,其中發(fā)送函數(shù)的參數(shù)包括CAN 通道、ID、有效數(shù)據(jù)、DLC[4]。接收函數(shù)分為接收數(shù)據(jù)的數(shù)組定義、CAN 報文參數(shù)定義、狀態(tài)設(shè)置、定時接收數(shù)據(jù)4 個步驟[4]。定時控制程序?qū)崿F(xiàn)CAN 報文按100 ms 周期循環(huán)發(fā)送至儀表節(jié)點(diǎn)。標(biāo)度變換程序?qū)崿F(xiàn)儀表發(fā)動機(jī)轉(zhuǎn)速、車速、發(fā)動機(jī)水溫的工程量與CAN 報文中的有效數(shù)據(jù)之間的換算,如在該儀表的CAN 報文中發(fā)動機(jī)轉(zhuǎn)速0XD2D3轉(zhuǎn)換為十進(jìn)制數(shù),即為發(fā)動機(jī)轉(zhuǎn)速值,車速為0XD4D5 和0X1FFF 相與后轉(zhuǎn)換為十進(jìn)制數(shù),再與偏移量Factor(0.056 25)的乘積即為車速值,發(fā)動機(jī)水溫為0XD0 轉(zhuǎn)換為十進(jìn)制數(shù)再與常量40 的差即為水溫值。
被測儀表CAN 總線報文采用標(biāo)準(zhǔn)幀格式,包括11 位標(biāo)識符ID、數(shù)據(jù)字節(jié)數(shù)DLC 和有效數(shù)據(jù)D0 ~D7,且需通過工具軟件對車載儀表的報文數(shù)據(jù)解析[5]。以某一車型儀表為例,分別對車速表、發(fā)動機(jī)轉(zhuǎn)速表、發(fā)動機(jī)水溫表以及燈光信息的CAN 報文進(jìn)行解析,從DBC 文件中獲得節(jié)點(diǎn)的ID、DLC、有效數(shù)據(jù)位數(shù)Length、D0 ~ D7、偏移量Factor 等參數(shù)。其中,車速表的ID 是0X345,有效數(shù)據(jù)占用D4 和D5 兩個字節(jié),D4 的第5 位是控制車速表的運(yùn)行位,該位置1 表示車速表工作,其偏移量Factor 為0.056 25;發(fā)動機(jī)轉(zhuǎn)速表的ID 為0X336,有效數(shù)據(jù)占用D2 和D3 兩個字節(jié),發(fā)動機(jī)轉(zhuǎn)速有效控制信號是D1 的第7 位,該位必須置1,則發(fā)動機(jī)轉(zhuǎn)速表工作;發(fā)動機(jī)水溫表的ID 為0X336,有效數(shù)據(jù)占用D0 一個字節(jié),D1 的第6 位為發(fā)動機(jī)水溫表工作的控制位;左右方向燈、遠(yuǎn)光燈、近光燈、前后霧燈的ID 為0X318,有效數(shù)據(jù)占用D2 一個字節(jié),通過設(shè)置D2 的相應(yīng)位0 或1 從而控制各類型燈光的亮滅,數(shù)據(jù)設(shè)置如表2 所示。燃油表的測試數(shù)據(jù)通過可變電阻箱調(diào)節(jié)給定。
儀表測試系統(tǒng)界面主要包括汽車儀表測試主菜單、汽車儀表參數(shù)設(shè)置及測試界面、儀表CAN 總線數(shù)據(jù)監(jiān)測界面3 個窗體,界面如圖2 ~ 圖4 所示。圖2 包含測試數(shù)據(jù)記錄子菜單,圖3中利用操作界面的按鈕設(shè)置儀表型號、CAN 分析儀運(yùn)行參數(shù),根據(jù)Kavser CAN 分析儀型號,可以選擇通道號0 或1;按照儀表通信波特率不同,可通過下拉菜單選擇100 kbps 至1 Mbps 不同通信波特率,該被測儀表選擇125 kbps 通信波特率。圖4 的CAN 報文數(shù)據(jù)監(jiān)測界面上顯示儀表接收的報文信息和測試儀表發(fā)送到PC 的數(shù)據(jù),當(dāng)按下接收數(shù)據(jù)按鈕,則接收儀表發(fā)送的報文,該界面接收和發(fā)送報文均顯示節(jié)點(diǎn)ID、DLC 長度、8 個字節(jié)的有效數(shù)據(jù),以及數(shù)據(jù)傳輸方向等信息。如圖4 所示,發(fā)動機(jī)轉(zhuǎn)速設(shè)定為1 000 轉(zhuǎn)/min,對應(yīng)的D2、D3 的有效數(shù)據(jù)0X03E8;車速設(shè)定為100 km/h,對應(yīng)的D4、D5 的有效數(shù)據(jù)0X26F2;發(fā)動機(jī)水溫設(shè)定為100 ℃,對應(yīng)的D0 的有效數(shù)據(jù)0X8C;左方向燈設(shè)定為點(diǎn)亮狀態(tài),對應(yīng)的D2 有效數(shù)據(jù)0X01,前霧燈設(shè)定為點(diǎn)亮狀態(tài),對應(yīng)的D2 有效數(shù)據(jù)0X40,遠(yuǎn)光燈設(shè)定為點(diǎn)亮狀態(tài),對應(yīng)的D2 有效數(shù)據(jù)0X20。當(dāng)按下接收數(shù)據(jù)按鈕,則在圖4 的數(shù)據(jù)接收框中顯示3 組CAN 報文,分別是儀表發(fā)送的ID1 = 0X353,ID2 =0X34B,ID3 = 0X428,通過上述數(shù)據(jù)可獲得CAN 分析儀與PC 端通信測試正常的判斷條件。圖3 界面上設(shè)有車速、發(fā)動機(jī)轉(zhuǎn)速、發(fā)動機(jī)水溫的數(shù)值輸入窗口和常用燈光的運(yùn)行停止按鍵,當(dāng)設(shè)置好上述值后,選擇儀表運(yùn)行按鈕,執(zhí)行CAN 數(shù)據(jù)發(fā)送程序,將設(shè)置好的被測儀表數(shù)據(jù)發(fā)送至節(jié)點(diǎn),并記錄儀表測試模塊的起始時間,當(dāng)按下停止按鈕,則記錄結(jié)束時間,將上述數(shù)據(jù)保存至文本文檔中,便于查詢測試記錄。
表2 儀表報文數(shù)據(jù)設(shè)置(X 表示二進(jìn)制數(shù)據(jù)的任意狀態(tài))Tab.2 Instrument message data setting(X represents any state of binary data)
圖2 儀表測試主菜單Fig.2 Main menu of instrument test
圖3 儀表參數(shù)設(shè)置及測試界面Fig.3 Interface of instrument parameter setting and test
圖4 儀表CAN 總線數(shù)據(jù)監(jiān)測界面Fig.4 Interface of data monitoring of instrument CAN bus
在實驗室搭建了汽車儀表測試平臺,根據(jù)儀表行業(yè)標(biāo)準(zhǔn)、測試需求[6],PC 機(jī)通過CAN 分析儀對汽車儀表各模塊包括車速、發(fā)動機(jī)轉(zhuǎn)速、水溫、燃油以及信號、報警燈發(fā)送數(shù)據(jù),驗證儀表信號燈、報警燈亮滅和顏色是否正常,蜂鳴器是否發(fā)出聲響,儀表指針指示是否準(zhǔn)確,是否存在抖動等,為保證平臺運(yùn)行可靠性,開展了儀表教學(xué)平臺的耐久測試。根據(jù)上述文中給出的數(shù)據(jù)發(fā)至儀表模塊,測試結(jié)果表明平臺發(fā)送數(shù)據(jù)準(zhǔn)確可靠,由于測試參數(shù)較多,表3 只對車速表、發(fā)動機(jī)轉(zhuǎn)速表、水溫表的數(shù)據(jù)進(jìn)行分析,誤差值在行業(yè)標(biāo)準(zhǔn)范圍內(nèi)。
表3 儀表測試數(shù)據(jù)分析Tab.3 Analysis of instrument test data
該系統(tǒng)作為車載網(wǎng)絡(luò)應(yīng)用技術(shù)課程的實訓(xùn)平臺能輔助分析CAN 總線的數(shù)據(jù)結(jié)構(gòu),讓學(xué)生通過計算機(jī)界面直觀理解CAN 通道、通信波特率等參數(shù)的設(shè)置,以及CAN 報文的幀格式、幀類型、總線仲裁、節(jié)點(diǎn)優(yōu)先級判斷,深刻領(lǐng)會CAN 總線中的各節(jié)點(diǎn)ID、DLC、DATA 的數(shù)據(jù)含義[7],并結(jié)合汽車儀表具體對象,讓學(xué)生掌握如何使用CAN 診斷工具和CAN 波特率計算工具,以及如何解析儀表DBC 文件的操作方法。因此,該實訓(xùn)平臺在汽車智能技術(shù)專業(yè)課程教學(xué)實訓(xùn)和畢業(yè)設(shè)計中起著重要作用。
該測試系統(tǒng)采用Kavser CAN 分析儀作為汽車儀表測試的主要硬件平臺,基于C#編程軟件設(shè)計儀表測試程序,將儀表測試數(shù)據(jù)以CAN 報文的形式通過平臺CAN 總線傳輸至汽車儀表,驅(qū)動儀表各模塊運(yùn)行,實現(xiàn)汽車儀表的發(fā)動機(jī)轉(zhuǎn)速、車速、發(fā)動機(jī)水溫以及燈光測試,并通過可調(diào)電阻箱測試油量表。設(shè)計的平臺可用于開展汽車智能技術(shù)專業(yè)核心課程的教學(xué)實訓(xùn)。