【AUTOSAR-CP-CAN-1】DataBase for Can——深入理解 DBC 通信矩阵

6 篇文章 0 订阅 ¥119.90 ¥299.90

0. 简介

DBC(CAN DataBase Container)是一种用于描述 Controller Area Network(CAN)通信协议的文件格式,它是行业内广泛认可的标准格式。DBC 文件是用 ASCII 码表示的文本文件,其中包含了与 CAN 通信相关的信息,包括 CAN 消息、信号、节点、周期性消息等。以下是对DBC文件的粗略介绍:(关键核心内容为黑体)

  1. CAN 消息定义:DBC 文件中定义了每个CAN消息的ID、周期、发送节点等信息。消息ID是CAN消息的唯一标识符,用于区分不同的CAN消息。周期是指CAN消息的发送周期,用于描述CAN消息的发送频率。发送节点是指发送该CAN消息的ECU节点。
  2. CAN 信号定义:DBC 文件中还定义了每个CAN消息中包含的信号。信号是CAN消息的数据部分,表示特定的物理量或状态。对于每个信号,DBC文件中定义了它的名称、位数、数据类型、单位、缩放因子等信息,以及信号在CAN消息中的起始位和结束位。
  3. 节点定义:DBC 文件中描述了参与CAN通信的节点,即ECU(Electronic Control Unit)。每个节点都有唯一的名称和地址,用于标识不同的ECU。
  4. 通信矩阵:DBC 文件就是一个通信矩阵。描述了不同节点之间的通信关系。它指定了哪个节点可以发送哪个CAN消息,以及哪个节点可以接收哪个CAN消息。
  5. 周期性消息和定时触发消息:DBC 文件中可以定义周期性消息和定时触发消息。周期性消息是按照一定周期发送的消息,而定时触发消息是在特定事件触发时发送的消息。
  6. 协议版本:DBC 文件中还包含了对文件本身的描述,如文件格式版本、协议版本等信息。

消息、信号、节点的定义基本组成了整个通信矩阵。换言之,这就是 DBC 文件的核心。即,DBC 存在的意义就是为了描述各个节点之间的通信报文及其具体的信号。

DBC 文件是一种非常灵活和可扩展的文件格式,它使得开发人员可以轻松地组织和管理与CAN通信相关的信息,并在不同的CAN通信工具和软件之间进行无缝的集成和交换。由于其广泛应用和行业认可,DBC 文件已成为CAN通信协议描述的主流文件格式,被广泛用于汽车电子系统的开发、测试和集成过程。

行业内广泛使用 DBC(CAN DataBase Container)文件格式。 DBC 文件格式是由 Vector Informatik GmbH(维克托信息技术有限公司)创建和推广的。Vector 是一家德国的汽车电子技术公司,专注于开发和提供汽车电子系统的工程工具和解决方案。他们在汽车领域拥有广泛的经验,并在 AUTOSAR(Automotive Open System Architecture)标准制定过程中发挥了重要作用。

DBC 文件格式是行业内广泛认可和采用的标准格式,用于描述和存储与 CAN 通信相关的信息。它包含了 CAN 消息和信号的定义、布局、周期等信息,以及与 CAN 通信相关的节点和网络配置。DBC 文件是一种文本文件,使用 ASCII 码表示,这使得它易于编辑和分享。

由于 DBC 文件格式的广泛认可和行业应用,几乎所有主流的 CAN 通信工具和软件都支持 DBC 文件的导入和导出。它成为了CAN网络开发和集成过程中的标准文件格式,使得开发人员能够方便地组织和管理与CAN通信相关的信息,实现数据解析和配置,并在不同的工具和系统中进行无缝的集成和交换。

1. 基本理解

1.1 DBC文件的结构

DBC文件是一个用ASCII码表示的文本文件,其内容按照一定规则进行组织。一个典型的DBC文件由多个部分组成,每个部分都以关键字开始,后面跟着相应的定义信息。以下是一个简化的DBC文件结构示例:

VERSION "1.0"
NS_ :
BU_: ECU1 ECU2 ECU3 ;
BO_ 1234 CANMessage1: 8 ECU1
 SG_ Signal1 : 0|16@1+ (1,-1) [0|100] "V" ECU1 ;
BO_ 5678 CANMessage2: 4 ECU2
 SG_ Signal2 : 0|8@1+ (0,1) [0|100] "A" ECU2 ;
CM_ SG_ 1 "Signal1" ECU1;
CM_ SG_ 2 "Signal2" ECU2;

其中,VERSION 行表示DBC文件的版本信息。NS_ 行用于定义命名空间,BU_ 行定义了参与CAN通信的节点(ECU)。BO_ 行定义了一个CAN消息,包括CAN消息的ID、长度和发送节点。SG_ 行定义了一个CAN消息中的信号,包括信号的名称、起始位、长度、数据类型等。CM_ 行用于指定信号与节点的关联关系。

1.2 CAN消息的定义

在DBC文件中,CAN消息是通信的基本单位。每个CAN消息由一个消息ID(Message ID)唯一标识,用于区分不同的CAN消息。CAN消息还包含了消息的长度、发送节点等信息。以下是一个CAN消息的定义示例:

BO_ 1234 CANMessage1: 8 ECU1

其中,BO_ 是CAN消息定义的关键字,1234是CAN消息的ID,CANMessage1是消息的名称,8表示消息的长度(单位是字节),ECU1是发送该CAN消息的节点。

1.3 信号的定义

CAN消息中的信号是消息的数据部分,表示特定的物理量或状态。每个信号由一个名称唯一标识,还包括了信号的起始位、长度、数据类型、单位等信息。以下是一个信号的定义示例:

 SG_ Signal1 : 0|16@1+ (1,-1) [0|100] "V" ECU1 ;

其中,SG_ 是信号定义的关键字,Signal1是信号的名称,0是信号的起始位,16是信号的长度(单位是位),1是信号的因子(即缩放因子),-1是信号的偏移量,[0|100]是信号的物理范围,"V"是信号的单位,ECU1是发送该信号的节点。

1.4 节点和通信矩阵

在DBC文件中,节点表示参与CAN通信的ECU(Electronic Control Unit)。可以使用BU_关键字定义节点,并将节点与相应的CAN消息和信号进行关联。通信矩阵描述了不同节点之间的通信关系。以下是节点和通信矩阵的定义示例:

BU_: ECU1 ECU2 ECU3 ;
CM_ SG_ 1 "Signal1" ECU1;
CM_ SG_ 2 "Signal2" ECU2;

其中,BU_ 是定义节点的关键字,ECU1、ECU2和ECU3是节点的名称。CM_ 是定义通信矩阵的关键字,SG_ 1表示关联信号Signal1,"Signal1"是信号的名称,ECU1是发送该信号的节点。

1.5 周期性消息和定时触发消息

DBC文件中可以定义周期性消息和定时触发消息。周期性消息是按照一定周期发送的消息,而定时触发消息是在特定事件触发时发送的消息。以下是周期性消息和定时触发消息的定义示例:

BA_DEF_ SG_ "GenMsgCycleTime" INT 0 65535;
BA_ "GenMsgCycleTime" BO_ 1234 100;
BA_DEF_ SG_ "GenMsgStartDelayTime" INT 0 65535;
BA_ "GenMsgStartDelayTime" BO_ 5678 500;

其中,BA_DEF_ 是定义属性的关键字,SG_ "GenMsgCycleTime"是定义信号GenMsgCycleTime的周期性属性,INT表示数据类型为整数,0和65535分别是属性的最小值和最大值。BA_ 是定义属性关联的关键字,"GenMsgCycleTime"是信号GenMsgCycleTime的周期性属性名称,BO_ 1234 100表示与消息ID为1234的消息关联,并设置周期为100毫秒。

1.6 dbc 的使用

除了手动编辑DBC文件外,还有一些工具可以将DBC文件转换为JSON格式(dbc2json),或者将JSON文件转换为DBC格式(json2dbc)。JSON格式可以更便于处理和解析,特别适用于与其他工具和系统的集成。

主流的配置工具,Vector 的导入 DBC 后常常和 ARXML 有关系。在Vector的工具中,DBC(CAN DataBase Container)和ARXML(AUTOSAR XML)文件都与汽车电子系统中的通信协议和通信配置有关,但它们服务于不同的领域和标准。

  1. DBC 文件:DBC文件是Vector CANoe和CANalyzer等CAN网络开发和分析工具中用于描述Controller Area Network(CAN)通信协议的文件格式。它主要用于描述CAN消息、信号、节点、通信矩阵等信息,用于CAN通信网络的开发、测试和分析。DBC文件广泛应用于CAN网络的配置和数据解析,使得开发人员能够更方便地进行CAN通信的开发和测试。
  2. ARXML 文件:ARXML文件是Vector CANdelaStudio和CANdelaFlash等AUTOSAR开发工具中使用的文件格式。AUTOSAR(Automotive Open System Architecture)是一种开放式的汽车软件架构标准,旨在提高汽车电子系统的可重用性和可扩展性。ARXML文件用于描述AUTOSAR软件组件(SWC)的配置和通信协议,其中包括ECU配置、网络描述、通信矩阵、接口描述等信息。ARXML文件以XML格式表示,它的结构更加复杂,可以包含更多关于AUTOSAR软件架构的信息。

区别和联系:

DBC和ARXML文件都涉及到汽车电子系统的通信配置,但它们在不同的领域和标准中使用。DBC文件主要用于描述CAN通信协议,适用于传统的CAN网络开发和测试。而ARXML文件则是AUTOSAR标准下的一部分,用于描述AUTOSAR架构中的软件组件和通信配置。在AUTOSAR开发中,ARXML文件描述了ECU的配置、软件组件的接口和通信,可以用于生成AUTOSAR应用软件并支持其配置和集成。

虽然DBC和ARXML文件在不同的工具和标准中使用,但它们在整个汽车电子开发过程中共同发挥着重要的作用。DBC文件用于传统CAN网络的开发和测试,而ARXML文件用于支持AUTOSAR架构下的软件组件配置和通信配置,促进了汽车电子系统的标准化和可重用性。

1.7 总结

DBC文件是一种用于描述CAN通信协议的行业标准文件格式,它提供了对CAN消息、信号、节点、通信矩阵等信息的定义和管理。通过DBC文件,开发人员可以更高效地组织和管理CAN通信相关的信息,实现数据解析和配置,并在不同的CAN通信工具和软件之间进行无缝的集成和交换。它是实现CAN通信系统开发、测试和集成的重要工具,为汽车电子系统的开发和应用带来了便利与效率。

2. 更多细节

2.1 NS_

版本与新
波特率 BS_:[baudrate:BTR1,BTR2]

2.2 BU_ 网络节点定义

BU_表示网络节点 BU_:Nodename1 Nodename2 Nodename3 ……

2.3 BO_ 报文帧定义

BO:CANId MessageName: MessageSize Transmitter

  • MessageSize 表示该报文数据域字节数
  • Transmitter 发送该报文的网络节点, 如果该报文没有指定发送节点, 则该值需设置为” Vector__XXX”

2.4 SG_ Signal 信号定义

SG_ SignalName : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver

  • StartBit、 SignalSize 信号起始位、信号长度
  • ByteOrder 表示信号的字节顺序: 0代表Motorola格式, 1代表Intel格式
    • Intel\小端 编码: 信号在一个字节内, msb 在字节高位, lsb 在字节低位; 跨字节时, msb 在高字节高位,lsb 在低字节低位, 顺序的
    • Motorola\大端 编码: 信号在一个字节内, msb 在字节高位, lsb 在字节低位; 跨字节时, msb 在低字节高位,lsb 在高字节低位,逆序的
  • ValueType 表示该信号的数值类型: +表示无符号数, -表示有符号数
  • Factor 表示因子, Offset 表示偏移量; 这两个值于该信号的原始值与物理值之间的转换。转换: 物理值=原始值*因子+偏移量;
  • Min|Max 表示该信号的最小值和最大值, 即指定了该信号值的范围; 这两个值为double类型
  • Unit 表示该信号的单位, 为字符串类型
  • Receiver 表示该信号的接收节点; 若该信号没有指定的接收节点, 则必须设置为“Vector__XXX”*

2.4.1 编码补充-Bit Numbering

对于一个十进制数8,其二进制1000,

  • lsb0 编号:最低有效位 lsb 地址为 0 开始的编码,即 msb first,对于二进制数 1000,编号为 bit3 bit2 bit1 bit0
  • msb0 编号:最高有效位 msb 地址为 0 开始的编码,即 lsb first,对于二进制数 1000,编号为 bit0 bit1 bit2 bit3

lsb0
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
msb0
bit0 bit1 bit2 bit3 bit4 bit5 bit6 bit7

Can DBC 和 Autosar ARXML,它们都采用的是 lsb0 的 bit numbering。

2.4.2 编码补充-Endianness

大小端编码都不影响一个字节内的数据位置,改变的是跨字节时数据的前后排列关系。

字节内始终采用 lsb0,即,信号高有效位在字节内的高位, 信号低有效位在字节内的低位。

对于数据 0x1234,二进制为 0001 0010 0011 0100,高字节为 0x12,低字节为 0x34。msb 为 0001 的首个 0, lsb 为 0100 的最后一个 0。

Intel\小端: 从 lsb 开始延地址增加方向顺序排列,直到排到 msb
在这里插入图片描述

Motorola\大端:在 msb0 视图下,从 msb 开始延地址增加方向顺序排列,直到排到 lsb
在这里插入图片描述

2.4.3 lsb0 + motorola 计算公式

bit 从 lsb0 转换到 msb0(或 msb0 转换到 lsb0):b = b - (b % 8) + 7 - (b % 8)

  1. b - (b % 8) 相当于只取 b 的 3 位之前的数字,得到 b 的字节地址
  2. 7 - (b % 8) 相当于 b 的后 3 位和 7 做异或运算,因为 7 是3位二进制数中最大的数,设属于 [0, 7] 的任何数为 x,7 - x = y,因为 7 是全 1,所以 y 和 x 一定没有重合的 1,所以 x ^ y = 7,因为 x + y = 7,因此这步可以成为异或操作。在 8 位的情况下,每个位的编码 0 - 7,lsb0 和 msb0 标号的同一个位置,相加永远为 7。整步可以优化为 b ^ 0x7u。
  3. 相加得到结果
msb0时,从 lsb 转换到 msb:

b = b + 1 - length

msb0时,从 msb 转换到 lsb:

b = b + length - 1

从 lsb0 的 msb 转换到 lsb0 的 lsb:

b = b - (b % 8) + 7 - (b % 8)
b = b + length - 1
b = b - (b % 8) + 7 - (b % 8)

2.4.4 lsb0 + intel 计算公式

lsb -> msb:b = b + Length - 1
msb -> lsb:b = b - (Length - 1)

2.5 CM_ 注解、注释

CM_ Object CANId/NodeName SignalName “Comment”

  • Object 表示注解的对象,可以是节点 BU_ 报文 BO_ 消息 SG_
  • CANId/NodeName 表示进行注解的对象, 若前面的对象类型是信号或者报文, 则这里的值应为报文的ID(10进制数表示); 若前面的对象类型为节点, 则这里的值应为节点的名字;
  • SignalName 报文ID 后跟信号名字,表示对信号的注释
  • “Comment” 注释内容

2.6 BA_ 属性定义

BA_DEF_ 对报文、信号、节点的属性定义

  • BA_DEF_ Object AttributeName ValueType Min Max;
  • BA_DEF_DEF_ AttributeName DefaultValue; 声明属性的默认值

BA 感觉像是属性声明

  • BA AttributeName Object [CANId] [NodeName|SignalName|env_var_name] AttributeValue

2.7 VAL_ 信号数值表的定义

VAL_ CANId SignalName N “DefineN” …… 0 “Define0”
该信号的有效值分别用什么符号表示, “DefineN” 代表数值 N

2.8 DBC 可以覆盖的 COM 基础功能

在这里插入图片描述

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Autosar-CAN NM是一种用于网络管理的通信协议,旨在实现CAN总线系统的高效管理和控制。Autosar-CAN NM支持多个节点共享相同的CAN总线,通过提供网络管理功能来确保节点之间的通信可靠性和稳定性。 Autosar-CAN NM的主要功能包括节点的电源管理、通信总线状态的监控和管理、节点之间的网络通信和报文的传输。首先,节点的电源管理功能包括监测节点的供电状态和能力,并根据需要进行电源管理,以确保节点之间的正常通信。其次,通过监控和管理CAN总线的状态,Autosar-CAN NM可以检测并处理潜在的通信故障,如总线冲突和错误帧。此外,还可以对总线负载进行监控和管理,以避免总线过载和通信延迟。 在节点之间的网络通信方面,Autosar-CAN NM通过提供网络管理帧(用于节点之间的通信)和网络管理报文(用于各个节点之间传输数据)来实现。网络管理帧用于在节点之间传递通信状态和配置信息,并支持节点之间的网络拓扑管理。网络管理报文是主要用于节点之间的数据传输和通信,通过CAN总线进行传输。这样可以确保节点之间的数据通信具有高可靠性和实时性。 总的来说,Autosar-CAN NM提供了一种有效的方法来管理和控制CAN总线系统中节点之间的通信。它通过电源管理、总线监控和状态管理、网络通信和报文传输等功能,实现了节点之间的可靠通信。这不仅提高了CAN总线系统的性能和稳定性,还为制造商和开发人员提供了一种有效的方法来设计和管理CAN网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

肥羊也

感谢给肥羊投喂!

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

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

打赏作者

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

抵扣说明:

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

余额充值