一、CANoe的使用场景
总线检测(数据测量 Trace、Graphics、Data)、发送报文(测试的作用 CAN IG)、记录/回放日志(LOgging)
制作Panel(测试开发)、自动化测试脚本(CAPL语言)
二、创建工程及创建DBC文件
1)打开CANoe软件。File ->New ->Available Templates。这里根据你需要的目标模板去选择,例如我所在的项目需要CAN FD通信,则我需要选择CAN FD或500K 波特率单通道
Ps: 若想设置多网络 File ->Options->Measurement ->General 选择CAN
2). Configuration页面
- Simulation Setup:一个CAN网络,其中红色线说明是CAN_H,蓝色为CAN_L,作为传输数据的两根线
- Trace:可以看到所以来源于ECU发送的报文
实际上:根据报文的数据,参考车企对某个报文的信号矩阵表,更会给出CANoe中去使用的数据库文件(DBC文件),有了这个文件以后,就可以将该报文的信号中英文、含义、物理量值都出来
3)、保存文件的注意事项:
若选择默认的,系统会给你一个你现使用的驱动版本的版本,那么低版本的是打不开你这个版本的工程,所以需要注意一下
三、加载DBC及DBC分析
1)、主机厂(车企)定义CAN网络通信中的所有信号,形成“信号矩阵表”,如图所示
分析矩阵表可在文字中查看:CANoe的使用-创建文件与DBC文件-CSDN博客
2)、添加DBC(DataBase of CAN)支持,便于解析数据
经过了DBC加载后,上文的报文ID196就有了自己的信息,如图所示
3)、使用CANDB++制作DBC
- 理解主机厂定义的CAN“信号矩阵表”:CAN报文的信号解析
- 创造DBC文件:打开Vector CANdb++ —>File —>Create Database —>CANTemplate dbc(不同版本支持的模板不同,所以应选合适的模板)
由上到下分别是:网络拓扑结点、ECU、网络结点、报文、信号
创建单个Signal
根据厂商给的信号矩阵表进行编写
Name:Signal的名称(给出的信号表中的Signal name如果存在空格等会出现报错),对于命名的时候是有严格的要求的,需要按照规范(具体的规范还不是很清楚)来进行。
Length:Signal的位长度(给出的信号表中的Size(bit))
Byte Order:给出的信号表中的Byte Order,在车企中有摩托罗拉和因特尔两种格式 ,其中Unit为物理单位
Value Type:给出的信号表中的Data Type
Factor:给出的信号表中的Factor:矩阵里面的系数
Offset:给出的信号表中的Offset,矩阵里面的偏移量
Minium:给出的信号表中P-Minimum
Maxium:给出的信号表中P-Maxium(与minium组成值的变化范围)
lnit.Value:初始值应处在最大值和最小值之间,包括最大最小值,给出的信号表中Default
Initialised value,初始值的定义应该是在Attribute中的GenMsgStartValue定义。
Message:属于哪一个Message就写哪一个,是给出的信号表中的Message Name
问:那么矩阵表里面的起始位呢?
答:是要和报文关联后才能去设置
创建报文——关联信号
Name:此条Message的名称,给出信号表中的Message Name
ID:此条Message的ID(16进制),给出信号表中的Message lD
DLC:字节长度,同时决定了Type的类型,给出信号表中的DLC
Type:如果DLC为8,则选择为CAN Standard;为64,则选择为CAN FD Standard
Transmitter:此条Message的发出点,给出信号表中的Transmitter;更改是在新建Message页面中的Transmitter进行更改,不是在Definite页面进行更改
TxMethod:此条Message的发送方式(Cyclic和 Event),给出信号表中的period [ms],如果该项有数值则为
周期性,否则为事件性信号
Cycle Time:周期的值,通过Attributes中的GenMsgCycleTime进行更改,给出信号表中的period[ms],如果该项有数值则为周期性,否则为事件性信号
Layout:显示Message中各个Signal的位分布(不可重叠,具有唯一性)
将信号从属于报文—>在报文节点下的信号点击—>在Definition中有start bit(起始位)—>可以在报文中的Layout查看自己设计的报文