廖燕輝
廣州華夏職業(yè)學(xué)院 廣東省廣州市 510935
隨著汽車(chē)保有量的持續(xù)增加,汽車(chē)的排放問(wèn)題受到更加嚴(yán)格的監(jiān)管。雖然目前國(guó)家大力提倡發(fā)展新能源汽車(chē),但是由于技術(shù)上的限制,有些新能源車(chē)依然搭載了汽油機(jī)或柴油機(jī)。因此,對(duì)于車(chē)輛的監(jiān)控是很有必要的,特別是對(duì)于車(chē)輛的排放狀況。
目前國(guó)家在大力推進(jìn)物聯(lián)網(wǎng),汽車(chē)行業(yè)也不例外。本文提出的基于OBD2的車(chē)輛遠(yuǎn)程監(jiān)控系統(tǒng),除了能夠遠(yuǎn)程監(jiān)控車(chē)輛的排放情況之外,還能夠遠(yuǎn)程動(dòng)態(tài)顯示車(chē)輛的運(yùn)行參數(shù)。廠家或者4S店等售后服務(wù)部門(mén)使用遠(yuǎn)程監(jiān)控功能,實(shí)現(xiàn)對(duì)異地車(chē)輛的故障檢查;車(chē)輛管理部門(mén)使用遠(yuǎn)程功能,對(duì)行駛在路上的超標(biāo)車(chē)輛進(jìn)行管理。
目前ISO-15765標(biāo)準(zhǔn)協(xié)議在轎車(chē)中應(yīng)用廣泛[1],因此本文討論的是使用了ISO-15765標(biāo)準(zhǔn)協(xié)議的車(chē)輛,系統(tǒng)的總體方案如圖1所示。通過(guò)車(chē)載OBD2接頭讀取車(chē)輛的運(yùn)行狀態(tài)信息,車(chē)載OBD2接頭選用市場(chǎng)上高集成度的微控制器進(jìn)行設(shè)計(jì)。車(chē)載OBD2接頭讀取到車(chē)輛的運(yùn)行狀態(tài)信息后,通過(guò)內(nèi)置的GPRS模塊,用無(wú)線傳輸?shù)姆绞桨褦?shù)據(jù)上傳到虛擬云主機(jī)。近幾年國(guó)外比較流行的虛擬云主機(jī)服務(wù)商有谷歌、亞馬遜等;國(guó)內(nèi)的虛擬云主機(jī)服務(wù)商有阿里巴巴、百度和騰訊等。本系統(tǒng)選用較廉價(jià)的阿里巴巴虛擬云主機(jī)。遠(yuǎn)程顯示設(shè)備(手機(jī)、PC機(jī)、平板電腦等)通過(guò)登錄網(wǎng)址訪問(wèn)阿里云服務(wù)器,查看車(chē)輛的運(yùn)行狀況。管理部門(mén)可以對(duì)超標(biāo)車(chē)輛發(fā)出提示信息,4S店可以對(duì)異常車(chē)輛發(fā)出提示,提醒車(chē)主及時(shí)處理故障、減少事故發(fā)生。
圖1 系統(tǒng)的總體方案
圖2 數(shù)據(jù)采集系統(tǒng)
本系統(tǒng)選用的微控制器是STM32F103ZET6, 它 內(nèi) 置 了 CAN 總 線控制器bxCAN。該CAN總線控制器支持CAN2.0A 和CAN2.0B[2],并且在硬件上實(shí)現(xiàn)了CAN 節(jié)點(diǎn)模型中要求的接收過(guò)濾、位填充、同步等多種功能,bxCAN的這些優(yōu)良特性能夠有效地減少CPU在收發(fā)報(bào)文過(guò)程中的時(shí)間消耗。采集車(chē)載行車(chē)電腦的診斷數(shù)據(jù),還需要一個(gè)CAN 總線收發(fā)器來(lái)匹配微控制器與CAN 總線之間的電平。數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu)如圖2所示。在數(shù)據(jù)采集系統(tǒng)中,物理媒介連接層直接影響通信質(zhì)量,是系統(tǒng)可靠工作的前提條件。因此,本系統(tǒng)采用美國(guó)德州儀器公司生產(chǎn)的CAN總線收發(fā)器SN65HVD230。
bxCAN在硬件上已經(jīng)實(shí)現(xiàn)了大部分的功能,因此數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)工作主要是操作bxCAN 的相關(guān)寄存器,軟件設(shè)計(jì)必須遵循ISO15765-4標(biāo)準(zhǔn)。數(shù)據(jù)采集軟件系統(tǒng)的工作流程如圖3所示。在微控制器上電運(yùn)行后,首先進(jìn)行系統(tǒng)初始化,將系統(tǒng)時(shí)鐘切換成精度較好的外部時(shí)鐘。
ISO15765-4標(biāo)準(zhǔn)對(duì)測(cè)試設(shè)備有三個(gè)主要規(guī)定,分別是:默認(rèn)支持250k 和500k 兩種波特率;遵循ISO15765-4標(biāo)準(zhǔn)規(guī)定的初始化流程,如圖4所示;能夠并行接收多達(dá)8 個(gè)車(chē)載ECU 的響應(yīng)。通過(guò)過(guò)操作bxCAN的位時(shí)間特性寄存器CAN_BTR 來(lái)設(shè)置它的波特率,設(shè)置好之后,下一步是開(kāi)始bxCAN接口的初始化,完成之后,系統(tǒng)就可以采集數(shù)據(jù)。CAN總線的數(shù)據(jù)接收工作由bxCAN控制器的硬件邏輯完成,一個(gè)CAN 幀的標(biāo)識(shí)符ID、數(shù)據(jù)長(zhǎng)度碼DLC以及數(shù)據(jù)等信息分別被保存在稱(chēng)為郵箱的寄存器組中。bxCAN 有2 個(gè)用于接收數(shù)據(jù)的帶FIFO 緩沖區(qū)的郵箱,每個(gè)郵箱可以存放3個(gè)報(bào)文。先到達(dá)的報(bào)文讀取完并釋放掉郵箱后,較晚到達(dá)的報(bào)文才能訪問(wèn)。只有當(dāng)未讀報(bào)文的數(shù)量減少到0 時(shí),中斷響應(yīng)標(biāo)識(shí)才會(huì)被清除。因此,負(fù)責(zé)接收數(shù)據(jù)的中斷函數(shù)中,有一個(gè)重要步驟是將數(shù)據(jù)存儲(chǔ)后釋放郵箱。對(duì)于測(cè)試設(shè)備來(lái)說(shuō),每一次向總線發(fā)出數(shù)據(jù)請(qǐng)求時(shí),不確定有多少個(gè)ECU 會(huì)作出響應(yīng),所以需要設(shè)置一個(gè)變量來(lái)保存響應(yīng)的數(shù)量。在中斷函里接收數(shù)據(jù)時(shí),對(duì)每個(gè)新的ID 進(jìn)行標(biāo)記。通過(guò)這種方法實(shí)現(xiàn)并行接收多個(gè)ECU的分段數(shù)據(jù)。
圖3 軟件系統(tǒng)工作流程
圖4 bxCAN的標(biāo)準(zhǔn)初始化流
微控制器通過(guò)CAN 接口將OBD2的數(shù)據(jù)采集之后,把這些數(shù)據(jù)上傳到遠(yuǎn)程服務(wù)器中才能實(shí)現(xiàn)對(duì)車(chē)輛的遠(yuǎn)程監(jiān)控。本系統(tǒng)采取基于GPRS 無(wú)線網(wǎng)絡(luò)的數(shù)據(jù)遠(yuǎn)程傳輸方案,采用SIMCOM 公司的GPRS通信模塊SIM900A。這是一款低成本的的通信模塊,有多個(gè)工作頻道,支持HTTP,TCP/IP,以及FTP 等多種網(wǎng)絡(luò)協(xié)議。SIM900A 提供SPI,UART和I2C等常見(jiàn)的對(duì)外通信接口,而STM32F103ZET6微控制器擁有多個(gè)UART 接口。本系統(tǒng)的微控制器通過(guò)UART接口給SIM900A模塊發(fā)送AT 指令,主要使用 SIM900A 的 HTTP 相關(guān)指令,以HTTP 的方式訪問(wèn)遠(yuǎn)程服務(wù)器的Web端口。建立了HTTP 連接后,用GET 方法將數(shù)據(jù)以表單內(nèi)容的形式提交到服務(wù)器中。每條AT 指令都有對(duì)應(yīng)的響應(yīng),如果SIM900A正確地執(zhí)行了該指令,則會(huì)返回一個(gè)OK 響應(yīng),否則根據(jù)具體的錯(cuò)誤因素返回相應(yīng)的錯(cuò)誤狀態(tài)[3]。因此還需要讓微控制器能接收SIM900A 的響應(yīng),作為后續(xù)流程處理的依據(jù)。為了讓模塊能夠正常的以HTTP的方式向遠(yuǎn)程服務(wù)器提交數(shù)據(jù),首先需要設(shè)置它的接入點(diǎn)和一些網(wǎng)絡(luò)參數(shù)。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,汽車(chē)在未來(lái)將會(huì)深度接入網(wǎng)絡(luò)。本文應(yīng)用GPRS通信技術(shù),討論了遠(yuǎn)程監(jiān)控運(yùn)行車(chē)輛的實(shí)現(xiàn)過(guò)程,為汽車(chē)接入網(wǎng)絡(luò)提出了一個(gè)思路。