如何解決當(dāng)前CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議設(shè)計(jì)面臨的關(guān)鍵問(wèn)題?
就如同集成電路,、微處理器的誕生一樣,數(shù)據(jù)總線技術(shù)的問(wèn)世成為了汽車電子技術(shù)發(fā)展的一個(gè)重要里程碑,。如今,,隨著CAN總線技術(shù)在汽車電子領(lǐng)域日益廣泛的應(yīng)用,其協(xié)議一致規(guī)范表述的重要性也逐漸凸現(xiàn),。根據(jù)ISO(國(guó)際標(biāo)準(zhǔn)化組織)定義的OSI模型,,CAN協(xié)議定義了物理層及數(shù)據(jù)鏈路層規(guī)范,,為不同的汽車廠商制定符合自身需要的應(yīng)用層協(xié)議提供了便利。如果需要建立更加完善的系統(tǒng),,還需要在CAN的基礎(chǔ)上選擇合適的應(yīng)用層協(xié)議,。
為了幫助業(yè)內(nèi)工程師進(jìn)一步了解汽車CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議制定的重要性,以及掌握汽車CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議設(shè)計(jì)技術(shù),,并解決其關(guān)鍵問(wèn)題,,在電子工程專輯旗下的汽車電子設(shè)計(jì)網(wǎng)站舉行的《如何解決當(dāng)前CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議設(shè)計(jì)面臨的關(guān)鍵問(wèn)題? 》專題討論中,,Mentor Graphics資深產(chǎn)品專員董因平博士應(yīng)邀與工程師進(jìn)行互動(dòng),,與大家進(jìn)一步探討了汽車CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議制定方面的話題?;诖舜螌n}討論,,我們總結(jié)了汽車CAN網(wǎng)絡(luò)應(yīng)用層協(xié)議設(shè)計(jì)中經(jīng)常出現(xiàn)的一些問(wèn)題供讀者參考。
解析CAN協(xié)議應(yīng)用層與應(yīng)用程序
董因平博士表示,,應(yīng)用層和應(yīng)用程序是不一樣的,。應(yīng)用層是指通訊功能的應(yīng)用層。它并不定義和描述應(yīng)用程序參數(shù),,它提供的只是通訊功能與應(yīng)用程序的通訊接口,。包括:定義通訊服務(wù)、傳送過(guò)程數(shù)據(jù),、診斷信息及標(biāo)定信息,。設(shè)備監(jiān)控和網(wǎng)絡(luò)管理也一般定義為應(yīng)用層的一部分,有的也將傳輸層的部分內(nèi)容納入應(yīng)用層實(shí)現(xiàn),,比如超過(guò)8個(gè)字節(jié)的數(shù)據(jù)傳輸,。
應(yīng)用程序就完全是指控制算法等應(yīng)用代碼。它定義控制算法相關(guān)的數(shù)據(jù)和參數(shù),。
在目前ECU開(kāi)發(fā)中,,應(yīng)用程序代碼包含了應(yīng)用層代碼。其缺點(diǎn)在于以下三個(gè)方面:
1. 應(yīng)用程序發(fā)生變化,,必須考查應(yīng)用層是否還能滿足要求,。
2. 通訊協(xié)議發(fā)生變化,整個(gè)應(yīng)用程序及應(yīng)用層代碼都必須重新編譯測(cè)試,。這個(gè)問(wèn)題是造成整車廠在協(xié)議開(kāi)發(fā)中不能起主導(dǎo)作用的主要原因之一,。所以有很多國(guó)內(nèi)的整車廠有了新的協(xié)議,希望某些國(guó)外大型供應(yīng)商實(shí)施新協(xié)議時(shí)會(huì)遇到極大的阻礙,。一是不愿意做,,二是重新開(kāi)發(fā)的費(fèi)用高昂。
3. 嚴(yán)重阻礙了節(jié)點(diǎn)和設(shè)計(jì)的重用。由于應(yīng)用程序和應(yīng)用層融合在一起,,難以實(shí)現(xiàn)即插即用的效果,。
解決方案就是接口標(biāo)準(zhǔn)化,即將應(yīng)用層從應(yīng)用程序中分割出路并標(biāo)準(zhǔn)化接口,。 AUTOSAR的一個(gè)特性就是標(biāo)準(zhǔn)化接口,,實(shí)現(xiàn)即插即用。Mentor Graphics的VTP也是一個(gè)典型的例子,。
CAN測(cè)試重要還是協(xié)議制定重要,?
董因平博士表示,測(cè)試和設(shè)計(jì)的重要性在不同設(shè)計(jì)思路中有不同的體現(xiàn),。目前應(yīng)用層協(xié)議制定的方法可以分為兩大類,,一類是測(cè)試為重心的方法,一類是設(shè)計(jì)為重心的方法,。
第一種方法也稱為投票法或試驗(yàn)法,。這是一種工程設(shè)計(jì)方法,各個(gè)供應(yīng)商對(duì)協(xié)議提出要求,,整車廠集成要求,,通過(guò)測(cè)試驗(yàn)證協(xié)議可行性,隨后發(fā)布協(xié)議,。測(cè)試的功能除了驗(yàn)證協(xié)議的實(shí)現(xiàn)外,,還有一個(gè)重要的任務(wù)就是對(duì)協(xié)議設(shè)計(jì)進(jìn)行測(cè)試,試圖解決ID分配不合理,、消息沖突問(wèn)題等等,。這種方法的重心就是測(cè)試,因此測(cè)試比較重要,。
第二種方法是系統(tǒng)級(jí)設(shè)計(jì)法,。這是一種理論設(shè)計(jì)方法,它提出了完全不同的需求,,供應(yīng)商只需要提供相應(yīng)的參數(shù),根據(jù)一定的理論模型對(duì)網(wǎng)絡(luò)通訊特性進(jìn)行計(jì)算,,如信號(hào)延遲,、總線負(fù)載等。以此為基礎(chǔ),,考慮設(shè)計(jì)需求,,通過(guò)一定的調(diào)度算法,對(duì)每條消息的ID進(jìn)行分配,。方法的核心就是優(yōu)化這些特性參數(shù),,保證整車網(wǎng)絡(luò)通訊的實(shí)時(shí)性能。因此在這種設(shè)計(jì)方法中,,設(shè)計(jì)是重點(diǎn),。
董因平博士還指出,,測(cè)試并不等同于驗(yàn)證。他說(shuō):驗(yàn)證表示的是我們有一個(gè)標(biāo)準(zhǔn),,測(cè)試被測(cè)對(duì)象是否符合,。但是目前汽車電子的測(cè)試不能一概的稱為驗(yàn)證,因?yàn)樗€要測(cè)試協(xié)議設(shè)計(jì)是否正確,,協(xié)議設(shè)計(jì)中是否有瑕疵,。驗(yàn)證的輸入是被測(cè)對(duì)象的特性,參照的是標(biāo)準(zhǔn),,輸出的是兩者是否符合,。
而現(xiàn)在的測(cè)試,輸入的既有被測(cè)對(duì)象的特性,,又有所謂的標(biāo)準(zhǔn),,輸出的是協(xié)議是否需要修改、系統(tǒng)是否可行,、設(shè)計(jì)是否符合需要,。注意這里引出了一個(gè)難以讓人理解的地方,我們要測(cè)試ECU是否符合標(biāo)準(zhǔn),,但是我們卻又在根據(jù)測(cè)試結(jié)果在懷疑這個(gè)標(biāo)準(zhǔn),。因此除非有非常雄厚的技術(shù)和經(jīng)驗(yàn)積累,否則你始終在這兩者之間徘徊,,浪費(fèi)時(shí)間和金錢,。中國(guó)目前就處于這種狀態(tài),但是我們卻要依靠測(cè)試來(lái)推動(dòng)技術(shù)的發(fā)展,,難以想像,。我們需要的是一條新的發(fā)展思路。
沒(méi)有設(shè)計(jì)就根本談不上測(cè)試,,相反設(shè)計(jì)才決定了測(cè)試的體系,。例如,整車網(wǎng)絡(luò)的電氣特性參數(shù),,比如ECU的終端電阻,、電容,這些參數(shù)都是與特定的網(wǎng)絡(luò)環(huán)境有關(guān)系的,??赡芤?yàn)榫€束走線不同就有所不同。設(shè)計(jì)人員知道影響這些參數(shù)的原因和可能出現(xiàn)的問(wèn)題,,而這些都可以成為建立測(cè)試方法的輸入,。
董因平博士補(bǔ)充道,測(cè)試是比較重要,但是一定要比較的話,,則更傾向于選擇設(shè)計(jì)更重要,。其實(shí)電子行業(yè)的發(fā)展可以成為參考,為什么EDA工具在電子設(shè)計(jì)中處于如此重要的地位,?而且現(xiàn)在國(guó)際上的趨勢(shì)是基于系統(tǒng)級(jí)的設(shè)計(jì),、建模等等。重點(diǎn)是系統(tǒng)級(jí),!董因平博士還強(qiáng)調(diào),,如果一味只重視測(cè)試的話,那么就是在走國(guó)外發(fā)展的老路,,是背離系統(tǒng)級(jí)的設(shè)計(jì)思路,,根本就沒(méi)有考慮國(guó)際發(fā)展的趨勢(shì)。
應(yīng)該從哪幾個(gè)方面來(lái)構(gòu)造協(xié)議,?
CAN協(xié)議的基本要素是ID,、周期和信號(hào)與消息的映射關(guān)系。因此構(gòu)造協(xié)議的主要任務(wù)是ID分配,、定義消息周期,、確定信號(hào)與消息的映射關(guān)系。這三個(gè)方面的設(shè)計(jì)都同等重要,,設(shè)計(jì)要考慮的主要因素有數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性要求(即所謂的時(shí)序),、數(shù)據(jù)的相對(duì)重要程度、與數(shù)據(jù)相關(guān)的應(yīng)用控制算法對(duì)數(shù)據(jù)的時(shí)間要求,。
董因平博士指出,,協(xié)議設(shè)計(jì)實(shí)質(zhì)上是非常復(fù)雜的工作,對(duì)于國(guó)內(nèi)來(lái)說(shuō),,由于我們?nèi)狈ο鄳?yīng)的經(jīng)驗(yàn),,國(guó)外又對(duì)我們進(jìn)行技術(shù)?,?,,因此到目前為止這還是阻礙中國(guó)技術(shù)發(fā)展的主要障礙。
國(guó)際上也存在一些現(xiàn)有的標(biāo)準(zhǔn),,如CANopen,、SAE J1939.SAE J1939這是一個(gè)有汽車工程師協(xié)議牽頭制定的應(yīng)用與卡車電控網(wǎng)絡(luò)的協(xié)議。不過(guò)它主要是應(yīng)用與卡車的電控系統(tǒng),,不能直接照搬到轎車控制系統(tǒng)中,。但是隨著汽車電子的發(fā)展,,汽車電子設(shè)計(jì)分工也越來(lái)越細(xì),,這部分工作也有廠商提供工具實(shí)現(xiàn)協(xié)議的計(jì)算機(jī)輔助設(shè)計(jì)。比如Mentor Graphics公司的VNA就是一款自動(dòng)化的協(xié)議設(shè)計(jì)軟件。
實(shí)現(xiàn)通信協(xié)議的程序代碼結(jié)構(gòu)是什么樣的,?
董因平博士說(shuō):首先CAN通信功能包括物理層,、數(shù)據(jù)鏈路層和應(yīng)用層。物理層,、數(shù)據(jù)鏈路層已經(jīng)由硬件實(shí)現(xiàn),,目前都已經(jīng)標(biāo)準(zhǔn)化,有現(xiàn)成的部件(CAN控制器和收發(fā)器)選擇,。因此在單片機(jī)上加上CAN控制器,、收發(fā)器,軟件實(shí)現(xiàn)相應(yīng)的驅(qū)動(dòng)程序就基本實(shí)現(xiàn)了CAN的通訊功能,。但是這對(duì)于汽車電子上的應(yīng)用還是遠(yuǎn)遠(yuǎn)不夠的,,因?yàn)閿?shù)據(jù)鏈路層有很多功能沒(méi)有定義如具有邏輯關(guān)系的消息之間的功能實(shí)現(xiàn)、網(wǎng)絡(luò)管理等等,。
因此通信協(xié)議的程序代碼的結(jié)構(gòu)應(yīng)該是底層驅(qū)動(dòng)+應(yīng)用代碼(通信功能的應(yīng)用代碼),。如果考慮目前汽車電子嵌入式軟件的技術(shù)發(fā)展,未來(lái)的結(jié)構(gòu)應(yīng)該是底層驅(qū)動(dòng)+應(yīng)用代碼+抽象層,。汽車電子軟件開(kāi)放式體系標(biāo)準(zhǔn)AUTOSAR也基本是這樣的思路,。目前也有很多軟件廠商提供現(xiàn)成的解決方案,ECU軟件開(kāi)發(fā)只需要在該解決方案提供的基于數(shù)據(jù)讀寫的接口之上實(shí)現(xiàn)控制算法,。這樣做的好處在于軟件設(shè)計(jì)人員可以把專長(zhǎng)用于集中設(shè)計(jì)控制算法,、保證其可靠性。這樣的產(chǎn)品如Mentor Graphics的嵌入式軟件(VTP + 網(wǎng)絡(luò)管理 + 診斷……)就是這樣的應(yīng)用例子,。