一種基於can總線的網絡控制方法
2023-10-27 10:01:07 2
專利名稱:一種基於can總線的網絡控制方法
技術領域:
本發明涉及計算機領域的嵌入式實時控制系統,更具體的說,是涉及一種 基於CAN總線的網絡控制方法。
技術背景實時系統是指如果邏輯和時序出現偏差會引起嚴重後果的系統,廣泛應用 於工廠生產過程控制、汽車業、辦公自動化、計算機外設、通信設備、機器人、 航空航天和民用消費等領域。實時控制系統中,主要使用總線網絡進行通訊。 一般是指經過網絡層、鏈路層、物理層等的電子控制單元之間的通信。對於嵌 入式實時控制系統,電子控制單元之間的通信是非常必須和重要的,通信系統 的速度和可靠性直接影響著汽車的性能和駕駛安全。CAN (Controller Area Network)是控制(器)區域網的簡稱,是德國Bosch公 司在1986年為解決現代汽車中眾多測量控制部件之間的數據交換而開發的一種 串行數據通信總線。CAN最初是為汽車的監測、控制系統而設計的,現己在航 天、電力、石化、冶金、紡織、造紙、倉儲等行業廣泛採用。在火車、輪船、 機器人、樓宇自控、醫療器械、數控工具機、智能傳感器、過程自動化儀表等自 控設備中,都廣泛採用CAN技術。目前的CAN總線網絡系統,涉及網絡管理的方法還非常有限,不能對總線 網絡及連接在該網絡上的所有CAN控制器提供統一的管理方法,這樣就增加了 系統的複雜性,並且在出現錯誤時不能統一的監控與管理,在實際應用時有諸 多不便。 發明內容為克服現有技術中的不足,本發明的目的在於提供了一種基於CAN總線的 網絡控制方法。本發明解決其技術問題所採用的技術方案是本發明假設一個基於CAN總線的網絡,可以分為三個層次最下面一層是 CAN驅動層,所有對底層CAN控制器硬體的訪問都要通過CAN驅動來實現, 是對底層硬體的唯一訪問接口,驅動層為上層用戶提供統一的接口,儘可能地隱 藏了微控制器的硬體相關屬性;CAN驅動層之上是CAN接口層,抽象了 CAN 控制器和電子控制單元的硬體布局,為所有的微控制器提供相同的訪問總線通道的機制而不管其具體的物理位置;最上面一層統稱為通訊服務層,包括傳輸 控制,消息路由,通訊管理和網絡管理等模塊,主要是基於底層CAN網絡的傳 輸應用與管理。本發明主要是在CAN接口層(硬體抽象層)實現對底層CAN網絡的狀態 或稱之為操作模式的控制。這樣所有連接在同一 CAN網絡上的CAN控制器當 前的操作模式都可通過一定的程序接口來讀取和改變。CAN總線網絡的操作模 式分為未初始化、停止、啟動、休眠和總線關閉五種狀態。 一些操作將會引起 CAN網絡的操作模式從一個狀態轉換至另一個狀態。通過對操作模式狀態的控 制,可以實現對CAN網絡更加靈活的使用並能實時檢測CAN網絡中的軟硬體 故障。本方法特別適用於對可靠性、健壯性、容錯要求高的系統。本發明提供了一種控制底層CAN網絡通訊模式的方法。這種方法假設可將 若干個同 一類型的CAN控制器連接在同 一個CAN網絡上,CAN接口層的網絡 模式控制管理將會統一地影響到所有這些CAN控制器。連接在一個CAN網絡 上的多個CAN控制器由相應的應用程式接口通過獲取當前的控制器模式。在具體實施步驟如下將總線網絡劃分為五個狀態,分別為未初始化、停 止、啟動、休眠和總線關閉狀態,限定了每個狀態下可執行的操作,並規定了 從一個狀態轉變至另 一個狀態。在系統上電後,整個總線網絡先是處於未初始化狀態,在CAN接口層和 CAN驅動層完成對整個總線網絡以及網絡上每個CAN控制器的初始化工作後, 總線網絡進入停止狀態,在停止狀態,能夠根據需要更改網絡上的某個CAN控 制器的初始化設置,之後整個網絡還是處於停止狀態。在停止狀態,將會阻止CAN控制器發送符合CAN數據幀格式的協議數據 單元,CAN接口層也會阻塞隨後的到CAN驅動層的傳輸請求,所有被掛起的 傳輸請求被取消,傳輸緩衝中的內容被刪除,同時,也不能執行任何從總線網 絡上接收符合CAN數據幀格式的協議數據單元的操作。在啟動狀態下,CAN控制器能夠執行所有的發送接收數據的操作,所有的 傳輸請求都能傳至CAN驅動;同時CAN驅動能夠接收到CAN總線上的協議數 據單元並能將接收指示發送至上層應用模塊。在休眠狀態下,須將同一個CAN網絡上的所有CAN控制器全部設置成為 休眠狀態,如果系統支持喚醒中斷,要開啟每個CAN控制器的喚醒中斷,如果 CAN控制器不支持喚醒中斷,則由CAN驅動封裝這一功能。總線關閉狀態是從啟動狀態到停止狀態的過渡狀態,總線網絡上的CAN控制器由於硬體故障原因從啟動狀態進入總線關閉狀態,在CAN驅動層檢測到這 一事件後發出總線關閉通知,繼而進入停止狀態。 本發明具有的有益效果是-提供了一種對CAN網絡的層次化的劃分方法,並在此基礎上提供了一種統 一的管理CAN控制器的操作模式的方法。將CAN網絡及CAN控制器分為未初 始化、停止、啟動、休眠和總線關閉5種狀態。提供了這些狀態之間的遷移條 件。通過對操作模式狀態的統一控制與管理,可以實現對CAN網絡更加靈活的 使用並能實時檢測CAN網絡中的軟硬體故障。利用本方法,能夠有效地對網絡 及下屬控制器的狀態進行管理,保證數據是在網絡資源可用,線路可靠的情況 下進行傳輸,提高了系統的穩定性。
附圖是CAN總線網絡的狀態轉換圖。
具體實施方式
下面結合附圖和實例對本發明所述的基於狀態管理的CAN網絡控制方法做 進一步說明。如下所述,是CAN總線網絡中的五個狀態或稱之為操作模式以及轉換到這 些模式的典型條件或實例-1. 未初始化狀態在系統上電後,整個網絡以及網絡上的每個CAN控制器就位於尚未初始化 的狀態,這是整個系統的初始狀態。2. 停止狀態主要有四種情況會使網絡及網絡上的每個CAN控制器進入停止狀態a) 初始化操作事件CAN接口層初始化CAN網絡行為CAN驅動層調用相應的函數初始化網絡上的每個CAN控制器b) 停止網絡操作事件CAN接口層停止CAN網絡行為CAN驅動層調用相應的函數接口將網絡上所有的控制器狀態設置為停 止模式c) 喚醒網絡操作事件CAN接口層喚醒處於休眠狀態的CAN網絡,使其進如停止模式 行為CAN驅動層調用相應的程序接口喚醒每個CAN控制器,將所有CAN控制器的狀態設置成為停止狀態。 d)總線關閉事件CAN控制器因為某種原因(如硬體故障)進入總線關閉狀態行為CAN驅動層保證CAN控制器位於停止狀態3. 啟動狀態只有一種情況會使整個網絡以及網絡上的每個CAN控制器進入啟動狀態, 即在停止狀態下請求啟動網絡。事件CAN接口層啟動CAN網絡行為CAN驅動層調用函數接口將CAN網絡上的每個CAN控制器的狀態 都設置為啟動狀態4. 休眠狀態為了將網絡置為休眠狀態,將執行如下的函數調用以及隨後的CAN接口層 的行為以完成到休眠模式的狀態改變事件CAN接口層設置CAN網絡狀態為休眠狀態行為CAN驅動設置網絡上的每個CAN控制器狀態進入休眠狀態5. 總線關閉狀態總線關閉狀態是從啟動狀態到停止狀態的過渡。在具體實施時,CAN控制器的狀態可以由上層通過一定的函數請求來改變。 該請求被CAN接口層確認後通過CAN驅動層的函數接口傳遞至連在同一個 CAN網絡上的各個CAN控制器上。通過這種方式,所有的CAN控制器可以依 次被設置成睡眠狀態或被喚醒。當CAN控制器發出一個網絡事件(總線關閉,喚醒)的信號後,這一信號 會被通知到相應的上層應用程式,在上層應用程式收到這些通知信號後,會執 行相應的喚醒、恢復或關閉系統等操作。如果是從啟動到休眠或停止狀態的轉換, 一旦有一個CAN控制器轉換失敗 了,那麼CAN接口層請求狀態轉換的函數就會返回失敗。然後上層的通訊管理 模塊就會在一定時間內再次嘗試請求CAN接口層的狀態轉換。如果是從休眠或停止狀態到啟動狀態的轉換,那麼一旦有一個CAN控制器 轉換失敗,CAN接口層請求狀態轉換的函數就會返迴轉換失敗。上層的通訊管 理模塊無需立即處理這一問題,因為上層的網絡管理模塊或是傳輸層的通訊模 塊提供了對超時事件的監控,將會檢測到CAN控制器在發送或接收CAN協議 數據單元時的所有超時事件。總線關閉和喚醒通知按照如下方式被處理在有多個CAN控制器都發生總線關閉故障時,如果在總線關閉故障恢復期間沒有到啟狀態的轉換請求,那麼CAN接口層只向上層應用模塊發送一次總線 關閉的通知。在有多個CAN控制器都請求喚醒操作時,如果在喚醒階段沒有發生到啟動 狀態的轉換請求,那麼CAN接口層只向上層應用模塊發送一次喚醒控制器的通 知。用於請求改變CAN控制器狀態的函數接口是以同步方式運行的,沒有異步 地回調函數的通知機制。對所請求的狀態的真正的轉換是在CAN控制器硬體的 轉換請求的基礎上異步發生的。例如,轉換到休眠狀態的請求,在成功轉換到 休眠狀態後CAN驅動層和CAN接口層的函數才返回成功;如果狀態轉換失敗, CAN接口層返回一個失敗提示。到啟動狀態在這種情況下和到停止狀態的轉換 也是異步處理的。這些異步的行為允許上層的一些通訊管理模塊處理並操作 CAN網絡的狀態轉換。上層模塊可以通過輪詢的方式來獲取CAN接口層的操作狀態。每個CAN控制器都支持休眠狀態和喚醒狀態。這些狀態由CAN驅動封裝 好,在接口之上提供了一種硬體無關的操作模式,並由CAN接口層所管理。到 啟動和停止狀態的轉換是同步返回無需後繼的檢查的。只有到休眠狀態的轉換 需要CAN驅動檢查下面的CAN控制器,休眠請求是否執行成功。這時,轉換 請求可以迅速返回,但是CAN控制器到休眠狀態的轉換是有延遲的。在到達一 定時間之後,到休眠狀態的轉換請求就會被拋棄,本次轉換就是不成功的。在 請求狀態轉換的過程中,CAN控制器可能會直接發出一個喚醒中斷,同時還要 發送或接收CAN協議數據單元。這種方式保證了上層的通訊管理模塊立刻就能接收到休眠狀態的轉換,這 樣可以方便地管理CAN收發器,並能立刻使能喚醒中斷。在轉換到啟動狀態後,所有的發送和接收事件被處理。在進入停止狀態後, CAN接口層禁止所有後來的傳輸請求,接收事件也不再被處理。CAN接口層區分了內部發起的CAN控制器喚醒請求(內部請求)和總線 喚醒請求(外部請求)。前者是一個內部同步請求,後者是一個CAN控制器的事 件。只有總線發起的喚醒請求會被喚醒通知函數所通知出去,當然,這是在所 使用的CAN控制器支持通知機制的前提下。
權利要求
1.一種基於CAN總線的網絡控制方法,其特徵在於將總線網絡劃分為五個狀態,分別為未初始化、停止、啟動、休眠和總線關閉狀態,限定了每個狀態下可執行的操作,並規定了從一個狀態轉變至另一個狀態。
2. 根據權利要求1所述的一種基於CAN總線的網絡控制方法,其特徵在於 在系統上電後,整個總線網絡先是處於未初始化狀態,在CAN接口層和CAN 驅動層完成對整個總線網絡以及網絡上每個CAN控制器的初始化工作後,總線 網絡進入停止狀態,在停止狀態,能夠根據需要更改網絡上的某個CAN控制器 的初始化設置,之後整個網絡還是處於停止狀態。
3. 根據權利要求1和2所述的一種基於CAN總線的網絡控制方法,其特徵 在於在停止狀態,將會阻止CAN控制器發送符合CAN數據幀格式的協議數 據單元,CAN接口層也會阻塞隨後的到CAN驅動層的傳輸請求,所有被掛起 的傳輸請求被取消,傳輸緩衝中的內容被刪除,同時,也不能執行任何從總線 網絡上接收符合CAN數據幀格式的協議數據單元的操作。
4. 根據權利要求1所述的基於CAN總線的網絡控制方法,其特徵在於在 啟動狀態下,CAN控制器能夠執行所有的發送接收數據的操作,所有的傳輸請 求都能傳至CAN驅動;同時CAN驅動能夠接收到CAN總線上的協議數據單元並能將接收指示發送至上層應用模塊。
5. 根據權利要求1所述的基於CAN總線的網絡控制方法,其特徵在於在 休眠狀態下,須將同一個CAN網絡上的所有CAN控制器全部設置成為休眠狀 態,如果系統支持喚醒中斷,要開啟每個CAN控制器的喚醒中斷,如果CAN 控制器不支持喚醒中斷,則由CAN驅動封裝這一功能。
6.根據權利要求1所述的基於CAN總線的網絡控制方法,其特徵在於總線 關閉狀態是從啟動狀態到停止狀態的過渡狀態,總線網絡上的CAN控制器由於 硬體故障原因從啟動狀態進入總線關閉狀態,在CAN驅動層檢測到這一事件後 發出總線關閉通知,繼而進入停止狀態。
全文摘要
本發明公開了一種基於CAN總線的網絡控制方法。將總線網絡劃分為五個狀態,分別為未初始化、停止、啟動、休眠和總線關閉狀態,限定了每個狀態下可執行的操作,並規定了如何從一個狀態轉變至另一個狀態。本發明提供了這些狀態之間的遷移條件。通過對操作模式狀態的統一控制與管理,可以實現對CAN網絡更加靈活的使用並能實時檢測CAN網絡中的軟硬體故障。利用本方法,能夠有效地對網絡及下屬控制器的狀態進行管理,保證數據是在網絡資源可用,線路可靠的情況下進行傳輸,提高了系統的穩定性。
文檔編號H04L12/40GK101217444SQ200810059419
公開日2008年7月9日 申請日期2008年1月21日 優先權日2008年1月21日
發明者俞建德, 攀 呂, 吳朝暉, 周海娟, 張呂紅, 楊國青 申請人:浙江大學