Sunday, 12 April 2020 00:19

UDS网络层/TP层(ISO 15765-2)的解读 Featured

本文是对 ISO 15765-2-2011 协议的一些解读。

TP层存在意义

UDS网络层,又称为TP层(Transport Protocol Layer)。其存在的目的是为了解决ISO 11898协议中定义的经典CAN数据链路层与ISO 14229协议中定义的应用层,彼此之间数据长度不统一的问题。经典CAN数据链路层最大能够支持8个字节,但ISO 14229并不仅仅是为了CAN总线设计的,最大容量达到4095个字节。比如VIN码是17个字节,CAN总线必然需要传递3帧才能传完VIN码,那么如何科学、快捷、安全地将多个字节通过经典CAN来进行传输,就成了一个需要解决的问题。ISO 15765-2 协议由此诞生。

15765-2作为车辆诊断通信的一个组成部分,规范了“传输协议和网络层服务”。

看下目录:

0 前言与简介

1 适用范围

2 规范性参考文献

3 术语、定义和缩写术语

4 约定

5 文档概述

6 网络层概述

7 网络层服务

8 传输层协议(重点,难点)

9 数据链路层的使用

0 前言与简介

ISO 15765-2的第一版为ISO 15765-2:2004。ISO 15765的中文含义为道路车辆 - 基于CAN网络的诊断通信(DoCAN),整套协议由以下部分组成:

- 第一部分:一般信息和用例定义

- 第2部分:传输协议和网络层服务

- 第3部分:统一诊断服务的实施(CAN上的UDS )

- 第4部分:与排放有关的系统的要求

1 适用范围

ISO15765-2 可以但不限于与ISO 14229-1和ISO 15031-5一起使用,它与车载网络的大多数其他通信需求相兼容。

2 规范性参考文献

ISO / IEC 7498-1,信息技术 - 开放系统互连 - 基本参考模型:基本模型

ISO 11898-1,道路车辆 - 控制器局域网(CAN) - 第1部分:数据链路层和物理信令

3 术语,定义和缩写术语

TP 01
TP 02

6 网络层概述

网络层最主要的目的就是把数据转换成能适应CAN总线规范的单一数据帧从而进行传输。如果将要传输的报文长度超过了CAN数据帧的长度,则需要将报文信息进行拆分后传输,每次至多可以传输4095个字节长度的报文。

所有的网络层服务都具有相同的通用结构。为了定义这种服务,需要定义三种类型的服务原语:

A. 请求服务(Request):用于向网络层传递控制报文信息及要发送的数据,应用于更高层或应用层。如tester向ECU发出数据。

B. 指示服务(Indication):用于向更高层或应用层传递状态信息及接收到的数据,应用于网络层。如ECU收到了tester的数据,传至应用层。

具体说来,Indication前端应该执行的是底层传入数据的处理函数,即读取PDU信息,这一帧具体是SF、FC、CF还是FF。若满足条件,继续向上,即应用层传递。

C. 确认服务(Confirm):被网络层使用,用于向更高层或应用层传递状态信息。如tester收到了ECU方面的数据。

具体说来,Confirm和Indication很像的是都是从网络层向应用层传递信息,有何区别呢?

在代码的处理中,Confirm的前端应向底层外发Tx数据或超时处理函数,反馈的信息不需要包含数据。而Indication传递的信息则分为两种,一种包含真实数据,另一种不包含。

7 网络层服务

建设中。。。。。。

8 传输层协议

这一章一开始就重申了TP层的意义之所在:

  1. 使收发的数据帧所包含的字节总数,扩容到4095个字节。
  2. 不管发送或接收是成功或是出错,都需要上报给应用层。

8.4 网络层协议数据单元 N_PDU

网络层协议数据单元(N_PDU,Network_Protocol Data Unit)包含N_AI,N_PCI,N_Data。即地址信息协议控制信息数据

注:这里的N_PCI全称为Protocol Control Information。

TP 03

网络层协议数据单元(N_PDU)有四种类型,即单帧(SF)、首帧(FF)、连续帧(CF)、流控制帧(FC),用于建立对等实体间的通信。

8.5 N_PCI

网络层对于这四种类型的数据单元是通过协议控制信息(N_PCI,Protocol Control Information)进行区分的。每一个N_PDU都只有一个N_PCI。

也就是说,对于CAN诊断来说,我们完全可以通过识别每条CAN帧数据域的首个字节来确定它属于四种类型中的哪类。

N_PCI是TP层最为核心的信息,是TP层区别于其他CAN总线抽象协议的、最为显著的特征。

以下说明仅以乘用车常用的常规寻址举例。

对于TP层来说,我们可以把报文分为单帧和多帧,单帧只有一种N_PCI,即单帧;多帧有三种N_PCI,即首帧、流控制帧、连续帧。代码实现中,主要的工作其实就在多帧的处理和对超时错误(Timeout)的处理上。

0X 单帧(SF):首个字节为0(4bit)+ Data Length(4bit),控制信息占用1个字节

举例:Data 02 10 02 55 55 55 55 55,02表示接收方应知晓,这一个单帧只有2个有效字节。后续的字节是自动填充的无效字节。

TP 04
单帧PCI通常仅占用1个字节,其他是数据,所以可以后面可以跟着最多7个字节的数据

1X XX 首帧(FF):前两个字节为1(4bit)+ Data Length(12bit),控制信息共占用2个字节。

举例:Data 10 14 2E F1 90 01 02 03,0x014表示,接收方应知晓,这一个多帧组合共有20个字节。

TP 05
首帧可以携带一个多帧报文的头部6个字节数据

3X 流控制帧(简称流控帧,FC):前三个字节为3(4bit)+流状态(FS,4bit)+块大小(BS,8bit)+最小间隔时间(STmin,8bit),控制信息共占用三个字节。

举例:Data 30 00 14 AA AA AA AA AA,多帧发送方应知晓,这是一个流控帧,允许你方继续发送,CF数量无限制,上一个连续帧的确认接收(ACK)到新的连续帧开始发出的最小间隔时间为20ms。

Flow State 流状态:0为继续发送,Continue To Send(CTS),1为Wait(WT),2为Overflow(OVFLW)。

TP 06
流控帧仅有3个字节的控制信息,无数据字节
TP 07
STmin含义的解读

间隔最短时长(STmin)值的含义如下。

TP 08

2X 连续帧(CF):第一个字节为2+SN(最多16个SN,溢出后从0开始重新计数),控制信息占用1个字节。

我们通常记首帧为0x20,之后的第一个连续帧自然是0x21,之后一直到0x2F,下一个是0x20,循环。

TP 09
一个连续帧最多可携带7个数据字节

下图是一个传输规则的例子。可以看出,这首先是一个多帧传输,下列CAN帧依次代表的含义是首帧、流控、连续帧、连续帧。

TP 10
FF-FC-CF-CF
TP 11
实际截取到的多帧报文

下图是N_PCI字节的概要。N_PCI在不同的类型下占用的字节数是不同的。记忆时可以按照单帧、首帧、连续帧、流控的顺序,与0、1、2、3建立映射关系。这四种类型所占用的字节大小依次是1个、2个、1个、3个。

TP 12

网络层内部传输服务

网络层的主要任务是传递一帧或大于一帧的数据信息。以下是一个被拆分的信息传送的例子。

TP 13

帧的发送主要有单帧发送和多帧发送两种,在标准地址情况下,单帧SF按照N_PDU格式最多发送和接收7个字节数据(因第一个字节为N_PCI)。

而发送长报文信息时,拆分后的报文信息会通过多个N_PDU进行发送,接收到多个N_PDU信息后进行重组。这些N_PDU包括首帧连续帧。报文信息接收者可通过流控机制按照自己的接收能力调整传输流量。在正常地址的情况下,一个首帧PDU包括6个字节,一个连续帧PDU包括6或7个字节。当然最后一个连续帧可以少于6或7个字节。

8.7 网络层时间控制分析

网络层定时参数定义了N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr六个参数。

TP 14
多帧传输时序表,划重点
TP 15
TP 15 1

我们对上述信息进行归纳:

N_As超时:发送方没有及时发送N_PDU。

N_Ar超时:接收方没有及时发送N_PDU。

N_Bs超时:发送方没有接收到流控帧。

N_Cr超时:接收方没有收到连续帧。

N_Br超时:接收方没有发出流控帧。

N_Cs:即STmin,发送两个连续帧需要等待的最短时间。

TP 16

8.7.2 网络层超时处理

TP 17

写在最后,朱老大提了一个问题,ISO14229、14230、15765、15031之间的联系和不同之处在哪里。我们看一下下面的两张图。

TP 18
基于K线
TP 19
基于CAN线

ISO15031-5是排放相关的应用层协议,它不关心我们使用K线还是CAN线,主要用于监控车辆基本参数,例如监控里程、车速;用于监控排放相关的参数,比如各种尾气的含量,氧含量等等,以此来保证满足各国的标准;用于读取VIN码等车辆参数;读取/清除排放相关的故障码。

ISO14229-1是UDS诊断的应用层协议,通常基于CAN线,主要用于监控车内参数、记录存储故障信息、错误检测、读写数据等。

ISO14230是老式的基于K线的诊断协议,其功能与UDS类似,但是基于的是类似于串行总线的K线,速度慢,易出错,已经被UDS淘汰。

ISO15765有很多子协议,通常基于CAN线,LIN线也支持。可以看做对ISO14229-1和ISO15031-5的支撑。比如本文中的ISO15765-2就负责帮助ISO14229-1处理CAN的短帧数据(小于6或7个字节),使其形成最大4095个字节长度的长帧数据,方便ISO14229-1进行处理。

Read 23080 times Last modified on Sunday, 12 April 2020 00:26

GPS singal acquisition,replay and test equipment

Portable singal acquisition and replay

AI intelligent tongue imager

Tongue imager rafavi
 
Please support our site by viewing this advertisement.

Please support our site by viewing this advertisement

Free Content