張東偉,王文揚,杜明星,魏克新
(1.天津理工大學,天津 300380;2.中國汽車技術研究中心,天津 300300)
隨著社會的發(fā)展,汽車保有量持續(xù)增長,汽車已經變成人們除“家與辦公室”以外的第三個重要空間。繼智能家居之后,作為日常出行的主要交通工具,人們越來越關注車輛操控的智能化與便捷性。然而現(xiàn)有大多數(shù)交通信息服務系統(tǒng)存在著信息采集有限、分析處理簡單、傳輸發(fā)布不及時等問題,未能實現(xiàn)交通系統(tǒng)的充分協(xié)調與優(yōu)化。車聯(lián)網(wǎng)的出現(xiàn)為車輛的智能化控制提供了有效的契機,車聯(lián)網(wǎng)是以車內網(wǎng)、車際網(wǎng)和車載移動互聯(lián)網(wǎng)為基礎,按照約定的通信協(xié)議和數(shù)據(jù)交互標準,在車-車、車輛與互聯(lián)網(wǎng)之間,進行無線通信和信息交換,以實現(xiàn)智能交通管理控制、車輛智能化控制和智能動態(tài)信息服務的一體化網(wǎng)絡[1]。本文研究并設計的一種基于車聯(lián)網(wǎng)的車輛遠程控制系統(tǒng)能夠實現(xiàn)對入網(wǎng)所有車輛的屬性信息和動、靜態(tài)信息進行實時查詢和利用,并根據(jù)不同需求對整合網(wǎng)絡內的車輛主動實施信息共享、智能化管理和控制[2,3],并為用戶提供實時準確的車輛信息、路況信息、車輛位置信息和多元化的流媒體服務。
基于車聯(lián)網(wǎng)的車輛遠程控制系統(tǒng)是集中運用了計算機、通信、自動化控制、車輛工程等技術的綜合管理系統(tǒng),主要由車輛云服務平臺、車載終端、用戶APP三部分構成。車輛遠程控制系統(tǒng)總體設計圖如圖1所示。
車聯(lián)網(wǎng)服務具有多用戶,多業(yè)務,高并發(fā)等特點,作為車聯(lián)網(wǎng)系統(tǒng)服務層的核心組成部分,車聯(lián)網(wǎng)服務平臺的設計與搭建直接關系到系統(tǒng)的處理性能及后期的維護與升級。目前車聯(lián)網(wǎng)系統(tǒng)主要包括C/S(Client/Server)架構和B/S(Browser/Server)架構。其中C/S架構需要開發(fā)專門的客戶端軟件,在客戶端實現(xiàn)絕大多數(shù)的業(yè)務邏輯處理和界面展示,容易受到客戶端類型的限制,擴展性不強。此外,C/S架構在實現(xiàn)遠程控制的過程中采用PPP協(xié)議,該協(xié)議只是針對點對點通信,協(xié)議兼容性不強。相比于C/S架構,B/S架構的客戶端能夠簡化為一個Web瀏覽器,并將主要事務邏輯及數(shù)據(jù)處理集中在服務器實現(xiàn),減少系統(tǒng)維護及升級成本。故本設計采用基于B/S架構的設計理念,搭建Web瀏覽器及服務器實現(xiàn)車輛遠程控制及其他擴展服務。其中服務器的選擇尤為關鍵,車聯(lián)網(wǎng)系統(tǒng)服務器需要對每一輛接入網(wǎng)絡的汽車進行全方位的監(jiān)控與控制,完成大范圍、大容量的數(shù)據(jù)交互,對服務器的計算能力、存儲能力、交互能力有很高的要求。
圖1 車輛遠程控制系統(tǒng)總體設計圖
云計算服務是近年來發(fā)展起來的一個重要的IT技術,而云服務器是云計算服務的重要組成部分,能夠為用戶提供簡單高效、安全可靠、處理能力可彈性伸縮的計算服務,平臺運營商只需提供一定的租賃費用就可以享受相應的計算及存儲服務,完全能夠滿足車聯(lián)網(wǎng)系統(tǒng)需要的計算及存儲資源,而且整個系統(tǒng)的維護也由廠商提供,減少維護及升級成本。綜上所述,本設計中采用基于B/S架構及云服務器的車輛云服務平臺。
該平臺的主要功能是對車載終端上傳的海量車輛實時信息及用戶發(fā)布的控制指令進行存儲和綜合加工分析,并在此基礎上根據(jù)用戶的訂閱及興趣點提供各類綜合擴展服務。系統(tǒng)中車載終端與車輛云服務平臺后臺的通信協(xié)議基于MQTT協(xié)議,MQTT協(xié)議是IBM開發(fā)的一種建立在TCP/IP協(xié)議之上,面向M2M和物聯(lián)網(wǎng)的連接協(xié)議,該協(xié)議采用輕量級發(fā)布和訂閱消息傳輸機制。用戶可以通過手機APP向車輛云平臺發(fā)送遠程通信指令,云平臺通過消息推送將控制指令轉發(fā)給相應的被控車輛完成操作;用戶也可以通過車載終端訂閱流媒體服務,例如路況指南、天氣、新聞等。借助其消息推送功能,可以更好地實現(xiàn)遠程通信和流媒體傳輸。
車載終端是車聯(lián)網(wǎng)系統(tǒng)感知層的關鍵組成部分,其主要功能是完成車輛狀態(tài)信息的采集上報及上層控制命令到CAN網(wǎng)絡層的轉發(fā),對終端系統(tǒng)的實時性及可靠性有很高的要求。目前常見的車載終端基于CORTEX-M3單片機構建,通過擴展GPRS通信模塊、GPS定位模塊及CAN總線通信模塊完成車輛狀態(tài)信息的采集上報,實現(xiàn)的功能較為簡單且系統(tǒng)的實時性、可靠性及可移植性較差,只能滿足基本的車輛監(jiān)控需求[4]。針對上述問題,本設計中車載終端基于ARM平臺構建,嵌入Linux操作系統(tǒng),以恩智浦I.MX6高性能處理器為核心,通過擴展4G無線通信模塊,GNSS定位模塊,WiFi/藍牙模塊,CAN通信模塊,電源管理模塊等構成硬件平臺,完成終端硬件系統(tǒng)的設計。此外,根據(jù)不同的功能需求,終端硬件可做出相應裁減,大大提升系統(tǒng)的可靠性及可移植性。終端硬件設計如圖2所示。
圖2 智能終端硬件架構設計圖
1)核心處理器
核心處理模塊主要控制和協(xié)調各模塊工作,為提高系統(tǒng)運算能力和可靠性,選用NXP生產的I.MX6Q主控芯片作為車載終端的核心處理器。I.MX6Q是基于ARM Cortex A9內核的微處理器,主頻可達1.2GHz,且提供豐富的外圍接口和高性能運算處理能力,為地圖數(shù)據(jù)的處理提供可靠保障。
2)4G通信模塊
選用華為ME909s-821作為智能終端通信模塊,ME909s-821支持LTE/HSDPA/GSM/GPRS多頻段解決方案,內嵌TCP/IP協(xié)議,最大支持下行速率150Mbps和上行速率10Mbps的數(shù)據(jù)傳輸服務,與其他同類產品相比,ME909s-821支持最全的工作頻段和最快數(shù)據(jù)傳輸速度,更為適合對可靠性與實時性要求較高的車載終端。同時其可支持高速USB2.0接口,方便與終端其他模塊進行數(shù)據(jù)交換。
3)GNSS定位模塊
GNSS模塊實現(xiàn)位置信息等數(shù)據(jù)的接收和解算功能,本文通過比較選用瑞士公司u-blox推出NEO-M8L汽車慣性導航(ADR,Automotive Dead Reckoning)模塊,該模塊整合了運動、方向和高度傳感器,它具備模塊安裝不受方向性限制、里程表功能以及自主式數(shù)據(jù)記錄等特性,能在大樓林立的市區(qū)、隧道、地下室停車場等嚴格環(huán)境中提供可靠與不中斷的定位功能。除此之外,該模塊能追蹤所有可視的GNSS衛(wèi)星,包括GNSS、GLONASS、北斗和所有的SBAS系統(tǒng),并且能以高達每秒20次的速度輸出定位信息,為車輛的遠程監(jiān)控及導航提供位置信息。
4)CAN通信模塊
CAN總線數(shù)據(jù)收發(fā)是車輛遠程監(jiān)控與控制的基礎,本設計采用汽車級高速CAN收發(fā)器TJA1043,可用于較高干擾環(huán)境下,在不同速率下均有良好的收發(fā)能力。此外,為防止CAN總線數(shù)據(jù)在操作系統(tǒng)啟動過程中丟失,采用MPC5604B作為CAN控制器,它與主處理器imx6之間采用SPI總線方式通信,這樣可以大大減少引腳數(shù)量。其主要作用是在系統(tǒng)未完全啟動之前將CAN總線數(shù)據(jù)存儲到EMMC中,待系統(tǒng)啟動后將存儲的數(shù)據(jù)傳輸?shù)街魈幚砥?。保證CAN總線數(shù)據(jù)的完整性及系統(tǒng)可靠性。
隨著汽車與互聯(lián)網(wǎng)互動信息服務能力以及車輛交互實時性的進一步提高,對軟件操作系統(tǒng)的要求也隨之提高。因此,選用一款功能強大且易于維護的操作系統(tǒng)軟件支撐終端硬件系統(tǒng)的運行尤為關鍵。而性能優(yōu)良、源碼開放的Linux具有體積小、內核可裁減、網(wǎng)絡功能完善、可移植性強等諸多優(yōu)點,非常適合作為嵌入式操作系統(tǒng)。故本設計中采用Linux嵌入式操作系統(tǒng)作為底層軟件的支撐平臺。系統(tǒng)軟件采用分層設計,軟件結構包括:硬件驅動層、操作系統(tǒng)層、應用程序接口(API)層和應用層[5]。
軟件設計主要是在成功移植Linux操作系統(tǒng)后,設計各硬件模塊的底層驅動程序及應用層系統(tǒng)調用和線程處理程序,并通過創(chuàng)建互斥信號量及共享內存的方式完成線程間的通信,從而控制整個終端系統(tǒng)的運行。
1) Linux系統(tǒng)移植
對Linux操作系統(tǒng)的移植主要包括:內核、根文件系統(tǒng)與引導程序三部分。大量的工程實踐表明Linux內核2.6版本對ARM處理器有很好的支持[6],并選用u-boot作為嵌入式系統(tǒng)引導程序。為完成Linux系統(tǒng)向ARM平臺的移植,需要在Linux主機配置ARM架構下的交叉編譯環(huán)境,具體流程如下:
(1)配置GCC交叉編譯工具,將系統(tǒng)架構修改為ARM;
(2)下載Linux內核及u-boot源碼并配置Linux開發(fā)環(huán)境;
(3)根據(jù)所選CPU類型及系統(tǒng)所需的硬件驅動重新配置內核;
(4)編寫makefile文件,編譯工具為配置的交叉編譯工具,完成編譯環(huán)境的搭建;
(5)通過搭建的編譯環(huán)境完成內核、u-boot的配置與編譯,最后將編譯好的bin文件通過MFG工具燒錄到目標板中,完成系統(tǒng)移植。
2)應用程序設計
系統(tǒng)應用程序設計包括系統(tǒng)初始化、CAN網(wǎng)絡報文收發(fā)、4G網(wǎng)絡通信等功能。系統(tǒng)啟動后首先對I.MX6微處理器各寄存器及外圍硬件模塊進行初始化,然后系統(tǒng)調度相應線程實現(xiàn)預定功能。
(1)模塊初始化
主要介紹CAN及4G網(wǎng)絡模塊的初始化,通過調用can_init(CAN_NAME, CAN_BITRATE)函數(shù)及宏定義的方式設置CAN網(wǎng)絡通道并將波特率設置為500kHz。
通過調用net_init(char* net_name)函數(shù)及宏定義的方式完成4G網(wǎng)絡通信模塊的初始化,設置車輛云平臺的IP地址和端口號,并通過調用socket(AF_INET, SOCK_STREAM, 0)函數(shù)設置IPv4網(wǎng)絡通信協(xié)議,建立TCP連接實現(xiàn)車載終端與服務器的數(shù)據(jù)傳輸。
(2)線程調度
為了滿足車聯(lián)網(wǎng)系統(tǒng)的多任務、并發(fā)性和實時性,系統(tǒng)采用五個線程完成預定工作,包括CAN報文接收線程、網(wǎng)絡報文收發(fā)線程、GNSS數(shù)據(jù)接收線程及應用程序主線程。本文重點介紹了CAN報文接收線程和網(wǎng)絡報文接收線程。
CAN報文接收線程實時接收CAN網(wǎng)絡內其他節(jié)點發(fā)送或轉發(fā)的報文獲取車身信息,發(fā)動機信息和故障信息等。為保證系統(tǒng)的實時性并提高數(shù)據(jù)處理速率,使用select()函數(shù)監(jiān)聽CAN網(wǎng)絡套接字,當被監(jiān)聽的網(wǎng)絡套接字接收到數(shù)據(jù)時,應用程序會自動讀取緩沖區(qū)的數(shù)據(jù),省去不斷輪詢CAN網(wǎng)絡套接字描述符的步驟 。
車載終端通過4G模塊與云平臺建立TCP連接之后,網(wǎng)絡報文收發(fā)線程會主動上發(fā)鑒權報文,完成車輛到云平臺的合法登入,然后在車輛處于完全設防狀態(tài)時(即靜態(tài)時)實時接收并解析平臺下發(fā)的控制指令,并在車輛運行時將實時采集的車輛狀態(tài)數(shù)據(jù)按照既定的通信協(xié)議打包發(fā)送到云平臺。此外,為了維持車輛與云平臺的TCP連接, 網(wǎng)絡報文收發(fā)線程會定時向平臺上發(fā)心跳信息。
(3)線程間的同步與通信
在各個進程中通過調用pthread_mutex_lock( )、wait_cond_timeout( )、pthread_cond_signal( )、pthread_mutex_unlock( )等函數(shù)實現(xiàn)線程間的同步。本文以車載終端(T-Box)與CAN網(wǎng)絡節(jié)點車身控制器(BCM)之間的認證說明這種同步方式。T-Box與BCM的認證流程如圖3所示。
圖3 T-Box與BCM的認證流程圖
如圖所示,車載終端與BCM之間完成同步交互才能保證認證順利通過,但終端程序中CAN報文的發(fā)送與接收屬于不同的線程,很容易造成終端還沒有接收到BCM發(fā)送的隨機數(shù)就已經把認證結果發(fā)出導致認證失敗的bug。為了避免這種情況,在認證密鑰發(fā)送函數(shù)和隨機數(shù)接收函數(shù)中分別加入wait_cond_timeout()函數(shù)和pthread_cond_signal()函數(shù)及相應的互斥鎖,這樣認證密鑰發(fā)送進程會一直等待判斷條件成立,直到終端接收到隨機數(shù)之后使其等待的條件成立,然后發(fā)送認證密鑰,進而完成兩個線程間的同步。
此外,通過訪問共享內存的方式可以實現(xiàn)進程間的通信。如將CAN網(wǎng)絡接收線程接收到的車輛狀態(tài)數(shù)據(jù)存放在預先定義的共享緩沖區(qū),屬于全局共享資源,車輛狀態(tài)實時上報線程可以直接訪問共享緩存區(qū)獲得所需的數(shù)據(jù)完成上報。其中,為避免多個線程同時訪問共享內存去而造成混亂,設計一個互斥信號量確保每次只有一個線程通過調用pthread_mutex_lock( )函數(shù)獲得互斥信號量訪問共享緩沖區(qū),并在數(shù)據(jù)訪問完畢后,調用pthread_mutex_unlock( )釋放該信號量。
1)遠程控制
由用戶通過手機APP下發(fā)控制指令,經云平臺推送至相應車輛終端,然后終端將指令執(zhí)行結果上傳至云平臺,云平臺再推送給用戶。遠程控制功能具體包括遠程解閉鎖、遠程啟動/關閉發(fā)動機及空調、遠程尋車、遠程一鍵升降窗、遠程診斷、地圖柵欄等。
2)安防救援
安防救援包括防盜入侵,即當車輛處于設防狀態(tài)時發(fā)生入侵,則上報入侵狀態(tài)至后臺,后臺推送至用戶APP;E-Call,即車輛被撞之后的緊急救援,當車輛被撞(或者手動按下SOS按鍵)后車載終端首先將車輛GNSS位置信息上報給后臺服務器,而后自動撥打救援中心服務電話。此外,終端還包括B-Call和I-Call等功能。
3)流媒體服務
流媒體服務包括娛樂資訊(新聞、天氣、違章查詢、在線音樂)、云端信息推送、云端自然語音識別(打電話、音樂控制、收音機控制、導航控制、查詢天氣、興趣點推送,酒店賓館的咨詢,并將地址推送到車內)。這些服務車載終端僅提供網(wǎng)絡通道。此外,車載終端還可以向車內提供Wi-Fi熱點服務。
4)在線升級
云服務器向用戶APP推送車載終端在線升級服務,用戶下發(fā)升級指令后車載終端通過OTA方式從云服務器獲取升級文件,對車載終端中MCU程序進行刷新。
本文采用德國Vector公司開發(fā)的一款總線開發(fā)環(huán)境CANoe對車輛遠程控制系統(tǒng)功能進行測試驗證,驗證包括在CANoe開發(fā)環(huán)境中搭建整車CAN網(wǎng)絡模型及CAN網(wǎng)絡中與車載終端交互的各個節(jié)點,如車身控制器(BCM),空調(AC)等,并通過CANoe總線接口與車載終端連接,然后通過手機APP向車載終端下發(fā)相應的控制指令完成遠程解閉鎖、遠程啟動/關閉發(fā)動機及空調、遠程尋車等操作,驗證表明該系統(tǒng)滿足功能及設計需求,后續(xù)將進行實車測試使用。CANoe測試模型如圖4所示。
圖4 CANoe測試模型
車輛網(wǎng)技術在國內正在形成一個熱潮,本文所設計的車輛遠程控制系統(tǒng)是聯(lián)網(wǎng)車輛與用戶雙向互動的橋梁,具有全面的數(shù)據(jù)采集分析能力與網(wǎng)絡交互能力,經過實驗測試,系統(tǒng)滿足多任務和實時性的要求,實現(xiàn)了系統(tǒng)的各種功能模式。此外,本文給出了基于車聯(lián)網(wǎng)的車輛遠程控制系統(tǒng)的詳細功能介紹以及車載終端的軟硬件設計方案,對今后車聯(lián)網(wǎng)系統(tǒng)的設計與開發(fā)有一定參考價值。
[1]周戶星.車聯(lián)網(wǎng)環(huán)境下交通信息采集與處理方法研究[D].長春:吉林大學,2013.
[2]Georgios Karagiannis.Vehicular Networking: A Survey and Tutorial on Requirements, Architectures, Challenges, Standards and Solutions[J].IEEE Communications Surveys & Tutorials,2011,13(4):584-616.
[3]Ho Ting Cheng Hangguan Shan,Weihua Zhuang.Infotainment and road safety service support in vehicular networking: From a communication perspective[J].Mechanical Systems and Signal Processing,2011,25(6):2020-2038.
[4]基于ARM嵌入式車載監(jiān)控終端的設計與實現(xiàn)[J].邵于寧,胡剛,陳雪平.計算機測量與控制,2008.
[5]于紅珍,伍永豪,周鳳麗.基于μC/OS-Ⅱ的車載終端系統(tǒng)設計[J].計算機應用與軟件,2013.
[6]弓雷,等.ARM嵌入式Linux系統(tǒng)開發(fā)詳解[M].北京:清華大學出版社,2014.