在日常工作中,CANdb++是一个与我们密切相关的重要工具。它不仅能够帮助我们高效管理CAN总线通信,还能简化配置过程,提升工作效率。通过CANdb++,我们可以轻松定义和管理关键的通信参数,从而使整个项目更加顺利。或许有同学会问,什么是CANdb++?那今天就让我们来深入了解一下吧~
- 什么是CANdb++
首先,在CANoe工具中,CANdb++是一个用于描述和管理CAN总线通信的重要数据库工具。作为CANoe工具箱的核心组件,CANdb++主要用于定义和管理与CAN总线通信相关的数据。其次使用CANdb++,可以轻松定义帧ID、数据字段和节点,为CAN通信控制器的配置打下坚实基础。通过DBC文件,可以详细定义CAN网络中的节点、报文和信号,明确每个节点发送和接收的报文内容及其信号位置,从而确保各个节点之间的数据传输准确无误。
此外,CANdb++还提供了导出功能,用户可以将数据库数据导出为DBC文件,使其他Vector CAN工具(如CANalyzer和CANape)能够读取这些数据。这一功能使得用户能够导出整个数据库,或仅提取与特定车辆、网络或ECU相关的数据,极大地简化了CAN通信的配置与管理。
- CANdb++安装和创建
CANdb++安装分两种情况:
1.通过Vector官网直接下载CANdb++插件,安装链接: Download | Vector
2.通过下载安装CANoe软件中自带的CANdb++插件。
通过CANdb++创建DBC文件首先需要进行需求分析,以确定报文的设计目标。本文将以设计名为EPS_204的报文为例,帮助大家理解和操作。该报文包含信号EPS_WL及其相关属性。同时,需明确信号的发送和接收节点。
在确定需求后,可以开始在CANdb++中设计并创建DBC文件,步骤如下:
新建DBC文件
在CANdb++ Editor主界面中,选择File/Create Database来创建一个新的数据库。创建时,可以根据需要选择合适的Template。随后,指定数据库存储路径并为其命名。
定义网络节点
选择“Network nodes”对象右键点击“New”,可定义网络节点的名称,根据矩阵描述添加发送节点EPS和接收节点IC。
定义报文
选择“Messages”右键点击“New”打开报文定义/编辑窗口,根据矩阵对报文的定义,添加报文EPS_204,设定其ID为0x24,数据长度为8。
根据矩阵需求设置报文发送类型、报文周期时间、发送的快速周期、快速发送次数和报文延迟时间。
添加信号
在信号编辑窗口根据矩阵对信号的定义,新建信号EPS_WL,并设置其属性,如信号长度、排列格式、数据类型、精度、偏移量及最大值和最小值。之后设置排列格式,根据矩阵确定排列格式为Motorola forward MSB。
Note:浅谈Intel和Motorola格式区别
在处理信号时,我们可以定义一个起始位(StartBit)和信号大小(SignalSize),然后从起始位向左延伸SignalSize 位。延伸的方式取决于字节序的编码方式:
- Intel编码(小端字节序):从起始位开始向左延伸,如果当前字节的最左侧已到达边界,则切换到下一个字节的最右侧继续延伸。
- Motorola编码(大端字节序):从起始位开始向左延伸,如果当前字节的最左侧已到达边界,则切换到上一个字节的最右侧继续延伸。
这个过程可以称为“神龙摆尾”,其中Intel向下摆,Motorola向上摆。
Value Table表
可以通过Value Table为信号值分配名称。在CANdb++ Editor主菜单中,选择View/Value Tables/New,打开对应视图,定义信号值描述。例如,值0x0和0x1分别对应“EPS警告灯灭”和“EPS警告灯亮”。然后,右键点击信号,选择Edit Signal,在信号编辑窗口的Value Table栏中选择已编辑的Value Table名称。
报文分配信号
打开报文编辑窗口,并切换为“Signals”视图,选择“Add”打开“Choose Objects”窗口,然后选取所需信号点击OK完成信号分配。
快捷小技巧:可以在浏览器窗口中选中相关信号,直接拖拽到目标报文处释放。例如,将信号EPS_WL拖拽至Messages报文中完成分配。
- 网络节点分配报文
报文发送节点的匹配:打开报文编辑窗口,并切换为“Transmitters”视图点击Add,在“Choose Objects”窗口中选择发送节点EPS进行匹配,点击OK完成发送节点分配。
报文接收节点的匹配:拖拽信号EPS_204下EPS_WL至Network nodes列表下指定IC节点的“Mapped Rx Signals”处释放,完成接收节点的匹配。
设置信号在报文中的位置
在Message列表中选择对应信号右键“Edit mapped Signal”,然后通过修改Startbit[Bit]值完成。(即矩阵中描述示例信号在报文数据场的起始位为0)
检查信号位置
当一条报文分配了多个信号时,需检查信号在报文中的定位,避免出现多个信号同时占用相同Bit位置的情况。可打开对应报文的编辑窗口,并切换到“Layout”视图。通过Layout布局,可以查看当前报文内的信号位置。
保存数据库
在CANdb++ Editor中编辑或修改数据库后,选择File/Save保存,并将文件保存在指定路径。
按照上述流程,我们可以定义出一个完整且符合我们需求的数据库(.dbc文件)。接下来,我们将介绍在CANoe中添加并使用DBC文件的方法。
- 数据库文件的添加和使用
添加方法
CANoe-Simulation-Simulation Setup中,在Networks下选中Databases右键Add添加指定路径下的DBC文件。通过添加DBC文件,我们可以利用CANoe的强大功能,对通过CAN网络传输的报文和信号进行实时监控和解析。
DBC节点同步的使用
在Simulation Setup界面找到所添加的数据库,右键点击并选择“Node Synchronization”将数据库中的节点同步到CAN网络中。
此时,如果已经拥有数据库并将节点成功同步到CAN网络,那么可以根据数据库的定义自动发送报文。在发送之前,可以根据自身控制器的逻辑,对报文和信号进行修改和优化。这种灵活性不仅可以实时调整信号值和报文内容,还能够根据实际需求进行个性化配置。
具体操作可在“Simulation Setup”界面中,选择指定的节点后,右键点击并选择“Open IL Configuration”打开相应的IL配置编辑器。在此编辑器中可以方便地调整报文的属性、信号的值以及传输频率等参数。
IL Configuration配置方式
- 需要启用IL Support,并根据配置的发送方式(如周期性、事件触发等)激活报文的发送。当信号或报文满足预设条件时,便会自动发送相应的报文。
- 通过右侧参数配置条目栏输入需求,例如:循环时间、延迟时间、诊断请求或诊断响应等。
- 报文通过信号配置进行发送。由于信号与报文之间具有包含关系,发送时将以报文的形式进行传输。
IL Configuration配置发送类型
- Cyclic周期发送:报文按照配置的周期发送。
- OnChange变化时发送:变化时发送指的是,只有当报文中的信号发生变化时,报文才会被发送。这类报文通常包含变化频率较低的信号。例如,当车门处于关闭状态时,无需持续发送车门状态信息;当车门打开,就会发送更新报文,通知中央控制器车门状态已发生变化。
- OnWrite写入时发送:写入时发送是指当报文中的信号被重新写入时,报文才会发送。例如车窗升降系统,只有当驾驶员调整车窗位置时,车窗控制单元才会通过CAN总线发送新的位置数据。
- IfActive有效时发送:有效时发送是指当报文中的信号为有效值时,报文会以一个快速的周期(cycle time fast)发送,当信号变为无效时,报文就不再发送。
- OnChangeWithRepetition、OnWriteWithRepetition和IfActiveWithRepetition:需设置重复发送次数。
IL Configuration报文和信号混合发送
- Cyclic and OnChange:周期和变化时发送是指报文平时是周期性发送,当报文中的信号变化时,此报文会额外的发送一次,原来的周期不变。
- Cyclic and OnWrite:周期和写入时发送是指报文平时是周期性发送,当报文中的信号被重新写入时,此报文会额外的发送一次,原来的周期不变。
- Cyclic and IfActive:周期和有效时发送指的是,报文在正常情况下按照周期(cyclic time)发送。当报文中的信号为有效值时,报文会以快速周期(cyclic time fast)发送;当信号变为无效值时,报文将恢复为原来的正常发送周期。
修改节点信号配置
在“Simulation Setup”界面中,选择指定的节点后,右键点击并选择“Open Node Panel”打开相应的IL配置编辑器。在此编辑器中,可以方便地调整信号的物理值和真实值,之后通过Update将调整的信号值发送到总线上。
- 总结
通过本文的介绍,我们深入了解了CANdb++工具的基本功能和使用方法。作为CANoe工具中的核心组件,CANdb++不仅帮助我们高效管理和定义CAN总线通信中的报文、信号和节点,还简化了配置过程。通过创建和使用DBC文件,用户可以精确地描述CAN网络中的数据流动,确保各个节点间的数据传输准确无误,从而提高了开发和调试过程中的效率。
在安装与创建DBC文件的过程中,我们介绍了如何从需求分析开始,到新建文件、定义网络节点、报文、信号,最后到信号与报文的分配,以及数据库的保存。通过这些步骤,用户能够构建出符合需求的数据库,并将其集成到CANoe中进行实时监控与调试。
此外,通过CANoe的Node Synchronization功能,我们能够灵活地同步数据库中的节点并配置报文的发送方式,提供了多种报文发送类型和信号调节选项(如周期性发送、事件触发、变化时发送等),进一步提升了测试的灵活性和精确性。
总体而言,掌握CANdb++的使用,对于任何涉及CAN总线通信的项目都是至关重要的,它为我们提供了一个强大的工具集,不仅可以确保通信的稳定性与准确性,还能显著提高项目开发与调试的效率。希望大家能充分利用这一工具,在实际工作中不断优化和提升CAN通信的管理与应用水平。