新聞中心

News

總線仿真,還可以這樣玩!

總線仿真,一直是個頭疼的問題,您一定認為是這樣的:


1.jpg


圖片5.png


當然了,這種方法并沒有錯,但繁雜、捉急、維護差依然掣肘。那么有沒有更高效的方法呢?這個當然可以有。


圖片1.png


“一鍵生成CANoe仿真工程”?

對!你沒聽錯,就是它!

下面將帶領大家揭開這種模型生成的神秘面紗。


01
背景引入

在ECU通訊軟件架構中,通常集成了IL(Interation Layer),NM(Network Management), TP(Transport Protocol)各層。與之對應,CANoe中以dll(動態鏈接庫)的方式實現各層軟件。


2.jpg


盡管通訊軟件架構大體相似,但OEM在各層軟件細節上仍有不同,例如:E2E報文計算方法,NM的自定義等。為此,CANoe針對不同的OEM開發了不同的OEM Package(定制化開發了dll)。


3.jpg


以下是常見的各大OEM Package:


4.jpg4.jpg


02
模型生成

本文將以Vector官方的模型庫(Vector modeling)為例,手把手教大家實現由easy.dbc數據庫自動生成仿真工程(使用環境CANoe12.0 SP2)。


Step1:啟動Model Generation Wizard


5.jpg


Step2:模型生成配置 - Inputs/Directories


6.jpg


Step3:模型生成配置– Settings


7.jpg


Step4:模型生成配置 -Nodes


8.jpg


Step5:模型生成– Generation


9.jpg


Step6:打開生成模型


10.jpg


至此,相信大家對于如何生成工程、完成總線仿真已經了然于胸。


03
交互層(Interaction Layer)

在上邊的示例中,當我們打開KL15, KL30開關,好奇的你,一定發現,仿真報文發出來了,這是怎樣實現的呢?引入我們今天詳細剖析的交互層(Interaction Layer)。(此部分專供老司機)


交互層負責管理傳輸模型并執行以下任務:

  • 提供面向信號的接口;

  • 支持OEM特定的端到端保護機制(ApplicationCRC, Counter);

  • 控制信號和報文發送類型;

  • 提供事件型報文(使用信號或報文作為觸發對象);

  • 提供故障注入接口,以干擾報文的發送。


11.1.png


Q1:如何關聯交互層(Interaction Layer) dll?

A1:在dbc屬性中關聯,并選擇節點同步;


11.2.png


11.jpg


A2:手動添加dll;


12.jpg


IL dll中封裝了大量的API接口,方便用戶使用,以下為函數的概述:


13.jpg


IL API中最重要的是Control of the Interaction Layer(IL控制)API,其中涉及到IL層的狀態機跳轉,下圖為詳細闡述:


14.jpg


IL API中另一個很重要的是Callback Interface(回調函數)API,下圖為詳細闡述:


15.jpg


圖片3.png


很多客戶經常問到Alive Counter和Checksum的問題,這里使用IL的callback回調函數可以輕松解決。


以E2E報文仿真為例:以下代碼實現了ID0x1A0報文的Checksum計算和ID 0x1A1報文的Counter計算。


16.jpg




与十个人合作赚钱吗