CANoe与Matlab/Simulink联合仿真

时间:2024-03-25 19:16:40

当技术猿还在公司加着班的时候,突然接到老大任务,使用CANoe的CAPL语言仿真带有复杂算法的ECU节点。当下技术猿就爽快答应,因为知道CANoe是集仿真、测试、诊断、分析于一体的多功能软件,其CAPL语言可以模拟ECU节点,并在网络环境中与其他节点交互。

 

说干就干,撸起袖子加油干。经过对CAPL语言的一夜研究,这是个什么XX玩意儿,仿真算法通过CAPL语言真是太难实现了。

CANoe与Matlab/Simulink联合仿真

贼尴尬,完不成任务又不能加鸡腿了。想到这,技术猿就怒从心头起,恶向胆边生,决定忽悠一把老大,看看有没有可以替代CAPL编程的软件。又经过一夜的研究,竟然发现CANoe预留了Matlab/Simulink接口,可以利用Matlab/Simulink强大运算能力,增强CANoe的仿真功能。

CANoe与Matlab/Simulink联合仿真

接下来就和大家分享一下我们技术猿的研究成果,以便大家今后的实际操作。

 

Matlab/Simulink仿真有三种工作模式:

Offline Mode

此模式属于离线仿真,不可与实时环境进行数据交互;Matlab/Simulink作为主仿真环境,以最快速率进行数据处理, CANoe作为监控软件,从Matlab/Simulink获取测量时基对数据进行监控。Matlab/Simulink与CANoe的信息交互是通过Microsoft DCOM进行配置并且共享内存来完成数据交换,此模式下可以使用Matlab/Simulink的调试功能,适用于早期设计阶段。

CANoe与Matlab/Simulink联合仿真

 

Synchronized Mode  

此模式与Offline模式不同之处在于Matlab/Simulink是从CANoe获取仿真时基进行在线仿真,因而可以与真实节点进行交互;但要求Matlab/Simulink模型计算周期快于实时数据发送周期,因此推荐使用多核处理方式进行仿真,在此模式下,Matlab/Simulink与CANoe的信息交互和Offline模式相同。

 

CANoe与Matlab/Simulink联合仿真

Hardware-In-The-Loop (HIL) Mode

此模式下CANoe作为仿真环境,利用Simulink Real-time Work Shop将Matlab/Simulink模型生成.dll文件集成到CANoe中,通过CANoe仿真与真实网络环境进行交互;CANoe中可添加多个ECU仿真节点,每个节点都需要相应的.dll文件,此模式适用于残余总线仿真。

CANoe与Matlab/Simulink联合仿真

CANoe与Matlab/Smulink联合运行的具体操作。

 

首先,如需使用此功能,CANoe版本不得低于v7.5,Matlab版本不得低于R2012b,如需生成.dll文件, Matlab需要有对应的C编译器,Matlab版本与所支持的编译器对应关系如下图所示,可安需下载相关软件。

CANoe与Matlab/Simulink联合仿真

上述软件均安装完成后,需要将CANoe集成至Matlab/Simulink中。不同版本的CANoe设置基本相同,在CANoe安装路径下,找到接口文件安装路径(如下图所示),双击安装即可。

 

CANoe与Matlab/Simulink联合仿真

安装完成后,在Matlab/Simulink中出现Vector CANoe组件(如下图所示),CANoe与Matlab/Simulink通过这些组件实现数据交互,数据交互内容主要包括:信号、系统变量、环境变量、CAPL函数参数。

 

CANoe与Matlab/Simulink联合仿真

最后,打开CANoe中Matlab/Simulink接口(如下图所示)即可。

 

CANoe与Matlab/Simulink联合仿真

一切就绪之后,接下来通过例子介绍下三种工作模式以及相应的设置。

 

仿真之前,需要对Matlab/Simulink进行一些设置,如果模型需要编译,建议设置成固定仿真步长,如图5所示。

CANoe与Matlab/Simulink联合仿真

 

如果需要使用HIL模式,需要将CANoe设置为生成的目标文件,如下图所示,选择cn.tlc。

 

CANoe与Matlab/Simulink联合仿真

上述设置完成后,进行Offline Mode与Synchronized Mode仿真时,需要添加Simulation Setup模块,此模块在模型编译时不会生成代码程序。如图7工程中,利用Matlab/Simulink自带Sine Wave函数作为输入,输出关联到CANoe的报文信号。利用Simulink Setup模块切换Offline Mode与Synchronized Mode,从而改变仿真速率。配置完成后,在Matlab/Simulink窗口点击运行仿真,CANoe即被自动调用,通过Trace窗口可观测到相关报文。

CANoe与Matlab/Simulink联合仿真

 

通过Matlab/Simulink编译模型生成.dll、.ini文件时,Matlab/Simulink参数需要生成为CANoe可调用的参数,按照如下配置实现上述功能,首先将信号交互接口打开,并配置为生成CANoe可以调用的系统变量(如下图所示)。

 

CANoe与Matlab/Simulink联合仿真

CANoe与Matlab/Simulink联合仿真

配置完成后,将编译生成的.dll文件、.ini文件以及模型文件参照上图方式集成至CANoe节点,即可进行(HIL)Mode测试。

CANoe与Matlab/Simulink联合仿真

 

设置完成后,Matlab/Simulink参数已经映射为系统变量,可以通过CAPL编程或者Panel面板修改参数。如图11为同过面板控制Matlab/Simulink参数,分析窗口会有相应变化。

CANoe与Matlab/Simulink联合仿真

 

Matlab/Simulink不仅可以仿真节点,也可以分析数据,主要利用Matlab/Simulink强大的数据处理能力对信号进行算法处理,使用方法与上述仿真类似,区别在于分析数据时通过Environment->Analysis Model添加模型,这里就不再展开。

 

今天就为大家介绍到这里啦,如果有什么问题可以关注“怿星科技”咨询,我们会为您一一解答哦。

CANoe与Matlab/Simulink联合仿真