引言 作為國際標準ISO11898和IS011519的控制器局域網CAN,雖然最初是為汽車的監測、控制系統而設計的,但由于它在性能、可靠性等方面的突出優勢,現已廣泛地應用于各工業領域。在CAN總線技術中,MAC機制是基本的和關鍵的部分之一。在CAN的技術規范中首先提到的就是仲裁,而仲裁規則是通過報文優先級體現的。目前國內外雖然對CAN報文優先級有一些理論研究和分析,但尚未見到有文獻介紹有效的方法或手段來產生和檢測報文的優先級。這在很大程度上阻礙了CAN總線的進一步研究與應用。本文給出了一種CAN報文優先級的產生與檢測方法,清晰地解析了CAN總線的非破壞性逐位仲裁機制。 1 CAN的MAC機制分析 CAN技術規范中的MAC機制是指對媒體訪問的控制/仲裁機制。CAN網絡上一個節點發送的報文可被網絡上所有其他節點監聽并應答。當總線開放時,任何 CAN節點均可開始發送報文;若多個節點同時開始發送報文,總線訪問沖突借助標識符進行逐位仲裁來解決。仲裁期間,每一個發送器都將發送的位電平與在總線上監視到的電平進行比較。若相同,則該單元可以繼續發送;若不同,則該單元丟失仲裁,且須退出而不再發送后續位。 對于多個節點同時發送情況下總線訪問的仲裁,CAN采用的是帶優先權的非破壞性逐位仲裁機制來解決總線沖突的;對于一個節點想要發送而另一個節點正在發送的總線訪問情況,CAN采用的是載波監聽技術。這二者共同的基礎是CAN總線上一個節點發送的報文可被所有節點(包括自身)監聽。帶優先權的非破壞性逐位仲裁機制所依賴的其他基礎是顯性位(“O”)的優先權高于隱性位(“l”),即當一個隱性位和一個顯性位同時被發送至總線上時,總線上所出現的結果為一個顯性位,“非破壞性”即是對高優先權的“O”而言的。參與逐位仲裁的位為仲裁場(11位標識符和RTR位,對于標準格式),如圖1所示。 2 硬件支持 CAN報文優先級檢測系統由4個CAN通信節點組成,通過各節點的CAN—H和CAN—L端口并聯到總線上,總線兩端各接上一個120Ω左右的終端電阻,構成一個閉合回路。4個節點的主體結構是基本相同的,根據系統功能的需要每個節點在硬件結構上又有所差別。系統總體結構如圖2所示。每個節點均有鍵盤和顯示單元;節點1、2、3為發送節點,每個節點均有“啟動發送”按鈕;節點1還有“停止發送”按鈕,并可對CAN總線電平進行檢測,亦即可對CAN總線 MAC(媒體訪問控制)幀進行檢測;節點4為接收節點,可顯示接收到的報文。 3 CAN報文優先級的產生與檢測方法 3.1 基本原理 根據CAN的MAC機制及仲裁規則,如果高優先級的報文一直占用著總線,則其他低優先級的報文將無法獲得仲裁,但是會嘗試重新發送。只有當高優先級報文不再占用總線時,低優先級的報文才可能發送成功。因此,檢測報文優先級的前提和關鍵是如何讓不同優先級的報文同時競爭總線。 為方便說明,首先命名標識符。節點1要發送兩種報文,將其發送報文標識符分別命名為SENT_ID_11和SENT_ID_12,將節點2和節點3發送報文標識符分別命名為SENT_ID_2和SENT_ID_3。報文的優先級順序: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。使節點1連續發送標識符為SENT_ID_11的報文,目的是讓高優先級的報文占用總線,使總線一直處于“忙”的狀態。然后使節點2和節點3分別開始發送標識符為SENT_ID_2和SENT_ID_3報文,節點2、3發送的報文優先級不同且均比節點1優先級低。此時,節點2和3監聽總線的結果是:發現有比其本身優先級高的報文正在發送,因此要邊監聽邊等待。這時節點l停止發送后,節點2和3會同時競爭總線,從而創造了使不同優先級的報文同時競爭總線的條件。根據節點4接收到報文的先后順序即可驗證節點2和節點3所發報文的優先級了,并且兩個節點發出的報文都被成功接收,也驗證了CAN總線的非破壞性仲裁機制。另外,通過節點1檢測到的MAC幀也能確定節點2和3的報文優先級。這里要注意的是,SENT_ID_12的報文作為檢測開始的標志。使節點l停止連續發送報文,讓節點1再發送1幀ID為SENT_ID_12的報文,同時開始檢測總線電平,捕捉MAC幀。在第3次檢測到連續11個“l”時停止檢測,即第3幀報文結束時停止檢測。節點1將檢測到的MAC幀的各位值通過顯示單元順序地顯示出來,并與節點2和3發送的MAC幀相比較,可體現節點2和3的報文優先級。這就雙方面驗證了報文優先級,保證了準確性和可信度。 3.2 軟件實施 軟件實施是嚴格依據基本原理設計的,各個節點的軟件實施流程如圖3所示。流程的幾點說明: ①配置CAN位定時寄存器時要保證各節點的通信波特率嚴格一致; ②配置CAN接收碼和接收屏蔽寄存器時要保證節點1、2和3屏蔽總線上所有報文,節點4只接收來自節點2和節點3的報文; ③節點1軟件流程中第1次配置仲裁場、控制場及數據場是為連續報文發送作準備,第2次配置是為標定報文檢測起始標志作準備。 ④節點1軟件流程中第1次鍵盤掃描目的是為啟動連續報文發送,第2次鍵盤掃描是為停止連續報文發送。 ⑤CAN的MAC幀檢測是過檢測單元中斷服務程序實現的。 3.3 應用實例 以CAN總線實驗系統為平臺,利用CAN總線優先級檢測方法檢測報文優先級的實例如表1、表2和表3所列。表1給出了各節點實際設置發送的報文;根據方法的基本原理,表2給出了報文過濾設置情況;表3給出了節點1實際檢測到的CAN的MAC幀(灰色陰影標示位為位填充),其檢測到的順序從前到后依次是 SENT_ID_12、SENT_ID_2、SENT_ID_3,實際檢測情況與理論分析相符,進而報文優先級得以驗證。另外,節點4液晶顯示接收到的報文順序也與理論分析相符合,更進一步證實了方法的可行性。 4 結論 ①CAN 的MAC機制是帶優先級的非破壞性逐位仲裁機制,因此,CAN報文優先級的產生應以此為基礎。 ②本文提出了一種CAN報文優先級產生與檢測的方法。該方法能夠直觀地展示CAN總線上信息優先級的競爭情況,有助于深入掌握、理解CAN總線的報文優先級、MAC機制及其相關技術內容;有助于對CAN總線機理與實質的深入研究,為更好地應用CAN總線奠定了理論基礎。 ③本文所提出的方法已通過實驗系統驗證,結果證明該方法可行且效果良好。 參考文獻 1. 饒運濤.鄒繼軍.王進宏 現場總線CAN原理與應用技術 2007 2. 鄔寬明 現場總線技術應用選編1,(上) 2003 3. 張向文.許學雷.吳林瑞 CAN 總線系統信號傳輸延時分析 [期刊論文] -導彈與航天運載技術2006(3) 4. George R.Kanayama Y A Rate-Monotonic Scheduler for the Real-time Control of Autonomous Robots 1996 5. Tindell K Calculating Controller Area Network Message Response Time 1995(8) 作者:佳木斯大學 姜重然 徐斌山 張琳 來源:單片機與嵌入式系統應用 2009 (3) |