張曉光 陶英軒 黃金山
(一汽奔騰轎車有限公司,長春130012)
主題詞:智能網聯汽車 CAN 網關 緩存區 以太網
略縮語

CAN Controller Area Network OSI Open Systems Interconnection SOC System-On-a-Chip MCU Micro-Controller Unit RAM Random Access Memory

ID Identity Document DLC Data Length Code
伴隨著車輛智能網聯化發展,CAN 總線和以太網相結合的融合網絡將成為車輛主流電氣架構[1],其中網關傳遞的路由信息也爆發式增長,而出于成本角度考慮,低成本網關將放棄SOC 架構[2],采用MCU 集成CAN 控制器和外延Ethernet-Switch 芯片電路的技術方案,以實現融合網絡通信。由于MCU 內部CAN控制器的硬件接收緩存區和硬件發送緩存區很小,當CAN網絡上短時間內出現大量報文時,接收硬緩存區就會存滿,如不能及時處理,接收報文將丟失;同樣當目標總線負載率過高,硬件發送緩存區就將形成積壓報文,使緩存區溢出,這樣就會導致漏發報文[3]。為此,本文基于融合網絡車載網關,提出設計軟件路由緩存區方法,保證路由信息被及時接收與發送[4],并在奔騰品牌某車型上進行了實際應用。
CAN 總線,是一種基于ISO 國際標準化的串行通信總線,傳輸速率可達500 kbit/s[5],在汽車產業中,出于對安全性、舒適性、方便性、低功耗、低成本的考慮,應用于汽車內各種電子控制系統中,實現準確的數據采集及執行器功能控制。1986年德國博世公司開發出面向汽車的CAN通信協議。CAN總線通信協議逐漸標準化,逐漸形成并完善了CAN 協議ISO 11898-1:201,使得不同開發商的ECU 可實現無障礙通信。CAN 總線的高性能和高可靠性已被汽車行業所認同,并成為汽車電氣系統的主要通信手段,對汽車電氣功能的快速發展提供了信息通道保障。
車載以太網協議是一組多個不同層次上的協議簇,是一個5層的協議系統,從上到下分別是應用層、傳輸層、網絡層、數據鏈路層、物理層。5 層結構對應于OSI參考模型[6],并且提供了各種協議框架下形成的協議簇及高層應用程序,區別于傳統以太網,車載以太網的協議架構按照圖1進行分層。

圖1 車載以太網協議分層[1]
物理層(或稱Physical Layer)是計算機網絡OSI模型中最低的一層。物理層規定:為傳輸數據所需要的物理鏈路創建、維持、拆除,而提供具有機械的,電子的,功能的和規范的特性。
數據鏈路層是OSI參考模型中的第二層,介乎于物理層和網絡層之間。數據鏈路層在物理層提供服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層數據可靠地傳輸到相鄰節點的目標機網絡層。
網絡層負責將多個網絡連接到一起,形成互聯網絡,進行互聯網絡間尋址、路由、數據報封裝、分片和重組以及某些類型的差錯處理和診斷功能。
傳輸層代表著高層與低層之間的過渡,其下是主要基于硬件、面向數據傳遞的低層,其上是更為抽象、面向軟件應用和功能的高層。
應用層定義了應用協議,實現用戶應用和其它高層功能。應用層處于協議棧的最頂端,它使用下方各層提供的服務,而不向任何層提供服務。
為滿足車輛智能網聯大數據量的傳輸特性,網關與TBOX以及IC等將采用以太網方式連接,與車內其它ECU 控制器將采用CAN 總線方式連接,進而搭建融合網絡拓撲結構。本文以奔騰品牌某車型進行說明,該車型包含7路CAN,2路以太網,如圖2所示。

圖2 奔騰品牌某車型融合網絡拓撲
對于報文路由,網關將整個報文打包進行轉發,對報文的ID、周期和內容不進行改變或重組,網關收到報文后立即進行轉發,收不到報文就停止轉發,如圖3所示,其中T0~T5 代表6個不同的報文發送周期。

圖3 報文路由示意
對于信號路由,網關將根據路由表從源總線中收取相關報文,從報文中提取需要的信號,然后對其進行打包重組,按照路由表定義的報文ID、周期進行發送(該報文定義為網關的自組報文),無論是否收到源總線的報文,網關都將自組報文發送至目標總線,如圖4所示。

圖4 信號路由示意
網關將10 ms 周期內接收到的所有需要上傳的CAN總線報文,按照報文重組格式重新打包成以太網幀,傳輸給互聯-Ethernet網絡上的T-BOX單元。
互聯-Ethernet 上的T-BOX 單元將接收到的遠程控制信息按照一定格式,打包成以太網幀,通過以太網傳輸給網關,網關再進行CAN 報文拆解,分發給各網段。
網關將對CAN到CAN、CAN到以太網、以太網到CAN、以太網到以太網之間的信息進行報文與信號轉發功能。其中奔騰某品牌車型路由任務統計如下:網關CAN接收報文最大負載出現在EV-CAN,需要接收10 ms 周期13 條報文、100 ms 周期18 條報文、250 ms周期7 條報文、1000 ms 周期49 條報文。CAN 到互聯-Ethernet發送報文10ms周期20條報文、20 ms周期12條報文、100 ms周期38條報文、250 ms周期14條報文、1000 ms 周期63 條報文;互聯-Ethernet 到CAN 接收報文100 ms 周期8 條報文;互聯-Ethernet 到信息-Ethernet,為二層直接轉發。詳見表1。

表1 奔騰某車型路由任務統計
基于網關路由任務,對網關提出的實時性(報文路由1 ms 轉出)、報文完整性要求,設計出網關主流程,如圖5所示。

圖5 網關主流程
當某子網節點發送報文后,CAN收發器將進行濾波,將數據存儲到CAN 控制器接收硬緩存區中,并產生接收中斷[7]。接收中斷將打破網關主流程,并開啟中斷流程-報文存儲發送進程。報文存儲發送進程按照路由表進行篩選,將篩選報文直接放到目標發送硬緩存區中,如發送緩存區已滿,則將數據存儲到軟件緩存區中。對于存儲在軟件緩存區中的數據,網關主流程按照每1 ms周期進行數據處理,將處理好的數據存儲到發送硬緩存區中,等待CAN 發送器發送[8]。以太網發送流程同CAN流程。
按照主流程設計思路,設計報文緩存區、網管報文緩存區、診斷報文緩存區、CAN到以太網緩存區、以太網到CAN 緩存區[9]。其中以太網到以太網,因為是數據鏈路層直接轉發,所以并不涉及軟件緩存區[10]。為了保證網關的實時性和可靠性,以及節省RAM 空間,需要對緩存區大小上進行考量。
針對CAN總線報文格式,計算出存入一條報文需要的最大內存空間為[11]:

式中σ為單條報文存儲空間,單位為Byte。
因為嵌入式處理器的存儲器是以1 Byte 即8 bit為單位設計的,所以式(1)中的bit 數要向上取整成8的整數倍,11取整成16,4取整成8,得到結果為:

由此可知,最小的緩存區大小為11 Byte,即存下一條最大報文的大小。
8.2.1 對于應用報文緩存區的計算
根據本文章節6,網關的最大CAN 路由接收負載出現在EV 子網,分別為10 ms 周期13 條報文、100 ms周期18 條報文、250 ms 周期7 條報文、1000 ms 周期49條報文。如未設置報文發送段間隔,那么極限情況下,報文將出現排隊無間隙情況。也就是當控制器上電初始化完成后,第一時間將有:

式中Num為報文總數;Num1為10 ms周期報文數量;Num2為20 ms周期報文數量;Num3為100 ms周期報文數量;Num4 為250 ms 周期報文數量;Num5 為1000ms周期報文數量。
按照式(2)計算,將有86條報文等待傳輸,當總線波特率為500 kbit/s時,每幀報文傳輸時間為0.25 ms,計算得出這些報文將連續傳輸21.5 ms,同時10 ms周期報文將發送2輪,即總計將有110條報文排隊發送,預計發送時間27.5 ms。因此在此28 ms內,網關將出現最大負載量即接收110條報文。考慮網關主程序為1 ms周期對緩存內數據進行處理,假設目標總線負載率為40%,那么網關將每1 ms可處理報文數量為2條,28 ms 內將處理56 條報文,也就是有110-56=54 條報文將被緩存起來。

式中ε1為所需緩存大小。
按照式(3)計算,計算出EV-CAN 接收緩存區的大小為:54×11=594 Byte。
8.2.2 對于CAN到以太網緩存區的計算
網關需要發送10 ms 周期20 條報文、20 ms 周期12條報文、100 ms周期38條報文、250 ms周期14條報文、1000 ms周期63條報文。當控制器上電初始化完成后,按照式(2)計算,第一時間將有20+12+38+14+63=147 條報文等待傳輸。按照式(3)計算CAN 到以太網需要接收緩存區的大小為:147×11=1617 Byte。
8.2.3 對于以太網到CAN緩存區的計算
網關需要發送10 ms 周期8 條報文。按照式(3)計算,以太網到CAN需要接收緩存區的大小為:8×11=88 Byte。
8.2.4 對于診斷報文緩存區的計算
按照總線波特率為500 kbit/s 時,每幀報文傳輸時間為0.25 ms[12]。當目標控制器反饋流控STmin 為0 ms時[13],而又不開啟禁用通信診斷指令的前提下[14],需最大傳輸數據量為1 kByte(奔騰某車型防夾數據的寫入)。那么網關將在250 ms 內將收取診斷儀傳輸的1 kByte 數據,考慮網關主程序為1 ms 周期對緩存內數據進行處理,假設目標總線負載率為40%,那么網關將每1 ms 可處理報文數量為2 條,而能夠在250 ms內轉發0.5 kByte數據,即還有0.5 kByte數據需要緩存。因此按照式(3)計算出診斷報文接收緩存區的大小為500 Byte.
8.2.5 對于網絡管理報文緩存區的計算
按照AUTOSAR 簡單網絡管理規范[15],根據奔騰某車型網絡架構,最大節點出現在舒適CAN,子節點數量為8 個,即100 ms 內將有8 條報文錄入網關。按照式(3)計算出舒適-CAN 接收緩存區的大小為:8×11=88 Byte。
按照以上計算,將在網關MCU內設計7路CAN接收緩存區,分別為6 個594 Byte 大小的應用報文軟件緩存區,1 個500 Byte 大小的診斷報文軟件緩存區,7個88 Byte 大小的網絡報文軟件緩存區;在網關MCU內設計1個CAN 到以太網緩存區,大小為1617 Byte;在網關MCU內設計1個以太網到CAN緩存區,大小為88 Byte。
奔騰某車型依據上述路由軟件緩存設計方法,進行了網關的實際開發。通過各路CAN 數據實際的讀取分析,網關并無丟幀現象。以舒適CAN(CAN2)中BCM1_2 轉錄到信息CAN(CAN3)為例,轉發時效性控制在1.6 ms以內,時間參數遠遠小于規范中定義的2 ms要求,如圖6所示。
本文以奔騰某車型的實際應用為例,闡述了智能網聯車輛的網絡架構發展以及關鍵零件-網關的路由軟件緩存區設立的必要性與方法,可以得出以下結論和啟示。

圖6 BCM1_2轉錄報文時序
(1)隨著智能網聯快速發展,網絡數據吞吐量將越來越高,使得傳統的CAN總線已逐漸無法滿足智能車輛需求,將出現CAN總線與車載以太網并存的融合網絡。
(2)網關將對CAN 到CAN、CAN 到以太網、以太網到CAN、以太網到以太網之間的信息進行轉發,且路由吞吐量將大幅度增加。
(3)在路由吞吐量大幅度增加情況下,網關丟幀、轉發不及時性等問題將凸顯,單獨設計網關路由軟件緩存區將成為解決上述問題的方法,進而使汽車智能網聯化能夠在低成本車輛上得到應用,達到降低汽車零部件的成本,提高了社會效益目的。