Using MATLAB with CANoe 快讀

张一默發表於2024-10-20

近期領導交給了一個非常有意思的任務:嘗試實現在不同工況下的HSI測試,並給了Matlab這個提示。當然我並不實現互動的具體演算法,但是要懂得Matlab介面的測試呼叫和上層General測試框架的搭建。

資料來源:Using MATLAB with CANoe

Using MATLAB with CANoe 快讀

1.0 Overview

目的是為了擴充CANoe的Node功能,支援節Node-Simulink嵌入。在使用前請找到CANoe的安裝目錄 r <...>\Installer Additional Components\Matlab\ 並安裝。

這個手冊是17年寫的,路徑說的不是很明確,找了一會沒找到。然後右鍵CANoe桌面圖示開啟檔案位置發現了,前提是有Matlab,要不然就跟我一樣安裝找不到路徑。

Using MATLAB with CANoe 快讀

Using MATLAB with CANoe 快讀

我理解安裝後應該是CANoe新增Node節點,然後在配置裡面新增一些檔案。新建工程,開啟節點配置發現沒有Simulink相關的東西,那可能是上方的軟體安裝後就可以看到了(或者是其他的一些dll檔案)。

Using MATLAB with CANoe 快讀

2.0 Connection of CANoe and Matlab/Simulink

2.1 Modelling Concept

這個模型是可以將一個模擬的ECU新增為Node進行使用,因此也支援載入.can檔案,使用CAPL對裡面的一些引數或者介面進行呼叫。詳情為:

Application Layer

如果使用Matlab編譯並且載入了一個Node,會生成某些檔案定義了具體的ECU應用層行為,這些行為將會提供兩種介面:匯流排訊號或者Sysvar。

提示了這個Node必須被Simulink生成,由於缺少很多資訊,因此不支援具體的功能模組。我理解不支援比如Autosar、診斷等等。但是可以輸出一些預先配置好的資訊,例如電壓、霍爾、CAN訊號之類的。

Middleware

中間層元件是將ECU的應用層分離。我理解這個生成的Simulink節點支援呼叫IL、ASRNM、Osektp等一些CANoe自己的DLL。後續可以試一試。

Using MATLAB with CANoe 快讀

Interaction Layer

如果載入了資料庫,那這個節點也支援CANOEIL

Network Management Layer

如果載入了資料庫,支援CANoeASRNM,前提是資料庫中定義了NM的Attribute屬性。

Transport Layer

支援OsekTP(ISO 15765-2)

2.2 Interace Concept

如果是使用Simulink中啟動CANoe將需要同步。我理解如果是CANoe直接載入Simulink生成的Node可能不需要同步。

額外提到了:如果是使用HIL模式,可以用Simulink生成一些DLL來載入到CANoe Node,這樣就可以直接使用。此時將不再依賴Simulink環境。類似於SIL測試中的Node,可以直接載入DLL進行引數的呼叫。

總結就是Simulink和CANoe互動應該有兩種模式:

第一種:Simulink為主體。Simulink中呼叫CANoe的Simulink Node,這需要時鐘同步。與之相關就是後續的Offline mode。

第二種:CANoe為主體。手冊中稱為HIL模式,需要Simulink先寫好演算法之類的,然後生成DLL,支援直接在Node中載入。(我想要的)

不管哪種方式,這個節點都需要建立,只是載入的檔案可能不同,並且這個節點支援IL/ASRNM等一些DLL的呼叫。

2.3 Data Exchange

安裝那個擴充軟體後,介紹了Simulink中CANoe-IO模組。看圖中CANoe提供的模組還挺多的,包括匯流排訊號,系統變數,VT變數等。VC牛逼!

Using MATLAB with CANoe 快讀

2.4 Execution Modes

2.4.1 Hardware-In-The-Loop (HIL) Mode

完全執行在CANoe環境。不需要和Matlab時間同步。

2.4.2 Offline Mode

執行在Simulink環境。以Matlab時鐘為主時鐘。時間流逝將變為Faster and Fatser,而且不需要其他硬體進行同步,可以用來早期Debug。資料互動時MS的COM配置將被取代(不太懂)

2.4.3 Synchronized Mode

執行在Simulink環境。需要和VN裝置進行時鐘同步(精度1ms)。

3.0 Model Development

瀏覽了下,應該是介紹了Simlink中如何使用CANoe。(我不需要,就直接跳過了)

4.0 Support for Models in HIL Mode

如果使用HIL模式,需要 Simulink模組編譯一個DLL出來,這個DLL可以載入到CANoe的Node節點。CANoe提供了好幾種模式來執行執行和分析,分析模組不需要Simulink許可證(存疑)

4.1 Parameterization

Simulink的每一個引數都可以在CANoe中獲取,前提是Simulink編譯DLL時啟用以下選項:

Using MATLAB with CANoe 快讀

在Simulink編譯Dll,並將DLL到Node中時。CANoe將自動建立相對應的系統變數,這些引數名字可能會有些許出入。

Using MATLAB with CANoe 快讀

需要注意的是,如果在測試階段一些ECU變數發生了變化,而此時開發同事沒有時間去重新做DLL。

方案一:測試人員可以在Node中新增CAN檔案,在On Prestart中對改變過的變數進行修改。

方案二:建立一個CANoe Panel來管理這些系統變數。也提到了可以建立一個.net Panel,利用$(MATLABROOT)\rtw\bin\canoe\parameterization\Parameterization.dll. 可以修改這些變數(菜雞不懂)。

4.2 Analysis of Simulink Signals

CANoe也支援呼叫Simulink Analysis的變數。前提是要啟用相關選項:

Using MATLAB with CANoe 快讀

Using MATLAB with CANoe 快讀

而Analysis中的訊號和CANoe的Sysvar的對應時按照功能模組名進行。例如手冊中提到的:

Using MATLAB with CANoe 快讀

對應到:

Using MATLAB with CANoe 快讀

4.3 Calibration

支援標定。這本手冊應該是基於CANoe11編寫的,我21年入行後就一直用的14往上的版本,尷尬。這個Standalone mode獨立模式在CANoe18 SP2已經被替代了。

好像是CANoe提供的Simulink庫裡應該有一個標定的模組?後續涉及到了再看看。

Using MATLAB with CANoe 快讀

4.4 Model Viewer

CANoe提供了一個瀏覽器來檢視呼叫的Simulink功能關係。如果已經正確載入了對應的dll和相關檔案,可以點選Node的show Simulink® model來檢視。

Using MATLAB with CANoe 快讀

這個瀏覽器可以檢視Simulink的功能和CANoe環境變數的關係,很是方便:

Using MATLAB with CANoe 快讀

在Simulink中的Prompt提示詞視窗可以輸入命令 VGenerateModelViewerInformation('model name')來檢視。

如您有其他理解,可以下方評論或者私信告知~歡迎交流~

相關文章