0 引言
汽車技術(shù)的飛速發(fā)展使得汽車電子控制單元(Electronic Control Unit,ECU)中包含的控制參數(shù)大量增加,標(biāo)定工作復(fù)雜度越來(lái)越高。在ECU開(kāi)發(fā)過(guò)程中,控制參數(shù)的標(biāo)定工作直接影響整車性能的優(yōu)劣。面對(duì)日趨多樣的ECU和通信總線類型,開(kāi)發(fā)一種支持多總線的、通用靈活的標(biāo)定系統(tǒng),具有非常高的實(shí)用價(jià)值[1]。目前,CAN總線作為一種可靠的汽車總線已經(jīng)廣泛應(yīng)用于高檔汽車,因而多數(shù)標(biāo)定系統(tǒng)都是基于CCP(CAN Calibration Protocol)協(xié)議開(kāi)發(fā)的,具有一定的通用性[2]。但隨著更為先進(jìn)的FlexRay通信總線迅速發(fā)展,開(kāi)發(fā)出一種既支持當(dāng)下主流的CAN總線,又兼容代表汽車總線趨勢(shì)的FlexRay總線的標(biāo)定系統(tǒng),無(wú)疑具有很高的技術(shù)應(yīng)用價(jià)值。
本文基于XCP協(xié)議設(shè)計(jì)了一套ECU標(biāo)定系統(tǒng),充分利用了XCP協(xié)議物理傳輸層與協(xié)議層相互獨(dú)立的特性,基于同一協(xié)議層分別實(shí)現(xiàn)了對(duì)CAN總線和FlexRay總線的支持,大大提高了標(biāo)定系統(tǒng)的總線兼容性與可擴(kuò)展性。
1 標(biāo)定系統(tǒng)總體方案設(shè)計(jì)
XCP協(xié)議由自動(dòng)化及測(cè)量系統(tǒng)標(biāo)準(zhǔn)協(xié)會(huì)(Association for Standardization of Automation and Measuring system,ASAM)提出,是對(duì)原有CCP2.1協(xié)議的繼承和升級(jí),力求使用最小的系統(tǒng)和硬件資源開(kāi)銷實(shí)現(xiàn)高效通信[3]。該協(xié)議分別定義了協(xié)議層、傳輸層和接口層,其最突出的特點(diǎn)就是協(xié)議層獨(dú)立于傳輸層。對(duì)于不同類型的通信總線,只需要將XCP報(bào)文(XCP Message)的報(bào)文頭和報(bào)文尾填上對(duì)應(yīng)信息,而中間部分的XCP數(shù)據(jù)包(XCP Packet)由協(xié)議層定義,完全不受影響。因此XCP標(biāo)定協(xié)議能夠極好地適應(yīng)總線多樣化對(duì)標(biāo)定系統(tǒng)通用性提出的要求。目前,ASAM已經(jīng)在標(biāo)準(zhǔn)中定義的傳輸層包括:XCP-on-CAN、XCP-on-Ethernet(TCP/IP、UDP/IP)、XCP-on-SXI(SPI、SCI)、XCP-on-USB和XCP-on-FlexRay[3]。根據(jù)后續(xù)的實(shí)際需求,也考慮進(jìn)一步定義XCP-on-LIN、XCP-on-K-Line和XCP-on-MOST。
圖1是標(biāo)定系統(tǒng)總體架構(gòu)設(shè)計(jì)方案。整個(gè)標(biāo)定系統(tǒng)框架遵循ASAM-MCD標(biāo)準(zhǔn)(原ASAP標(biāo)準(zhǔn))搭建,包括運(yùn)行于PC端的上位機(jī)標(biāo)定軟件、負(fù)責(zé)上位機(jī)和下位機(jī)之間通信的通信控制單元和下位機(jī)ECU。ECU端采用Freescale公司的MC9S12XF512芯片。上位機(jī)集成了方便用戶進(jìn)行測(cè)量和標(biāo)定的圖形界面以及XCP命令解析模塊,用戶請(qǐng)求經(jīng)由上位機(jī)XCP協(xié)議模塊打包,通過(guò)通信控制單元發(fā)送至下位機(jī)ECU通信接口,再由集成在ECU中的XCP驅(qū)動(dòng)模塊解析后調(diào)用對(duì)應(yīng)命令處理模塊進(jìn)行操作,將處理結(jié)果打包并通過(guò)通信控制單元發(fā)送回上位機(jī)。根據(jù)通信介質(zhì)的不同,需要對(duì)XCP協(xié)議幀的幀頭和幀尾進(jìn)行對(duì)應(yīng)的信息填充。本文設(shè)計(jì)的標(biāo)定系統(tǒng)同時(shí)支持當(dāng)下主流的CAN通信總線和代表未來(lái)汽車總線發(fā)展趨勢(shì)的FlexRay總線。
2 XCP協(xié)議驅(qū)動(dòng)程序的實(shí)現(xiàn)
XCP協(xié)議以主從方式工作,并使用命令傳輸對(duì)象(Command Transfer Object,CTO)和數(shù)據(jù)傳輸對(duì)象(Data Transfer Object,DTO)兩種數(shù)據(jù)包來(lái)區(qū)分主從節(jié)點(diǎn)間的通信,如圖2所示。
XCP協(xié)議規(guī)定了3種通信模式,分別是標(biāo)準(zhǔn)通信模式(Standard Mode)、塊傳輸通信模式(Block Transfer Mode)和交錯(cuò)傳輸通信模式(Interleaved Mode)。本文設(shè)計(jì)的標(biāo)定系統(tǒng)適用于CAN總線和FlexRay總線,采用標(biāo)準(zhǔn)通信模式,即在主機(jī)主動(dòng)發(fā)起會(huì)話建立連接之后,對(duì)于主機(jī)發(fā)送的每一條命令,從機(jī)都必須進(jìn)行響應(yīng)處理,如出錯(cuò)則返回錯(cuò)誤報(bào)告信息。在沒(méi)有接收到從機(jī)對(duì)上一條命令的應(yīng)答之前,主機(jī)不會(huì)發(fā)送新的命令[4]。
2.1 下位機(jī)端XCP協(xié)議驅(qū)動(dòng)程序的實(shí)現(xiàn)
XCP協(xié)議作為對(duì)CCP協(xié)議的升級(jí),其所具有的一個(gè)重要新功能是對(duì)冷啟動(dòng)測(cè)量的支持,即所謂的RESUME模式[3]。集成了XCP協(xié)議驅(qū)動(dòng)的下位機(jī)啟動(dòng)后其狀態(tài)機(jī)模型如圖3所示。
從節(jié)點(diǎn)設(shè)備啟動(dòng)并完成初始化后,會(huì)立刻檢測(cè)ECU的非易失存儲(chǔ)介質(zhì)中是否有已配置好的DAQ list供RESUME模式使用,如果有,則進(jìn)入RESUME模式,按配置列表周期性向上位機(jī)發(fā)送數(shù)據(jù);如果沒(méi)有相關(guān)配置文件,則進(jìn)入DICONNECTED模式。在RESUME模式和DISCONNECTED模式下,從設(shè)備只響應(yīng)來(lái)自主機(jī)的CON-NECT命令(XCP-ON-CAN條件下還可響應(yīng)GET_SLAVE_ID命令)。下位機(jī)端XCP驅(qū)動(dòng)的工作流程如圖4所示。
按照主從通信模式,從機(jī)端使用中斷方式對(duì)主機(jī)的命令進(jìn)行響應(yīng)。從機(jī)啟動(dòng)后會(huì)首先完成系統(tǒng)的初始化工作,包括對(duì)從機(jī)硬件資源的初始化、配置系統(tǒng)默認(rèn)參數(shù)以及XCP模塊的初始化,并且將標(biāo)定數(shù)據(jù)從ROM或Flash鏡像到RAM,為標(biāo)定工作做好準(zhǔn)備。在解析到來(lái)自主機(jī)的CTO消息中包含CONNECT命令后,從機(jī)響應(yīng)主機(jī)建立連接,該設(shè)備進(jìn)入在線狀態(tài),進(jìn)而處理來(lái)自主機(jī)的一系列命令,并根據(jù)命令碼(CMD code)調(diào)用對(duì)應(yīng)的模塊進(jìn)行響應(yīng),完成對(duì)應(yīng)操作后將數(shù)據(jù)封裝成DTO數(shù)據(jù)包發(fā)送給主機(jī)。如處理出錯(cuò),則返回對(duì)應(yīng)的ERR數(shù)據(jù)包,其第二字節(jié)包含具體的錯(cuò)誤碼。
2.2 上位機(jī)端XCP協(xié)議驅(qū)動(dòng)程序的實(shí)現(xiàn)
上位機(jī)采用圖形化編程語(yǔ)言LabVIEW開(kāi)發(fā)。XCP協(xié)議共規(guī)定了18條必選命令和38條可選命令[5]。結(jié)合標(biāo)定系統(tǒng)的功能需求和開(kāi)發(fā)語(yǔ)言特點(diǎn),實(shí)現(xiàn)思路是將18條必選命令和部分可選命令分別定義為獨(dú)立的子vi,然后根據(jù)實(shí)際功能需求對(duì)其進(jìn)行順序調(diào)用。實(shí)現(xiàn)的部分命令子vi如圖5所示。
結(jié)合標(biāo)定軟件的功能需求和XCP協(xié)議規(guī)定的CMD列表,上位機(jī)端的XCP協(xié)議實(shí)現(xiàn)框架如圖6所示。
本文設(shè)計(jì)的標(biāo)定系統(tǒng)軟件包含部分尚未實(shí)現(xiàn)的可選命令。當(dāng)用戶操作需要用到該命令時(shí),下位機(jī)會(huì)統(tǒng)一返回ERR_CMD_UNKNOWN錯(cuò)誤代碼。
3 XCP協(xié)議傳輸層設(shè)計(jì)
作為對(duì)CCP協(xié)議的升級(jí),XCP協(xié)議最突出的特點(diǎn)是協(xié)議層獨(dú)立于具體的物理傳輸層,從而增加了協(xié)議對(duì)總線適用的靈活性,減少了開(kāi)發(fā)移植的重復(fù)工作。XCP協(xié)議規(guī)定的XCP報(bào)文(XCP Message,也稱XCP Frame)結(jié)構(gòu)如圖7所示。
XCP報(bào)文分為3部分,分別是報(bào)文頭(XCP Header)、報(bào)文尾(XCP Tail)和中間的XCP數(shù)據(jù)包(XCP Packet)。其中XCP數(shù)據(jù)包由協(xié)議層定義,報(bào)文頭和報(bào)文尾由傳輸層定義,從而實(shí)現(xiàn)同一協(xié)議層數(shù)據(jù)包可通過(guò)不同物理總線進(jìn)行傳輸。
3.1 XCP-on-CAN傳輸層設(shè)計(jì)
當(dāng)物理層傳輸介質(zhì)為CAN總線時(shí),報(bào)文頭為空,報(bào)文尾由開(kāi)發(fā)者根據(jù)實(shí)際需求選則有或者無(wú),且XCP數(shù)據(jù)包中不包含時(shí)間標(biāo)識(shí)段(TIMESTAMP)。其原理是:CAN2.1協(xié)議規(guī)定CAN報(bào)文數(shù)據(jù)幀的數(shù)據(jù)域長(zhǎng)度DLC最多為8 B[6]。如果設(shè)置CAN報(bào)文中的數(shù)據(jù)長(zhǎng)度DLC始終等于XCP數(shù)據(jù)包長(zhǎng)度LEN,則報(bào)文尾為空,此時(shí)XCP數(shù)據(jù)包就是XCP報(bào)文;如果設(shè)定DLC長(zhǎng)度始終為MAX_DLC=8,則當(dāng)XCP數(shù)據(jù)包長(zhǎng)度小于8 B時(shí),需要通過(guò)添加X(jué)CP報(bào)文尾的方式補(bǔ)足8 B(填充內(nèi)容任意)。本文設(shè)計(jì)的XCP-on-CAN報(bào)文采用第一種方式,即令DLC始終與LEN相等。
3.2 XCP-on-FlexRay傳輸層設(shè)計(jì)
當(dāng)物理層傳輸介質(zhì)為FlexRay總線時(shí),必包含報(bào)文頭,而報(bào)文尾則根據(jù)所在報(bào)文實(shí)際情況,可能為空,也可能為1 B的填充域(填充內(nèi)容任意)。其原理是:報(bào)文頭包含4個(gè)部分,分別為XCP節(jié)點(diǎn)地址(NAX)、計(jì)數(shù)(CTR)、填充字節(jié)(FILL)和XCP報(bào)文數(shù)(LEN)。除首字節(jié)NAX外,其余部分均為可選項(xiàng)。FlexRay作為新一代高速總線,每一幀的理論有效數(shù)據(jù)長(zhǎng)度能達(dá)到254 B,實(shí)際應(yīng)用過(guò)程中有效數(shù)據(jù)長(zhǎng)度取決于具體的FlexRay控制器參數(shù),其中恩智浦MFR4310控制器已經(jīng)可以實(shí)現(xiàn)0~254 B數(shù)據(jù)域長(zhǎng)度配置[7]。為了增加總線吞吐量,當(dāng)FlexRay數(shù)據(jù)幀中含有多個(gè)連續(xù)的XCP報(bào)文時(shí),需要給每一個(gè)報(bào)文順序計(jì)數(shù)CTR以保證數(shù)據(jù)的有序性,同時(shí)還要給出所包含的XCP報(bào)文個(gè)數(shù)LEN,而FILL域用于實(shí)現(xiàn)Byte或Word對(duì)齊,提高FlexRay總線傳輸效率[8]。本文設(shè)計(jì)的FlexRay數(shù)據(jù)幀采用最為簡(jiǎn)潔的形式,僅包含一個(gè)XCP報(bào)文。
本文設(shè)計(jì)的XCP-on-CAN和XCP-on-FlexRay報(bào)文結(jié)構(gòu)如圖8所示。
4 標(biāo)定系統(tǒng)驗(yàn)證
對(duì)系統(tǒng)進(jìn)行驗(yàn)證的首要目標(biāo)是保證系統(tǒng)的各項(xiàng)基本功能均能夠準(zhǔn)確、可靠地實(shí)現(xiàn)。驗(yàn)證的基本思路是:第一階段,連接標(biāo)定系統(tǒng)上位機(jī)、下位機(jī),并運(yùn)行上位機(jī)標(biāo)定軟件,將下位機(jī)ECU上電,通過(guò)簡(jiǎn)單的配置后可以實(shí)現(xiàn)上、下位機(jī)的成功連接。而后建立監(jiān)測(cè)窗口,選取若干參數(shù)進(jìn)行數(shù)據(jù)顯示,觀察是否能正常運(yùn)行;再建立標(biāo)定窗口,對(duì)上述某一參數(shù)數(shù)值進(jìn)行修改,從而驗(yàn)證標(biāo)定系統(tǒng)的基本功能。第二階段,連接本文開(kāi)發(fā)的標(biāo)定系統(tǒng)和實(shí)驗(yàn)室一直使用的電池包管理ECU,重復(fù)上述驗(yàn)證程序,驗(yàn)證標(biāo)定系統(tǒng)的適用性。實(shí)驗(yàn)結(jié)果表明該系統(tǒng)使用簡(jiǎn)單靈活,能夠滿足實(shí)驗(yàn)室標(biāo)定工作的基本需求。標(biāo)定系統(tǒng)工作時(shí)的連接參數(shù)配置界面、監(jiān)測(cè)窗口和標(biāo)定窗口如圖9所示。
5 結(jié)論
本文基于XCP協(xié)議完成了ECU標(biāo)定系統(tǒng)的開(kāi)發(fā),按照ASAM-MCD標(biāo)準(zhǔn)設(shè)計(jì)系統(tǒng)整體架構(gòu)并予以實(shí)現(xiàn),保證了系統(tǒng)的通用性。利用其協(xié)議層獨(dú)立于傳輸層的特性,在同一協(xié)議層的基礎(chǔ)上設(shè)計(jì)了CAN總線和FlexRay總線對(duì)應(yīng)的兩種傳輸層結(jié)構(gòu),克服了基于CCP協(xié)議的標(biāo)定系統(tǒng)僅支持CAN總線的局限性。最后應(yīng)用標(biāo)定系統(tǒng)進(jìn)行標(biāo)定試驗(yàn),驗(yàn)證其監(jiān)測(cè)、標(biāo)定等基本功能。本文設(shè)計(jì)的標(biāo)定系統(tǒng)具有良好的總線適用性和可擴(kuò)展性,不僅滿足當(dāng)下主流CAN總線的標(biāo)定需求,而且支持新一代FlexRay總線。與此同時(shí),XCP協(xié)議多總線支持的特性也為今后進(jìn)一步擴(kuò)展XCP-on-Ethernet、XCP-on-SXI和XCP-on-MOST提供了保證。
-
ecu
+關(guān)注
關(guān)注
14文章
881瀏覽量
54408 -
XCP協(xié)議
+關(guān)注
關(guān)注
1文章
4瀏覽量
10180
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論