DBC学习(一)

这篇具有很好参考价值的文章主要介绍了DBC学习(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是DBC?

DBC(CAN data base)是描述网络上所有电子节点(ECU)之间CAN通信信息的数据库文件。注意三个关键词:网络电子节点CAN信息,DBC文件只用于描述CAN通信,通常一个DBC文件只能包含一个CAN网络的节点信息,因此,为了描述整车的网络拓扑信息,需要多个DBC文件。

例如下面的整车网络拓扑示意图:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

众多电子节点划分为不同的功能区块,区块内的节点通过CAN总线相互连接形成独立的功能子网(如动力子网PTCAN、车身子网BodyCAN等),中央网关(GateWay)将不同的功能子网相连为跨网通信提供支持,不同子网上的节点还可以通过单独连接建立私有通信,某些节点(如BCM)还会通过LIN总线建立下属网络。这里功能子网的通信就需要用DBC来描述,并且每一个功能子网都有自己的DBC文件。

二、如何打开DBC?

使用Vector CANdb++ Editor工具可以打开、编辑以及创建DBC文件,通常在安装了CANoe或CANalyzer软件之后会带有该工具:CANdb.exe,执行文件位于软件安装目录下的Exec32文件夹下:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

一般如果安装了CANdb工具系统会自动关联DBC文件格式(.dbc),这样便可以直接双击DBC文件打开。

DBC文件也可以通过文本方式打开(如使用windows系统的记事本程序),但是可读性远不如CANdb工具,但这种方式在研究DBC某些内容或想要通过脚本解析DBC文件时比较有用。

另外,需要说明的是CANdb工具分两个版本,CANdb++ Standard和CANdb++ Admin,Admin版支持的功能更多更强,我们一般使用的都是Standard版,后文介绍均基于该版本进行。

三、DBC里有什么?

下图是用CANdb工具打开DBC文件后的窗口界面,左侧窗格含有一个树型导航目录,右侧窗格展示当前选中目标的详细内容:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

树型目录的分类与前面提到的三个关键词刚好对应:

Networks —— 网络

Network nodes —— 电子节点

Messages & Signals —— CAN信息

除此之外,这里还有ECUs和Environment variables两项,ECUs下包含的其实是每个ECU的Network Node和Environment Variables,Network Node就是上面说的电子节点,这个在后面会讲,Environment Variables在使用CANoe仿真节点时会用到。

  • Networks

Networks从网络的视角来观察总线上存在的节点、报文及信号,我们展开Networks下的PTCAN网络可以看到下面包括Tx Messages、Signals和本网络上的多个节点,如下图所示:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

Tx Messages下列出了该网络总线上所有的报文,其实就是每个节点发送报文的集合。Signals下列出了该网络总线上所有的信号。节点部分列出了每个节点自身的发送和接收信号。

下面来看一下Network的属性参数,通过右击网络名(PTCAN)选择Edit Network打开网络编辑对话框,在Attributes选项卡下可以查看当前支持的参数项:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

下面简要说明一下图示中各项属性参数的含义:

参数项

说明

NmType

指定网络管理类型:NmAsr(AutosarNm)

NmAsrBaseAddress

指定网络报文ID的基址,即此网络上所有节点的网络报文ID要基于此地址增加不同的偏移量来确定,这里为0x600,那么其它节点网络报文ID为0x6XX,如0x610、0x611、0x612等

NmAsrCanMsgCycleTime

指定网络报文的周期时间:500ms

NmAsrMessageCount

指定网络上最大支持的网络报文数量:32

NmAsrRepeatMessageTime

指定网络管理处于RepeatMessage状态的时间:1500ms

NmAsrTimeoutTime

指定网络处于Network Mode下的超时时间:4000ms

NmAsrWaitBusSleepTime

指定网络从PrepareBusSleep状态进入BusSleep状态需要等待的时间:4000ms

BusOffRecoveryTime

指定BusOff的恢复时间:160ms

BusType

指定总线协议类型:CAN

Baudrate

指定总线的通信波特率:500kbps

SamplePointMax

指定采样点的最大值:85

SamplePointMin

指定采样点的最小值:75

SyncJumpWidthMax

指定同步跳转宽度的最大值:4

SyncJumpWidthMin

指定同步跳转宽度的最小值:3

Manufacturer

制造商信息:Vector

VersionNumber

版本信息

VersionWeek

VersionYear

这些参数和Autosar NM以及CAN协议密切相关,除了图示里的这些参数,也可以创建自定义参数,点击工具栏的Attribute Definitions按钮可以查看当前创建的属性信息,如下图所示:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

从Type Of Object列可以看到除了Network以外,Node、Message及Signal都有自己的属性定义,需要注意的是虽然可以任意新建用户自定义的属性项,但是某些属性(那些可以被协议栈配置工具识别的属性)必须按照要求(名称、类型、取值)定义才能起作用。最简单的增加属性方式就是直接导入现有的属性信息:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

通过点击File菜单下的Import Attribute Definitions可以选择导入其它DBC里的属性信息,注意:如果当前DBC和导入DBC有同名属性,这些同名属性不会导入。

Netwrok的属性主要是对涉及整个网络或多个节点的一些行为进行定义,比如波特率、采样点需要所有节点遵守才能保证总线正常通信,又如网络管理相关的参数需要相关节点遵守才能实现整个网络内的管理功能。

  • Network nodes

与Networks不同,Nodes部分从单个节点的视角来观察与节点相关的总线报文及信号,以VBU节点为例,展开后下面包含Tx Messages、Rx Messages、Mapped Tx Signals以及Mapped Rx Signals,见下图所示:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

其中Tx Messages下包含本节点所有的发送报文。

Rx Messages下包含本节点所有的接收报文。

Mapped Tx Signals下包含本节点所有的发送信号。

Mapped Rx Signals下包含本节点所有的接收信号。

那这里的收发报文信号和树型目录最下部的Messages和Signals有什么区别呢:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

有两点区别:

1. Messages与Signals下包含的报文信号比节点下的报文信号要多,并且有可能会包含实际没用到的报文信号,因为所有创建的报文信号都会在Messages与Signals下显示,但只有映射到节点的报文信号才会在Network及Node下显示。

2. 针对同一条报文,从节点的Rx Messages下看到的信号数量可能会比从Messages下看到的要少。比如我们观察下图所示的AC_0x254这条报文:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

对于某一条报文而言,节点可能只关心其中的几个信号,那么只接收这几个有用的信号当然是最佳选择。

基于以上两点原因,建议从节点下去查看相关的报文信号。

下面来看一下Node的属性参数,同样我们以下面的图示为例说明:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

简要说明一下图示各项属性参数的含义:

参数项

说明

NodeLayerModules

指定dll文件可以配合CANoe实现仿真测试功能

ILUsed

指定是否使用交互层(对Geny或Davinic  Configuration工具很重要)

NmAsrNode

指定节点是否为AutosarNM节点

NmAsrCanMsgCycleOffset

指定网络报文的偏移时间

NmAsrCanMsgReducedTime

指定BusloadReduction功能相关的时间参数

Nodes属性主要涉及各个节点自身,通常每个节点根据需要可以做不同的配置,比如节点是否使用ILUsed,是否支持AutosarNM等。

  • Messages

Message是CAN总线上传输信息的最小单位,一条Message最大包含8个Byte的数据(CAN FD则最大支持64个Byte的数据),Messages从用途角度可以分为三大类:应用(APP)报文、网络(NM)报文和诊断(DIAG)报文。通过点击Node下的Tx Messages或RxMessages,可以查看报文属性:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

下面是对报文属性的简要说明:

属性名

描述

备注

Message

报文名称

通常报文名会用于生成代码,请确保符合C语言标识符命名规范

Node

发送节点名称

只有发送报文有此项属性

ID

报文ID

标准帧ID为11bit,扩展帧ID为29bit

ID-Format

CAN帧类型:标准帧或扩展帧

DLC[Byte]

报文长度

通常为8个字节

Tx Method

报文发送方式:

Cyclic、

NoMsgSendType

GenMsgSendType

Cycle Time

报文周期时间,单位ms

GenMsgCycleTime

Comment

注释信息

NmAsrMessage

是否为Autosar NM报文

网络报文该项设置为Yes

DiagState

功能寻址请求报文,该项设置为Yes

诊断报文相关属性

DiagRequest

物理寻址请求报文,该项设置为Yes

DiagResponse

物理寻址响应报文,该项设置为Yes

GenMsgSendType

报文发送方式:

Cyclic、

NoMsgSendType

报文最终的表现形式取决于报文和信号发送类型的逻辑或

GenMsgCycleTime

报文周期时间,单位ms

GenMsgCycleTimeFast

报文快发阶段周期时间,单位ms

GenMsgNrOfRepetition

报文快发阶段发送次数

GenMsgDelayTime

报文发送最小间隔时间,单位ms

GenMsgILSupport

报文是否由IL或COM层处理

APP报文设置为Yes,NM和DIAG报文设置为No

GenMsgStartDelayTime

报文首次发送的延迟时间,单位ms

  • Signals

Signal是Message里最小的元素单位,通过在某条报文上右击选择Edit Message打开报文编辑窗口,然后选择Layout选项卡可以查看当前报文的信号布局:

dbc文件怎么打开,AUTOSAR学习,学习,中间件

Layout中纵向表示字节顺序,从上到下为Byte0~Byte7,横向表示字节内的bit位顺序,从左至右为Bit7~Bit0,Signal在Message里的位置由Byte Order、Startbit和Length三个参数决定,Byte Order主要用于跨多个字节的信号,例如上图中横跨Byte1和Byte2的粉色信号,如果选择Motorola格式,则Byte1为信号的高bit位,Byte2为低bit位,选择Intel的话正好相反;Startbit用于确定信号的起始位置,通常要么为信号的最高bit位(msb)要么为最低bit位(lsb);length决定了信号的实际有效长度。从这里可以看出报文里的信号数量是可变的,对于一条8个Byte的报文,其信号数量最小为1个,最大为64个。

和查看Messages属性类似,通过点击Tx Mesasges或Rx Messages下的任意一条报文,可以查看信号属性:

属性名

描述

备注

Name

信号名称

通常信号名会用于生成代码,请确保符合C语言标识符命名规范

Message

信号所在的报文名

Multiplexing/Group

复用/组信号

Startbit

信号起始位

Length[Bit]

信号长度

Byte Order

信号在报文内的字节序,分Motorola和Intel两种格式

通常使用Motorola格式,两种格式的区别主要体现在跨字节分布的信号上,对于Motorola信号的高位在前低位在后,而Intel则是信号的低位在前高位在后

Value Type

信号值类型:Signed、Unsigned、IEEE Float、IEEE Double

通常使用Unsigned类型

Initial Value

信号初始值

物理值

Factor

信号因子

这两项构成信号的计算公式:

Physical value = (Raw value * Factor) + Offset,

其中Raw value表示总线值

Offset

信号偏移量

Minimum

信号最小值

物理值

Maximum

信号最大值

物理值

Unit

信号值单位

信号表示的物理值单位,如Kg、m

Value Table

信号的取值表

定义信号取值含义

Comment

注释信息

GenSigSendType

信号发送方式:

Cyclic、

OnWrite、

OnWriteWithRepetition、

OnChange、

OnChangeWithRepetition、

IfActive、

IfActiveWithRepeition、

NoSigSendType

报文最终的表现形式取决于报文和信号发送类型的逻辑或

GenSigSendTopBottom

信号边界发送方式:

None、

SendOnTop、

SendOnBottom、

SendOnTopBottom

用于无符号数值,SendOnTop-信号值达到Maximum时发送;SenOnBottom-信号值达到Minimum时发送;SendOnTopBottom-信号值达到MaximumMinimum时均发送

GenSigDeltaValue

信号的Delta量值

如果信号的当前值与上次发送的值差值大于Delta,则再次发送信号

GenSigStartValue

信号的默认值

发送信号的默认值

GenSigInactiveValue

指示信号无效的值

用于IfActive型的发送

GenSigTimeoutValue

信号超时值

接收信号超时后的值

Messages和Signal的大部分属性配合表格里的说明应该很容易看明白,少部分属性包括Byte Order的细节区别、Multiplexing/Group的含义用法以及报文信号的组合发送形式和涉及到的控制参数,这些内容留在后面介绍。

再次强调一下,Node、Message和Signal的属性参数不是一成不变的,像Message和Signal除了基本的属性以外,其它的属性(尤其是“Gen-”开头的属性)都是不定的,根据你使用的功能多少,这些属性或多或少,而对于每种类别下具体支持哪些属性,建议参考Vector官方文档或者咨询有经验人士。

四、DBC的用途

DBC的用途主要体现在软件开发和软件测试两个方面:

软件开发方面主要配合Vector的Geny或Davinic Configuration协议栈配置工具来实现CAN通信栈的配置及代码生成,如果DBC的各种属性设置得当,可以简化不少手动配置及调整代码的工作。ETAS的ISOLAR工具也支持导入DBC,但是对DBC属性参数的支持不太完善,只能识别一部分基础参数。

软件测试方面主要配合Vector的CANoe、CANalyzer、CANape等测试工具来实现节点仿真、报文解析等功能,此外,其它的一些工具如英特佩斯的neoVI FIRE也支持导入DBC。文章来源地址https://www.toymoban.com/news/detail-520619.html

到了这里,关于DBC学习(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Autoware.universe部署06:使用DBC文件进行UDP的CAN通信代码编写

    根据CAN协议编写DBC文件,通过DBC文件编写ROS2包进行UDP通信,获取底盘速度转发至Autoware.Universe以及订阅Autoware.Universe控制命令,下发至CAN控制底盘运动(本文适用于CAN盒通过网线连接进行UDP通信),本系列其他文章: Autoware.universe部署01:Ubuntu20.04安装Autoware.universe并与Awsim联调

    2024年04月24日
    浏览(67)
  • 79、SpringBoot 整合 R2DBC --- R2DBC 就是 JDBC 的 反应式版本, R2DBC 是 JDBC 的升级版。

    R2DBC 就是 JDBC 的 反应式版本, R2DBC 是 JDBC 的升级版。 R2DBC 是 Reactive Relational Database Connectivity (关系型数据库的响应式连接) 的缩写 反应式的就是类似于消息发布者和订阅者,有消息就进行推送。R2DBC中DAO接口中方法的返回值是 Flux 或 Mono 因此,反应式的 R2DBC ,是不存在 【分

    2024年02月07日
    浏览(46)
  • DBC概述

    第一章 DBC概述 第二章 新建CAN数据库文件 第三章 AttributeName属性用法 第四章 Intel和Motorola解析 第五章 DBC文件解析 第六章 Signal Multiplexing用法 DBC(Database CAN)文件是由德国Vector公司发布的,用来描述CAN 网络 上所有ECU 节点 之间CAN通讯 信息 的数据的一种文件,包含了CAN总线中

    2024年02月03日
    浏览(27)
  • dbc的属性定义

    在前一章新建完Signals后会出现两个配置项GenSigSendType、GenSigInactiveValue,这是dbc模板自带的两个属性,当我们打开Attribute Definition会展示出当前已定义的属性。本章将详细展开属性定义的奥秘。

    2023年04月08日
    浏览(32)
  • 达芬奇Configurator导入DBC初步

    介绍 本文档为AutoSAR通讯部分配置文档,配置工具为Vector公司DaVinci Configurator Pro。 模块 BSW架构 通讯功能 CAN通讯,通过接口层到PDU Router模块;(路径:CanDrv--CanIf--PduR--Com) UDS服务,通过接口层到CANTp模块;(路径:CanDrv--CanIf--CanTp--PduR--Dcm) XCP服务,通过接口层到XCP模块。(路

    2024年02月09日
    浏览(53)
  • dBm, dBi, dBd, dB, dBc

    摘自 dBm, dBi, dBd, dB, dBc释义 dBm dBm是一个考征功率绝对值的值,计算公式为:10lgP(功率值/1mw)。 [例1] 如果发射功率P为1mw,折算为dBm后为0dBm。 [例2] 对于40W的功率,按dBm单位进行折算后的值应为: 10lg(40W/1mw)=10lg(40000)=10lg4+10lg10+10lg1000=46dBm。 dBi 和dBd dBi和dBd是考征增益的

    2024年02月15日
    浏览(34)
  • springboot通过sharding-dbc按年、月分片

     springboot通过sharding-dbc按年、月分片 1、引入pom依赖 2、application.yml配置 3、分片算法 4、注意事项 (1)分片主键不能修改。 (2)分表后如果需指定表,入参需使用例如 ${tableSuf}           ${}和#{}的区别:${}参数不会携带‘’,但#{}会携带。 实施sharding-jdbc,一些非常痛的注

    2024年02月11日
    浏览(34)
  • R2DBC-响应式数据库

    简单查询 基于全异步,响应式,消息驱动 用法: 1.导入驱动:导入连接池(r2dbc-pool),导入驱动(r2dbc-mysql) 2. 使用驱动提供的api操作 pom.xml 单元测试 参数赋值 spring data r2dbc-整合与自动配置 SpringBoot对r2dbc自动配置 R2dbcAutoConfiguration:主要配置连接工厂,连接池 R2dbcDataAutoConfiguration: r2dbcE

    2024年01月21日
    浏览(34)
  • LM视频中间件H5实时视频打开API

    概览 LM视频中间件支持对接入的海康、大华、GB28181、RTSP、ISUP/EHOME等设备码流进行转换,提供HLS、Websocket-flv, http-flv, webrtc,rtsp流输出。 视频编码支持: H265 H264   音频编码支持: PCMA PCMU G722 AAC 实时视频的API调用也比较简单,本文中只针对API调用后需要对URL进行拼接做下说明

    2024年04月23日
    浏览(34)
  • thinkphp6 入门(6)--中间件是什么 怎么用

    当客户端发送请求至服务器时,HTTP请求会经过多个中间件,最后返回响应给客户端。中间件可以 在请求到达目标控制器或动作之前对请求进行操作 可以在响应离开目标控制器或动作之前对响应进行操作 二、中间件的作用 我们可以在不修改应用程序逻辑的情况下添加额外的

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包