大数跨境

Step by Step学习CANoe三大工具链(上)

Step by Step学习CANoe三大工具链(上) 怿星科技
2018-10-26
3
导读:在CANoe面板设计前需在CANdb++ Editor建立与面板控件相关的环境变量(Environment Variable)以及发送接收的报文和信号。今天我们将以CANoeDemo为例,教大家如何快
简介

CANoe三大工具链指的是数据库编辑器(CANdb++ Editor)、面板设计(Panel Design)和CAPL浏览器(CAPL Browser),如图1所示。

图1 CANoe三大工具链

CANoe面板设计前需在CANdb++ Editor建立与面板控件相关的环境变量(Environment Variable)以及发送接收的报文和信号。环境变量是面板设计和数据库之间联系的纽带,通过CAPL(CAN Access Programming Language)进行相关联,从而实现节点的功能逻辑。我们将以CANoeDemo为例,Step by Step教大家快速入门CANoe三大工具链。

图2 CANoeDemo示意图

如图2所示,使用环境变量实现控制面板上点火开关、加速踏板、各种灯光的控制。通过CAN总线共享发动机和车灯的状态信息,实现仪表盘发动机状态和转速的显示以及车身灯的效果显示。主要分为以下7个步骤,今天主要为大家介绍的是网络规划与设计的三个步骤:

图3 CANoe三大工具链的7个步骤

STEP 1 需求分析和网络设计规划

❏需求分析

1)整个网络中由几个ECU组成;(通信网络定义层面)

(2)每个ECU发送和接收哪些报文;(ECU定义层面)

(3)每个报文的优先级以及报文的信号组成;(报文定义层面)

(4)每个信号的数据类型和对应真实物理值之间的转换方式,即factor、offset值的设置;(信号定义层面)

(5)需要的环境变量(环境变量层面)

其中:

(1)~(4)是通信网络设计规划需要考虑的问题;

(5)是面板设计和CAPL编程来实现各个节点的功能需要考虑的问题;

❏网络设计规划

整个CAN网络由3个ECU组成,它们之间的报文收发关系如图4和表1所示。

图4 CAN网络中的报文收发关系

表1 CAN网络中的报文和信号

STEP 2
新建CANoe配置模板

❏如图5所示,首先新建一个工程文件CANoeDemo,在该文件夹下新建四个子文件夹:

(1)CANdb:保存数据库文件(*.dbc);

(2)Panels:保存位图和面板文件(*.xvp);

(3)Nodes:保存节点的CAPL程序(*.can);

(4)Logging:保存记录文件(*.blf);

❏打开Vector CANoe 11.0软件,File->New新建配置模板,命名为CANoeDemo.cfg,并保存,如图6所示。

图5 CANoeDemo工程文件夹

图6 新建配置模板

图6 新建配置模板

STEP 3 
CANoe中新建DBC数据库 

❏点击Tool->CANdb++ Editor,在CANdb++ Editor新建数据库CANoeDemo.dbc,操作如下,见图7所示。

图7 新建数据库

图7 新建数据库

(1)报文和信号的定义

考虑到发动机ECU报文和灯光ECU报文优先级的关系,将发动机ECU报文定义为EngineState(0x123,DLC=1),灯光ECU报文定义为LightState(0x321,DLC=1),它们报文中包含的信号如表2所示。

表2 Demo中的报文和信号定义


(2)新建相关的信号

CANdb++ Editor左侧的浏览树中的Signals,右击->new,新建信号,这里以发动机转速EngineSpeed为例,其余的类似:

图8 发动机转速信号EngineSpeed

写入信号的名称、长度、字节顺序、数据类型、系数(Factor)、偏移(Offset)和最小值、最大值等。


(3)新建相关的报文

CANdb++ Editor左侧的浏览树中的Messages,右击->new,新建报文,这里以发动机报文EngineState为例:

图9 发动机报文EngineState定义

在上方的Signals中,点击Add将相关的Signals包含到报文中,如图10所示。

图10 EngineState报文中的信号组成

在上方的Layout中,进行EngineState报文中的信号布局,如图11所示。

图11 EngineState报文中的信号布局

在上方的Attributes中,进行EngineState报文中的属性设置,如图12所示。

图12 EngineState报文中的属性设置

(4)新建相关的节点

CANdb++ Editor左侧的浏览树中的Nodes,右击->new,新建节点,这里以发动机节点EngineECU为例:

图13 发动机节点EngineECU

在上方的Tx Messages中,点击Add将相关需要发送的Messages包含到节点中,如图14所示。

图14 EngineECU发送报文的关联

(5)新建相关的环境变量

为了能够通过面板设计来实现控件操作报文信号的收发、模拟汽车传感器输入(发动机点火开关和加速踏板)、汽车执行器输出(车灯)和人机交互界面(仪表盘),需要定义以下环境变量,如表3所示。

表3 环境变量的定义

CANdb++ Editor左侧的浏览树中的Environment variables,右击->new,新建环境变量,这里以加速踏板环境变量EnvEngineAcc为例:

图15 环境变量EnvEngineAcc

(6)执行一致性检查

经过以上五个步骤,已经基本完成了数据库文件中元素的定义,可以通过View->Communication Matrix来查看节点之间报文和信号的收发关系(通信矩阵),如图16所示。

图16 通信矩阵

点击File->Consistency Check来执行一致性检查,查看整个数据库的定义是否存在错误,如图17所示。

图17 一致性检查结果

如果不存在错误提示,则表示数据库的一致性检查通过。


到这里,我们就完成了一个CAN网络的需求分析和网络设计规划,同时也定义了网络中节点之间报文收发逻辑的通信矩阵,为后续CANoe的仿真、测试、诊断和界面设计奠定了基础。在《Step by Step学习CANoe三大工具链(下)》中我们将继续为大家介绍CANoe中的另外两个工具——面板设计(Panel Design)和CAPL浏览器(CAPL Browser),敬请关注!



怿星一意,专注车载

引领汽车科技新高度




【声明】内容源于网络
0
0
怿星科技
让智能汽车研发更高效!
内容 428
粉丝 0
怿星科技 让智能汽车研发更高效!
总阅读795
粉丝0
内容428