当前位置: 首页 > news >正文

【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向

点击返回「Autosar从入门到精通-实战篇」总目录

案例背景(共18页精讲):该篇博文将告诉您:
1)Autosar中,不同类型报文(App应用UDS/OBD诊断NM网络管理报文XCP测量标定)的信号数据流向
2)CAN DBC中,不同的Attribute属性决定不同类型报文(App应用UDS/OBD诊断NM网络管理报文XCP测量标定)。
3)TechnicalReference-DbcRules-Vector文件下载,见下方链接:

TechnicalReference-DbcRules-Vectorhttps://download.csdn.net/download/qfmzhu/87580682

目录

1 Autosar中不同类型报文(应用/诊断/网络管理/测量标定)的信号数据流向

1.1 普通APP应用报文信号数据流向

1.1.1 多路复用Multiplexer报文信号数据流向

1.2 UDS/OBD诊断报文信号数据流向

1.3 NM网络管理报文信号数据流向

1.4 XCP测量标定报文信号数据流向

2 CAN DBC中如何定义不同类型报文(应用/诊断/网络管理/测量标定)

3 如何制作一个Autosar工具能够识别的CAN DBC

3.1 节点的定义

3.2 普通App帧配置

3.2.1 普通App Tx发送帧配置

3.2.2 普通App Rx接收帧配置

3.3 UDS/OBD诊断帧配置

3.3.1 UDS/OBD诊断功能请求帧配置

3.3.2 UDS/OBD诊断物理请求帧配置

3.3.3 UDS/OBD诊断诊断响应帧配置

3.4 NM网络管理帧配置

3.4.1 NM网络管理发送帧配置

3.4.2 NM网络管理接收帧配置

3.5 XCP测量标定帧配置

3.5.1 XCP测量标定发送帧配置

3.5.2 XCP测量标定接收帧配置

3.6 附件:Autosar工具能够使用的Demo.dbc

4 摘录:Autosar工具中使用的CAN DBC常用属性

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

Vector工具链

CAN Matrix DBC

CAN Matrix Arxml

<--返回「实战篇」博文-总目录-->

<--返回「Autosar从入门到精通-实战篇」专栏主页-->

1 Autosar中不同类型报文(应用/诊断/网络管理/测量标定)的信号数据流向

经典CAN/CANFD通信为例,不同类型报文(应用/诊断/网络管理/测量标定)在Autosar BSW层中的信号数据流向,见图1-1。

图1-1

COM:Communication

DCM: Diagnostic Communication Manager

Ipdum: IPDU Multiplexer

PduR:PDU Router

Nm: Network Management

CanTp: CAN Transport Layer

CanIf: CAN Interface

1.1 普通APP应用报文信号数据流向

如图1-1所述:

Rx 接收一帧普通的APP应用报文信号数据流向:CAN Driver – > CanIf -- > PduR -- > Com

Tx 发送一帧普通的APP应用报文信号数据流向:Com – > PduR – > CanIf – > CAN Driver

1.1.1 多路复用Multiplexer报文信号数据流向

如图1-2所述:

Rx 接收一帧多路复用Multiplexer报文信号数据流向:CAN Driver – > CanIf -- > PduR -- > Ipdum – > PduR -- > Com

Tx 发送一帧多路复用Multiplexer报文信号数据流向:Com – > PduR – > Ipdum – > PduR -- > CanIf – > CAN Driver

图1-2

1.2 UDS/OBD诊断报文信号数据流向

如图1-1所述:

Rx 接收一帧UDS/OBD诊断报文信号数据流向:CAN Driver – > CanIf -- > CanTp -- > PduR -- > Dcm

Tx 发送一帧UDS/OBD诊断报文信号数据流向:Dcm – > PduR – > CanTp -- > CanIf – > CAN Driver

1.3 NM网络管理报文信号数据流向

如图1-3所述:

Rx 接收一帧NM网络管理信号数据流向:CAN Driver – > CanIf -- > CanNm -- > PduR -- > Com

Tx 发送一帧NM网络管理信号数据流向:Com – > PduR – > CanNm -- > CanIf – > CAN Driver

图1-3

1.4 XCP测量标定报文信号数据流向

如图1-1所述:

Rx 接收一帧XCP测量标定报文信号数据流向:CAN Driver – > CanIf -- > XCP

Tx 发送一帧XCP测量标定报文信号数据流向:XCP -- > CanIf – > CAN Driver

2 CAN DBC中如何定义不同类型报文(应用/诊断/网络管理/测量标定)

CAN DBC中,不同的Attribute属性定义,决定了不同类型的报文:APP应用报文UDS/OBD诊断报文NM网络管理报文XCP测量标定报文

Vector Davinci提供的《TechnicalReference_DbcRules_Vector.pdf》文档中,说明了CAN DBC文件中,不同类型报文AttributesGenMsgILSupport,DiagState,DiagRequest,DiagResponse,NmAsrMessage)定义,见下表。

Attribute属性

GenMsgILSupport

DiagState

DiagRequest

DiagResponse

NmAsrMessage

APP应用报文

Yes

No

No

No

No

UDS/OBD诊断报文

No

Yes/No

Yes/No

Yes/No

No

NM网络管理报文

No

No

No

No

Yes

XCP测量标定报文

No

No

No

No

No

3 如何制作一个Autosar工具能够识别的CAN DBC

制作一个完整的CAN DBC,过程可参考博文“【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBChttps://blog.csdn.net/qfmzhu/article/details/111403266”,第3.2~3.5章节摘录了message配置,需要重点关注的地方:发送节点,接收节点,属性设置差异。

Autosar工具链导入CAN DBC可参考博文:

【DaVinci Configurator专题】-2-将CAN 2.0或CANFD Matrix的Arxml/DBC文件导入到CFGhttps://blog.csdn.net/qfmzhu/article/details/115032771

3.1 节点的定义

在Network nodes中,至少定义4个节点,见图3-1:

  • 当前所在ECU的节点名称:默认为DCDC;
  • 定义若干个该ECU的接收节点:以VCU为例,这些节点中存在NM帧发送节点
  • 定义一个UDS/OBD诊断/测试仪节点:以Test为例。
  • 定义一个XCP测量标定节点:以MCD为例。

图3-1

3.2 普通App帧配置

3.2.1 普通App Tx发送帧配置

3.2.2 普通App Rx接收帧配置

3.3 UDS/OBD诊断帧配置

3.3.1 UDS/OBD诊断功能请求帧配置

3.3.2 UDS/OBD诊断物理请求帧配置

3.3.3 UDS/OBD诊断诊断响应帧配置

3.4 NM网络管理帧配置

3.4.1 NM网络管理发送帧配置

3.4.2 NM网络管理接收帧配置

3.5 XCP测量标定帧配置

3.5.1 XCP测量标定发送帧配置

3.5.2 XCP测量标定接收帧配置

3.6 附件:Autosar工具能够使用的Demo.dbc

将以下内容复制到一个txt文件中,并保存,接着将文件后缀txt用dbc替换,这样可以快速得到这个demo.dbc文件。

VERSION ""


NS_ : 
	NS_DESC_
	CM_
	BA_DEF_
	BA_
	VAL_
	CAT_DEF_
	CAT_
	FILTER
	BA_DEF_DEF_
	EV_DATA_
	ENVVAR_DATA_
	SGTYPE_
	SGTYPE_VAL_
	BA_DEF_SGTYPE_
	BA_SGTYPE_
	SIG_TYPE_REF_
	VAL_TABLE_
	SIG_GROUP_
	SIG_VALTYPE_
	SIGTYPE_VALTYPE_
	BO_TX_BU_
	BA_DEF_REL_
	BA_REL_
	BA_DEF_DEF_REL_
	BU_SG_REL_
	BU_EV_REL_
	BU_BO_REL_
	SG_MUL_VAL_

BS_:

BU_: MCD Tester VCU DCDC


BO_ 1809 XCP_Tx_Message: 8 DCDC
 SG_ DCDC_to_MCD_Resp : 7|64@0+ (1,0) [0|0] ""  MCD

BO_ 1808 XCP_Rx_Message: 8 MCD
 SG_ MCD_Req : 7|64@0+ (1,0) [0|0] ""  DCDC

BO_ 513 NM_Tx_Message: 8 DCDC
 SG_ NM_Tx_Message_Signal : 7|8@0+ (1,0) [0|0] ""  VCU

BO_ 512 NM_Rx_Message: 8 VCU
 SG_ NM_Rx_Message_Signal : 7|8@0+ (1,0) [0|0] ""  DCDC

BO_ 1794 Diag_Response: 8 DCDC
 SG_ DCDC_to_Tester_Phy_Resp : 7|64@0+ (1,0) [0|0] ""  Tester

BO_ 1793 Diag_Physical_Request: 8 Tester
 SG_ Tester_Phy_Req : 7|64@0+ (1,0) [0|0] ""  DCDC

BO_ 1792 Diag_Function_Request: 8 Tester
 SG_ Tester_Fun_Req : 7|64@0+ (1,0) [0|0] ""  DCDC

BO_ 256 APP_Rx_Message: 8 VCU
 SG_ APP_Rx_Message_Signal : 7|8@0+ (1,0) [0|0] ""  DCDC

BO_ 257 APP_Tx_Message: 8 DCDC
 SG_ APP_Tx_Message_Signal : 7|8@0+ (1,0) [0|0] ""  VCU



BA_DEF_ BU_  "NmStationAddress" INT 0 127;
BA_DEF_  "NmBaseAddress" HEX 1152 1279;
BA_DEF_  "Manufacturer" STRING ;
BA_DEF_ SG_  "GenSigInactiveValue" INT 0 2147483647;
BA_DEF_ SG_  "GenSigSendType" ENUM  "Cyclic","OnWrite","OnWriteWithRepetition","OnChange","OnChangeWithRepetition","IfActive","IfActiveWithRepetition","NoSigSendType","OnChangeAndIfActive","OnChangeAndIfActiveWithRepetition","vector_leerstring";
BA_DEF_ SG_  "GenSigStartValue" INT 0 2147483647;
BA_DEF_ BO_  "DiagRequest" ENUM  "no","yes";
BA_DEF_ BO_  "DiagResponse" ENUM  "no","yes";
BA_DEF_ BO_  "DiagState" ENUM  "no","yes";
BA_DEF_ BO_  "DiagUudtResponse" ENUM  "false","true";
BA_DEF_ BO_  "NmAsrMessage" ENUM  "No","Yes";
BA_DEF_ BO_  "GenMsgCycleTime" INT 0 65535;
BA_DEF_ BO_  "GenMsgCycleTimeFast" INT 0 65535;
BA_DEF_ BO_  "GenMsgDelayTime" INT 0 65535;
BA_DEF_ BO_  "GenMsgFastOnStart" INT 0 65535;
BA_DEF_ BO_  "GenMsgILSupport" ENUM  "no","yes";
BA_DEF_ BO_  "GenMsgNrOfRepetition" INT 0 999;
BA_DEF_ BO_  "GenMsgSendType" ENUM  "Cyclic","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","NotUsed","IfActive","NoMsgSendType";
BA_DEF_ BO_  "GenMsgStartDelayTime" INT 0 65535;
BA_DEF_ BO_  "TpTxIndex" INT 0 255;
BA_DEF_  "BusType" STRING ;
BA_DEF_ SG_  "GenSigTimeoutTime" INT 0 65535;
BA_DEF_DEF_  "NmStationAddress" 0;
BA_DEF_DEF_  "NmBaseAddress" 1152;
BA_DEF_DEF_  "Manufacturer" "Vector";
BA_DEF_DEF_  "GenSigInactiveValue" 0;
BA_DEF_DEF_  "GenSigSendType" "";
BA_DEF_DEF_  "GenSigStartValue" 0;
BA_DEF_DEF_  "DiagRequest" "";
BA_DEF_DEF_  "DiagResponse" "";
BA_DEF_DEF_  "DiagState" "";
BA_DEF_DEF_  "DiagUudtResponse" "";
BA_DEF_DEF_  "NmAsrMessage" "";
BA_DEF_DEF_  "GenMsgCycleTime" 0;
BA_DEF_DEF_  "GenMsgCycleTimeFast" 0;
BA_DEF_DEF_  "GenMsgDelayTime" 0;
BA_DEF_DEF_  "GenMsgFastOnStart" 0;
BA_DEF_DEF_  "GenMsgILSupport" "";
BA_DEF_DEF_  "GenMsgNrOfRepetition" 0;
BA_DEF_DEF_  "GenMsgSendType" "Cyclic";
BA_DEF_DEF_  "GenMsgStartDelayTime" 0;
BA_DEF_DEF_  "TpTxIndex" 0;
BA_DEF_DEF_  "BusType" "CAN";
BA_DEF_DEF_  "GenSigTimeoutTime" 0;
BA_ "DiagRequest" BO_ 1809 0;
BA_ "DiagResponse" BO_ 1809 0;
BA_ "DiagState" BO_ 1809 0;
BA_ "DiagUudtResponse" BO_ 1809 0;
BA_ "NmAsrMessage" BO_ 1809 0;
BA_ "GenMsgILSupport" BO_ 1809 0;
BA_ "GenMsgSendType" BO_ 1809 8;
BA_ "DiagRequest" BO_ 1808 0;
BA_ "DiagResponse" BO_ 1808 0;
BA_ "DiagState" BO_ 1808 0;
BA_ "DiagUudtResponse" BO_ 1808 0;
BA_ "NmAsrMessage" BO_ 1808 0;
BA_ "GenMsgILSupport" BO_ 1808 0;
BA_ "GenMsgSendType" BO_ 1808 8;
BA_ "DiagRequest" BO_ 513 0;
BA_ "DiagResponse" BO_ 513 0;
BA_ "DiagState" BO_ 513 0;
BA_ "DiagUudtResponse" BO_ 513 0;
BA_ "NmAsrMessage" BO_ 513 1;
BA_ "GenMsgCycleTime" BO_ 513 200;
BA_ "GenMsgILSupport" BO_ 513 0;
BA_ "GenMsgSendType" BO_ 513 0;
BA_ "DiagRequest" BO_ 512 0;
BA_ "DiagResponse" BO_ 512 0;
BA_ "DiagState" BO_ 512 0;
BA_ "DiagUudtResponse" BO_ 512 0;
BA_ "NmAsrMessage" BO_ 512 1;
BA_ "GenMsgCycleTime" BO_ 512 200;
BA_ "GenMsgILSupport" BO_ 512 0;
BA_ "GenMsgSendType" BO_ 512 0;
BA_ "DiagRequest" BO_ 1794 0;
BA_ "DiagResponse" BO_ 1794 1;
BA_ "DiagState" BO_ 1794 0;
BA_ "DiagUudtResponse" BO_ 1794 1;
BA_ "NmAsrMessage" BO_ 1794 0;
BA_ "GenMsgILSupport" BO_ 1794 0;
BA_ "GenMsgSendType" BO_ 1794 8;
BA_ "DiagRequest" BO_ 1793 1;
BA_ "DiagResponse" BO_ 1793 0;
BA_ "DiagState" BO_ 1793 0;
BA_ "DiagUudtResponse" BO_ 1793 1;
BA_ "NmAsrMessage" BO_ 1793 0;
BA_ "GenMsgILSupport" BO_ 1793 0;
BA_ "GenMsgSendType" BO_ 1793 8;
BA_ "DiagRequest" BO_ 1792 0;
BA_ "DiagResponse" BO_ 1792 0;
BA_ "DiagState" BO_ 1792 1;
BA_ "DiagUudtResponse" BO_ 1792 1;
BA_ "NmAsrMessage" BO_ 1792 0;
BA_ "GenMsgILSupport" BO_ 1792 0;
BA_ "GenMsgSendType" BO_ 1792 8;
BA_ "DiagRequest" BO_ 256 0;
BA_ "DiagResponse" BO_ 256 0;
BA_ "DiagState" BO_ 256 0;
BA_ "DiagUudtResponse" BO_ 256 0;
BA_ "NmAsrMessage" BO_ 256 0;
BA_ "GenMsgCycleTime" BO_ 256 100;
BA_ "GenMsgILSupport" BO_ 256 1;
BA_ "GenMsgSendType" BO_ 256 0;
BA_ "GenMsgCycleTime" BO_ 257 100;
BA_ "DiagRequest" BO_ 257 0;
BA_ "DiagResponse" BO_ 257 0;
BA_ "DiagState" BO_ 257 0;
BA_ "DiagUudtResponse" BO_ 257 0;
BA_ "NmAsrMessage" BO_ 257 0;
BA_ "GenMsgCycleTimeFast" BO_ 257 20;
BA_ "GenMsgDelayTime" BO_ 257 10;
BA_ "GenMsgILSupport" BO_ 257 1;
BA_ "GenMsgNrOfRepetition" BO_ 257 3;
BA_ "GenMsgSendType" BO_ 257 7;
BA_ "GenMsgStartDelayTime" BO_ 257 10;

4 摘录:Autosar工具中使用的CAN DBC常用属性

Attribute Name

Object Type

Value Type

Values and Ranges

(Bold = default)

Description

Manufacturer

Network

String

Vector

表示OEM。value必须是 " Vector "。

BusType

Network

String

CAN

CAN FD

定义CAN-2.0和CAN-FD网络。如果至少有一个CAN-FD报文,则必须设置为 "CAN FD"。

VFrameFormat

Message

Enum

CAN Standard

CAN Extended

CAN FD Standard

CAN FD Extended

表示CAN报文的种类。这个属性对每个报文都是可用的,在属性定义中没有声明。它的显示文本是 "ID-Format "或 "Type"。

GenMsgILSupport

Message

Enum

No: 0

Yes: 1

表示一个消息将由COM处理。如果选择 "yes",该信息将由COM处理,否则不处理。

GenMsgSendType

Message

Enum

Cyclic: 0,

NotUsed,

NotUsed,

NotUsed,

NotUsed,

NotUsed,

NotUsed,

NotUsed,

NoMsgSendType: 8

指定I-PDU的Tx行为。可以与任何类型的GenSigSendType相结合。

GenSigSendType

Signal

Enum

Cyclic: 0,

OnWrite: 1,

OnWriteWithRepetition: 2,

OnChange: 3,

OnChangeWithRepetition: 4, NotUsed,

NotUsed,

NoSigSendType: 7

指定一个信号的Tx行为。OnChange仅支持<=4 Byte的信号。

请注意:带重复的发送类型和不带重复的发送类型的组合将导致信息在任何时候都是带重复的发送。

GenMsgCycleTime

Message

Integer

0..65535

每次循环发送信息之间的时间,单位是毫秒。

GenMsgCycleTimeFast

Message

Integer

0..65535

如果至少有一个IfActiveSignal的默认值不同,则每次循环发送消息之间的时间(ms)。

也适用于有重复的消息(即GenMsgNrOfRepetition > 0)。每次重复的时间间隔。

GenSigStartValue

Signal

Integer

Float

0..2147483647

这个值是信号的默认值。

字符串值类型可以表示十六进制和整数值。

GenSigInactiveValue

Signal

Integer

0..2147483647

表示信号的无效值。

GenMsgDelayTime

Message

Integer

0..65535

这是具有相同标识符的不同信息发送之间的最小时间,单位是ms。

GenMsgStartDelayTime

Message

Integer

0..65535

这定义了Com_IpduGroupStart和这个I-PDU的循环部分的第一次发送之间的时间,单位是ms。

GenMsgNrOfRepetition

Message

Integer

0..255

在一个初始发送请求之后的发送重复次数。重复之间的时间必须使用dbc属性GenMsgCycleTimeFast来定义。

GenSigTimeoutTime_<Ecu>

Signal

Integer

0..65535

用于特定节点收到的该信号的超时时间(ms)。

如果为一个消息配置了不同的GenSigTimeoutTime值,并且没有使用更新位,那么最低的超时时间(最强的定义)被用于超时监测。

必须为每个接收此信号的ECU提供一个专门的属性定义(GenSigTimeoutTime_<Ecu>)。

NmAsrMessage

Message

Enum

No = 0,

Yes = 1

该属性定义了相应的消息是否是AUTOSAR NM消息

DiagState

Message

Enum

No = 0,

Yes = 1

设置为 "yes",用于

> Functional (UDS) request

CanTp将使用Normal addressing。

DiagRequest

Message

Enum

No = 0,

Yes = 1

设置为 "yes",用于

> Physical Request

CanTp将使用Normal addressing。

DiagResponse

Message

Enum

No = 0,

Yes = 1

设置为 "是",用于。

> Physical Response

CanTp将使用Normal addressing。

<--返回「实战篇」博文-总目录-->

<--返回「Autosar从入门到精通-实战篇」专栏主页-->

<--返回「个人博客」首页-->

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注CSDN博客“汽车电子助手”,做您的好助手。

相关文章:

  • 十大经典排序算法(上)
  • 我的 System Verilog 学习记录(10)
  • 今年还能学java么?
  • 网易C++实习一面
  • 最适合游戏开发的语言是什么?
  • 面试阿里测开岗失败后,被面试官在朋友圈吐槽了......
  • 如何从 MySQL 读取 100w 数据进行处理
  • 如果你持续大量的教坏ChatGPT,它确实会变坏
  • 学计算机选择什么编程语言好一些?
  • 成本降低90%,OpenAI正式开放ChαtGΡΤ
  • 计算机组成原理实验一(完整)
  • 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.60】损失函数改进为wiou
  • 元宇宙、区块链 通俗易懂
  • 面试官问 : ArrayList 不是线程安全的,为什么 ?(看完这篇,以后反问面试官)
  • node多版本控制
  • 结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)
  • Java中的二叉树
  • 01背包问题c++
  • 我在字节当主管:百次面试结果,总结一个刷掉99%求职者的问题!
  • python不要再使用while死循环,使用定时器代替效果更佳!