首页 > 其他分享 >【CANoe制作DataBase(DBC文件)】

【CANoe制作DataBase(DBC文件)】

时间:2024-08-07 15:56:18浏览次数:8  
标签:字节 CANoe DBC DataBase 节点 点击 信号 报文

        本篇是CANoe使用制作DBC文件,DBC是Database Can的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。

目录

        本篇是CANoe使用制作DBC文件,DBC是Database Can的缩写,其代表的是CAN的数据库文件,里面定义了CAN总线上有哪些CAN节点、每个节点各自发出什么CAN报文,每个报文下又有哪些信号,CAN总线不管是开发、测试还是分析,DBC文件都是必不可少的。

一、新建DBC文件

二、新建节点

三、创建CAN报文

四、创建CAN报文的信号

五、将信号与报文相关联

六、为报文设置发送者和接收者


一、新建DBC文件

        1.1、打开CANoe,在CANoe的Tools菜单栏内,点击CANdb++Editor 打开DBC编辑软件

DBC编辑器打开后的界面如下

点击File,在弹出的窗口中选择Create DataBase

弹出如下窗口,用于选择DBC模板,我一般选择CANoeTemplate或者CAN Template

本次选择CAN Template,点击ok,在随后弹出的窗口中,选择一个文件夹作为这个DBC的路径,点击保存即可。

保存后的界面如图所示,点击一下放大按钮把界面放大便于观看

二、新建节点

节点(NODE)是本DBC中所有报文的发送者和接收者的定义(可以简单认为是ECU)。

在Network node处右击鼠标,点击NEW 新建一个节点(ECU),给这个节点赋予一个名称,随后点击确定即可,新建两个节点ECU001和ECU002来进行互相的收发

节点创建好后,界面如下

三、创建CAN报文

CAN总线,CAN报文自然是核心,接下来我们创建两条CAN报文。

同样的,在message处,右键鼠标,选择new,新建一个message

  • 在Name处输入本条CAN message的名称,注意(不得使用中文,不得以数字开头)
  • 在Type处选择CAN Standard(标准CAN)
  • 在ID处填入此CAN报文的CAN ID
  • DLC处写入此报文的长度(单位是字节)
  • 随后点击OK

再次创建第二条CAN报文,完成后如图所示。

四、创建CAN报文的信号
  • 信号代表的是CAN报文中的各个bit位的值含义。
  • 一个信号既可以只占一个bit,如代表电机的运行状态(0是静止,1是电机正在运行)
  • 通常来说,一个信号占多长的长度,取决于这个信号会有多少种可能得值,比如说A信号的取值从0~12,总共需要13个数,那么它所需要的长度就至少是4Bit(4Bit可以表示0~0xF,总共16个值)
  • 具体的信号需要占用多少个bit位,可以查看客户给予的CAN矩阵表,或者自己根据需要定义。
  • 首先新建一个信号。
  • 同样的,在Signals处右击new一个信号

  • Name处键入此信号的名称
  • Length处填入此信号的长度(单位为Bit)
  • Byte Order(字节序)选择以Intel型填充还是以Motorola型填充。
  • Intel型 :小端字节序,字节内部bit排序从高位开始
  • Motorola型:大端字节序,字节内部bit排序从低位开始
  • ValueType:值的类型,有符号整数和无符号整数以及浮点数类型

此处以Intel格式为例

偏移系数和最大值最小值可以不填

如下填写后点击ok

随后再次以同样的方式创建三个信号

四个信号都创建完成后,如下图所示:四个信号

五、将信号与报文相关联

既然信号是报文中某几个bit位的含义,那么信号就应当与报文一一对应起来

接下来,我们将信号与报文进行绑定(把信号放到报文中去)

在左侧双击CAN报文0x123  打开CAN报文界面

点击Signals切换到信号栏下

点击右下角的Add将信号添加到报文中

选择需要添加进去的信号,然后ok。这里我将0x111的两个信号Signal01和signal02放进来

再点击右下角的确定按钮,信号就添加完成了。

点击后如果DLC设置得比添加进去的信号所占的字节数多,就会弹出这个窗口,点击否(N)即可,如果点击是(Y),系统会修改这条CAN报文的长度为刚刚添加进去的信号所占的字节数

添加完成后如图所示,右边会列出这个报文里所有的信号,以及信号所占的字节和起始位。

此时,如果想修改信号在报文中,所占的位置,可以双击红框中的Startbit处修改起始位

随后点击确定即可。

也可以在这条CAN报文的Layout中通过鼠标拖动修改信号所处的位置。

双击左侧CAN报文,在弹出的窗口中点击layout,鼠标按住方框中标记的信号拖动即可改变信号所在的位置

接下来以同样的方法,把另外两个信号添加到0x321的CAN报文中去

添加完后在左侧展开两个CAN报文,即可看到这样的界面

六、为报文设置发送者和接收者

我们现在已经有了两条完整的CAN报文,但是还没有规定这两条报文由谁进行收和发

接下来,我们需要为报文指定接收者和发送者。

在左侧点击红框中的+号,展开节点视图

可以看到,节点ECU001和ECU002下都是空的,TX message和RX message都没有。

双击节点ECU01,在MappedRXSig里面Add需要接收的报文中的信号

再切换到Tx message栏目,把该节点发送的报文Add进来,随后点击确定

此时我们展开左侧,可以看到ECU01已经有了对应的tx 和rx报文以及信号

完成后如图所示,ECU01和ECU02都已经具有了Tx和Rx报文。

ECU001发送0x111,接收0x222

ECU002发送0x222,接收0x111

        至此,一个简略版的CAN DBC就制作完成了。

标签:字节,CANoe,DBC,DataBase,节点,点击,信号,报文
From: https://blog.csdn.net/m0_72532779/article/details/140990233

相关文章

  • Excel 转换为 DBC 文件
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录文章摘要一、基本介绍1.CAN通信2.DBC文件二、转换思路框架1.基于DBC文件(.dbc)可以用文本格式(.txt)格式打开的思路,对照标准DBC文件的文本格式来进行转换2.Excel文件处理:提取Excel信息,填入到文......
  • JDBC
    一、JDBC开发步骤1.加载驱动2.获取连接对象3.写sql语句4.创建statement5.执行sql语句6.关闭连接 二、JDBC接口核心的API1.DriverManager类:驱动管理类,用于管理所有注册的驱动程序   registerDriver(driver):注册驱动类对象   ConnectiongetConnection(u......
  • 【技术分享】解决CANoe软件Trace窗口筛选栏空白问题
    引言在汽车电子开发领域,Vector公司提供的CANoe、CANape和CANalyzer软件是我们不可或缺的工具。然而,近期一些用户在更新了Windows系统后,遇到了Trace窗口筛选栏变白的问题。本文将分享一个实用的解决方案,帮助您快速恢复软件功能。问题描述7月11日,Windows系统推送了新的更新。......
  • navicat [IM002][Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱
    1.情景展示使用navicat连接SQLServer数据库,报错信息如下:[IM002][Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序(0)2.解决方案方案1找到Navicat的安装路径,然后找到sqlncli_x64.msi文件并安装,安装成功后重启Navicat重新进行连接,看是否成功。......
  • MySQL JDBC连接参数rewriteBatchedStatements(转)
    原文:https://blog.51cto.com/u_16213583/9701812MySQLJdbc驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,直接造成较低的性能。只有把rewriteBatchedStatements参数置为true,驱动才会帮你批量执行。不过,驱动具体是怎......
  • [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:错误代码 0x2746 - 客户端无
    我正在尝试运行odoo项目ubuntu:22.04pyodbc==4.0.28python:3.8opensslversion:OpenSSL1.1.1p21Jun2022**ERROR:DIAG[08001][Microsoft][ODBCDriver17forSQLServer]TCPProvider:Errorcode0x2746DIAG[08001][Microsoft][ODBCDriver......
  • 【YashanDB数据库】statement级别的触发器在jdbc接口调用executeBatch时被多次触发
    问题现象某客户使用jdbc接口向yashandb的表A插入数据。表A上有一个语句级触发器,其内容为在触发时执行altersequence操作;另外还有一个insert时的行级触发器,其内容为将每行的部分列赋给新值,这些新值要么来自sequence.nextval,要么来自于current_timestamp。客户向表A插入90万条数......
  • 实战:深入了解JDBC和分享JDBCUtil
    Java数据库连接(JDBC)是一个功能强大的API,它弥补了Java应用程序与关系数据库之间的差距。通过利用JDBC,您可以无缝地与数据库交互以存储、检索和操作数据。但是,要有效使用JDBC,需要遵循最佳实践,以确保代码的最佳性能、安全性和可维护性。正如我之前提到的观点,学习一个新......
  • JDBC实现多数据库切换
    一、编译环境JDK:1.8IDEA:2023.1.2二、maven依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--......
  • PGjdbc源码试读(二)
    本期目标追踪Connection.createStatement()Statement.executeUpdate(Stringsql)追踪Connection.createStatement()在PgConnection中找到createStatement()方法:该方法调用了同名方法,并传递了两个参数,查询两个常量的注释:TYPE_FORWARD_ONLY表示返回的集合ResultSet只......