汽车电子—制作DBC文件

该文章介绍了如何使用CANdb++软件创建DBC文件,包括前期准备、新建报文、添加信号、设置信号属性、关联信号与报文、设定报文发送类型和周期,以及编辑通信矩阵的过程。内容详细解释了大小端模式、数值表和通信协议的关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前期准备

首先需要安装制作DBC文件的软件,这里使用的是CANdb++。由于博主刚开始接触汽车电子相关知识,如果有其他常用的制作DBC文件的软件,欢迎大家在评论区留言。

制作DBC文件的软件

其次就是需要制作的报文,也就是通信协议。其中包括报文名称(Msg Name),报文ID(Msg ID),报文发送类型(Msg Send Type),报文周期时间(Msg Cycle Time(ms))报文长度(Msg Length Byte),信号名称(Signal Name),信号描述(Signal Description),排列格式(Byte Order),起始字节(Start Byte),起始位(Start Bit),信号发送类型(Signal Send Type),信号长度(Bit Length),数据类型(Data Type),精度(分辨率,Resolution),偏移量(offset),物理最大值(Singal Value Max(phys)),物理最小值(Signal Value Min(phys)),总线(十六进制)最小值(Signal Min Value(Hex)),总线最大值(Signal Value Max(Hex)),初始值(Initial Value(Hex)),单位(Unit),无效值(Invalid Value(Hex))信号描述(Singal Value Description)等。这里博主自己简单列一个报文。

Msg NameMsg IDMsg Send TypeMsg Cycle Time(ms)Msg Length ByteSignal NameSignal DescriptionStart ByteByte OrdeStart BitSignal Send TypeBit LengthData TypeResolutionoffsetSignal Value Min(phys)Singal Value Max(phys)Signal Min Value(Hex)Signal Value Max(Hex)Initial Value(Hex)UnitSingal Value Description
CAR0x0404Cycle108Enable发动机使能0Motorola LSB2Cycle1Unsigned10010x00x10x10:不使能;1:使能
CAR0x0404Cycle108Speed发动机转速2Motorola LSB16Cycle16Unsigned0.2500160000x00x3E800x0rpm

二、新建DBC文件

新建DBC文件
新建DBC文件

三、添加报文(Msg)

新建完成后,点击左侧的“Message”来新建报文。

添加报文

根据通信协议,填入报文的相关信息。

填入报文信息

其中“Type”有两种,一种是“CAN Standard”,标准的CAN。一种是“CAN Extended”,扩展的CAN。标准帧的ID取值范围是0x0~0x7FF,而扩展帧的ID可以更大。CAN标准帧和扩展帧只是在ID的长度上不一样,以能扩展更多的CAN节点,更好地支持上层协议而已。如果“Type”选择错误,ID超出范围会报错。

ID超出范围报错

其中DLC(Data Length Code)是发送报文的长度。

创建好的报文如下

创建好的报文

四、添加信号

在介绍如何添加信号之前,先介绍一下大小端模式和如何新建数值表。

4.1 大小端模式

简单来讲,Intel是小端模式(Little-Endian小端序),Motorola是大端模式(Big-Endian大端序)。

小端模式——低字节存放在低地址端,高字节存放在高地址端
大端模式——低字节存放在高地址端,高字节存放在低地址端

举一个简单的例子,比如需要存储0x12 34 56 78

大端模式存储时,低字节放在高地址,高字节放在低地址。
存储时为 0x12 | 0x34 | 0x56 | 0x78

小端模式存储时,低字节放在低地址,高字节放在高地址。
存储时为 0x78 | 0x56 | 0x34 | 0x12

4.2 创建数值表

数值表就是用来指示信号中值的含义。点击“View”,选择“Value Tables”。

创建数值表

创建好的数值表如下

创建好的数值表

4.3 添加信号

点击左侧的“Singal”,右键右侧空白处,选择“New”。

添加信号

按照通信协议要求,添加信号。在“Comment”窗口添加信号描述。

  • Byte Order
    这是排列格式,有两种。一种是小端模式,另一种是大端模式。关于小端模式和大端模式,下面会有相应的补充介绍。
  • Uint
    单位,没有可以不写
  • Factor
    对应通信协议中的精度,分辨率(Resolution)
  • Minimum和Maxmum
    物理最小值和物理最大值
  • Value Table
    数值表,用来指示每一个数值的含义。需要自己创建。

创建好的发动机使能信号如下

创建好的发动机使能信号

创建好的发动机转速信号如下

创建好的发动机转速信号

五、关联信号和报文

创建完信号和报文之后,需要将信号添加到报文中。再次点击左侧的“Message”。选择“Signal”,点击下方的“Add”添加信号,将上面创建的信号添加进来。

添加信号

六、设置报文发送类型和周期

双击打开新建的报文,选择“Attributes”窗口,根据通信协议来设定报文的发送类型和周期。

设置报文发送类型和周期

七、编辑通信矩阵

  1. 双击创建的Message(报文),选择“Layout”
  2. 点击“Add…”添加信号,根据通信协议规定的起始字节和起始位将信号添加进去

通信矩阵

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二土电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值