汪玲燕 程耕國,2 鮑考明 程 驊 彭攀來
(武漢科技大學信息科學與工程學院1,湖北 武漢 430081;武漢科技大學冶金自動化與檢測技術教育部工程研究中心2,湖北 武漢 430081)
OBD物聯網控制系統的研究與開發
汪玲燕1程耕國1,2鮑考明1程 驊1彭攀來1
(武漢科技大學信息科學與工程學院1,湖北 武漢 430081;武漢科技大學冶金自動化與檢測技術教育部工程研究中心2,湖北 武漢 430081)
車載診斷系統(OBD)在汽車領域越來越普及,目前市場上針對OBD的應用也很廣泛。通過對新一代OBD的研究,提出并設計了一套基于OBD的物聯網控制系統。該系統在傳統OBD系統的基礎上,結合RMI、GPRS和GPS技術,實現了設備與客戶端之間的遠程通信與導航功能,再通過手機便捷的控制系統,使系統更智能。利用廣泛應用的MVC和Hibernate技術,實現系統各項功能。試驗結果表明,與傳統的OBD系統相比,該系統性能優越、功能齊全、實用性強,能更好地結合設備服務,方便廣大車主,是物聯網、車聯網智能化發展的一大進步,具有一定的市場前景。目前系統已投入到實際運營當中。
物聯網 自動控制系統 遠程通信 智能化 車聯網
隨著經濟的持續發展和人們生活節奏的不斷加快,汽車慢慢地成為人們主要的代步工具。最初,車載診斷系統(on-board diagnostic,OBD)的誕生,是為了解決汽車尾氣排放而造成的大氣污染問題;現在,隨著科技的不斷進步,OBD技術越來越成熟,經過了一代、二代、乃至三代,已經具備了故障診斷、實時監控、遠程傳輸數據等一系列拓展功能[1]。而物聯網指的是利用互聯網或局域網等各種通信技術把人和物聯系在一起,形成人與物、物與物智能化管理的網絡[2]。隨著物聯網的研究不斷成熟,關于物聯網的應用也逐漸增多。本系統就是在OBD的基礎上,通過物聯網技術,將車載OBD系統與人交互、與網絡互連,實現車輛的監控、維修、保養、遠程控制等功能,進而實現現代化的ITS(智能交通系統)[3]。
近年來,隨著通信技術和網絡技術的不斷發展,各種各樣的OBD系統和應用層出不窮,但功能比較單一,大部分只局限于故障診斷這一方面,不能很好地與人交互。傳統的人機交互使用的是藍牙技術,如今,仍有不少系統使用藍牙技術,但藍牙實現人機交互有個缺點,就是距離不能太遠,這給使用者帶來了極大的不方便性。例如百合提努爾一文中使用的就是該技術[4]。意識到這點不足之后,本文研究了新一代OBD的特點,用物聯網的思維來思考問題,結合廣泛使用的網絡技術,通過GPRS和RMI技術來實現無線通信,設計了一種符合現代用戶使用習慣的OBD物聯網控制系統。該系統既結合了傳統系統的故障診斷功能,又與網絡互連、與人交互,初步實現了車輛智能化控制,是物聯網在車輛方面的一個很好的應用[5]。這使得OBD的發展沒有局限于設備本身,反而提供了多元化的思路。車輛在未來將普及到家家戶戶,這樣的智能化控制系統給人們帶來了極大的便利。
OBD物聯網系統的架構設計如圖1所示。

圖1 OBD系統架構設計圖
從圖1可以看出,OBD終端安裝在車輛上,集合GPRS和GPS通信模塊,通過無線網絡,與網絡互連,實現車輛的實時監控和故障診斷;手機同樣通過無線網絡,與車交互,人通過手機客戶端來控制系統,實現智能控制。根據架構設計,可以將系統分為四個主要模塊,分別是車輛模塊、OBD設備模塊、用戶模塊和基礎數據模塊,如圖2所示。

圖2 OBD系統組成模塊
車輛模塊主要完成的是車輛的信息化登記與管理、與OBD設備的關聯以及硬件的準備等功能,它是該系統的硬件基礎。OBD設備模塊,集合了GPS和GPRS通信模塊,插上SIM卡,完成車輛的監控、實時定位、故障檢測、上傳故障信息以及網絡互連等功能,它不僅是硬件基礎,也是物聯網網絡互連的重要連接設備。用戶模塊包括應用管理模塊,是對用戶的登記與管理以及向用戶提供各種各樣的增值服務,例如,語音導航、實時救援、車輛故障維修、消息提醒等更方便用戶的服務。它是該系統服務功能很好的體現。基礎數據模塊是將車輛信息、OBD信息以及監測到的行車數據等各種數據進行統計分析。當出現問題時,專家根據這些數據,可以分析得出是車輛故障還是網絡故障,是否可以正常控制等故障[6]。這四個模塊既獨立又相互關聯。系統分為硬件、手機和Web三大部分,本文從這幾個部分整體把握,重點介紹該系統的軟硬件設計。
OBD物聯網系統要實現的是在OBD的基礎上控制車輛和監控車輛,那么硬件基礎必定包含車輛和OBD設備。本系統采用的是DUOSEN的16PIN標準OBD。集合的GPRS模塊采用工業級無線模塊M660。GPS模塊采用NEO-6M模塊,外掛2 MB存儲器,可保存各項行車數據。OBD模塊內部結構如圖3所示。

圖3 OBD模塊內部結構
GPRS模塊主要采用工業級無線模塊M660,支持標準工業接口,支持透明傳輸以及遠程復位等功能,多重工作頻段可實現多任務傳輸,滿足各種業務需求。GPS模塊采用U-BLOX NEO-6M模塊,平均熱啟動時間小于1 s,具有50通道,靈敏度高,定位誤差小,系統還可根據實際需求增加北斗模塊;傳感器采用ST公司的LIS3DH(x/y/z3軸傳感器),支持2G/4G/8G/16G里程模式。這些模塊性能優越、靈敏度高,因此,本系統采用它們來完成車輛位置的測量[1]。
3.1 協議的分類
設備終端與服務器之間的通信,是按照既定的協議,就像是通信的依據,彼此按照依據來發送信息。本系統在JT/T 808-2011的基礎上,根據具體業務添加了相關協議標準,并采用TCP或UDP的通信方式;當通信鏈路出現異常時,設備終端還可以采用SMS方式進行通信[11]。按照功能,本系統的協議可以分成十大類:終端管理類協議、位置報警類協議、信息類協議、電話類協議、車輛控制類協議、車輛管理類協議、信息采集類協議、多媒體類協議、通用數據傳輸類協議、加密類協議。各個協議根據功能不同,發送的消息也不同。
3.2 消息的發送
硬件與軟件之間的通信是通過消息來傳遞信息的。設備終端發送一系列消息,服務器以及手機識別出消息,根據消息的不同做出不同的反應。消息結構如圖4所示。每條消息由標志位、消息頭、消息體和校驗碼組成[11]。根據JT/T 808-20114.4.2,本系統標志位采用Ox7e表示。若校驗碼、消息頭以及消息體中出現了0x7e,那么就進行轉義處理。

圖4 消息結構
Fig.4 Structure of message
轉義處理過程如下。
發送消息時:消息封裝——>填充校驗碼——>轉義;
接收消息時:轉義還原——>驗證校驗碼——>解析消息。
異常SMS消息的發送,根據JT/T 808-2011,采用PDU八位編碼方式。對于長度超過140 B的消息,應按照GSM網絡的短信服務規范GSM 03.40進行分包處理,然后再依次發送。
有發送,那么就有應答。平臺發的消息和終端發的消息都應該相互應答,應答分為通用應答和專門應答,由不同類型的協議決定。當發送方等待應答超時時,應對消息進行重發。應答超時時間和重傳次數由平臺參數指定,每次重傳后的應答超時時間計算如下式所示:
TN+1=TN(N+1)
(1)
式中:TN+1為重傳后的應答超時時間;TN為前一次的應答超時時間;N為重傳次數。
終端等待超時重發計算方法同理,不同的是,當消息為報警消息時,若達到重傳次數,仍未應答時,則對其進行保存,下一次發送消息的時候優先發送[11]。
3.3 軟件的介紹
本系統的軟件設計使用目前廣泛應用的Java與SpringMVC技術。Java是一種面向對象的程序設計語言,具有高效的可移植性、通用性、安全性等優點,因而受到廣大開發人員的喜愛。由SpringMVC負責接收處理請求,通知業務類執行相應的業務邏輯并更新相應視圖。而Hibernate則是一種對象關系映射框架,它對Java數據庫連接(Javadatabaseconnectivity,JDBC)進行了非常輕量級的對象封裝,負責系統與數據之間的交互,使得開發者可以面向對象的操作數據庫。三者的結合完成了表現層(UI)、業務邏輯層(BLL)和數據訪問層(DAL)的交互,如圖5所示,使代碼結構清晰、分工明確、層次分明[7]。

圖5 OBD系統三層架構示意圖
在系統的web.xml里,配置Spring MVC的servlet,自定義servlet.xml配置文件的位置和名稱(本系統命名為spring-mvc-context.xml)。之后再配置Spring Bean的配置文件所在目錄,由三個xml文件組成:applicationContext.xml、applicationSecurity.xml和infrastucture.xml。applicationContext.xml配置文件完成的是掃描Controller、定時執行程序、國際化、數據校驗和文件上傳的功能。applicationSecurity.xml完成權限配置功能;infrastucture.xml完成數據源配置功能。最后,配置監聽器和過濾器。
web.xml部分配置如下。
classpath:/META-INF/spring/applicationContext.xml
classpath:/META-INF/spring/applicationSecurity.xml
classpath:/META-INF/spring/infrastructure.xml
……
之后是項目所需要的實體類、控制層、業務層和開發層。本OBD管理系統共有71個實體類,這些實體類是程序的基礎。如果一一編寫,費時又費力。Hibernate Tools是Eclipse中很強大的插件。它可以反轉數據庫生成實體類。本系統采用Hibernate Tools 3.4.0.CR1生成實體類。實體類包括它們的屬性、setName()和getName()方法。控制層代碼,即Controller層,使用@Controller標記,類似于Struts的Action。Spring MVC這種基于注解的Controller,最大的好處就是不必繼承任何接口,只根據映射就可以選擇不同的請求方法。控制層開發完之后是業務層的開發。這里使用Dao層和Service層來實現上下業務的控制。Dao層繼承Hibernate封裝的BasicDao。Dao實現類注解成@Repository,完成與數據庫的連接。Service層是與Controller層和Dao層起連接作用的層,Service實現類通過寫入具體方法來實現業務。這樣就可以實現通過Controller調用Service,再通過Service調用Dao[8-10]。
最后是表現層的開發,表現層即是管理系統與用戶交互的界面。這里分為兩個部分,分別是Web端和手機客戶端。手機客戶端主要作用是操作控制該OBD物聯網系統,起到實時監測車輛的作用;Web端主要完成的是數據的管理和各種分析以及與用戶界面交互。本系統采用Java、JSP、Ajax、jQuery等技術來實現表現層。
4.1 系統的實現
Web端用戶根據權限不同進入不同界面,主要程序如下。
① 管理員端
② 用戶端
...... before="FILTER_SECURITY_INTERCEPTOR"ref="securityFilter"/> 基礎服務模塊目前增加了離用戶車輛最近加油站的查詢服務,主要程序如下。 @RequestMapping(value="/station/search", produces=MediaType.APPLICATION_JSON_VALUE) @ResponseBody publicInforstackJsonResponse extends Object> searchFuelStation(Integer pageIndex, Integer pageSize, Double longitudeFrom, Double longitudeEnd, Double latitudeFrom, Double latitudeEnd, HttpServletRequest req){ try { if(longitudeFrom == null) { throw new RuntimeMessageException("app.error.longitude.from.empty");} if(longitudeEnd == null) { throw new RuntimeMessageException("app.error.longitude.end.empty");} if(latitudeFrom == null) { ...... if(longitudeEnd-longitudeFrom > maxRange|| latitudeEnd-latitudeFrom > maxRange) { throw new RuntimeMessageException("app.error.over.range");} if(pageIndex == null || pageSize == null) { pageIndex = -1; pageSize = -1;} PaginationModel if(ServerUtil.getUserId() == null) { ret = new PaginationModel ret.setData(new ArrayList ret.setPageIndex(pageIndex); ret.setPageSize(pageSize); ret.setPageTotal(0); ret.setRecordTotal(0); }else{ PaginationModel ret =ServerUtil.copyBeans(pm, GasStationModel.class);} ...... returnServerUtil.buildErrorResponse(); } 此外,通過OBD的GPS模塊傳回數據,再結合RMI接口通信,解析數據,可以得到車輛的實時位置。 手機客戶端主要實現的是對該系統的控制以及對車輛的監測。例如,用戶可以通過手機來開啟和關閉該系統,也可通過發送命令讓其對車進行全面檢測。當有故障出現時,設備通過無線通信模塊發送到手機,提醒車主故障信息等其他信息。當車輛發生故障時,車主還可通過實時救援功能,來通知最近的救援隊伍來救援,OBD設備GPS模塊會將車輛的實時位置數據上傳到服務器并進行保存。 4.2 系統的分析 目前,系統已經投入到某地的實際運行當中。從運行結果來看,這種系統維護方便、移植性高,用現代化的信息媒介和數字化的管理,已經初步達到了用戶的需求,完成了車輛監測的自動控制。與以往OBD系統相比,例如楊彬的OBDⅡ故障診斷系統[1],都是在硬件的基礎上僅實現車輛的故障診斷,這里不僅實現了該功能,還添加了實時救援、語音導航、加油站查詢等一系列服務,更利用手機通過無線網自動控制該系統,實時保護車輛處于最好的狀態。當車輛有故障時,OBD通信模塊會立即給手機發送報警信息,大大提高了車輛的智能化處理能力。但從結果來看,該系統也有一些缺點:當數據量過大時,行車數據上傳有延遲,數據解析和處理稍顯不足,后期會考慮用云存儲解決該問題,符合現代數據量大的特點。此外,也可在OBD模塊上增加其他的模塊,例如遠程通過無線網絡實現車輛與家的控制,這些都是有可能實現的。 以OBD聯網、手機自動控制和Web交互三者結合的方式,初步實現了車輛聯網的智能化。手機可通過客戶端發送命令讓OBD系統開啟和關閉、監測車輛和讀取數據,用戶可通過Web端查看數據和信息化管理設備、車輛,這在信息化的今天已經相當普遍了。通過手機來控制設備,實現車輛監測系統的智能化,是物聯網在車輛方面很好的應用。隨著車輛數以萬計的增加,這樣的OBD物聯網控制系統對用戶來說,提供了便利性,必定會越來越普及,越來越智能,也為今后城市智能化行車系統打下了基礎,這也是本文的意義所在。 [1] 楊彬,周建武.基于OBDII和GPRS遠程汽車故障診斷系統設計和實現[J].計算機應用與軟件,2012,29(9):203-206. [2] 孫其博,劉杰,范春曉,等.物聯網:概念、架構與關鍵技術研究[J].北京郵電大學學報,2010,33(3):1-9. [3] 孫光明.基于3G的多通訊模式的車輛監控調度系統的設計與實現[D].武漢:武漢理工大學,2005. [4] 百合提努爾.基于安卓智能手機的車載診斷系統實現[J].中國新通信,2014(13):31-33. [5] 孫劍宇.車聯網風生水起[J].辦公自動化,2014(2):15-17. [6] 陳保帆.汽車車載診斷系統分析與研究[J].數字技術與應用,2012,16(7):103-110. [7] 李剛.輕量級Java EE企業應用實戰[M].北京:電子工業出版社,2012. [8] 賈蓓,鎮明敏,杜磊,等.Java Web整合開發實戰[M].北京:清華大學出版社,2013. [9] 舒禮蓮.基于Spring MVC的Web應用開發[J].計算機與現代化,2013,219(11):167-173. [10]邵剛.基于Spring框架的MVC控制器的優化與改進[D].濟南:山東大學,2011. [11]宋慧明,趙曉峰,萬慶,等.多森軟件通訊協議[S].深圳,2013:1-78. Research and Development of OBD IOT Control System On-board diagnostics (OBD) is becoming increasingly popular in the automotive field; currently, the applications of OBD are also extensive on the market. Through the study on the new generation of OBD, the Internet of thing control system based on OBD is proposed and designed. On the basis of traditional OBD system, the system integrates the technologies of RMI, GPRS and GPS; and implements the remote communication and navigation functions between device and client, even realizes intellectualization through convenient control system of mobile phone. The system functions are implemented by adopting the widely applied MVC and Hibernate technologies. The experimental results show that comparing with traditional OBD system, this new system is superior in performance, with rich functions and strong practicability; it serves better for combining devices and facilitates the majority of owners; it is a major advance in intelligent development for Internet of things and Internet of vehicles, and possesses certain marketing prospect. At present, the system has been put into practical operation. Internet of things Automatic control system Remote communication Intellectualization Internet of vehicles 國家自然科學基金資助項目(編號:61304129)。 汪玲燕(1990-),女,現為武漢科技大學控制科學與工程專業在讀碩士研究生;主要從事網絡自動控制化、基于網絡的計算機應用等的研究。 TP399 A 10.16086/j.cnki.issn1000-0380.201505013 修改稿收到日期:2014-12-01。5 結束語