Contents

CANoe入门与使用

带着问题去学习,才能防止迷失在知识的海洋

问题:

  1. 为什么我们要使用CANoe开发?
  2. CANoe是什么?
  3. ECU的开发流程?
  4. CANoe在ECU的开发流程中处于什么位置以及发挥了什么作用?
  5. CANoe如何使用?

说明

在目前汽车前装项目的开发中,所有的功能都是需要按照车载的标准来进行测试通过的,而不是参照以前后装的功能需求符合“能用”的标准即可。车载测试标准中比较重要的一块就是通讯测试,因为整个车机是与车身融为一体的,需要和其他的ECU相互通信交换数据。一旦数据通信发生故障,部分功能可能会失效,严重的还会造成威胁生命安全的事故。CANoe在工程开发中的使用就能降低由于开发设计而引起的故障的发生率。

CANoe介绍

CANoe的全称叫 CAN open environment 是一款汽车总线开发环境。CANoe的前期是为了对CAN通信网络进行建模、仿真、测试和开发,后来扩展加入了LIN、Ethernet、FlexRay、MOST等网络。在工程中最常用的也是CAN。CANoe是网络和ECU开发、测试和分析的专业工具,支持从需求分析到系统实现的整个系统的开发过程。在开发的初期阶段,CANoe可以用于建立仿真模型,在此基础上进行ECU的功能评估。在完成了ECU的开发后,该仿真模型可以用于整个系统的功能分析、测试以及总线系统和ECU的集成。这样就可以尽早地发现并解决问题。评估窗口的表格和文字说明可用来评价结果。CANoe具有测试功能集,用来简化或自动地进行测试。运用该功能,可以进行一系列的连续测试,并自动生成测试报告。另外,CANoe还具有诊断功能集,用以与ECU进行诊断通信。 CANoe主界面如下图: /images/canoe_using_1.png

当我们第一打开此软件时,这么多框框这么多的按钮不知如何下手时我们就看看有木有官方的例子可以观摩观摩的。打开路径 File->Sample Configurations

/images/canoe_using_2.png

这么多例程我们该如何是好?还是先从最简单的看起吧,“easy”就是它了,Here wo go!

/images/canoe_using_3.png

还是这么多条条框框,我依然不知所措,这可如何是好,还是看看神奇的“F1”怎么说吧。

/images/canoe_using_4.png

这是Easy这个例程的说明,它集中展示了数据的发送和接收并分析,以及通过Panel图形化的展示数据,以及CANoe强大的可编程的特点。

待续。。。

开发流程

/images/canoe_using_5.png

建立DBC

DBC是整个CAN网络上的数据解析文档,它能够将二进制数据解析成具有实际意义的条目。

工具:Vector CANdb++ Editor

创建数据库文件

/images/canoe_using_6.png

模板推荐选择Vector_IL模板便于IL层的仿真。创建完后如下:

/images/canoe_using_7.png

根据OEM释放的信号矩阵文件添加信号报文及节点

建立的顺序可以是:信号->报文->节点,也可以反过来即节点->报文->信号。这个可以随意根据个人喜好来,我们就根据后者来建立一个节点吧,举个栗子。 矩阵信号如下: /images/canoe_using_8.png

/images/canoe_using_9.png 如上图,创立节点的时候只需要填入节点的名字即可,其他的默认就好了。

/images/canoe_using_10.png 建立报文时相对就比较繁杂一点,报文的名字,标准帧还是扩展帧,报文的ID,报文的DLC(数据长度)。

/images/canoe_using_11.png

/images/canoe_using_12.png

信号名字,长度,字节序(OEM定义,大多数都是Motorola),值的类型根据矩阵定义的选择unsigned signed float double。Factor即所谓的精度,此处的Minimum和Maximum代表的是物理值的最大最小值。实际的物理值=offset+x*Factor,x为逻辑值。当其中有些具有特别含义的值时我们可以使用Value Table。

/images/canoe_using_13.png

添加到报文中,至于信号在报文中的具体位置我们稍后在报文中再来定义。 另一个信号也是如此建立,此处为了偷懒就不详细写了。 添加完所有信号,我们返回去设置信号在报文中的位置。我们有两种方式来设置,一种是直接设置起始位的方式,另一种是图形化拖动的方式。

/images/canoe_using_14.png

在报文详情界面点击startbit,然后键入报文的起始位,一般OEM给的矩阵文档中都会指出信号的起始位。另一种方法就是图形化的拖动了,这种方式比较直观不会出错。

/images/canoe_using_15.png

双击报文,然后到报文的属性界面选择Layout,然会就可以随意将信号拖动到相应的位置了。

/images/canoe_using_16.png

至此一个节点就创建完成,完成后我们能够在网络中看到,会自动生成一个和节点同名的ECU。

将DBC导入到CANoe中使用

/images/canoe_using_17.png

打开CANoe选择New,然后模板选择500KBaud 1ch(500K波特率,一路CAN)。

/images/canoe_using_18.png

创建完之后就是这样子,我们先来保存一下。然后导入DBC数据库。

/images/canoe_using_19.png

点击”Databases”然后右键点击“Add”,然后选择上面我们创建的DBC文件。

/images/canoe_using_20.png /images/canoe_using_21.png /images/canoe_using_22.png /images/canoe_using_23.png

点击我们刚刚导入的DBC,然后右键选择“Node synchronization”,然后把节点从Avaliable区移到assigned区,然后确定即可。最后我们就能在仿真预览的节点图中看到我们刚刚同步的节点。