引 言[1].[2]
隨著汽車電子技術的發展,汽車上所用的電控單元不斷增多,電控單元之間信息交換的需求促進了車用總線技術的發展。CAN總線即控制器局域網總線,由Bosch公司于1981年制定,主要目的為用作汽車的高速動力總線、中速車身總線等。由于CAN總線具有可靠性高、實時性好、成本合理等優點,逐漸被廣泛應用于其他領域中,例如船舶、航天、工業測控、工業自動化、電力系統、樓宇監控等,成為了廣泛使用的現場總線之一。基于CAN總線協議,還發展出CANopen、J1939、DeviceNet等多種上層總線協議。
CAN是一種開放式多主站線性結構的總線,使用雙絞線作為連接介質連接所有節點,最高傳輸速率為1Mbit/s。 CAN總線使用載波偵聽多路訪問/沖突檢測(CSMA/CD)技術這種非破壞性的總線仲裁方式,避免多個節點同時開始發送消息而造成總線沖突,保證優先級高的報文能夠優先發送而不需要額外的時間開銷。CAN協議不對節點進行地址規定,而是使用報文的標識符來指定報文的優先級以及報文的內容。同時,CAN總線協議提供了完善的錯誤檢測與錯誤處理機制,包括了CRC檢測、錯誤報文自動重發、錯誤狀態判斷、臨時錯誤自動恢復、永久錯誤自動錯誤節點等措施,從而很好的保證了系統數據一致性。
圖1 系統開發流程
1 CAN總線開發流程[3]
隨著CAN總線技術應用在國內各個行業中廣泛使用,CAN總線開發流程及開發方法也日益成為關注的重點。目前,基于開發-驗證思想的V型開發流程被廣泛用于CAN總線的開發過程中,如圖1所示。
OEM廠商首先定義CAN總線系統需求,并進行系統構架設計,然后由供應商根據OEM廠商提出的需求,分析節點 ECU的需求并進行節點設計,再進行軟硬件實現以及節點ECU集成,最后對ECU進行測試驗證。供應商將所設計的節點ECU提供給OEM廠商,由OEM廠商進行CAN總線系統的集成,并對系統進行確認,才能形成最終的產品。
在V開發流程中,測試始終貫徹著整個開發流程,以在開發過程中能盡早的發現設計問題。供應商在節點ECU開發的最后階段,需要對所開發的ECU進行驗證,檢查所開發的產品是否符合所需的設計規范,即“是否正確的做了產品”。而OEM廠商在獲得供應商提供的各個節點 ECU后,進行系統集成,需要對CAN總線系統進行確認,檢查是否符合原始的需求,即“是否設計了正確的產品”。
因此,無論對于供應商開發單節點ECU還是OEM廠商對整個系統進行集成,都需要對節點以及總線系統進行CAN總線測試,以完成驗證與確認的工作。
2 CAN總線測試
CAN總線測試內容可以分為單節點測試和總線系統集成測試兩部分。在每個節點連接到CAN總線網絡之前都需要進行單節點測試,用以確定節點工作正確并且不會干擾總線的正常通訊。總線系統集成測試則是將各個節點都連接形成完整的CAN總線系統,對系統進行測試以驗證系統運行的完整性及正確性、系統的通訊魯棒性、電器魯棒性以及系統的容錯自恢復功能等。
進行CAN總線測試過程,首先需要制定測試規范,然后根據該測試規范編寫測試案例,構建測試環境,并進行測試實現,最終將測試所得的數據進行分析,形成測試報告。
2.1 CAN總線測試規范
由于CAN總線基本協議的靈活性,目前并沒有一個統一的完整覆蓋CAN總線各個通訊層次的測試規范,而作為CAN總線技術使用最廣泛的汽車行業,各個汽車廠商也只是自行定義其轎車CAN總線協議,并根據該協議制定各自的測試規范。
因此制定CAN總線的測試規范,必須從相關的設計需求和規范文檔中提取測試需求,這些文檔可以包括CAN協議、總線系統設計時所依據的標準或協議(例如ISO11898或J1939)、系統設計的需求、系統的診斷協議、以及其他行業性通訊規范。根據所提取的測試需要,將各個需求點對應為測試案例組。
將每組測試案例組在各測試節點上的實施稱為測試案例。每個測試案例根據測試實現的過程,細分為一系列的測試步驟。對于每個測試案例,在測試結束時,都會存在一個測試結果,用以確定測試案例所對應的節點是否通過該測試需求點的測試。每個測試案例中,除了包含測試步驟的內容外,還包括了測試條件和測試環境兩部分內容。測試條件是測試案例實施之前,被測單元所需要具備的條件,例如系統已經處于正常通訊等。而測試環境則是測試過程中,需要提供給被測單元的外部環境,例如供電電壓、信號線的連接情況等。
2.2 CAN總線測試內容
CAN總線測試內容可以按照通訊層次劃分為物理層測試、數據鏈路層測試、應用層測試等內容。
物理層測試主要目的是驗證節點及系統在電路設計、物理電平特性等方面的性能,這是保證節點能夠正確連接入總線的基礎。測試主要包括了節點的電阻電容特性、節點差分電阻、總線終端電阻、CAN線上的物理電平特性等方面。
數據鏈路層測試則包括了位定時測試、采樣點測試、SJW測試等內容,該測試內容主要用以保證各個節點的通訊參數能夠保持一致性,所組成的網絡能夠正常有效的工作。
應用層測試則包括了上層應用層協議的測試、網絡管理功能的測試以及故障診斷測試等方面的內容。其包括的內容可以是:數據庫使用正確性測試、通訊周期準確性測試、節點休眠喚醒功能測試、網絡管理功能測試、網關測試、錯誤幀頻率測試、電壓影響測試、總線物理故障測試、節點故障自恢復能力測試、通訊失敗的故障診斷功能測試等內容。由于CAN總線使用背景的不同,其應用層的內容也有很大差別,因此應用層測試的內容也存在較大差異,需要根據項目的設計需求以及設計文檔仔細制定應用層測試的內容。值得注意的是,對于CAN總線網絡測試,其應用層測試一般不涉及功能測試的范圍,功能測試一般屬于ECU測試的范疇。
2.3 CAN總線測試方法
圖2所示為基于Vector公司提供的CAN總線測試工具所組建的CAN總線測試系統。
圖2 CAN總線測試系統
在系統中被測單元與模擬被測單元應用背景的仿真器相連,通過仿真器可以模擬出被測單元在真實應用中的運行環境。而被測系統的CAN線則通過CAN硬件接口連接到測試軟件CANoe上,CANoe還可通過IO接口電纜IOcab獲取被測單元的IO信號。
被測單元的供電則由供電系統提供給仿真器,再由仿真器提供給被測系統,與真實系統的供電模式相同。CANoe軟件可以通過其接口來控制供電系統,從而可以方便的改變被測單元的供電電壓,實現CAN總線測試環境。
測試過程中,使用Vector公司提供的干擾儀CANstress,以制造出測試所需的干擾信號以及總線故障等測試環境。而系統中所連接的網絡示波器CANscope可以在物理層測試中捕捉CAN總線的物理信號。
在測試過程中,Vector提供的測試軟件CANoe可以觀測總線通訊的報文以及信號,并檢測總線的錯誤幀、總線負載率等信息。另外,CANoe還提供了測試軟件包,能夠使用擴展的編程功能編寫測試流程,控制CANstresss、CANscope等工具,并支持 XML編寫的測試腳本,實現自動化測試流程,將測試結果自動生成XML和HTML測試報告。
3 CAN網絡測試案例
根據上述的CAN網絡測試系統,進行了物理層的采樣點測試。測試結果如圖3所示。
圖3 (a)所示為被測單元正常通訊情況下,使用CANscope捕捉到數據場第一個隱性位。使用CANstress將該位75%后干擾為顯性電平,使用 CANscope捕捉總線報文,沒有出現錯誤幀,如圖3(b)所示。同樣條件下,將該位68.75%后的電平干擾為顯性位,使用CANscope捕捉總線報文,出現了錯誤幀,如圖3(c)所示。由此可以得出結論,被測單元的采樣率為75%。
(a)無干擾情況下的位電平
(b)干擾電平在75%后-無錯誤幀
(c)干擾電平在68.75%后-有錯誤幀
圖3 采樣點測試
圖4所示為應用層測試中,CAN-H線與電源短路測試的測試結果。圖4(a)所示為使用CANstress將 CAN-H線設置為與電源短路。圖4(b)所示為CANoe在該測試過程中總線的通訊情況,在被測條件下總線沒有出現錯誤幀。使用CANscope觀測,由于CAN-H與電源短路,CAN-H電平表現為恒高,而差分電平信號仍足夠保證CAN總線的正常通訊,因此沒有出現錯誤幀。
(a)CANstress設置CAN-H與電源斷路
(b)CANoe檢測網絡無錯誤幀
(c)CANscope觀測總線電平情況
圖4 CAN-H與電源斷路情況下的系統通訊測試
4 總結
隨著CAN總線在國內應用的日益廣泛,CAN總線測試技術將越發重要。CAN總線測試規范是CAN 總線測試的核心,需要根據相關的CAN協議規范以及CAN總線設計需求進行制定。另外,在缺乏統一測試規范以及參考資料的條件下,還需要在CAN總線開發過程中積累經驗,逐步制定并完善CAN總線的測試規范。國外先進的CAN總線設計及測試工具也可以促進CAN總線測試能力迅速形成。