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

圖1 FlexRay數(shù)據(jù)幀格式
FlexRay總線數(shù)據(jù)通信方式為周期循環(huán),每個(gè)周期由靜態(tài)段、動(dòng)態(tài)段、符號(hào)段、空閑段組成(見(jiàn)圖2)。FlexRay符合時(shí)分多路訪問(wèn)(TDMS)機(jī)制,節(jié)點(diǎn)與數(shù)據(jù)都被分配了確定的時(shí)隙,時(shí)隙是周期性重復(fù)的,所以總線上的數(shù)據(jù)訪問(wèn)時(shí)間是可預(yù)測(cè)的。FlexRay可通過(guò)參數(shù)設(shè)置對(duì)靜態(tài)段、動(dòng)態(tài)段的長(zhǎng)度進(jìn)行靈活設(shè)計(jì)。

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

圖3 軟件架構(gòu)示意圖
協(xié)議軟件按照功能流程主要分為協(xié)議參數(shù)與數(shù)據(jù)設(shè)計(jì)部分、總線通信參數(shù)下裝配置部分、協(xié)議參數(shù)與數(shù)據(jù)保存部分。軟件工作流程如圖4所示。

圖4 軟件工作流程示意圖
協(xié)議軟件主界面(見(jiàn)圖5)主要按功能分為4個(gè)區(qū):左上方為軟件控制區(qū),左下方為協(xié)議參數(shù)顯示調(diào)整區(qū),右上方為總線網(wǎng)絡(luò)拓?fù)滹@示與硬件狀態(tài)顯示區(qū),右下方為時(shí)隙調(diào)度設(shè)計(jì)查看區(qū)。
根據(jù)FlexRay總線的特性,其網(wǎng)絡(luò)拓?fù)渲饕譃?種:總線型、星型、總線星型混合型,在星型結(jié)構(gòu)中還存在級(jí)聯(lián)方式。由于FlexRay總線是獨(dú)立雙通道方式,因此可以設(shè)計(jì)單或雙通道模式,在雙通道模式下,不是所有節(jié)點(diǎn)都必須與2個(gè)通道連接[8]。與總線型相比,星型結(jié)構(gòu)具有如下優(yōu)點(diǎn):1)在接收器與發(fā)送器之間提供點(diǎn)到點(diǎn)連接;2)錯(cuò)誤分離功能。

圖5 協(xié)議軟件主界面

圖6 網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)界面

圖7 網(wǎng)絡(luò)拓?fù)滹@示界面
協(xié)議軟件目前提供總線型和星型拓?fù)湓O(shè)計(jì),網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)界面與顯示界面分別如圖6和圖7所示(以總線型拓?fù)錇槔?。
FlexRay總線協(xié)議的可變參數(shù)非常多,包含整個(gè)網(wǎng)絡(luò)的節(jié)點(diǎn)簇參數(shù)和每個(gè)節(jié)點(diǎn)自身的節(jié)點(diǎn)參數(shù)。通過(guò)分類設(shè)計(jì),將節(jié)點(diǎn)簇參數(shù)與節(jié)點(diǎn)參數(shù)分為3類:基礎(chǔ)參數(shù)、高級(jí)工程參數(shù)和關(guān)聯(lián)計(jì)算參數(shù)。
1)基礎(chǔ)參數(shù)是指用戶所必須設(shè)置,或者大多數(shù)應(yīng)用需要更改的參數(shù)。節(jié)點(diǎn)簇和節(jié)點(diǎn)的基礎(chǔ)參數(shù)見(jiàn)表1。

表1 基礎(chǔ)參數(shù)表
2)高級(jí)工程參數(shù)是指用戶可以設(shè)置,但一般不需要設(shè)置的參數(shù),或者只能根據(jù)協(xié)議約束條件推出取值范圍,而無(wú)法計(jì)算確定結(jié)果的參數(shù)。高級(jí)工程參數(shù)表見(jiàn)表2。

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

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