CAN為國際標(biāo)準(zhǔn)現(xiàn)場(chǎng)總線,應(yīng)用廣泛。作為國際標(biāo)準(zhǔn)ISO11898和ISO11519的控制器局域網(wǎng)CAN[1],最初雖然是為汽車的監(jiān)測(cè)、控制系統(tǒng)設(shè)計(jì)的,但由于它在性能、可靠性等方面的突出優(yōu)勢(shì),現(xiàn)已廣泛地應(yīng)用于各工業(yè)領(lǐng)域[2]。在CAN總線技術(shù)中,其MAC機(jī)制是基本的和關(guān)鍵的部分之一。在CAN的技術(shù)規(guī)范中首先提到的就是仲裁,而仲裁規(guī)則是通過報(bào)文優(yōu)先級(jí)體現(xiàn)的。目前國內(nèi)外雖然對(duì)CAN報(bào)文優(yōu)先級(jí)有一些理論研究和分析,但尚未見到有文獻(xiàn)介紹有效的方法或手段來產(chǎn)生和檢測(cè)報(bào)文的優(yōu)先級(jí)。這在很大程度上阻礙了CAN總線的進(jìn)一步研究與應(yīng)用。
CAN報(bào)文優(yōu)先級(jí)檢測(cè)系統(tǒng)由4個(gè)CAN通信節(jié)點(diǎn)組成,通過各節(jié)點(diǎn)的CAN-H和CAN-L端口并聯(lián)到總線上,總線兩端各接上一個(gè)120Ω左右的終端電阻,構(gòu)成一個(gè)閉合回路。4個(gè)節(jié)點(diǎn)的主體結(jié)構(gòu)是基本相同的,根據(jù)系統(tǒng)功能的需要每個(gè)節(jié)點(diǎn)在硬件結(jié)構(gòu)上又有所差別。系統(tǒng)總體結(jié)構(gòu)如圖所示。每個(gè)節(jié)點(diǎn)均有鍵盤和顯示單元;節(jié)點(diǎn)1、2、3為發(fā)送節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)均有“啟動(dòng)發(fā)送”按鈕;節(jié)點(diǎn)1還有“停止發(fā)送”按鈕,并可對(duì)CAN總線電平進(jìn)行檢測(cè),亦即可對(duì)CAN總線MAC(媒體訪問控制)幀進(jìn)行檢測(cè);節(jié)點(diǎn)4為接收節(jié)點(diǎn),可顯示接收到的報(bào)文。
圖 系統(tǒng)結(jié)構(gòu)
CAN技術(shù)規(guī)范中的MAC機(jī)制就是指對(duì)媒體訪問的控制/仲裁機(jī)制[4, 5]。CAN網(wǎng)絡(luò)上的一個(gè)節(jié)點(diǎn)發(fā)送的報(bào)文可被網(wǎng)絡(luò)上所有其它節(jié)點(diǎn)監(jiān)聽并應(yīng)答。當(dāng)總線開放時(shí),任何CAN節(jié)點(diǎn)均可開始發(fā)送報(bào)文,若多個(gè)節(jié)點(diǎn)同時(shí)開始發(fā)送報(bào)文,總線訪問沖突借助標(biāo)識(shí)符進(jìn)行逐位仲裁來解決。仲裁期間,每一個(gè)發(fā)送器都將發(fā)送的位電平與在總線上監(jiān)視到的電平進(jìn)行比較,若相同,則該單元可以繼續(xù)發(fā)送;若不同,該單元丟失仲裁,并且必須退出而不再發(fā)送后續(xù)位。
這里指出,對(duì)于多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送情況下總線訪問的仲裁,CAN采用的是帶優(yōu)先權(quán)的非破壞性逐位仲裁機(jī)制來解決總線沖突的;對(duì)于一個(gè)節(jié)點(diǎn)想要發(fā)送而另一個(gè)節(jié)點(diǎn)正在發(fā)送的總線訪問情況,CAN采用的是載波監(jiān)聽技術(shù)。這二者共同的基礎(chǔ)是CAN總線上一個(gè)節(jié)點(diǎn)發(fā)送的報(bào)文可被所有節(jié)點(diǎn)(包括自身)監(jiān)聽。帶優(yōu)先權(quán)的非破壞性逐位仲裁機(jī)制所依賴的其它基礎(chǔ)是顯性位(“0”)的優(yōu)先權(quán)高于隱性位(“1”),即當(dāng)一個(gè)隱性位和一個(gè)顯性位同時(shí)被發(fā)送至總線上時(shí),總線上所出現(xiàn)的結(jié)果為一個(gè)顯性位,“非破壞性”即是對(duì)高優(yōu)先權(quán)的“0”而言的;參與逐位仲裁的位為仲裁場(chǎng)(11位標(biāo)識(shí)符和RTR位(對(duì)于標(biāo)準(zhǔn)格式)),如圖所示。
圖 CAN的非破壞性逐位仲裁
1、方法的基本原理
根據(jù)CAN的MAC機(jī)制及仲裁規(guī)則,如果高優(yōu)先級(jí)的報(bào)文一直占用著總線,則其它低優(yōu)先級(jí)的報(bào)文將無法獲得仲裁,但是會(huì)嘗試重新發(fā)送。只有當(dāng)高優(yōu)先級(jí)報(bào)文不再占用總線時(shí),低優(yōu)先級(jí)的報(bào)文才可能發(fā)送成功。因此,檢測(cè)報(bào)文優(yōu)先級(jí)的前提和關(guān)鍵是如何讓不同優(yōu)先級(jí)報(bào)文同時(shí)競(jìng)爭(zhēng)總線。
為方便說明,首先命名標(biāo)識(shí)符。節(jié)點(diǎn)1要發(fā)送兩種報(bào)文,將其發(fā)送報(bào)文標(biāo)識(shí)符分別命名為SENT_ID_11和SENT_ID_12;將節(jié)點(diǎn)2和節(jié)點(diǎn)3發(fā)送報(bào)文標(biāo)識(shí)符分別命名為SENT_ID_2和SENT_ID_3,報(bào)文的優(yōu)先級(jí)順序:SENT_ID_11>SENT_ID_2,SENT_ID_11>SENT_ID_3,SENT_ID_12>SENT_ID_2,SENT_ID_12>SENT_ID_3,SENT_ID_11不同于SENT_ID_12,SENT_ID_2不同于SENT_ID_3。使節(jié)點(diǎn)1連續(xù)發(fā)送標(biāo)識(shí)符為SENT_ID_11的報(bào)文,目的是讓高優(yōu)先級(jí)的報(bào)文占用總線,使總線一直處于“忙”的狀態(tài)。然后使節(jié)點(diǎn)2和節(jié)點(diǎn)3分別開始發(fā)送標(biāo)識(shí)符為SENT_ID_2 和SENT_ID_3報(bào)文,節(jié)點(diǎn)2、3發(fā)送的報(bào)文優(yōu)先級(jí)不同且均比節(jié)點(diǎn)1優(yōu)先級(jí)低。此時(shí),節(jié)點(diǎn)2和3監(jiān)聽總線的結(jié)果是:發(fā)現(xiàn)有比其本身優(yōu)先級(jí)高的報(bào)文正在發(fā)送,因此要邊監(jiān)聽邊等待。這時(shí)節(jié)點(diǎn)1停止發(fā)送后,節(jié)點(diǎn)2和3會(huì)同時(shí)競(jìng)爭(zhēng)總線,從而創(chuàng)造了使不同優(yōu)先級(jí)的報(bào)文同時(shí)競(jìng)爭(zhēng)總線的條件。根據(jù)節(jié)點(diǎn)4接收到報(bào)文的先后順序即可驗(yàn)證節(jié)點(diǎn)2和節(jié)點(diǎn)3所發(fā)報(bào)文的優(yōu)先級(jí)了,并且兩個(gè)節(jié)點(diǎn)發(fā)出的報(bào)文都被成功接收,也驗(yàn)證了CAN總線的非破壞性仲裁機(jī)制。另外,通過節(jié)點(diǎn)1檢測(cè)到的MAC幀也能確定節(jié)點(diǎn)2和3的報(bào)文優(yōu)先級(jí)。這里要注意的是,SENT_ID_12的報(bào)文作為檢測(cè)開始的標(biāo)志。使節(jié)點(diǎn)1停止連續(xù)發(fā)送報(bào)文,讓節(jié)點(diǎn)1再發(fā)送一幀ID為SENT_ID_12的報(bào)文,同時(shí)開始檢測(cè)總線電平,捕捉MAC幀。在第三次檢測(cè)到連續(xù)11個(gè)“1”時(shí)停止檢測(cè),即第三幀報(bào)文結(jié)束時(shí)停止檢測(cè)。節(jié)點(diǎn)1將檢測(cè)到的MAC幀的各位值通過顯示單元順序地顯示出來,并與節(jié)點(diǎn)2和3發(fā)送的MAC幀相比較,可體現(xiàn)節(jié)點(diǎn)2和3的報(bào)文優(yōu)先級(jí)。這就雙方面驗(yàn)證了報(bào)文優(yōu)先級(jí),保證了準(zhǔn)確性和可信度。
2、方法的軟件實(shí)施
軟件實(shí)施是嚴(yán)格依據(jù)方法的基本原理設(shè)計(jì)的,各個(gè)節(jié)點(diǎn)的軟件實(shí)施流程如圖所示。
圖 各節(jié)點(diǎn)軟件流程
對(duì)實(shí)施流程作如下幾點(diǎn)說明:
�。�1)配置CAN位定時(shí)寄存器時(shí)要保證各節(jié)點(diǎn)的通信波特率嚴(yán)格一致;
�。�2)配置CAN接受碼和接受屏蔽寄存器時(shí)要保證節(jié)點(diǎn)1、2和3屏蔽總線上所有報(bào)文,節(jié)點(diǎn)4只接受來自節(jié)點(diǎn)2和節(jié)點(diǎn)3的報(bào)文;
�。�3)節(jié)點(diǎn)1軟件流程中次配置仲裁場(chǎng)、控制場(chǎng)及數(shù)據(jù)場(chǎng)是為連續(xù)報(bào)文發(fā)送做準(zhǔn)備,第二次配置是為標(biāo)定報(bào)文檢測(cè)起始標(biāo)志做準(zhǔn)備。
�。�4)節(jié)點(diǎn)1軟件流程中次鍵盤掃描目的是為啟動(dòng)連續(xù)報(bào)文發(fā)送,第二次鍵盤掃描是為停止連續(xù)報(bào)文發(fā)送。
�。�5)CAN的MAC幀檢測(cè)是過檢測(cè)單元中斷服務(wù)程序?qū)崿F(xiàn)的。
其中表1給出了各節(jié)點(diǎn)實(shí)際設(shè)置發(fā)送的報(bào)文;根據(jù)方法的基本原理,表2給出了報(bào)文過濾設(shè)置情況;表3給出了節(jié)點(diǎn)1實(shí)際檢測(cè)到的CAN的MAC幀(灰色陰影標(biāo)示位為位填充),其檢測(cè)到的順序從前到后依次是SENT_ID_12,SENT_ID_2,SENT_ID_3,實(shí)際檢測(cè)情況與理論分析相符合,進(jìn)而報(bào)文優(yōu)先級(jí)得以驗(yàn)證。另外,節(jié)點(diǎn)4液晶顯示的接收到的報(bào)文順序也與理論分析相符合,更進(jìn)一步證實(shí)了方法的可行性。
維庫電子通,電子知識(shí),一查百通!
已收錄詞條153979個(gè)