协议功能
网络层协议协议有如下功能:
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)中被发送。所有的连续帧(CF N_PDU)都被发送方编号,提供接收方以同样的顺序重组这些信息。
接收方通过流控机制通知发送方接收能力。由于不同的节点有不同的接收能力,发送方发送的流控通知接收方,接收方才能调整以适应发送方接收能力。
该接收能力如下定义:
除了最后一个所有的块都包含BS N_PDUs。最后一个块包含剩余的N_PDUs(<=BS)。
每一个发送者/接收者等待对方的N_PDU时,一个超时机制可用来检查发送失败。
通过 FC N_PDUs,接收者有权控制CF N_PDUs,用于延时对方的发送及当拆分数据超过接收者缓冲区的时候,拒绝接收。
网络层协议数据单元
协议数据单元类型
不同节点的网络层实体通过交互N_PDUs实现通讯。
该协议说明了网络层协议数据单元四种类型——单帧(SF N_PDU),首帧(FF N_PDU),连续帧(FC N_PDU)——这些用于建立网络层对等实体通信,交互通信参数,传递通信数据及释放通信资源。
SF N_PDU通过单帧协议控制信息(SF N_PCI)来标识,SF N_PDU应当由发送网络实体发送至一个或多个接收网络实体。它应当通过单个的服务请求,传递服务数据及未拆分信息。
FF N_PDU通过首帧协议控制信息(FF N_PCI)来标识,FF N_PDU应当由发送网络实体在拆分数据发送期间,发送至特定的接收网络实体。它用于标识拆分数据首帧。接收网络实体在接收到FF N_PDU时,需重组这些拆分的信息。
CF N_PDU由连续帧协议控制信息标识(CF N_PCI)。CF N_PDU传递服务数据
FC N_PDU由流控协议控制信息(FC N_PCI)标识。FC N_PDU指示发送网络实体对CF N_PDUs的开始,停止或重传。它应当由接收网络层实体在准备好接收更多数据时,发送至发送网络层实体,在接收到如下情况的帧时
a) FF N_PDU,或者
b) 一组连续帧的最后一个FF N_PDU,如果另外的一组连续帧需要被发送的话。
FC N_PDU也能在拆分数据发送期间,通知发送网络层实体暂停CF N_PDUs的发送或者在检测到首帧中数据(FF_DL)字长超过接收实体的缓冲区时,中止发送。
协议数据单元域描述
N_PDU 格式
协议数据单元(N_PDU)使数据在两个或多个对等网络节点之间传递。所有的N_PDUs包含了3个域,如下表所示。
地址信息 |
协议控制信息 |
数据域 |
N_AI |
N_PCI |
N_Data |
地址信息(N_AI)
N_AI用于标识对等网络实体间的通信。N_AI信息在N_SDU—N_SA, N_TA, N_TAtype, N_AE—中接收,应当复制包含在P_PDU中。如果接收到的N_SDU中
该域包含地址信息标识交互信息类型,数据交互的接收方和发送方。地址信息包含信息地址。
协议控制信息(N_PCI)
该域标识交互的N_PDUs的类型。它也用来交互在网络层对等实体通信的其它控制参数。
数据域(N_Data)
N_PDU中的N_Data用于发送在
N_Data的大小依赖N_PDU的类型及地址格式的选取。
协议控制信息说明
N_PCI
N_PDU名 |
N_PCI字节 |
|||
字节1 |
字节2 |
字节3 |
||
7 – 4位 |
3 – 0位 |
|||
单帧(SF) |
N_PCItype = 0 |
SF_DL |
N/A |
N/A |
首帧(FF) |
N_PCItype = 1 |
FF_DL |
N/A |
|
连续帧(CF) |
N_PCItype = 2 |
SN |
N/A |
N/A |
流控(FC) |
N_PCItype = 3 |
FS |
BS |
STmin |
N_PCItype值的定义
16进制值 |
描述 |
0 |
单帧 对于未拆分的信息,网络层提供了一个优化的网络协议,即将信息长度值仅放置在PCI字节里。单帧(SF)应当能支持在单个CAN帧中的信息传输。 |
1 |
首帧 首帧只支持一条信息无法在单个CAN帧中发送时使用。例如,拆分的信息。拆分信息的第一帧编码为FF,在接收到FF时,接受网络层实体应重组这些信息。 |
2 |
连续帧 当发送拆分数据时,所有的连续帧跟着FF编码为连续帧(CF)。在接收到一个连续帧,接受网络层实体应当重组接收到的数据字节直到整个信息被接收到。接收实体在接收最后一帧信息并无接收错误之后,应传递这些信息到相邻的上层。 |
3 |
流控帧 流控制的目的是调整CF N_PDUs发送的速率。流控协议数据单元的3种类型用于支持这些功能。这些类型由协议控制信息的流状态(FS)域指示。 |
4 - F |
保留 该范围的值为该协议保留。 |
单帧N_PCI参数定义
SF N_PCI 字节
SF N_PCI字节总览
N_PDU名字 |
SF N_PCI byte |
|||||||
Byte 1 |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
单帧 |
0 |
0 |
0 |
0 |
SF_DL |
单帧数据长度(SF_DL)参数在SF N_PDU中用于指明服务使用者的字节数。
SF_DL值的定义
16进制值 |
说明 |
0 |
保留 该范围的值为该协议保留。 |
1 – 6 |
单帧数据长度值(SF_DL) SF_DL应编码在N_PCI字节低位,并分配服务参数 |
7 |
单帧数据长度(SF_DL)中标准地址 SF_DL = 7时,只允许标准地址 |
8 - F |
无效的 该范围值无效 |
SF_DL出错处理
如果网络层接收到一个SF_DL=0的单帧(SF),网络层应当忽略接收SF N_PDU。
如果网络层接收到使用标准地址且一个SF_DL大于7、
的单帧,或大于6且使用扩展或混合地址时,网络层应当忽略该SF N_PDU。
首帧N_PCI参数定义
FF N_PCI字节
N_PDU名字 |
FF N_PCI byte |
||||||||
Byte 1 |
Byte 2 |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||
首帧 |
0 |
0 |
0 |
1 |
FF_DL |
||||
首帧数据长度(SF_DL)参数定义
FF N_PDU中的参数FF_DL用于说明服务使用者数据字节数。
16进制数 |
说明 |
0 – 6 |
无效的 该范围值无效 |
7 |
首帧数据字节(FF_DL)支持扩展地址及混合地址 FF_DL = 7 只允许扩展地址及混合地址 |
8 - FFF |
首帧数据字节(FF_DL) 拆分信息在12个位的长度(FF_DL)上编码,并N_PCI字节2中最低位置位“0”,N_PCI字节1中最高位置为“3”。拆分信息最大数据长度支持4095个用户数据。该数据当被分配到服务参数 |
FF_DL 出错处理
如果网络层接收到FF_DL大于接收方缓冲区的首帧时,应当被认为是错误情况。网络层应当放弃该信息的接收,并且发送包含参数FlowStatus = Overflow的FC N_PDU。
如果网络层接收到FF_DL小于8并且使用标准地址,或小于7并且使用扩展地址或混合地址时,网络层应当忽略该首帧并且不必发送一个FC N_PDU。
连续帧N_PCI参数定义
CF N_PCI字节
N_PDU名字 |
CF N_PCI byte |
|||||||
Byte 1 |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
连续帧 |
0 |
0 |
1 |
0 |
SN |
连续帧参数(SN)定义
CF N_PDU中参数SN用以说明连续帧的顺序。
对于所有拆分信息,SN开始于0。FF应当分配值0,它不是明确地包含在N_PCI域中,但应当按拆分信息顺序号为0。
第一个流控帧编号(SN)后的连续帧设置为1;
在同一个拆分信息上,每一个新增的连续帧编号(SN)增1;
连续帧编号(SN)的值不受流控帧的影响。
当连续帧编号(SN)到达值15时,它在下一个连续帧中重置为0;
SN定义总结
N_PDU |
FF |
CF |
CF |
CF |
CF |
CF |
CF |
CF |
SN(hex) |
0 |
1 |
… |
E |
F |
0 |
1 |
… |
SN值定义
16进制值 |
描述 |
0 - F |
连续号(SN) 连续号应当在N_PCI字节1的低字位编码。SN设置值范围在0到15. |
SN出错处理
如果接收到一个连续号错误的CF N_PDU信息,网络层则进行出错处理。信息的接收被终止,并且网络层发送一个
流控参数N_PCI定义
FC N_PCI字节总览
N_PDU名字 |
FC N_PCI byte |
|||||||||
Byte 1 |
Byte 2 |
Byte 3 |
||||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|||
流控帧 |
0 |
0 |
1 |
1 |
FS |
BS |
STmin |
|||
流状态参数(FS)定义
流状态参数(FS)指示发送网络实体是否继续信息的发送。
发送网络层实体应当支持所有FS参数规定(不是保留的)的值。
FS值定义
16进制值 |
说明 |
0 |
继续发送(CTS) 流控帧继续发送参数,通过编码N_PCI第1字节为“0”,表示继续发送。它会促使发送方重新发送连续帧,该值意味着接收者准备好接收最大BS个连续帧。 |
1 |
等待(WT) 流控帧等待参数通过编码N_PCI第1字节为“1”。它会促使发送方继续等待新的流控帧(N_PDU)的到来,并重新设置N_BS定时器。 |
2 |
溢出(OVFLW) 流控真溢出参数通过编码N_PCI第1字节为“2”。它会促使发送方中止拆分信息的发送并且做传递参数 |
3 - F |
保留 该范围的值为该协议保留 |
FS出错处理
如果接收到的FC N_PDU信息参数出错,网络层进行出错处理。信息的发送被中止,并且网络层传递一个参数
块大小(BS)参数定义
BS参数应当编码在FC N_PCI字节2中。
BS单元存储了 每一块中CF N_PDU的绝对个数。
例如 如果块大小=20(十进制)该块应当包含20个CF N_PDU。
拆分数据中最后一块连续帧也可能少于BS个帧。
BS值定义
16进制值 |
说明 |
00 |
块大小(BS) BS参数为0用于指示发送者在拆分数据的发送期间流控制帧不再发送流控制帧了。发送网络层实体应当不停的发送剩下的连续帧以便接收网络层实体另外的流控帧。 |
01 - FF |
块大小(BS) 该范围的BS参数值用于指示发送方在没有接收网络实体的流控帧期间能发送的最大数目的连续帧。 |
间隔时间(STmin)参数定义
间隔时间(STmin)参数应当编码在FC N_PCI字节3。
该时间在拆分数据发送过程中,由接收实体指定,并且由发送网络实体遵守。
STmin参数值指定了连续帧协议数据单元发送的最小时间间隔。
STmin值定义
16进制值 |
说明 |
00 - 7F |
间隔时间(STmin)范围:0ms - 127ms 该STmin单元的范围00 - 7F 为绝对单位毫秒(ms) |
80 - F0 |
保留 该范围值为该协议保留 |
F1 - F9 |
间隔时间(STmin)范围100us - 900us 该STmin单元的范围F1 - F9最小分编为100微秒(us),参数值F1代表100us,参数值F9代表900us。 |
FA - FF |
保留 该范围值为该协议保留 |
STmin的度量是在一个连续帧发送完开始到请求下一个连续帧时的间隔时长。
例如 如果STmin=10(十进制),则连续帧网络协议数据单元最小时间间隔=10ms。
ST出错处理
在拆分数据发送期间,如果FC N_PDU信息接收到ST参数值为保留值,发送网络实体则使用最长的ST值,即(7F - 127ms),而不使用从接收网络实体接收到的值。
FC.Wait帧传递的最大值(N_WFTmax)
该变量用于避免在通信发送方出现潜在错误挂起的时候,后者可能会持续等待。该参数用于对等通信并不被传递,因此不包含在FC的协议数据单元里。
汽车UDS诊断教程 ISO15765(一)
汽车UDS诊断教程 ISO15765(二)
汽车UDS诊断教程 ISO15765(三)
如需获取更多资料可以关注公众号“Auto笔记”,其分享汽车电子行业的最新资讯,及开发笔记、学习笔记等相关经验。关注公众号,回复“iso15765”,获取相应文档。