FlexRay总线原理及应用
由于傳統的CAN解決方案不能滿足汽車線控系統(X-by-Wire) 的要求。于是在 2000 年 9 月 , 寶馬和戴姆勒克萊斯勒聯合飛利浦和摩托羅拉成立了 FlexRay 聯盟。該聯盟致力于推廣 FlexRay 通信系統在全球的采用, 使其成為高級動力總成、 底盤、 線控系統的標準協議。其具體任務為制定 FlexRay 需求定義、 開發 FlexRay協議、 定義數據鏈路層、 提供支持 FlexRay 的控制器、 開發 FlexRay 物理層規范并實現基礎解決方案。
1 FlexRay 特點
FlexRay 提供了傳統車內通信協議不具備的大量特性, 包括:
(1)高傳輸速率:FlexRay 的每個信道具有 10Mbps 帶寬。由于它不僅可以像 CAN 和 LIN 網絡這樣的單信道系統一般運行, 而且還可以作為一個雙信道系統運行, 因此可以達到 20Mbps 的最大傳輸速率, 是當前 CAN 最高運行速率的 20 倍。
(2)同步時基:FlexRay 中使用的訪問方法是基于同步時基的。該時基通過協議自動建立和同步,并提供給應用。時基的精確度介于 0.5μs 和 10μs 之間(通常為 1~2μs)。
(3)確定性:通信是在不斷循環的周期中進行的, 特定消息在通信周期中擁有固定位置, 因此接收器已經提前知道了消息到達的時間。到達時間的臨時偏差幅度會非常小, 并能得到保證。
(4)高容錯:強大的錯誤檢測性能和容錯功能是 FlexRay 設計時考慮的重要方面。FlexRay 總線使用循環冗余校驗 CRC(Cyclic redundancy cheek)來檢驗通信中的差錯。FlexRay 總線通過雙通道通信,能夠提供冗余功能, 并且使用星型拓撲可完全解決容錯問題。
(5)靈活性:在 FlexRay 協議的開發過程中, 關注的主要問題是靈活性, 反映在如下幾個方面:①支持多種方式的網絡拓撲結構;②消息長度可配置:可根據實際控制應用需求, 為其設定相應的數據載荷長度;③使用雙通道拓撲時, 即可用以增加帶寬, 也可用于傳輸冗余的消息;④周期內靜態、 動態消息傳輸部分的時間都可隨具體應用而定。
2 FlexRay 通訊協議和機制原理
2.1 節點架構
ECU(Electronic Control Unit), 即節點 node, 是接入車載網絡中的獨立完成相應功能的控制單元。主要由電源供給系統(Power Supply)、主處理器(Host)、固化 FlexRay 通信控制器(Communication Controller)、 可選的總線監控器(Bus Guardian) 和總線驅動器(Bus Driver) 組成, 如圖所示。主處理器提供和產生數據, 并通過 FlexRay 通信控制器傳送出去。其中 BD 和 BG 的個數對應于通道數,與通訊控制器和微處理器相連。總線監控邏輯必須獨立于其他的通訊控制器。總線驅動器連接著通信控制器和總線, 或是連接總線監控器和總線。
節點的兩個通訊過程為:
(1)發送數據:Host 將有效的數據送給 CC,在CC中進行編碼,形成數據位流,通過BD發送到相應的通道上。
(2)接受數據:在某一時刻,由BD訪問棧,將數據位流送到CC進行解碼, 將數據部分由 CC傳送給 Host。
2.2 拓撲結構
FlexRay 的拓撲主要分為 3 種:總線式、 星型、 總線星型混合型。
通常, FlexRay 節點可以支持兩個信道, 因而可以分為單信道和雙信道兩種系統。在雙信道系統中, 不是所有節點都必須與兩個信道連接。
與總線結構相比, 星狀結構的優勢在于:它在接收器和發送器之間提供點到點連接。該優勢在高傳輸速率和長傳輸線路中尤為明顯。另一個重要優勢是錯誤分離功能。例如, 如果信號傳輸使用的兩條線路短路, 總線系統在該信道不能進行進一步的通信。如果使用星狀結構, 則只有到連接短路的節點才會受到影響, 其它所有節點仍然可以繼續與其它節點通信。
2.3 數據幀
一個數據幀由頭段(Header Segment)、 有效負載段(Payload Segment) 和尾段(Trailer Segment)三部分組成。FlexRay 數據幀格式如圖 2.5 所示。
(1)頭段共由 5 個字節(40 位) 組成, 包括以下幾位:
1.保留位(1 位):為日后的擴展做準備;
2.負載段前言指示(1 位):指明負載段的向量信息;
3.無效幀指示(1 位):指明該幀是否為無效幀;
4.同步幀指示(1 位):指明這是否為一個同步幀;
5.起始幀指示(1 位):指明該幀是否為起始幀;
6.幀 ID(11 位):用于識別該幀和該幀在時間觸發幀中的優先級;
7.負載段長度(7 位):標注一幀中能傳送的字數;
8.頭部 CRC(11 位):用于檢測傳輸中的錯誤;
9.周期計數(6 位):每一通信開始, 所有節點的周期計數器增 1。
(2)負載段是用于傳送數據的部分, FlexRay 有效負載段包含 0~254 個字節數據。
對于動態幀, 有效負載段的前兩個字節通常用作信息 ID, 接受節點根據接受的 ID 來判斷是否為需要的數據幀。
對于靜態幀, 有效負載段的前 13 個字節為網絡管理向量(NM), 用于網絡管理。
(3)尾段只含有 24 位的校驗域, 包含了由頭段與有效負載段計算得出的 CRC 校驗碼。計算 CRC時, 根據網絡傳輸順序將從保留位到負載段最后一位的數據放入 CRC 生成器進行計算。
2.4 編碼與解碼
編碼的過程實際上就是對要發送的數據進行相應的處理“打包”的過程, 如加上各種校驗位、 ID符等。編碼與解碼主要發生在通訊控制器與總線驅動器之間, 如圖 2.6。
其中 RxD 位接受信號, TxD 為發送信號, TxEN 為通訊控制器請求數據信號。信息的二進制表示采用“不歸零”碼。對于雙通道的節點, 每個通道上的編碼與解碼的過程是同時完成的。
TSS(傳輸啟動序列):用于初始化節點和網絡通信的對接, 為一小段低電平。
FSS(幀啟動序列):用來補償 TSS 后第一個字節可能出現的量化誤差, 為一位的高電平BSS(字節啟動序列):給接受節點提供數據定時信息, 由一位高電平和一位低電平組成。
FES(幀結束序列):用來標識數據幀最后一個字節序列結束, 由一位低電平和一位高電平組成。
DST(動態段尾部序列):僅用于動態幀傳輸, 用來表明動態段中傳輸時隙動作點的精確時間點,并防止接受段過早的檢測到網絡空閑狀態。由一個長度可變的低電平和一位高電平組成。
將這些序列與有效位(從最大位 MSB 到最小位 LSB) 組裝起來就是編碼過程, 最終形成能夠在網絡傳播的數據位流。
2.5 媒體訪問方式
在媒體接入控制中, 一個重要的概念就是通信周期(Communication Cycle), 如圖所示。一個通信周期由靜態段(Static Segment)、 動態段(Dynamic Segment)、 特征窗(Symbol Window) 和網絡空閑時間(Network Idle Time) 4 個部分組成。FlexRay 提供兩種媒體接入時序的選擇:靜態段采用時分多址方式(TDMA), 由固定的時隙數組成, 不可修改, 且所有時隙的大小一致。用來傳輸周期性的數據信息;動態段采用靈活的時分多址(FTDMA), 由較小的時隙組成, 可根據需要擴展變動, 一般用于傳輸事件控制的消息。符號窗用于傳輸特征符號。網絡空閑時間用于時鐘同步處理。
仲裁層包含有仲裁網絡, 它構成了 FlexRay 媒介仲裁的主干部分。在靜態段中, 仲裁網絡由叫做靜態時槽(Static Slots)的連續時間間隔組成, 在動態段中, 由稱為微型時槽(Minislots)的連續時間間隔組成。
仲裁網絡層是建立在由宏節拍(Marcotick)組成的宏節拍層之上的。每個本地宏節拍的時間都是一個整數倍的微節拍的時間。已分配的宏節拍邊緣叫做行動點(Action points)。行動點是一些特定的時刻, 在這些時刻上, 將會發生傳輸的開始和結束。
微節拍層是由微節拍組成的。微節拍是由通信控制器外部振蕩器時鐘刻度,選擇性地使用分頻器導出的時間單元。微節拍是控制器中的特殊單元, 它在不同的控制器中可能有不同的時間。節點內部的本地時間間隔尺寸就是微節拍。
2.6 時鐘同步
如果使用基于 TDMA 的通信協議, 則通信媒介的訪問在時間域中控制。因此, 每個節點都必須保持時間同步, 這一點非常重要。所有節點的時鐘必須同步, 并且最大偏差(精度)必須在限定范圍內,這是實現時鐘同步的前提條件。
時鐘偏差可以分為相位和頻率偏差。相位偏差是兩個時鐘在某一特定時間的絕對差別。頻率偏差是相位偏差隨時間推移的變化, 它反映了相位偏差在特定時間的變化。
FlexRay 使用一種綜合方法, 同時實施相位糾正和頻率糾正, 包含兩個主要過程:時間同步校正機制(最大時間節拍生成 MTG)和時鐘同步計算機制(時鐘同步進程 CSP)。MTG 控制時隙初值, 即周期計數器和最大時鐘節拍的計數器, 并對其進行修正。CSP 主要完成一個通信循環開始的初始化,測量并存儲偏差值, 計算相位和頻率的修正值。
相位修正僅在奇數通信周期的 NIT 段執行, 在下一個通信周期起始前結束。相位改變量指明了添加到 NIT 相位修正段的微節拍數目, 它的值由時鐘同步算法決定, 并有可能為負數。相位改變量的計算發生在每個周期內, 但修正僅應用在奇數通信周期的末尾。
在頻率糾正中, 需要使用兩個通信循環的測量值。這些測量值之間的差值反映每個通信循環中的時鐘偏差變化。它通常用于計算雙循環結束時的糾正值。在整個后來的兩個通信周期中, 都使用該糾正值。
2.7 喚醒與啟動
為了節省資源, 部分節點處于不工作狀態時, 進入“節電模式”。當這些節點需要再次工作時,就需要“喚醒”它們。主機可以在通信信道上傳輸喚醒模式, 當節點接收到喚醒特征符(Wakeup Symbol)后, 主機處理器和通信控制器才進行上電。
在通信啟動執行之前, 整個簇需要被喚醒。啟動節點工作需要在所有通道上同步執行。初始一個啟動過程的行為被稱為冷啟動(Coldstart), 能啟動一個起始幀的節點是有限的, 它們稱作冷啟動節點(Coldstart Node)。在至少由三個節點組成的簇中, 至少要有三個節點被配置為冷啟動節點。冷啟動節點中, 主動啟動簇中消息的節點稱之為主冷啟動節點(Leading Coldstart Node), 其余的冷啟動節點則稱之為從冷啟動節點(Following Coldstart Node)。
當節點被喚醒并完成初始化后, 它就可以在相應的主機控制命令發出之后進入啟動程序。在非冷啟動節點接收并識別至少兩個相互通信的冷啟動節點前, 非冷啟動節點一直等待。同時, 冷啟動節點監控兩個通信通道, 確定是否有其他的節點正在進行傳輸。當檢測到通信信道沒有進行傳輸時,該節點就成為主冷啟動節點。
冷啟動嘗試以沖突避免操作符(Collision Avoidance Symbol)開始, 只有傳輸 CAS 的冷啟動節點能在最開始的四個周期傳輸幀。主冷啟動節點先在兩個通道上發送無格式的符號(一定數量的無效位),然后啟動集群。在無格式符號發送完畢后, 主冷啟動節點啟動該節點的時鐘, 進入第一個通信周期。從冷啟動節點可以接收主冷啟動節點發送的消息, 在識別消息后, 從冷啟動節點便可確認主冷啟動節點發送的消息的時槽位置。然后等待下一個通信周期, 當接收到第二個消息后, 從冷啟動節點便開始啟動它們的時鐘。根據兩條消息的時間間隔, 測量與計算頻率修正值,盡可能地使從啟動節點接近主冷啟動節點的時間基準。為減少錯誤的出現, 冷啟動節點在傳輸前需等待兩個通信周期。在這期間, 其余的冷啟動節點可繼續接收從主冷啟動節點及已完成集群冷啟動節點的消息。
從第五個周期開始, 其余的冷啟動節點開始傳輸起始幀。主冷啟動節點接收第五與第六個周期內其余冷啟動節點的所有消息, 并同時進行時鐘修正。在這個過程中沒有故障發生, 且冷啟動節點至少收到一個有效的起始幀報文對, 主冷啟動節點則完成啟動階段, 開始進入正常運行狀態。
非冷啟動節點首先監聽通信信道, 并接收信道上傳輸的信息幀。若接收到信道上傳輸的信息幀,便開始嘗試融入到啟動節點。在接下來的兩個周期內, 非冷啟動節點要確定至少兩個發送啟動幀的冷啟動節點, 并符合它們的進度。若無法滿足條件, 非冷啟動節點將退出啟動程序。非冷啟動節點接收到至少兩個啟動節點連續的兩組雙周期啟動幀后, 開始進入正常運行狀態。非冷啟動節點進入正常工作狀態, 比主冷啟動節點晚兩個周期。
如下圖所示, 描述了正確的啟動過程。其中, A 是主冷啟動節點, B 是從冷啟動節點, C是非冷啟動節點。
3 FlexRay 的應用
3.1 FlexRay 總線在 BMW 車系中的應用
(1)FlexRay 總線應用概述?
在 BMW 車系 F01 / F02 車型中, 通過 FlexRay 總線系統以跨系統方式實現汽車行駛動態 管理系統和發動機管理系統的聯網。同時, FlexRay 是行駛動態管理系統的綜合性 主總線系統 (圖3.1), 中央網關模塊用于不同總線系統與 FlexRay 之間的連接 (圖3.2)。
圖3.1 FlexRay 是行駛動態管理系統的綜合性主總線系統
圖3.2 中央網關模塊 (ZGM) 用于不同總線系統與 FlexRay 之間的連接
F01 / F02 車型 FlexRay 總線系統的拓撲結構如圖3.3所示。根據車輛配置情況, ZGM 帶有一個或兩個星形連接器, 每個星形連接器都有 4 個總線驅動器。總線驅動器將控制單元 數據通過通信控制器傳輸給中央網關模塊 (ZGM)。根據 FlexRay 控制單元的終端形式, 總 線驅動器通過兩種方式與這些控制單元相連。
圖3.3?F01 / F02 車型 FlexRay 總線系統的拓撲結構?
AL—主動轉向系統 BD—總線驅動器 DME—數字式發動機電子系統 DSC—動態穩定控制系統 EDCSHL—左后 電子減振器控制系統衛星式控制單元 EDCSHR—右后電子減振器控制系統衛星式控制單元 EDCSVL—左前電子減 振器控制系統衛星式控制單元 EDCSVR—右前電子減振器控制系統衛星式控制單元 HSR—后橋側偏角控制系統 ICM—集成式底盤管理系統 SZL—轉向柱開關中心 VDM—垂直動態管理系統 ZGM—中央網關模塊
(2)終端電阻的設置?
與大多數總線系統一樣, 為了避免在導線上產生信號反射, FlexRay 上的數據導線兩端 也使用了終端電阻 (作為總線終端)。這些終端電阻的阻值由數據傳輸速率和導線長度決 定。終端電阻位于各個控制單元內部。?
如果一個總線驅動器上僅連接一個控制單元 (例如 SZL 與總線驅動器 BDO 相連), 則 總線驅動器和控制單元的接口各有一個終端電阻 (圖3.4)。中央網關模塊的這種連接方式 稱為 “終止節點終端”。
圖3.4?終止節點終端內部的終端電阻?
如果控制單元上的接口不是物理終止節點 (例如總線驅動器 BD2 上的 IEC、 ICM 和 DME), 而是形成環路, 則每個總線路徑端部的兩個組件內部必須設置終端電阻(圖3.5)。
圖3.5?形成環路的?FlexRay?終端電阻的設置
這種連接方式既用于中央網關模塊, 也用于一些控制單元。但是形成環路的控制單元還 使用一個 “非終止節點終端” 來獲取數據。受這種終端形式的電阻/ 電容器電路所限, 無法 通過測量技術在控制單元插頭上對其進行檢查。通過測量 (無電流) FlexRay 總線確定導線 或終端電阻時, 必須使用車輛電路圖。
FlexRay總線原理及應用
總結
以上是生活随笔為你收集整理的FlexRay总线原理及应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 青岛大学计算机二级考试,2017年3月青
- 下一篇: 京东开源asyncTool之线程编排