总线仿真,一直是个头疼的问题,您一定认为是这样的:
当然了,这种方法并没有错,但繁杂、捉急、维护差依然掣肘。那么有没有更高效的方法呢?这个当然可以有。
“一键生成CANoe仿真工程”?

对!你没听错,就是它!
下面小编将带领大家揭开这种模型生成的神秘面纱。
背景引入
在ECU通讯软件架构中,通常集成了IL(Interation Layer),NM(Network Management), TP(Transport Protocol)各层。与之对应,CANoe中以dll(动态链接库)的方式实现各层软件。
尽管通讯软件架构大体相似,但OEM在各层软件细节上仍有不同,例如:E2E报文计算方法,NM的自定义等。为此,CANoe针对不同的OEM开发了不同的OEM Package(定制化开发了dll)。
以下是常见的各大OEM Package:
模型生成
本文将以Vector官方的模型库(Vector modeling)为例,手把手教大家实现由easy.dbc数据库自动生成仿真工程(使用环境CANoe12.0 SP2)。
Step1:启动Model Generation Wizard
Step2:模型生成配置 - Inputs/Directories
Step3:模型生成配置– Settings
Step4:模型生成配置 -Nodes
Step5:模型生成– Generation
Step6:打开生成模型
至此,相信大家对于如何生成工程、完成总线仿真已经了然于胸。
交互层(Interaction Layer)
在上边的示例中,当我们打开KL15, KL30开关,好奇的你,一定发现,仿真报文发出来了,这是怎样实现的呢?引入我们今天详细剖析的交互层(Interaction Layer)。(此部分专供老司机)
交互层负责管理传输模型并执行以下任务:
-
提供面向信号的接口;
-
支持OEM特定的端到端保护机制(ApplicationCRC, Counter);
-
控制信号和报文发送类型;
-
提供事件型报文(使用信号或报文作为触发对象);
-
提供故障注入接口,以干扰报文的发送。
Q1:如何关联交互层(Interaction Layer) dll?
A1:在dbc属性中关联,并选择节点同步;
A2:手动添加dll;
IL dll中封装了大量的API接口,方便用户使用,以下为函数的概述:
IL API中最重要的是Control of the Interaction Layer(IL控制)API,其中涉及到IL层的状态机跳转,下图为详细阐述:
IL API中另一个很重要的是Callback Interface(回调函数)API,下图为详细阐述:
很多客户经常问到Alive Counter和Checksum的问题,这里使用IL的callback回调函数可以轻松解决。
以E2E报文仿真为例:以下代码实现了ID0x1A0报文的Checksum计算和ID 0x1A1报文的Counter计算。
本期的内容就到这里,由于篇幅所限,今天我们主要介绍了模型如何生成,以及交互层(Interaction Layer)的相关知识。这里也只是抛砖引玉,关于更多OEM Package、IL和NM的模型生成问题欢迎童鞋们在下方留言或发邮件[email protected]咨询。怿星官网:http://www.e-planet.cn/