FlexRay测试开发实践之诊断刷写
前言
FlexRay總線目前主要應用在高端品牌車型(如寶馬、奔馳、奧迪、沃爾沃、捷豹路虎、凱迪拉克等),在以太網技術沒有成熟之前,也有部分OEM將其作為主干網應用。
相對于傳統的CAN測試,FlexRay測試有哪些特點呢?本期我們將主要介紹FlexRay相關協議,并分享FlexRay診斷刷寫測試實踐經驗。
FlexRay簡介
FlexRay的出現始于二十世紀九十年代末,BMW和Daimler Chrysler開始著手進行FlexRay的研究,其初始目標是為了實現線控等應用。2000年成立了FlexRay聯盟,2005年發布FlexRay V2.1規范。2006年,FlexRay首次應用于量產車——用在BMW X5的懸架系統中。FlexRay總線具有以下技術特點:
? 時間確定性
FlexRay靜態段采用基于時間觸發的媒體訪問策略,保證了消息傳輸的時間確定性。
? 容錯性
FlexRay支持單通道和雙通道的容錯通信,使得當一個通道出現故障無法進行通信時,另一個通道上的數據可以保證系統的正常運行。
? 靈活性
FlexRay通信周期分為靜態段和動態段,將基于時間觸發和基于事件觸發兩種媒體訪問方式相結合。
? 高帶寬(相對于CAN/CAN FD)
FlexRay支持兩個通道同時進行數據傳輸,每個通道的帶寬最高可達10Mbit/s。
另外,大家可以留意下近期新的以太網通信技術10Base-T1,其相關的通信技術與FlexRay有異曲同工之處。
FlexRay通信協議
FlexRay拓撲結構
FlexRay有兩個通道,即通道A和通道B,支持多種網絡拓撲結構,可配置成:
? 單通道或雙通道總線網絡
? 單通道或雙通道星型網絡
? 總線型和星型的混合型網絡
FlexRay幀格式
FlexRay數據幀由幀頭、有效負載數據段和幀尾三部分構成。
FlexRay媒體訪問控制(MAC)
FlexRay媒體訪問控制(MAC)是基于循環的通信周期來實現的,在一個通信周期中,FlexRay協議提供兩種MAC:
? 靜態段基于時分多址TDMA(time division multiple access)的訪問機制
? 動態段基于最小時隙的訪問機制,也稱靈活的時分多址FTDMA(flexible time division multiple access)
通信周期是 FlexRay 媒體訪問控制的基本要素,協議是通過時間分層的方法來定義通信周期的。
1.通信周期層
一個通信周期包括靜態段、動態段、符號窗口和網絡空閑時間四個部分。
? 靜態段采用TDMA機制進行數據傳輸
? 動態段采用FTDMA機制進行數據傳輸
? 符號窗口主要用來發送特征符號
? 網絡空閑時間在一個通信周期的末尾,主要用來進行時鐘同步
2.仲裁網格層
在仲裁網格層中,靜態段是由若干個等長的靜態時隙(static slot)組成的,動態段是由若干個等長的最小時隙(minislot)組成的。
3.最大時間節拍層
不同數目的最大時間節拍(macrotick)分別構成了靜態時隙、最小時隙、符號窗口及網絡空閑時間部分,所以整個通信周期是由若干最大時間節拍組成的。
4.最小時間節拍層
一個最大時間節拍是由若干個最小時間節拍(microtick)組成的。
FlexRay傳輸層協議
ISO 10681-2規定了FlexRay網絡層和傳輸層協議(本文不做區分,統稱傳輸層協議),相對于CAN傳輸層協議,FlexRay傳輸層協議具有如下不同點:
協議功能
? 支持無ACK應答和有ACK應答(帶消息重傳機制)的數據傳輸
? 支持已知消息長度和未知消息長度的數據傳輸
傳輸層C_PDU類型與PCI字節
圖5 C_PDU類型與PCI字節-
起始幀
分為無ACK的STFU和有ACK的STFA兩種,通過PCI第一個字節的低4位來區分兩者,FPL表示該幀傳輸的有效凈荷長度,ML表示數據傳輸的總長度。 -
連續幀
一般情況下使用CF1,如果有消息重傳時,需要CF1和CF2之間進行切換。當發送buffer和接收buffer受限時,每個block的傳輸會以CF_EOB(End Of Block)結束,用于請求接收端給出下一個流控應答。
? 流控幀
PCI第一個字節的低四位用于區分流控狀態:
o 3表示CTS(ContinueToSend)
o 4表示ACK_RET(Acknowledge/Retry)
o 5表示WT(Wait)
o 6表示ABT(Abort)
o 7表示OVFLW(Overflow)
? 尾幀
與CAN 傳輸層協議不同,FlexRay在分段傳輸時必須以LF結束。
接收節點的接收性能參數
? CAN: 傳輸層協議通過BlockSize (BS)和SeparationTime (STmin)來體現,FlexRay是通過BufferSize (BfS)和Bandwidth Control (BC)來體現的
? BfS:表示接收節點當前可接收的最大buffer
? BC:包含兩個參數,separation cycle exponent (SCexp)和maximum number of PDUs per cycle (MNPC)
傳輸層C_PDU與鏈路層L_PDU的映射
圖7 C_PDU格式 圖8 L_PDU格式
FlexRay診斷刷寫測試實踐
FFlexRay診斷相關的測試相對CAN/CAN FD而言,其測試規范的制定及測試腳本的開發相對更為復雜,如下為北匯信息基于Vector公司的CANoe及部分自定義函數在項目中實現了FlexRay診斷刷寫測試的示例。
FlexRay診斷報文示例
FlexRay診斷測試開發
采用CANoe的CAPL腳本及部分自定義函數實現了診斷通信、診斷服務和診斷刷寫的自動化測試。
圖10 FlexRay診斷通信部分測試項示例 圖11 FlexRay診斷服務部分測試項示例 圖12 FlexRay診斷刷寫部分測試項示例 圖13 FlexRay診斷測試報告示例總結
北匯信息多年來一直專注于汽車電子測試,在網絡測試、診斷測試以及功能測試等領域積累了豐富的實踐經驗。目前,我們已實現了CAN、CAN FD、LIN、FlexRay和Ethernet的診斷及刷寫測試,歡迎感興趣的客戶朋友與我們探討交流~
部分圖片來源于Vector
參考文獻
[1] ISO 10681-2
[2] FlexRay Communications System Protocol Specification v3.0.1
|
更多相關資訊及業務介紹,歡迎訪問上海北匯信息官方網站:上海北匯信息科技有限公司
更多技術干貨,行業前沿動態,請關注上海北匯信息官方公眾號:
聯系方式:
電話:021-34716271
郵箱:info@polelink.com
北匯信息成立于2010年,是一家技術驅動的創新型服務企業。北匯信息始終專注于汽車電子領域的新技術和新產品,為整車廠和零部件企業提供完整的研發、測試解決方案。從測試工具、專用測試設備、完整測試方案到實車測試服務,我們與我們的客戶一起努力,讓中國的汽車變得越來越安全、越來越舒適、越來越智能。
總結
以上是生活随笔為你收集整理的FlexRay测试开发实践之诊断刷写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arm linux驱动 知乎_学习lin
- 下一篇: 【matlab】 隐函数作图函数 ezp