陸建榮,石懷峰
(1.江蘇航空職業(yè)技術學院 航空工程學院,江蘇 鎮(zhèn)江 212134;2.南京信息工程大學 電子與信息工程學院,江蘇 南京 210044)
近年來,機動車數(shù)量呈爆發(fā)式增長,由此引起的車輛管理問題、交通安全問題日趨嚴重。車聯(lián)網(wǎng)[1-2]的出現(xiàn)為解決上述問題提供了新思路。它通過合理分配交通資源,實時管理入網(wǎng)車輛,極大地提高了交通運行效率。車載數(shù)據(jù)聚合終端[3-4]作為車聯(lián)網(wǎng)系統(tǒng)采集層的核心單元,是車載異構(gòu)網(wǎng)絡[5-6]中數(shù)據(jù)交互的信息樞紐,為車聯(lián)網(wǎng)系統(tǒng)提供了穩(wěn)定、可靠的數(shù)據(jù)支持。但是異構(gòu)網(wǎng)絡中交互的數(shù)據(jù)復雜多樣,對應的總線接口和通信協(xié)議各不相同,甚至與服務端對接的傳輸協(xié)議也會隨場景變化而改變。傳統(tǒng)的數(shù)據(jù)終端通信接口單一,難以滿足復雜異構(gòu)網(wǎng)絡中數(shù)據(jù)交互的需求。因此,如何設計出一套能同時接入多種通信網(wǎng)絡的數(shù)據(jù)聚合終端,已成為現(xiàn)階段的研究熱點。
王利輝等[7]在深入研究車載網(wǎng)絡的基礎上,基于Matlab軟件搭建了CAN-FD總線網(wǎng)絡的優(yōu)化仿真平臺,實現(xiàn)了對總線系統(tǒng)通信行為的動態(tài)顯示。于海飛等[8]搭建了由感知層節(jié)點設備、物聯(lián)網(wǎng)網(wǎng)關到服務器的完整通信鏈路,設計并實現(xiàn)了一種基于MQTT通信協(xié)議的物聯(lián)網(wǎng)邊緣計算網(wǎng)關,有效緩解了網(wǎng)絡擁塞和服務器壓力。楊楠等[9]設計了基于OBD和GPS的車載終端系統(tǒng),實現(xiàn)了對行駛車輛運行參數(shù)的實時采集與顯示,使車主能全面直觀地了解車況,減少了潛在的安全隱患。聶雷等[10-11]在深入研究異構(gòu)車載網(wǎng)絡的基礎上,基于多智能體Q學習提出了一種異構(gòu)車載網(wǎng)絡的選擇方法MQSM,實現(xiàn)了最優(yōu)的網(wǎng)絡切換決策機制。
本文基于某型號車輛在車聯(lián)網(wǎng)系統(tǒng)中的實際應用,終端對車載異構(gòu)網(wǎng)絡中的數(shù)據(jù)進行安全聚合,并上送至基于不同傳輸協(xié)議搭建的服務端,實現(xiàn)對運行車輛狀態(tài)的實時監(jiān)控。傳統(tǒng)數(shù)據(jù)終端的網(wǎng)絡通信接口單一,無法滿足車載異構(gòu)網(wǎng)絡中數(shù)據(jù)接入的需求。本文設計了以CortexTM-A7為核心處理器的數(shù)據(jù)聚合終端。該終端提供了UART,CAN,Ethernet,4G,WiFi等多種通信接口,為車載異構(gòu)網(wǎng)絡中數(shù)據(jù)接入提供了硬件基礎。此外,開發(fā)了數(shù)據(jù)聚合終端軟件框架,并在此基礎上設計了基于TCP/IP,UDP,HTTP,MQTT等不同傳輸協(xié)議的通信服務,提高了通用性,有效解決了異構(gòu)網(wǎng)絡中數(shù)據(jù)接入的問題。
車聯(lián)網(wǎng)系統(tǒng)的數(shù)據(jù)鏈路示意如圖1所示。本數(shù)據(jù)聚合終端作為車輛與云服務端之間的數(shù)據(jù)交互媒介,不僅負責解析分布于車載異構(gòu)網(wǎng)絡中的運行數(shù)據(jù),還需要按照GB/T32960協(xié)議[12-13]規(guī)定的機制將數(shù)據(jù)上傳至云服務端,從而實現(xiàn)車輛定位、追蹤、監(jiān)控的目的。
圖1 車聯(lián)網(wǎng)數(shù)據(jù)鏈路示意
為了提高終端的網(wǎng)絡兼容能力,使其能成功適配車載異構(gòu)網(wǎng)絡,首先設計了支持UART,CAN,Ethernet,4G,WiFi等通信接口的終端板卡,為數(shù)據(jù)接入提供硬件基礎。然后,針對各通道開發(fā)了對應的接口驅(qū)動、通信協(xié)議以及數(shù)據(jù)交互服務,使得終端能自由訪問分布在不同總線上車載儀表的檢測數(shù)據(jù),主要包括:位置信息、狀態(tài)信息、里程信息、燃料信息、告警信息和車室環(huán)境信息等。
獲取數(shù)據(jù)后,為了減輕服務端的運算壓力,邊緣計算服務充分運用終端自身的運算能力,對當前采樣信息和歷史存儲數(shù)據(jù)進行了分析處理,實現(xiàn)了車輛能耗統(tǒng)計、行車歷史追蹤、車輛狀態(tài)監(jiān)控和車輛故障預警等功能。然后,網(wǎng)絡通信服務將數(shù)據(jù)處理結(jié)果進行數(shù)據(jù)聚合后,按指定通信協(xié)議經(jīng)4G網(wǎng)絡上送至車聯(lián)網(wǎng)服務端。但是在車輛移動過程中,4G信號強度難以始終保持穩(wěn)定,終端掉線問題難以避免。為了有效解決終端掉線期間的數(shù)據(jù)丟失問題,在終端應用中嵌入了SQLite[14]數(shù)據(jù)庫并開發(fā)了數(shù)據(jù)庫服務,該服務能實時記錄采樣數(shù)據(jù),以便鏈路恢復后,實現(xiàn)數(shù)據(jù)補發(fā)。
上述服務構(gòu)成了完整的終端應用,為了使其能在基于單核處理器的硬件載體上穩(wěn)定運行,本文設計了一套能應對系統(tǒng)多并發(fā)的軟件框架。該框架能高效調(diào)度系統(tǒng)服務,嚴格保證服務間消息傳遞的次序性。采用了基于權(quán)重的線程輪調(diào)機制,既保證了系統(tǒng)消息的處理效率,還有效防止了低優(yōu)先級服務餓死的問題。
本文硬件載體采用核心板配備功能底板的組合方式,不僅可以節(jié)省成本、方便維修,還有利于后期功能升級和更換。核心板上搭載了系統(tǒng)運行所需的處理器、SDRAM、FLASH以及電源管理芯片等模塊。其中,處理器選用基于ARM CortexTM-A7內(nèi)核架構(gòu)的NXP i.MX6UL,資源豐富、性能優(yōu)越,可提供快速的數(shù)據(jù)處理和流暢的界面顯示[15-16]。滿足了系統(tǒng)在應對并發(fā)能力、數(shù)據(jù)處理效率、網(wǎng)絡通信速率等多方面的需求。
功能底板上集成了系統(tǒng)運行所需的外圍電路,主要包括基于mini-PCIE(EC20)接口的4G模塊、基于SDIO接口的WiFi模組、用于GPS模塊接入的串口電路、實現(xiàn)車載儀表數(shù)據(jù)采集的CAN電路、存儲原始數(shù)據(jù)所需的SD卡等模塊。車載終端硬件結(jié)構(gòu)框圖如圖2所示。
圖2 車載終端結(jié)構(gòu)
車載終端能否在嚴苛的工作環(huán)境下長時間穩(wěn)定運行,很大程度上取決于電源管理單元的可靠性。本車載終端的輸入電壓為12 V,而板卡上各電子器件的工作電壓存在較大差異。為了提高電源轉(zhuǎn)換效率,降低電源熱損耗,系統(tǒng)選用DC-DC轉(zhuǎn)換器[17-18]方案實現(xiàn)分級降壓。先由12 V降壓至5 V,為CAN模塊、RS485模塊和核心板模塊供電;再將5 V降壓至3.3 V,為RTC時鐘模塊、USB模塊和4G模塊供電。系統(tǒng)供電框圖如圖3所示。
圖3 系統(tǒng)供電框圖
基于實際應用需求,本車載終端不僅需要完整接收ms級的車輛數(shù)據(jù),還需基于報文協(xié)議解析數(shù)據(jù)內(nèi)容;不僅需要將車輛信息實時上傳至服務端,還需要對原始數(shù)據(jù)進行30 d周期的本地循環(huán)存儲;同時終端需要支持多種數(shù)據(jù)接入方式,以及通過掉線檢測、斷線重連、丟包續(xù)傳和組包發(fā)送等機制保證數(shù)據(jù)交互的穩(wěn)定性。因此,基于單核處理器的硬件載體,設計出一套能夠應對系統(tǒng)高并發(fā)的軟件框架是本文軟件設計的核心內(nèi)容。設計的車載終端軟件框架如圖4所示。
圖4 車載終端軟件框架
由圖4可知,軟件框架由服務、消息隊列、線程3部分組成。服務負責指定業(yè)務的邏輯處理,默認不執(zhí)行,只有當其他業(yè)務向它推送消息時才運行處理。系統(tǒng)為每個服務分配了唯一私有的消息隊列,服務間的數(shù)據(jù)交互(請求、響應和轉(zhuǎn)發(fā)等)均通過消息隊列完成。
系統(tǒng)中消息隊列分為2級:全局消息隊列和次級消息隊列。次級消息隊列負責服務消息的管理,通過綁定服務句柄實現(xiàn)與指定服務建立關聯(lián)。全局消息隊列中的每個成員記錄了次級消息隊列的地址,從而實現(xiàn)對次級消息隊列的管理。
本軟件框架共包含3類線程:負責定時管理的Time線程、負責網(wǎng)絡數(shù)據(jù)收發(fā)的Socket線程以及負責調(diào)度消息隊列的Worker線程。系統(tǒng)線程的軟件流程如圖5所示。
(a)Timer線程流程
在消息調(diào)度過程中,單個Worker線程單次只能從全局消息隊列中pop出一個次級消息隊列,并從中pop出一條消息交由對應服務處理。運行在Worker線程內(nèi)的單元在執(zhí)行業(yè)務邏輯的同時,還會向指定服務推送消息。因此它既是消息消費者也是消息生產(chǎn)者。而運行在Time線程和Socket線程中的單元不處理任何業(yè)務邏輯。它們作為消息生產(chǎn)者,僅為系統(tǒng)任務提供定時觸發(fā)消息和數(shù)據(jù)接收消息,從而保證系統(tǒng)定時的準確性和數(shù)據(jù)響應的實時性。
實時監(jiān)測運行車輛的狀態(tài)、位置、報警等數(shù)據(jù)是車載終端數(shù)據(jù)采樣單元的主要工作。本單元基于車載終端軟件框架,創(chuàng)建了CAN服務和UART服務,分別實現(xiàn)對各自通道數(shù)據(jù)的解析和本地存儲。CAN通信和UART通信的Socket套接字均通過Epoll實現(xiàn)管理。它運行在Socket線程中,一方面監(jiān)聽各套接字上的讀寫事件,使系統(tǒng)數(shù)據(jù)交互過程變得更加穩(wěn)定高效;另一方面實時感知各套接字的通斷狀態(tài),提高了系統(tǒng)對相關事件的響應速度。數(shù)據(jù)采樣流程如圖6所示。
(a)初始化
為了豐富終端的網(wǎng)絡連接能力,本車載終端支持基于TCP/IP,UDP,HTTP,MQTT多種協(xié)議的互聯(lián)網(wǎng)通信,能同時接入基于不同網(wǎng)絡協(xié)議搭建的車聯(lián)網(wǎng)服務端。二者之間的數(shù)據(jù)交互機制和通信報文幀格式均基于GB/T32960《電動汽車遠程服務與管理系統(tǒng)技術規(guī)范》[12-13]進行設計,此處不再贅述。入網(wǎng)終端通過車架號碼(Vehicle Identification Number,VIN)進行標識,以此實現(xiàn)與服務端之間的點對點通信。網(wǎng)絡通信服務的軟件流程如圖7所示。
(a)初始化
在本設計中,軟件框架是車載終端的核心,所有服務都通過軟件框架調(diào)度實現(xiàn)運行,框架的性能直接影響著車載終端的執(zhí)行效率。在測試終端功能之前,先通過壓力測試,綜合評估框架的各項性能,定位框架中潛在的運行瓶頸,為后續(xù)的功能開發(fā)和性能優(yōu)化提供借鑒。本測試針對框架系統(tǒng)在應對密集數(shù)據(jù)上報的壓力下進行,測試指標主要包括系統(tǒng)吞吐量、可靠性和響應能力3個方面。測試場景設計如圖8所示。
圖8 測試場景
終端通過4G模塊與本地PC服務端建立連接,并通過串口和CAN口連接測試儀。其中2路CAN口的波特率均設置為500 kb/s,串口波特率設置為115 200 b/s。測試儀按照指定速率向終端發(fā)送數(shù)據(jù)報文,驗證終端的數(shù)據(jù)處理能力。服務端向終端下發(fā)數(shù)據(jù)請求,檢驗終端的數(shù)據(jù)響應能力。表1記錄了終端在數(shù)據(jù)存儲功能啟動和關閉2種場景下,基于不同負載壓力,單位時間內(nèi)完成的報文解析數(shù)量和系統(tǒng)響應時間。
表1 壓力測試數(shù)據(jù)表
由表1可知,在數(shù)據(jù)存儲功能關閉的情況下,雖然隨著發(fā)包速率的不斷加快,系統(tǒng)響應時間逐漸變慢,CPU利用率也有所升高,但系統(tǒng)基本能處理接收到的所有數(shù)據(jù),相關性能參數(shù)也均在指標要求范圍內(nèi)。而開啟數(shù)據(jù)存儲功能后,頻繁的文件操作對系統(tǒng)開銷影響較大。速率超過512 kb/s后,系統(tǒng)各項性能參數(shù)就難以滿足指標要求。在本應用中,車載終端收包速率低于256 kb/s,因此本軟件框架能滿足實際應用的要求。
為驗證各項需求和功能是否完整實現(xiàn),合理評估終端的質(zhì)量、性能和運行效率,本設計基于實際應用場景,參照技術指標要求,對車載數(shù)據(jù)聚合終端進行了綜合測試。圖9為終端安裝在現(xiàn)場后基于實際應用的測試場景。
圖9 應用場景
第1路CAN口的波特率設置為250 kb/s,第2路CAN口的波特率設置為500 kb/s,串口波特率設置為9 600 b/s。終端接入車載網(wǎng)絡后,通過CAN網(wǎng)絡、UART網(wǎng)絡讀取車載儀表的檢測數(shù)據(jù),通過4G通信或接入WiFi熱點實現(xiàn)與云服務端的數(shù)據(jù)交互。通過云服務端平臺實時查看運行車輛的工作狀態(tài)。系統(tǒng)功能測試數(shù)據(jù)如表2所示。
表2 功能測試數(shù)據(jù)表
由表2可知,本車載終端完整實現(xiàn)了數(shù)據(jù)聚合、數(shù)據(jù)存儲、數(shù)據(jù)交互和數(shù)據(jù)計算4個方面的相關功能。但車輛在移動過程中,很難長時間保持信號強度穩(wěn)定,掉線、重連的情況時有發(fā)生,導致丟包率過高而達不到指標要求[19-20]。
為解決丟包率高的問題,本文通過心跳機制實時檢測終端的鏈路狀態(tài)。一旦發(fā)生鏈路中斷,上送服務端的報文便按照時間戳順序存儲進本地數(shù)據(jù)庫中。待鏈路恢復后,進行補發(fā)。通過機制優(yōu)化,系統(tǒng)的丟包率顯著降低。系統(tǒng)性能測試數(shù)據(jù)如表3所示,各項參數(shù)均滿足指標要求。
表3 性能測試數(shù)據(jù)
本文基于CortexTM-A7處理器設計了車載數(shù)據(jù)聚合終端,具體內(nèi)容包括終端硬件板卡設計、終端軟件框架設計以及終端應用服務設計3個方面。該終端具備豐富的通信接口,通用性強,能完全滿足車載異構(gòu)網(wǎng)絡中數(shù)據(jù)交互的需求,解決了傳統(tǒng)終端接入能力差的問題。所設計的軟件調(diào)度框架通過了系統(tǒng)壓力測試,各項性能參數(shù)均滿足指標要求?;谠撥浖蚣荛_發(fā)的應用服務實現(xiàn)了數(shù)據(jù)聚合、數(shù)據(jù)交互和數(shù)據(jù)存儲等功能。目前該終端已投入實際使用,運行穩(wěn)定。