实验一 CAN总线通讯协议实验

 

【实验目的】

       1、了解CAN总线信号矩阵的概念,学会使用CANdb Editor编辑器软件。

       2、了解汽车故障诊断协议UDS的协议结构,掌握UDS协议的基本使用方法。

 

【实验性质】

验证性实验。

 

【实验要求】

       1、CANdb Editor软件

       2、统一诊断服务协议UDS

 

【实验内容】

       1、学习CANdb Editor软件的使用方法,创建、编辑CAN数据库文件。

       2、了解UDS协议结构和通讯流程,进行简单的汽车故障诊断操作。

      

【实验步骤】

       1、CAN信号矩阵与CANdb Editor的使用

       CAN总线实际应用中经常使用通信信号矩阵(Excel表格形式)来描述车辆网络中节点、消息与信号,可以直观地查看CAN网络数据通讯情况,各节点ECU必须遵循该通讯矩阵才能完成信息的交互和共享。

25b740aeceb944f980c838e1f8083878.png

图1 CANdb Editor软件界面

       (1)CAN网络的基本概念:

  1. 节点:                       一个汽车控制器作为一个网络节点                             
  2. 消息:                  一个控制器会发出多种不同ID的报文,每个帧报文称为消息                                  
  3. 信号:                      一帧报文长度1-8 byte,大多为8byte,即64bit,规定不同bit位代表不同信号,那么一帧报文可包含多个信号                              

(2)通信矩阵基本内容包括

信号名称 信号长度 精度/偏移量 物理值范围 起始字节 起始位 信号类型

(3)报文基本信息由:  报文名称       ID      报文类型      报文周期        长度    组成。

(报文名称、ID标识、报文类型、报文周期、长度)

(4)DBC(Database Can)是vector公司制定的用于描述CAN网络中节点间数据通讯的一种文件,即根据CAN通讯协议制作的一份用于解析CAN报文数据的文件。DBC文件描述的信息包含: 1、版本与新符号
2、波特率定义
3、网络节点的定义
4、报文帧的定义
5、信号的定义
6、注解部分
7、特征部分
8、数值表部分。

报文信息、信号信息、路由信息)

(5)每个信号去填充64位bit时,两种填充方式:

  1. Intel格式(低字节在前):以起始位为原点,自下而上填充
  2. Motorola格式(高字节在前):以起始位为原点,自上而下填充

指出下图分别属于何种填充方式:

0cad116dee9b492e8d6d2cbe1c985b12.png

图2     Intel    格式

7714033336484c2e9c582b8a2eb0fcb4.png

图3       Motorola   格式

       (6)从你所制作DBC文件中选取一个消息(报文)并截取其信号布局图(layout)放在下面空白处。

7ae600b7fc704591a9f7ae9dbb9d119b.png

图5  DBC报文:     0x0  (填写ID)

       2、UDS协议及其使用

UDS(Unified Diagnostic Services)协议即统一诊断服务,是ISO-14229定义的基于OSI模型中应用层的协议,是诊断服务的规范化标准,属于应用层协议,可在不同的汽车总线(如CAN, LIN, FlexRay, Ethernet和K-line等)上实现。

UDS诊断通信的过程:(在表格空白处书写)

0x0

4c62b39e15f74cef82a650c092adedae.png

Diagnostic request的格式可以分为两类:一类是拥有sub-function,另一类是没有sub-function,如图所示:(在表格空白处绘制)

e9a71f2a0ebf4d16943e3ecf8bd42c4f.png

 

 1045c1130161449fb6a57883b6d0436c.png

带sub-function的请求报文

不带sub-function的请求报文

图6 两种诊断请求报文格式

 

参照UDS协议,完成TesterPresent请求、应答报文:

TesterPresent请求:           req:10 01                    

TesterPresent应答:           rep:50 01                    

 

TesterPresent请求:           req:22  F020                    

TesterPresent应答:           rep:62 F0 20 00 11 22 33 44 55 66                  

猜你喜欢

转载自blog.csdn.net/m0_59054762/article/details/129723969