总线仿真,还可以这样玩!

总线仿真,一直是个头疼的问题,您一定认为是这样的:

     

当然了,这种方法并没有错,但繁杂、捉急、维护差依然掣肘。那么有没有更高效的方法呢?这个当然可以有。

“一键生成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/

猜你喜欢

转载自blog.csdn.net/m0_47334080/article/details/107493143