Using MATLAB with CANoe 快读
近期接到了一个非常有意思的想法:尝试实现在不同工况下的HIL接口测试,并给了Matlab这个提示。一般来说测试工程师并不会负责功能实现,但是要懂得CANoe中如何进行Matlab接口调用。
资料来源:
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')
来查看。
如您有其他理解,可以下方评论或者私信告知~欢迎交流~
本文来自博客园,作者:{张一默},转载请注明原文链接:https://www.cnblogs.com/YiMo9929/p/18487540