DBC学习(四)

本篇简单记录下使用CANoe利用DBC文件实现节点的模拟仿真功能,使用的CANoe版本为:11.0.42,使用的DBC文件为上一篇创建的Demo.dbc。

通常CANoe的使用可以分为三个阶段:

  • Phase 1:初期需求分析,这个阶段只有需求文件,通过CANoe仿真所有节点,可以在没有真实物理节点的情况下分析网络总线通信情况;

  • Phase 2:中期ECU开发,这个阶段所有节点都处于开发过程中,对于某个开发节点而言,可以通过CANoe仿真其它与其相连的节点,虚实结合,验证目标ECU的网络通信功能;

  • Phase 3:后期整车测试,这个阶段所有ECU均已实现,可以直接连接CANoe进行相关测试。

由于目前只有一个示例性的需求输入DBC文件,没有实际的ECU,所以所有节点均采用仿真方式(Phase 1)。

1. 创建工程

打开CANoe,点击菜单File->New,选择一个模板,然后创建配置工程:


  • CANoe提供了多种模板,根据需要选择合适的模板可以减少额外的设置操作。


在仿真设置窗口中导入DBC文件:

点击下一步,增加需要使用的节点:

然后,添加CAN通道:

最后,点击完成按钮结束创建。

2. 仿真报文发送

从Simulation Setup窗口中,可以看到导入的三个节点,我们在任意一个节点上右击选择Configuration打开节点配置窗口,切换到Components选项卡,这里已经有了一个条目:CANOEILNLVECTOR:


  • CANoeILNLVector.DLL通过读取DBC里的IL参数(发送类型、周期时间等等)来决定报文的发送行为。


实际上,现在就已经可以模拟节点发报文了,在此之前,注意将总线模式设置为SimulatedBus:

点击Start,在Trace窗口下可以观察到总线报文:

如果想修改某个信号的值该怎么办呢,点击节点上的Node Panel图标打开节点面板窗口,在这里可以修改信号的值,注意点击Update后值才会更新:

3. 仿真NM

由于DBC中三个节点A、B、C都支持OSEK NM,下面就来看下如何仿真网络管理功能。

首先,为所有节点增加OSEKNM的dll文件:

然后,创建一个简易的图形面板以便控制网络行为,点击工具栏上的Panel图标选择NewPanel打开Panel Designer窗口:

在Panel Designer下通过图形控件设计一个简易界面,其中,每个节点的发送信号都可以通过图形控件输入,同时每个节点均有一个开关用来控制各自网络的休眠与唤醒:

要通过控件实现值的输入,需要将其和相应的信号关联起来,在属性面板中可以设置:

对于三个开关控件,将其关联到EnvironmentVariables以便在CAPL脚本中使用,为此需要先在DBC中为三个节点创建环境变量NmRequestFlg_A、NmRequestFlg_B和NmRequestFlg_C:

创建好后,在开关控件的属性面板中关联环境变量:

到这里,Panel Designer下的工作就完成了,回到CANoe的Simulation Setup窗口,这次我们为节点编写CAPL脚本,点击节点A上的Edit图标创建脚本:

在CAPL编辑窗口下输入如下脚本:

同理,为节点B、C增加一样的脚本,注意环境变量的名称要修改一下。

现在,再次点击Start,就可以通过面板控制网络休眠唤醒以及修改信号值了:

4. 小结

通常简单的功能仿真(比如节点发送报文)可以通过DLL文件直接实现,复杂的功能仿真(比如收发报文处理、网络行为控制、图形界面交互)则需要配合CAPL脚本实现。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值