UDS网络层ISO15765-2学习笔记

本文笔记来自于ISO15765-2网络层2004中文版和2011英文版,恒润科技的can诊断基础,感谢以上资源!笔记仅用于自己学习及大家参考

目录

网络层概述

网络层提供给上层的服务项

a) 通信服务项

b) 协议参数设置服务项

网络层的内部操作

网络层服务项

网络层服务说明

服务项数据单元说明

网络层协议

协议功能

单帧发送

多帧发送

协议控制信息(N_PCI)

单帧 SF N_PCI 参数定义

首帧 FF N_PCI 参数定义

连续帧CF N_PCI 参数定义

流控参数FC N_PCI 定义

网络层定时参数

数据链路层的使用

1 数据链路层服务参数

2 数据链路层接口服务

L_Data.request 请求

L_Data.confirm 确认

L_Data.indication 指示

3 映射到 N_PDU 域

地址格式

CAN 帧数据长度码(DLC)

CAN frame data CAN帧数据

附件A-CAN地址映射

映射规则

1 标准固定地址 Normal fixed addressing

2 混合地址 Mixed addressing

3 Priority (P) 优先级

4 保留位(R)

5 数据页(DP)

协议数据单元格式(PF)

PDU 指定域(PS)

源地址(SA)

更新速率

数据长度

附件B-保留的CAN ID


网络层概述

该协议用于网络节点之间数据交互,例如从一个 ECU 到另一个 ECU,或外部 诊断设备和一个 ECU 之间的通信。如果要传送的数据超过了单个的 CAN 帧长度,则需要提供拆分的方法。

网络层提供给上层的服务项

已定义了两种类型的服务:

a) 通信服务项

以下定义的服务项,使发送者最多能发送 4095 个字节的数据。

1)N_USData.request

该服务项用于请求发送数据。如果有必要的话(长度超过单帧),网络层拆分这些数据。

2)N_USData_FF.indication

该服务项用于通知上层被拆分的信息的首帧的接收。

3)N_USData.Indication

该服务项用于提供接收的数据至上层。

4)N_USData.comfirm

该服务项用于确认应答给上层,表示请求服务项已经被执行(成功执行或不成功执 行)。

b) 协议参数设置服务项

以下定义的服务项,使之能够对协议参数动态设置。

1)N_ChangeParamter.request

该项服务用于对特定内部参数的动态设置的请求

2)N_ChangeParameter.comfirm

该服务项用于确认应答给上层,表示修改协议特定项的请求已经被执行(成功执行或不成功执行)。

网络层的内部操作

网络层的内部操作提供了分割、流控制传输和重组的方法。 网络层主要的任务是传递一帧或大于一帧的数据信息。超过一帧的信息被分成多个部分, 每一个部分都以一个 CAN 帧的形式被发送。

单帧传输:

多帧传输:

流控制用来使发送端适应接收端网络层的接收能力。该流控制策略同样适用于诊断网关和通信子网。

网络层服务项

所有的网络层服务项有统一的结构。为了定义这些服务项,三类主要的服务项说明如 下:

——请求服务,被更高的通信层或应用层使用,用于向网络层传递控制信息及要发送的数据

——指示服务,被网络层使用,用于向更高通信层或应用层传递状态信息及接收到的数据

——确认服务,被网络层使用,用于向更高通信层或应用层传递状态信息。

网络层服务说明

1. N_USData.request 请求

该请求服务项是请求传递数据及字节数,从上层到网络层,通过在 N_SA,N_TA,N_TAtype及N_AE 中的地址信息确认。

N_USData.request服务项每次被启动,网络层应当通过一条N_USData.confirm 服务通知服务使用者信息传递的完成情况。(成功或失败)

N_USData.request (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<MessageData>

<Length>

)

2. N_USData.confirm 确认

N_USData.confirm 服务项由网络层发送,该服务项用于确定 N_USData.request 服务的完成情况,通过在 N_SA,N_TA,N_TAtype 及 N_AE中的地址信息确认。参数<N_Result> 提供请求服务项的状态

N_USData.confirm (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<N_Result>

)

3. N_USData_FF.indication 指示

N_USData_FF.indication 服务项由网络层发送。该服务项用于通知相邻上层接收到对等实体首帧数据已经到了。通过在 N_SA,N_TA,N_TAtype 及 N_AE 中的地址信息确认。这个指示项发生在接收到拆分数据首帧的时刻(由接收端网络层发起)

N_USData_FF.indication (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<Length>

N_USData_FF.indication指示服务项发送完, 网络层应当总是紧跟着发送一个N_UDSData.indication 服务项,指示信息接收的完成情况。(成功或失败)

N_USData_FF.indication 表示网络层发送指示信息段的首帧是否被正确接收。

如果网络层监测到首帧中任何类型的错误,该信息应当被网络层忽略,并且N_USData_FF.indication 指示服务项不应当被发送至相邻的上层。

如果网络层接收到首帧中数据长度项的值(FF_DL)大于接收者缓冲区的数据,这应当被认为是一个错误的条件并且 N_USData_FF.indication 指示服务项不应当被发送至相邻的上层。

4.N_USData.indication 指示

N_USData.indication 服务项由网络层发送。该服务项指示<N_Result>事件并传递<Length>字节数的<MessageData>至相邻的上层。这些信息通过同等实体间通过存放于N_SA,N_TA,N_TAtype 及 N_AE 中标识的地址信息接收过来的。

当<N_Result>值为 N_OK 时,<MessageDate>及<Length>参数信息才有效。

N_USData.indication (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<MessageData>

<Length>

<N_Result>

)

N_USData.indication 服务项是在接收到单帧(SF)信息或是指示拆分信息接收的完成时发送

如果网络层检查到单帧中任何类型的错误,该条单帧信息应当被忽略并且N_USData_FF.indication 指示服务项不应当被发送至相邻的上层

5. N_ChangeParameters.request 请求

该服务项用于请求本地实体内部参数的修改。<Parameter_Value>参数值分配给<Parameter>参数

参数更改总是可以的,除非在接收FF (N_USData_FF.indication)之后,直到接收相应消息(N_USData.indication)结束。

N_ChangeParameter.request (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<Parameter>

<Parameter_Value>

)

这是一个可选服务项,可被固定的参数值实施代替。

6. N_ChangeParameters. confirm 确认

该服务项用于确认 N_ChangeParameter.Confirmation运用信息的完成情况,这信息通过在 N_SA,N_TA,N_TAtype 及 N_AE 中的地址信息标识。

N_ChangeParameter.confirm (

Mtype

N_SA

N_TA

N_TAtype

[N_AE]

<Parameter>

<Result_ChangeParameter>

)

服务项数据单元说明

1. Mtype, Message type

类型:枚举类型

范围:诊断,远程诊断

描述:参数 Mtype 用于确定服务相中信息参数的类型及范围。该部分的 ISO 15765 协议指

定了两个值标识这个参数。文档使用者可通过指定其它的类型,也可通过文档中网络层使

用的其它地址信息参数的组合来扩展这些值的范围。每新定义的一套地址信息,Mtype 应

当赋予新值,标识新的地址信息。

——如果 Mtype = 诊断N_AI 地址信息应当包含参数 N_SA,N_TA,和 N_TAtype。

——如果 Mtype = 远程诊断N_AI 地址信息应当包含参数 N_SA,N_TA,和 N_TAtype,和 N_AE

2. N_AI,地址信息

该参数指的是地址信息。总的来说,N_AI 参数用于确定信息发送者和接收者的源地址(N_SA), 目标地址(N_TA),也包含确定物理寻址还是功能寻址(N_TAtype)和可选择地址扩展(N_AE)的通信模式。

N_SA 网络源地址

类型:1 字节的无符号整数

范围:00-FF 16 进制

描述:N_SA 参数代表发送者网络层实体

N_TA,网络目标地址

类型:1 字节的无符号整数

范围:00-FF 16 进制

描述:N_SA 参数代表接收者网络层实体

N_TAtype,网络目标地址类型

类型:枚举类型

范围:物理的,功能的

描述:N_TAtype 参数是对 N_TA 参数的扩展。它被网络层对等实体使用,代表通信模式。

两种通信模式说明如下:1 对 1 的通信,称为物理地址,1 对多的通信称为功能地址。

——物理地址(1 对 1 通信)网络层所有类型的信息都支持。

——功能地址(1 对多通信)仅仅对单帧的通信支持

N_AE,网络地址扩展

类型:1 字节的无符号整数

范围:00-FF 16 进制

描述:N_AE 参数用于在大的网络上扩展现行的地址范围,用于子网中发送与接收网络层实

体而不是本地网的通信。若 Mtype 设置为远程诊断时N_AE 仅仅是地址信息的一部分

<Length>

类型: 12 个 bit 位

范围: 1-4095

描述:该参数包含要发送或接收的数据长度。

<MessageData>

类型:字符串

范围:不固定

描述:该参数包含与上层实体所有交互的数据

<Parameter>

类型:枚举类型

范围:STmin, BS

描述:该参数确定网络层的参数

<Parameter_Value>

类型:1 字节无符号整数

范围:0-255

描述:该参数分配给协议参数<Parameter>作为指示服务。

<N_Result>

类型:枚举类型

范围:N_OK, N_TIMEOUT_A, N_TIMEOUT_Bs, N_TIMEOUT_Cr, N_WRONG_SN,N_INVALID_FS,

N_UNEXP_PDU, N_WFT_OVRN, N_BUFFER_OVFLW, N_ERROR

描述:该参数包含服务项执行的结果状态。如果同时产生了两个或以上的错误,网络层应

该使用下列错误指示中首先找到的参数值,发送给高层。

——N_OK

该值表示服务执行完全正确;它可同时由发送者和接收者发送至服务的使用者。

——N_TIMEOUT_A

该值在定时器 N_Ar/N_As 超过了定时值 N_Asmax/N_Armax,发送给服务的使用者;它

可同时由发送者和接收者发送至服务的使用者。

——N_TIMEOUT_Bs

该值在定时器 N_Bs 超过了定时值 N_Bsmax,发送给服务的使用者;它仅能由发送者发

送至服务的使用者。

——N_TIMEOUT_Cr

该值在定时器 N_Bs 超过了定时值 N_Crmax,发送给服务的使用者;它仅能由接收者发

送至服务的使用者。

——N_WRONG_SN

该值在接收到意外的连续的数值(PCI.SN)时被发送至服务使用者;它仅能由接收者

发送至服务的使用者。

——N_INVALID_FS

该值在从流控(FC)N_PDU 接收到无效的或未知的流状态值时发送至服务的使用者;

它仅能由发送者发送至服务的使用者。

——N_UNEXP_PDU

该值在接收到未知协议数据单元时发送给服务使用者,它仅能由接收者发送至服务的

使用者。

——N_WFT_OVRN

该值在接收到流控 WAIT 帧超过最大计数 N_WFTmax 时发送至服务使用者。

——N_BUFFER_OVFLW

该值在接收到流控(FC)N_PDU 状态 Flow = OVFLW 时发送给服务的使用者。它用于指

示接收者缓冲区无法存储首帧中数据长度(FF_DL),因此,该拆分数据的传递被丢弃。它

仅能由发送者发送至服务的使用者。

——N_ERROR

这是一个默认的错误值。它是当检测到网络层错误并且没有其它更好的参数描述该项

错误时使用发送到服务使用者。它可同时由发送者和接收者发送至服务的使用者。

<Result_ChangeParameter>

类型: 枚举类型

范围:N_OK, N_RX_ON, N_WRONG_PARAMETER, N_WRONG_VALUE

描述:该参数包含服务执行的结果状态信息

——N_OK

该值表示服务执行完全正确;它可同时由发送者和接收者发送至服务的使用者。

——N_RX_ON

该值发送给服务使用者指示虽然<N_AI>标识的信息接收到了,但服务没有执行。它仅能

由接收者发送至服务的使用者。

——N_WRONG_PARAMETER

该值发送给服务的使用者表示由于未定义的<Parameter>,服务没有执行;它可同时由

发送者和接收者发送至服务的使用者。

——N_WRONG_VALUE

该值发送给服务的使用者表示由于<Parameter_Value>超出范围,服务没有执行,

它可同时由发送者和接收者发送至服务的使用者。

网络层协议

协议功能

网络层协议协议有如下功能:

a) 发送/接收最多 4095 个字节的数据信息

b) 报告发送/接收完成状态。

单帧发送

(扩展及混合地址情况下)最多发送6字节或(正常地址情况下)7 字节数据,按照 N_PDU 格式发送信息,称为单帧(SF)

最多6或7字节的接收通过 N_PDU制式

多帧发送

长信息的发送通过拆分信息并通过多个 N_PDU 发送的形式。长信息的接收通过接受多个 N_PDU并通过重组这些接受的数据。这多个 N_PDU 包括首帧(信息中第一个 N_PDU)及连续帧(剩下的所有 N_PDU)。

多N_PDU 信息接收者有条件按照它自己的接收能力通过使用流控协议数据单元(FC N_PDU)的流控机制调整传输流量。

——一个首帧协议数据单元(FF N_PDU),包括(扩展及混合地址情况下)5 字节或(正常地址情况下)6 字节数据。

——一个多更多连续帧协议数据单元(CF N_PDU),包括 6 或 7 字节数据。CF N_PDU 包括剩下的字节数据,因此可以少于6或7字节的长度。

说明:接收方发送的 FC N_PDU(流控) 用于应答 FF N_PDU(首帧),这在图中没有显示。

信息的长度在首帧(FF N_PDU)中被发送。所有的连续帧(CF N_PDU)都被发送方编号

提供接收方以同样的顺序重组这些信息

接收方通过流控机制通知发送方自己的接收能力。由于不同的节点有不同的接收能力,接收方发送的FlowControl通知发送方它的能力。 发送方应符合接收方的能力

该接收能力如下定义:

——块大小(BS):在授权继续发送其余的 N_PDU 之前,接收方允许发送方发送最大的 N_PDU 个

数。

——间隔最短时长(STmin):发送方在发送两个连续帧间隔等待的最短时间。

如果服务器是分段消息传输的接收者(即流量控制帧的发送者),它可以选择在相同分段消息的后续FC(CTS)帧中使用相同的BS和STmin值,或者在不同的FC帧中改变这些值

如果连接到符合ISO 15765的车载诊断网络的客户机是分段消息传输的接收者(即流量控制帧的发送者),则其应在相同分段消息的后续FC(CTS)帧中使用相同的BS和STmin

注1:如果客户端在同一传输过程中违背了不更改BS和STmin的要求,则无法保证服务器将成功与客户端通信

如果客户机是分段数据传输的发送方(即流量控制帧的接收方),则其应根据在相同分段数据传输期间接收到的每个FC(CT)的BS和STmin值进行调整

注2:对于车内网关实施(即在OSI第4层上进行路由;参见ISO 14229-2[4]),车辆制造商选择FC参数BS和STmin在单个分段消息传输过程中发生变化,或者这些参数为静态值。根据此设计决策,车辆制造商需要确保服务器实现与相应的车内网关实现兼容

除了最后一个所有的块都包含 BS个 N_PDUs。最后一个块包含剩余的 N_PDUs(<=BS)。

每一个发送者/接收者等待对方的 N_PDU 时,一个超时机制可用来检查发送失败。

通过 FC N_PDUs,接收者有权控制 CF N_PDUs,用于延时对方的发送及当拆分数据超过接收

者缓冲区的时候,拒绝接收。

——FC.CTS:继续发送,授权继续发送

——FC.WAIT:请求继续等待

——FC.OVFLW:缓冲溢出,用于指示拆分数据的首帧中字节个数信息超过了接收者可存储

的信息总量。

FC.WAIT 的值有个最大限值:N_WFTmax。该参数是系统的常数,且不会在首个 FC N_PDU

发送。

流控机制:

关于数据传输的几种方式(单帧SF(singleframe),首帧FF(firstframe),流控FC( FlowControl),连续帧CF(ConsecutiveFrame)) --来自ISO15765-2 传输层与网络层

协议数据单元(N_PDU)使数据在两个或多个对等网络节点之间传递。所有的 N_PDUs 包含 了 3 个域

地址信息(N_AI) N_AI -这个不是应用层关注的重点

用于标识对等网络实体间的通信。N_AI 信息在 N_SDU—N_SA, N_TA, N_TAtype, N_AE —中接收,应当复制包含在 P_PDU 中。如果接收到的 N_SDU 中及信息很长,需要网络层拆分这些数据以发送完整的信息,N_AI 应当被复制并包含在每一个 要发送的 N_PDU 中。

协议控制信息(N_PCI)

N_PCItype的值描述:

单帧 SF N_PCI 参数定义

SF_DL参数在 SF N_PDU 中用于指明服务使用者的字节数

单帧举例说明: 02 10 03 FF FF FF FF FF - 0表示单帧,2表示长度为2

SF_DL 出错处理

如果网络层接收到一个 SF_DL=0 的单帧(SF),网络层应当忽略接收 SF N_PDU。 如果网络层接收到使用标准地址且一个 SF_DL 大于 7 的单帧,或大于 6 且使用扩展或混合 地址时,网络层应当忽略该 SF N_PDU。

首帧 FF N_PCI 参数定义

首帧数据长度(FF_DL)参数定义

FF N_PDU 中的参数 FF_DL 指定服务使用者数据字节数

举例说明: 首帧 的can数据为 10 14 2E F1 90 34 34 34 014表示的就是FF_DL(datalength)

FF_DL 出错处理

如果网络层接收到 FF_DL 大于接收方缓冲区的首帧时,应当被认为是错误情况。网络层应当放弃该信息的接收,并且发送包含参数 FlowStatus = Overflow FC(流控) N_PDU。如果网络层接收到 FF_DL 小于 8 并且使用标准地址,或小于 7 并且使用扩展地址或混合地址时,网络层应当忽略该首帧并且不必发送一个 FC N_PDU

连续帧CF N_PCI 参数定义

连续帧参数(SN)定义

CF N_PDU 中参数 SN 用以说明连续帧的顺序。

——对于所有拆分信息,SN 开始于 0。FF 应当分配值 0,它不是明确地包含在 N_PCI 域中, 但应当按拆分信息顺序号为 0。

——第一个流控帧编号(SN)后的连续帧设置为 1;

——在同一个拆分信息上,每一个新增的连续帧编号(SN)增 1;

——连续帧编号(SN)的值不受流控帧的影响。

——当连续帧编号(SN)到达值 15 时,它在下一个连续帧中重置为 0;

首帧后面的第一个流控帧编号为1,溢出后从0开始

SN 出错处理

如果接收到一个连续号错误的 CF N_PDU 信息,网络层则进行出错处理。信息的接收被终止, 并且网络层发送一个参数=N_WRONG_SN 的 N_USData.indication 指示服务至相邻上层。

流控参数FC N_PCI 定义

流状态参数(FS)指示发送网络实体是否继续信息的发送。

发送网络层实体应当支持所有 FS 参数规定(不是保留的)的值。

FS值定义

FS 出错处理

如果接收到的 FC N_PDU 信息参数出错,网络层进行出错处理。信息的发送被中止,并且网 、络层传递一个参数=N_INVALID_FS 的 N_USData.confirm 指示服务至相邻的上层。

块大小(BS)参数定义

BS 参数应当编码在 FC N_PCI 字节 2 中。

BS 单元存储了 每一块中 CF N_PDU (连续帧) 的绝对个数。

例如 如果块大小=20(十进制)该块应当包含 20 个 CF N_PDU。

拆分数据中最后一块连续帧也可能少于 BS 个帧

BS块大小定义:

间隔时间(STmin)参数定义

间隔时间(STmin)参数应当编码在 FC N_PCI 字节 3.

该时间在拆分数据发送过程中,由接收实体指定,并且由发送网络实体遵守。 STmin 参数值指定了连续帧协议数据单元发送的最小时间间隔

STmin 值定义

STmin 的度量是在一个连续帧发送完开始到请求下一个连续帧时的间隔时长

如果 STmin=10(十进制),则连续帧网络协议数据单元最小时间间隔=10ms。

ST 出错处理

在拆分数据发送期间,如果 FC N_PDU 信息接收到 ST 参数值为保留值,发送网络实体则使用最长的 ST 值,即(7F - 127ms),而不使用从接收网络实体接收到的值。

如果分段数据传输(N_As + N_Cs)的两个连续帧之间的时间小于接收端通过STmin命令的值,则不能保证分段数据传输的接收端正确接收并处理所有帧。 在任何情况下,分段数据传输的接收方都不需要监控STmin值的遵守情况

FC.Wait 帧传递的最大值(N_WFTmax)

该变量用于避免在通信发送方出现潜在错误挂起的时候,后者可能会持续等待。该参数用于对等通信并不被传递,因此不包含在 FC 的协议数据单元里。

——N_WFTmax 参数应当指示一组能有多少个 FC N_PDU WT 能被接收者接收。

——N_WFTmax 参数的上限由用户根据系统时钟定义。

——N_WFTmax 参数仅由接收网络实体在接收信息的时候使用

——如果 N_WFTmax 参数值设置为 0,流控应当继续仅使用 FC N_PDU CTS。流控等待(FC N_PDU

WT)不应再该网络实体中使用。

流控制示例:

网络层定时参数

定义超时的值应比运行要求的值大保证系统工作且使克服运行需求值在(高总线负载)时, 绝对不会满足。指定的超时的值认为是执行的最低限。实际超时的发生不应长于指定超时值+50%

1:sender N_USData.req 会话层向传输/网络层发出一个不分段的消息。

sender L_Data.req:传输/网络层将SingleFrame传输到数据链路层,启动N_As 计时器。

2:receiver L_Data.ind:数据链路层向传输/网络层发送接收CAN帧的信息。

receiver N_USData.ind传输/网络层向会话层发出无分段完成的指令消息。

sender L_Data. con:数据链路层向传输/网络层确认CAN帧已经被收到。发送方停止N_As定时器。

sender N_USData.con 传输/网络层向会话层发出不分段消息的完成。

N_As:发送方发送CAN数据帧经过链路层发送的时间

N_Ar:接受方发送CAN数据帧经过链路层发送的时间

N_Bs:发送方接收流控帧的等待时间

N_Br:接受方发送流控帧的间隔时间

N_Cs:发送方发送连续帧的间隔时间

N_Cr:接受方接收连续帧的等待时间

流控帧传输时的网络层定时参数:

执行过程:

1:sender_N_USData. req会话层向传输/网络层发出分段消息。

sender_L_Data. req:传输/网络层将首帧传输到数据链路层,启动N_As计时器(发送端发送CAN消息到接收方回应收到can消息的时间间隔

2:receiverL_Data. ind:数据链路层向传输/网络层发送接收CAN帧的信息。接收端启动N_Br定时器(接收方发送流控帧的时间间隔)。

receiverN_USDataFF. ind:传输/网络层向会话层发送接收到分段消息的首帧

senderL_Data.con:数据链路层向传输/网络层确认CAN帧已被收到。发送方停止N_As定时器,启动N_Bs(发送方接收流控的等待时间)定时器

3:receiverL_Data. req:传输/网络层将流控FlowControl (ContinueToSend和BlockSize值= 2d)发送给数据链路层,并启动N_Ar定时器(接收方发送CAN消息到发送方回应收到can消息的时间间隔)

4:senderL_Data. ind:数据链路层向传输/网络层发送接收到CAN帧的信息。 发送方停止N_Bs定时器并启动N_Cs(发送方发送连续帧的时间间隔)定时器。

receiverL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。 接收方停止N_Ar定时器并启动N_Cr(接收方接收连续帧的等待时间)定时器

5: senderL_Data..req:传输/网络层将第连续帧传送到数据链路层,并启动N_As定时器

6:receiverL_Data. ind:数据链路层向传输/网络层发送接收CAN帧的信息。接收端重启N_Cr定时器

senderL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。 发送方停止N_As定时器,根据前一个流控FlowControl的间隔时间值(STmin)启动N_Cs定时器。

7:senderL_Data.req:当N_Cs计时器达到(STmin)时,传输/网络层传输下一个连续帧进入数据链路层,启动N_As定时器。 8:receiverL_Data. ind:数据链路层向传输/网络层发送接收CAN帧的信息, 接收端停止N_Cr定时器,启动N_Br定时器。

senderL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。 发送方停止N_As定时器,启动N_Bs定时器。 发送方正在等待下一个流控制

9:receiverL_Data. req:传输/网络层将FlowControl (Wait)传输给数据链路层,并启动N_Ar计时器

10:senderL_Data. ind:数据链路层向传输/网络层发送接收到CAN帧的信息。 发送方重启N_Bs定时器。

receiverL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。接收方停止N_Ar定时器并启动N_Br定时器

11:receiverL_Data. req:传输/网络层将流控FlowControl (ContinueToSend)发送给数据链路层,启动N_Ar计时器

12:senderL_Data. ind:数据链路层向传输/网络层发送接收到CAN帧的信息。发送方停止N_Bs定时器并启动N_Cs计时器

receiverL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。接收方停止N_Ar定时器并启动N_Cr定时器

13:senderL_Data..req:传输/网络层将连续帧传送到数据链路层,并启动N_As定时器

14:receiverL_Data. ind:数据链路层向传输/网络层发送接收CAN帧的信息。接收端重启N_Cr定时器

senderL_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。 发送方停止N_As定时器,根据前一个流控FlowControl的间隔时间值(STmin)启动N_Cs定时器。

15:senderL_Data.req:当N_Cs计时器达到(STmin)时,传输/网络层传输最后一个连续帧进入数据链路层,启动N_As定时器。

16:receiverL_Data. ind:数据链路层向传输/网络层发送接收CAN帧的信息, 接收端停止N_Cr定时器

Receiver N_USData. ind:传输/网络层向会话层发出分段消息的完成。

Sender L_Data. con:数据链路层向传输/网络层确认CAN帧已被接收。 发送方停止N_As定时器

Sender N_USData.con:传输/网络层将分段消息的完成发送给会话层

网络层超时出错处理

接收到突如其来的 N_PDU

根据网络层支持全双向的或半双向通信的不同,对“意外的”说明也不同:

a) 半双向的,两个节点之间点对点通信在同一个时刻只能是一个方向。

b) 全双向的,两个节点之间点对点通信在同一个时刻支持双向的通信。

a:FC参数错误处理见流控帧。

b:SN异常的处理请参见连续帧中的SN(连续帧参数)。

c:分段传输和分段接收都没有进行。 这种状态“空闲”只描述了网络层本身,而不是上面的层的可用性的指示,它可能是繁忙的,因此可能无法接受一个新的(SF)请求或为一个多帧请求(FF)的数据提供诊断缓冲区。

等待帧出错处理

如果接收器已连续发送N_WFTmax流量控制等待网络协议数据单元(FC N_PDU wait),并且随后仍无法满足流量控制连续发送网络协议数据单元(FC N_PDU CTS)传输的性能要求,然后,接收方应中止消息接收并发出N_USData.indication将<N_Result>设置为N_WFT_OVRN到上一层

信息的发送者通过接收到<N_Result>=N_TIMEOUT_Bs 的 N_USData.confirm 确认服务中止信息的接收。(由于丢失了接收方的流控制帧 N_PDU,在发送端产生了一个 N_Bs 的超时信号

交错的信息

网络层应当能够实现映射不在一个地址 N_AI 的不同信息的传输。这能保证接收者接收网络协议数据单元能持续的重组信息。该策略使网关具有在同时在不同子网处理不同信息传递的功能

数据链路层的使用

1 数据链路层服务参数

ISO 11898-1中定义了以下数据链路层服务参数:

-<Data>:CAN帧数据

-<DLC>:数据长度代码

-<Identifier>:CAN标识符

-< Transfer_Status >:发送状态

2 数据链路层接口服务

L_Data.request 请求

该请求服务需要通过<Idetifier>标识,将<Data>数据映射到指定的数据链路层单元。

<Idetifier>标识需提供参照指定的访问格式发送<Data>数据:

L_Data.request(

<Identifier>

<DLC>

<Data>

)

L_Data.confirm 确认

该确认服务用于确认 L_Data.request 请求指定的<Identifier>服务的完成,参数

<TransferStatus>提供服务请求的状态。

L_Data.confirm(

<Identifier>

<TransferStatus>

)

L_Data.indication 指示

该指示服务指示数据链路层到相邻上层的事件并通过<Identifier>标识发送<Data>数据。

L_Data.indication (

<Identifier>

<DLC>

<Data>

)

3 映射到 N_PDU 域

地址格式

网络层数据交互有三种地址格式的支持:标准,扩展和混合。不同的地址格式需要不同数据长度的 CAN 帧对包含数据的地址信息进行打包。因此,选择单个 CAN 帧的数据长度依赖于地址格式类型的选取。

以下说明了地址格式的映射机制,基于数据链路层服务及 11898-1 定义的服务参数。

标准地址 Normal addressing

对于N_SA、N_TA、N_TAtype和Mtype的每个组合,都会分配一个唯一的CAN标识符。 N_PCI 和 N_Data 安置在 CAN 帧的数据域。如表

物理寻址可以支持多帧

功能寻址只支持单帧,见下表

标准固定地址 Normal fixed addressing

标准固定地址是标准地址的子格式,也就是映射到 CAN 标识的地址信息更多一层定义。在上述标准通信,N_AI 和 CAN 标识之间打开。对于标准固定通信只允许有 29bit 的 CAN 标识。表 20 和 21 定义了射到 CAN 标识的目标地址类型(N_TAtype)。N_PCI 和 N_Data 放在 CAN 帧数据域。

举例:CANID 0x18DA03FA ----18表示00011000,前三位保留,110表示优先级

DA表示218,标准固定地址格式 03---N_TA目标地址 N_ SA----源地址

举例:CANID 0x18DBFFFA ----18表示00011000,前三位保留,110表示优先级

DB表示219,标准固定地址格式 FF---N_TA目标地址 N_ SA----源地址

扩展地址 Extended addressing

对于N_SA、N_TAtype和Mtype的每个组合,都会分配一个唯一的CAN标识符N_TA(目标地址)安置在 CAN 帧数据域第一个字节,N_PCI 和 N_Data 安置在 CAN 帧数据域剩下的字节。

物理寻址:

功能寻址:

混合地址 Mixed addressing

29 位 CAN 标识

混合地址是将 Mtype 设置为远程诊断的地址格式

表 23 和 24 定义了地址信息(N_AI)到 29 位 CAN 标识符的映射机制,具体取决于目标地址类型(N_TAtype)。N_PCI 和 N_Data 安置在 CAN 帧数据域剩余字节。

物理寻址 N_TAtype=物理的:

0x18CE03FA+can消息中的第一个数据N_AE

功能寻址 N_TAtype=功能的:

0x18CDFFFA+can消息中的第一个数据N_AE

11 位 CAN 标识符

混合地址是将 Mtype 设置为远程诊断的地址格式

表 25 定义了地址信息(N_AI)到 11 位 CAN 标识的映射机制。对于N_SA、N_TAtype和N_TA的每个组合,都会分配一个唯一的CAN标识符。N_AE(地址扩展)安置在 CAN 帧数据域的第一个字节。N_PCI 和 N_Data 安置在 CAN 帧数据域的剩余字节。

物理寻址 N_TAtype=物理的:

功能寻址 N_TAtype=功能的:

CAN 帧数据长度码(DLC)

DLC 参数

DLC参数指定CAN帧中传输的数据字节数。ISO 15765的本部分未规定与CAN帧中数据字段长度有关的任何要求,网络层协议数据单元的大小所表明的要求除外

实现ISO 15765本部分中定义的网络层的应用程序可以将所有CAN帧填充到其全长或将DLC优化到网络层协议数据单元的适用长度。

CAN frame data CAN帧数据

CAN 帧数据打包

如果采用这种解决方案,即使传输的N_PDU小于8字节,DLC也总是设置为8。 发送方必须在帧中填充任何未使用的字节。 特别是,对于SF(首帧)、分段消息的FC帧(流控帧)或最后CF(连续帧),可能会出现这种情况

发送端设置CAN帧的DLC参数,接收端读取该参数,以确定每个CAN帧需要被网络层处理的数据字节数。 DLC参数不能用于确定消息长度; 该信息应在消息开始时从N_PCI信息中提取。 (DLC参数只针对于每一帧can消息,而不是传输数据的长度

CAN 帧数据优化

DLC 不总是为 8.如果发送的 N_PDU 比 8 短,那么发送方会通过缩减 CAN 帧到只包含 N_PDU 占有的字节数(不对无用的数据字节打包)来优化 CAN 总线负载。CAN 帧的优化只能针对 SF(首帧),FC 帧(流控)或拆分信息的最后一个 CF 帧 (连续帧)

发送端设置CAN帧的DLC参数,接收端读取该参数,以确定每个CAN帧需要被网络层处理的数据字节数。 DLC参数不能用于确定消息长度; 该信息应在消息开始时从N_PCI信息中提取。 (DLC参数只针对于每一帧can消息,而不是传输数据的长度

数据长度码出错处理

根据N_PCI值,网络层可以计算接收到的can帧中can DLC参数的最小期望值

网络层应忽略接收DLC值小于预期值的CAN帧(对于填充CAN帧的应用小于8,或者对于使用数据优化的实现,小于网络协议数据单元的大小所期望的值),而无需采取任何进一步行动。

附件A-CAN地址映射

本附件描述了在使用SAE J1939数据链路层时,如何将地址信息参数N_AI映射到CAN帧中。

该附件没有给出标准地址和扩展地址的格式,在15765-3与15765-4中给出

映射规则

1 标准固定地址 Normal fixed addressing

表 A.1 显示了地址信息参数的映射,当网络目标地址类型 N_TAtype 使用物理地址,N_AI 到 CAN 帧的映射。

表 A.2 显示了地址信息参数的映射,当网络目标地址类型 N_TAtype 使用功能地址,N_AI 到 CAN 帧的映射。

2 混合地址 Mixed addressing

表 A.3 显示了地址信息参数的映射,当网络目标地址类型 N_TAtype 使用物理地址,N_AI 到 CAN 帧的映射。

表 A.4 显示了地址信息参数的映射,当网络目标地址类型 N_TAtype 使用功能地址,N_AI 到 CAN 帧的映射。

3 Priority (P) 优先级

优先级由用户自定义,默认为 6。 三个位优先级域用于优化 CAN 总线信息等待时间。优先级域应当接收者屏蔽(忽略,不需要接收该信息,作用在CAN总线竞态仲裁阶段)。CAN 总线优先级可设置为最高 0(000bin),到最低 7(111bin)。

4 保留位(R)

应当设置为“0”。

5 数据页(DP)

应当设置为“0”

协议数据单元格式(PF)

格式为 PDU1 格式,“指明目标地址”

诊断信息应当使用如下参数组(PGN)

——混合地址:52480(dec)即 N_TAtype=功能的,PF=205(dec)。

——混合地址:52736(dec)即 N_TAtype=物理的,PF=206(dec)。

——标准固定地址:55808(dec)即 N_TAtype=物理的,PF=218(dec)。

——标准固定地址:56064(dec)即 N_TAtype=功能的,PF=219(dec)。

PDU 指定域(PS)

PDU 特定域应当包含目标地址,N_TA

源地址(SA)

SA 域应当包含源地址,N_SA

更新速率

按照用户的需求

数据长度

数据长度应为8字节

附件B-保留的CAN ID

本附件的目的是将下面的CAN Id保留在11位CAN Id范围之外,以便将来在国际标准中使用

  • 10
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赞哥哥s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值