Fork me on GitHub

Using MATLAB with CANoe 快读

近期接到了一个非常有意思的想法:尝试实现在不同工况下的HIL接口测试,并给了Matlab这个提示。一般来说测试工程师并不会负责功能实现,但是要懂得CANoe中如何进行Matlab接口调用。

资料来源:

Using MATLAB with CANoe

CANoe中Simulink模型使用说明

 

1.0 Overview

目的是为了拓展CANoe的Node功能,支持节Node-Simulink嵌入。在使用前请找到CANoe的安装目录 r <...>\Installer Additional Components\Matlab\ 并安装。

这个手册是17年写的,路径说的不是很明确,找了一会没找到。然后右键CANoe桌面图标打开文件位置发现了,前提是有Matlab,要不然就跟我一样安装找不到路径。

我理解安装后应该是CANoe添加Node节点,然后在配置里面添加一些文件。新建工程,打开节点配置发现没有Simulink相关的东西,那可能是上方的软件安装后就可以看到了(或者是其他的一些dll文件)。

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。后续可以试一试。

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牛逼!

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时激活以下选项:

在Simulink编译Dll,并将DLL到Node中时。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的变量。前提是要激活相关选项:

而Analysis中的信号和CANoe的Sysvar的对应时按照功能模块名进行。例如手册中提到的:

对应到:

4.3 Calibration

支持标定。这本手册应该是基于CANoe11编写的,这个Standalone mode独立模式在CANoe18 SP2已经被替代了。

好像是CANoe提供的Simulink库里应该有一个标定的模块?后续涉及到了再看看。

4.4 Model Viewer

CANoe提供了一个浏览器来查看调用的Simulink功能关系。如果已经正确加载了对应的dll和相关文件,可以点击Node的show Simulink® model来查看。

这个浏览器可以查看Simulink的功能和CANoe环境变量的关系,很是方便:

在Simulink中的Prompt提示词窗口可以输入命令 VGenerateModelViewerInformation('model name')来查看。

如您有其他理解,可以下方评论或者私信告知~欢迎交流~

posted @ 2024-10-20 17:31  张一默  阅读(140)  评论(0编辑  收藏  举报