張倩 白皓 武美航 李凱 丁希賢



【摘? 要】本文介紹利用CANoe的CAPL編程進行LIN總線自動化測試的思路和方法,比較不同方案的優缺點,系統地闡述整個過程。
【關鍵詞】LIN;CAPL;自動化測試
中圖分類號:U463.6? ? 文獻標志碼:A? ? 文章編號:1003-8639( 2023 )06-0063-02
LIN Bus Simulation Based on CANoe
ZHANG Qian,BAI Hao,WU Mei-hang,LI Kai,DING Xi-xian
(Shaanxi Heavy Duty Automobile Co.,Ltd.,Automobile Engineering Research Institute,Xi'an 710200,China)
【Abstract】This paper introduces the idea and method of LIN bus automatic test by using CAPL programming of canoe,compares the advantages and disadvantages of different schemes,and systematically expounds the whole process.
【Key words】LIN;CAPL;automatic test
1? LIN總線介紹
LIN(Local Interconnect Network,本地互聯網絡)是一種低成本、單線的串行通信網絡,通信速率范圍為0~20kb/s,常用的速率為19.2kb/s。該協議不需要單片機給予過多的硬件支持,通過使用一個簡單的USART或增強型USART就可以實現。在車輛實際網絡架構設計中,主要使用CAN總線和LIN總線相結合使用,LIN總線為CAN總線提供輔助功能,在不需要CAN總線的高帶寬、高性能的場合(如傳感器、天窗、組合開關、轉向燈、電機等)實現信息的采集和傳輸。
在構建LIN總線網絡時,需在設計之初約定好主控制器,其余所有的控制器都為從控制器。主控制器主要負責調度多個從控制器發送數據場的時機,從控制器主要負責進行對報頭數據的響應。一般,網絡中的主控制器不單純是主控制器,還包含從控制器的功能。主控制器在某個時隙發送報頭,所有從控制器接收后進行解析比對,如果符合報頭中調度的ID,就回復響應。
2? LIN報文介紹
因為在測試過程中,LIN網絡內的主從控制器是通過LIN報文進行信息交互的,這里對LIN報文格式進行簡單介紹。
1)LIN協議數據幀結構由報文頭、響應報文以及幀間隔組成。
2)報文頭包含同步間隙、同步域和報文標識符場。
3)響應報文由1~9個字節構成,其中數據場可以為2個字節或4個字節或8個字節和1個校驗和場組成。
3? 仿真測試
在LIN網絡中,車輛的某項功能需要多個控制器共同配合才能實現,但是多個控制器的開發進度很難保證是同步進行的,所以在驗證功能時,可以使用CANoe或Kvaser軟件的二次開發功能進行殘余的控制器功能的仿真,進而對整個功能進行驗證。本文介紹使用CANoe工具的仿真流程。
3.1? 仿真方案
在仿真工程搭建之前,必須對所需仿真的控制器和已有的控制器功能進行深度解析,從正向、反向、邊界、冗余等方面編制仿真測試用例。
測試人員可以根據自己實際掌握的知識情況進行仿真方案設計,共有2種方案,介紹如下。
方案1:基于CANoe工具,根據測試用例內容,使用Panel Designer工具進行界面設計,可以選擇開關、文本數據等控件,使用CAPL編程語言按照測試用例編寫測試管理代碼、測試代碼。
方案2:基于CANoe工具,使用Test Environments for Test Modules功能編制仿真測試用例。
方案1使用CANoe的CAPL browser工具內固有的函數和定時器進行程序編制,缺點是當測試用例中實現等待一段時間這個語句時,需要使用定時器來實現,但是如果功能中涉及多類定時器且定時器互相嵌套使用,若出現程序跑偏情況時,就很難定位程序的錯誤點。
方案2按照每一條測試用例使用Test Environments for Test Modules界面的New Test Environment形成Test Case,一條測試用例對應一條Test Case,測試內容清晰明了。當測試用例中實現等待一段時間這個語句時,直接使用TestWaitForTimeout()函數實現,即使有很多類的定時器和功能也不會出現互相嵌套的情況,當遇到程序問題時,可以按照測試用例逐條測試,非常有利于查找問題。
經過實際測試比對,選擇方案2進行仿真程序設計。
3.2? 工具準備
裝配帶LIN License的CANoe軟件的電腦、CAN Case、LIN控制器、電源。
3.3? 連接方法
1)電腦安裝CANoe驅動,與CAN Case通過USB連接,CANse與LIN控制器連接電源,向LIN控制器供電。
2)根據LIN控制器的電源系統12V或24V,調整供電電源的電壓。
3.4? 仿真工程創建
打開CANoe 8.5軟件,新建LIN仿真工程,如圖1所示。
選擇被測試控制器所遵守的協議版本、通信速率以及CANoe在該測試中充當的角色(主節點或者從節點),CANoe可以根據被賦予的角色進行收發報文,如果節點部分不勾選,CANoe為純監控作用。速率和角色選擇如圖2所示。
仿真環境創建如圖3所示。按照圖3中標記的順序創建仿真工程。在LIN主節點處點擊右鍵選擇Insert CAPL Test Module,就創建了一個虛擬主節點的CAPL編程模塊。
按照圖4點擊Edit Test Module“Test 1”,在彈出的界面中選擇CAPL存放的路徑,并填寫文件名稱為“LIN-Master”,會自動生成一個LIN-Master.can的CAPL文件,該文件為模擬節點的測試程序,在該文件內編輯需要使用CANoe所想模擬的功能。
關聯完成后,在Tset Environment中重新雙擊Test 1,會發現測試模塊的文件名稱變為“LIN-Master”。節點和仿真程序關聯如圖5所示。
仿真程序搭建如下。
1)該測試方案中真實的控制器為LIN從節點,需要搭建仿真工程模擬主節點通過報文驅動2個從節點進行動作。
2)分析主節點需要驅動從節點執行的動作,編制測試用例。
3)按照測試用例,使用Test Case模塊進行程序編輯,一個子Case對應一條測試用例。
4)為了使測試思路便于最后的用例調試和問題定位,建議將通用的指令使用Function模塊封裝成獨立的函數,在Case中進行調用。
5)如果測試中有為主節點驅動從節點動作的用例,為了保證每次測試從節點都是從起始點開始執行,在System的ON prestart函數中將驅動報文指令全部清零。
6)為了準確了解程序的執行情況,可以在測試用例中使用write()函數對程序做標記,在執行過程中可以通過觀察打印出的描述來定位程序執行的位置,便于問題調試。
7)在用例編制中,可以通過語句實現發送LIN報頭和響應,也可以通過關聯和調用LDF數據庫來實現。
8)在用例編制中,可以查閱幫助手冊,按照CAPL語法要求使用現有的函數實現預期的功能。
9)完成后,進行語法編譯,無誤后,按照連接方法連接真實的從節點進行程序邏輯的調試,從而完成對從節點的功能測試。
4? 結束語
隨著車輛功能的快速迭代,為了能夠在無硬件的情況下提前驗證設計方案,可以將CAN Case或Kvaser做為快速硬件進行全虛擬仿真測試、殘余仿真測試以及策略修正。CANoe是常用的總線測試仿真工具,熟悉掌握CAPL編程能夠為測試工作提供很大的便利。
參考文獻:
[1] 羅峰,李仁俊. LIN總線仿真與測試系統[C]//2010中國儀器儀表與測控技術大會論文集,2010:128-132.
[2] 劉宏波. 基于CANoe的車身網絡通信設計[J]. 機電工程技術,2012,41(2):1-4.
(編輯? 凌? 波)