CANoe中DBC数据库的制作和使用

在日常工作中,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 位。延伸的方式取决于字节序的编码方式:

  1. Intel编码(小端字节序):从起始位开始向左延伸,如果当前字节的最左侧已到达边界,则切换到下一个字节的最右侧继续延伸。
  2. 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报文中完成分配。

  1. 网络节点分配报文

报文发送节点的匹配:打开报文编辑窗口,并切换为“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配置方式

  1. 需要启用IL Support,并根据配置的发送方式(如周期性、事件触发等)激活报文的发送。当信号或报文满足预设条件时,便会自动发送相应的报文。
  2. 通过右侧参数配置条目栏输入需求,例如:循环时间、延迟时间、诊断请求或诊断响应等。
  3. 报文通过信号配置进行发送。由于信号与报文之间具有包含关系,发送时将以报文的形式进行传输。

IL Configuration配置发送类型

  1. Cyclic周期发送:报文按照配置的周期发送。
  2. OnChange变化时发送:变化时发送指的是,只有当报文中的信号发生变化时,报文才会被发送。这类报文通常包含变化频率较低的信号。例如,当车门处于关闭状态时,无需持续发送车门状态信息;当车门打开,就会发送更新报文,通知中央控制器车门状态已发生变化。
  3. OnWrite写入时发送:写入时发送是指当报文中的信号被重新写入时,报文才会发送。例如车窗升降系统,只有当驾驶员调整车窗位置时,车窗控制单元才会通过CAN总线发送新的位置数据。
  4. IfActive有效时发送:有效时发送是指当报文中的信号为有效值时,报文会以一个快速的周期(cycle time fast)发送,当信号变为无效时,报文就不再发送
  5. OnChangeWithRepetition、OnWriteWithRepetition和IfActiveWithRepetition:需设置重复发送次数。

IL Configuration报文和信号混合发送

  1. Cyclic and OnChange:周期和变化时发送是指报文平时是周期性发送,当报文中的信号变化时,此报文会额外的发送一次,原来的周期不变。
  2. Cyclic and OnWrite:周期和写入时发送是指报文平时是周期性发送,当报文中的信号被重新写入时,此报文会额外的发送一次,原来的周期不变。
  3. 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通信的管理与应用水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/485779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WebRTC】适合新手宝宝的WebRTC入门教学

文章目录 简述SDPNATNAT的分类完全圆锥型受限圆锥型端口受限圆锥型对称型 ICESTUNTURN总结参考链接 简述 WebRTC通过整合现有的网络协议为设备提供了实时通信的能力,其底层由 C 开发,并通过标准化的 JavaScript API 和原生接口(如 C 和 Java…

Master EDI 项目需求分析

Master Electronics 通过其全球分销网络,支持多种采购需求,确保能够为客户提供可靠的元件供应链解决方案,同时为快速高效的与全球伙伴建立合作,Master 选择通过EDI来实现与交易伙伴间的数据传输。 EDI为交易伙伴之间建立了一个安…

使用 Cygwin 在 Windows 上开启 ssh 服务器

通常与 Linux 系统打交道多一点,通常连接 Linux 机器时会使用到 ssh 进行连接,并且使用 bash 会更多一点。最近突发奇想,如何在 Windows 上开启 ssh 服务器,使得即使电脑不在身边,也能通过 ssh 连接到远程主机&#xf…

突破空间限制!从2D到3D:北大等开源Lift3D,助力精准具身智能操作!

文章链接:https://arxiv.org/pdf/2411.18623 项目链接:https://lift3d-web.github.io/ 亮点直击 提出了Lift3D,通过系统地提升隐式和显式的3D机器人表示,提升2D基础模型,构建一个3D操作策略。 对于隐式3D机器人表示&a…

docker desktop打包配置国内镜像地址

打包遇到无法访问外网资源,直接配置国内镜像地址 直接加入如下代码就行: {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-m…

MATLAB数学建模之画图汇总

MATLAB是一种强大的数学软件,广泛应用于工程计算、控制设计、信号处理等领域。在数学建模中,MATLAB的绘图功能可以帮助我们直观地展示数据和模型结果。 1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 plot函数用于绘制二维平面上的线性坐标曲线图&am…

喆塔科技携手国家级创新中心,共建高性能集成电路数智化未来

集创新之力成数智之塔 近日,喆塔科技与国家集成电路创新中心携手共建“高性能集成电路数智化联合工程中心”并举行签约揭牌仪式。出席此次活动的领导嘉宾包含:上海市经济和信息化委员会、上海市集成电路行业协会、复旦大学微电子学院、国家集成电路创新中…

2.STM32通信接口之SPI通信---SPI实战《精讲》

SPI仅支持一主多从(无应答机制) 参照:《第十一部分》1.STM32通信接口之SPI通信---SPI介绍《精讲》-CSDN博客 在采用一主多从的模式下。从机未被选中,SN1时,从机的MISO会处于高阻态状态,SN0时,M…

【Unity 动画】Animation state 动画片段属性面板的解释

1. Motion 描述: 这是分配给该状态的动画剪辑或混合树。 例子: 假设你正在制作一个角色行走的动画。你可以将一个名为“Walk”的动画剪辑拖放到“Motion”属性中。这样,当角色进入“行走”状态时,就会播放“Walk”动画。 2. Speed 描述: 该状态下的动…

Flutter动画(二)内建隐式动画Widget

动画效果介绍中给出了选择动画的决策树: 使用动画框架不在我们讨论的话题内。flutter支持的动画包括隐式动画和显式动画。 隐式动画和显式动画 隐式动画和显示动画是两种不同的动画实现方式,它们的主要区别在于控制权和动画的重复性。 隐式动画&#…

如何解决Redis缓存穿透

如何解决Redis缓存穿透 本篇将带大家了解如何在不同的业务场景下防范Redis缓存穿透,以查询商品业务场景为例子,分别使用缓存null和布隆过滤器的方法来防范缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样请求到达缓存…

Spring Boot 3.0 + MySQL 8.0 + kkFileView 实现完整文件服务

Spring Boot 3.0 MySQL 8.0 kkFileView 实现完整文件服务 背景:比较常见的需求,做成公共的服务,后期维护比较简单,可扩展多个存储介质,上传逻辑简单,上传后提供一个文件id,后期可直接通过此i…

spring6:3容器:IoC

spring6:3容器:IoC 目录 spring6:3容器:IoC3、容器:IoC3.1、IoC容器3.1.1、控制反转(IoC)3.1.2、依赖注入3.1.3、IoC容器在Spring的实现 3.2、基于XML管理Bean3.2.1、搭建子模块spring6-ioc-xml…

ROS2创建 base 包用于其他模块的参数配置和头文件依赖

Demo 背景 ROS2项目开发中存在以下需求:有多个包需要读取一些共同的配置项(以txt或者yaml形式存在),且依赖于一些公用的utils工具代码(C)。Solution: 创建一个 base_config 包来“存放” 配置文件和公用的头文件。gitee address: Gitee/CDal…

相机动态/在线标定

图1 图2 基本原理 【原理1】平行线在射影变换后会交于一点。如图所示,A为相机光心,蓝色矩形框为归一化平面,O为平面中心。地面四条黄色直线为平行且等距的车道线。HI交其中两条车道线于H、I, 过G作HI的平行线GM交车道线于M。HI、GM在归一化平面上的投影分别为JK、PN,二者会…

记录下nginx接口代理配置问题

其中api和api1是前面定义的upstream,ip相同只是端口不同。 一开始/api1/直接 像api一样 proxy_pass http://api1这样是不行的,因为会代理到 后端的 /api1/...接口,而后端实际接口地址是 /api/..... 所以必须像上面写法才能将外网的 /api…

【Mac】安装Gradle

1、说明 Gradle 运行依赖 JVM,需要先安装JDK,Gradle 与 JDK的版本对应参见:Java Compatibility IDEA的版本也是有要求Gradle版本的,二者版本对应关系参见:Third-Party Software and Licenses 本次 Gradle 安装版本为…

【JavaEE】多线程(7)

一、JUC的常见类 JUC→java.util.concurrent,放了和多线程相关的组件 1.1 Callable 接口 看以下从计算从1加到1000的代码: public class Demo {public static int sum;public static void main(String[] args) throws InterruptedException {Thread …

Linux-实用操作

文章目录 一. 各类实用小技巧(快捷键)1. ctrl c 强制停止2. ctrl d 退出登出3. history 查看历史命令4. !命令前缀,自动匹配上一个命令5. ctrl r,搜索历史命令6. ctrl a | e,光标移动到命令开始或结束7. ctrl ← | →,左右跳…