劉 偉,李小卿,胡 車
(1.北京中天星控科技開發有限公司 西安分公司,陜西 西安 710076;2.西安現代控制技術研究所 系統測試與仿真評估中心,陜西 西安 710065)
隨著工業通信系統的復雜程度逐漸提高,對于高速、準確、靈活的通信方式的依賴程度更加深入。目前實際應用的通信總線大多為事件觸發模式,通信終端根據運行情況隨機發送數據。在復雜通信環境中,如多任務進行數據傳輸時,這種模式傳遞數據的可靠性、實時性難以滿足實際需求[1]。
基于時間觸發協議的通信方式,在通信網絡中根據唯一的高速同步時鐘,可按照預先定義的時間序列進行數據的收發控制,實現對通信數據高速可靠地傳輸。
FlexRay總線是基于時間觸發協議的工業總線,通過2條獨立的物理線路進行通信,每一條速率最大可達到10 Mbit/s[2],可進行多種網絡拓撲,是一款具備高可靠性、高實時性、高容錯性的工業總線[3]。它既考慮了時間同步、通信調度和容錯機制,又考慮了傳輸速度、安全性、操作靈活性、實時、分布式智能、網絡拓撲等[4]。FlexRay總線與傳統CAN總線相比,在傳輸效率、可靠性和靈活性方面具有較大的優勢[5]。但是,由于FlexRay總線的參數數量較多,通信設計復雜程度很高,所以在實際應用中較為困難。
本文針對飛思卡爾(Freescale)公司的MFR4310芯片作為FlexRay總線通信控制器,通過設計一種針對FlexRay總線協議的軟件,可降低FlexRay總線在通信系統中的設計難度,準確方便地實現FlexRay總線的應用。
FlexRay節點包括主機處理器、通信控制器、總線驅動器和總線監控器等設備。處理器產生和提供數據,進而通過FlexRay控制器將數據傳送出去。總線驅動器連接通信控制器和總線,或是連接總線監視器和總線。主處理器把FlexRay控制器分配的時隙發送給總線監視器,然后總線監視器允許FlexRay控制器在這些時隙中傳輸數據。
FlexRay數據幀由幀頭、負載段和幀尾3部分組成(見圖1)。幀頭由5個字節組成,幀ID為11位,有效數據長度為7位,頭部CRC為11位,周期計數為6位。負載段長度由0~254個字節組成。幀尾是只含有單個的數據域,由3個字節組成[6]。

圖1 FlexRay數據幀格式
FlexRay總線數據通信方式為周期循環,每個周期由靜態段、動態段、符號段、空閑段組成(見圖2)。FlexRay符合時分多路訪問(TDMS)機制,節點與數據都被分配了確定的時隙,時隙是周期性重復的,所以總線上的數據訪問時間是可預測的。FlexRay可通過參數設置對靜態段、動態段的長度進行靈活設計。

圖2 FlexRay周期組成
軟件采用NI公司的LabVIEW 2015版進行設計,LabVIEW是一款G語言編輯軟件,其擁有高效的界面設計、強大的數學與信號算法、豐富的數據通信支持,日益被廣泛應用在測試測控領域。LabVIEW的程序文件稱為VI,每一個VI都可以調用或被調用,從而組成層次分明的LabVIEW程序[7]。
FlexRay總線協議設計軟件(以下統稱為協議軟件)分為3層,分別是驅動層、數據層和交互層(見圖3)。
1)驅動層位于整個軟件的底層,通過LabVIEW調用動態鏈接庫的形式,完成軟件與硬件之間的數據交互。
Graham找到了一個極為吸引人的角度,靠近動作者、向下拍攝。正在摔跤的兩人正好構成畫面的對角線,將觀者的視線從左向右引導,一直到Dylan的臉,而Dylan的頭部也正處于對焦清晰的地方。他雙眼向下凝神觀看的神情,為畫面增添了不少神韻。Graham在當天拍攝了很多張照片,所以他在挑選照片時能有充足的備選,可以從中選出各個畫面要素組合中最滿意的。很可惜的是這幅作品的清晰度還沒有做到精準完美,但這畢竟是拍攝動作場景而非人物肖像,所以總體而言,還是瑕不掩瑜的。
2)數據層是整個軟件的核心關鍵,主要工作內容是對所有總線參數的分類、設計、計算、驗證、管理、負載段數據及標識的設計,以及硬件狀態的解析。
3)交互層是軟件的人機交互窗口,提供友好的交互界面,完成對FlexRay總線設計各種控制操作與狀態查看。

圖3 軟件架構示意圖
協議軟件按照功能流程主要分為協議參數與數據設計部分、總線通信參數下裝配置部分、協議參數與數據保存部分。軟件工作流程如圖4所示。

圖4 軟件工作流程示意圖
協議軟件主界面(見圖5)主要按功能分為4個區:左上方為軟件控制區,左下方為協議參數顯示調整區,右上方為總線網絡拓撲顯示與硬件狀態顯示區,右下方為時隙調度設計查看區。
根據FlexRay總線的特性,其網絡拓撲主要分為3種:總線型、星型、總線星型混合型,在星型結構中還存在級聯方式。由于FlexRay總線是獨立雙通道方式,因此可以設計單或雙通道模式,在雙通道模式下,不是所有節點都必須與2個通道連接[8]。與總線型相比,星型結構具有如下優點:1)在接收器與發送器之間提供點到點連接;2)錯誤分離功能。

圖5 協議軟件主界面

圖6 網絡拓撲設計界面

圖7 網絡拓撲顯示界面
協議軟件目前提供總線型和星型拓撲設計,網絡拓撲設計界面與顯示界面分別如圖6和圖7所示(以總線型拓撲為例)。
FlexRay總線協議的可變參數非常多,包含整個網絡的節點簇參數和每個節點自身的節點參數。通過分類設計,將節點簇參數與節點參數分為3類:基礎參數、高級工程參數和關聯計算參數。
1)基礎參數是指用戶所必須設置,或者大多數應用需要更改的參數。節點簇和節點的基礎參數見表1。

表1 基礎參數表
2)高級工程參數是指用戶可以設置,但一般不需要設置的參數,或者只能根據協議約束條件推出取值范圍,而無法計算確定結果的參數。高級工程參數表見表2。

表2 高級工程參數表
3)關聯計算參數可以由協議常數、基礎參數和高級工程參數計算而來,不需要用戶設置,如每bit周期時間gdBit=1/gBaudRate,其他計算公式參考協議。
完成FlexRay總線協議參數設計后,總線通信周期中靜態段的數量可根據參數“gNumberOfstaticSlots”確定,而動態段可根據實際需求通過參數“SwitchOfDynamic-Segment”進行選擇,動態段的最小時隙數量根據參數“gNumberOfMiniSlots”確定,動態時隙的時間長度還與實際的動態負載數據長度有關,具體每周期能發送的動態時隙數量會根據實際總線數據傳輸情況動態確定[9]。協議軟件提供通信時隙調度設計,可直觀地完成每一個時隙的收發節點與發送數據配置。時隙設計界面如圖8所示。

圖8 時隙設計界面
在參數下裝到硬件前,需要根據Flex-Ray總線協議約束的條件對所有參數進行編輯計算,當滿足所有約束條件后參數有效,允許下裝。
例如,gdNIT參數協議規定的范圍為(2≤gdNIT≤805),其約束計算公式如下。
1)有動態段:
gdNIT=max(adRemRateCalculation,(adRe
mOffsetCalculation+adOffsetCorrection))
+(gMacroPerCycle-max(adRemRateCalculation,(adRemOffsetCalculation+adOffsetCorrection))-adActionPointDifference-gNumberOfStaticSlots*gdStaticSlot-gdSymbolWindow) % gdMinislot
2)無動態段:
gdNIT=gMacroPerCycleg-NumberOfStaticSlots * gdStaticSlot -gdSymbolWindow
當以其他方式進行FlexRay通信設計時,協議軟件可將所有參數的配置結果根據固定格式進行導出,為設計提供參考,簡化通信的實現難度。
時間觸發協議的高速、實時、靈活等優點,現已在車輛、武器系統等領域中逐漸應用,以適應復雜的通信環境。協議軟件大大簡化了FlexRay總線通信的設計難度,分類整理了所有FlexRay協議參數,提供設計者根據不同需求進行總線協議設計。希望協議軟件能夠對FlexRay總線的推廣應用有所幫助。