ISO15765-2 规范解读

[借鉴了此文的部分内容](https://zhuanlan.zhihu.com/p/37063798)

    ISO15765-2 标准主要内容是Transport protocol and network layer services,即传输层和网络层的服务,根据ISO7层模型,此层的下一层级是数据链路层和物理层,上一个层级是会话层和应用层。其存在的目的是为了解决ISO 11898协议中定义的经典CAN数据链路层与ISO14229协议中定义的应用层,彼此之间数据长度不统一的问题。经典CAN数据链路层最大能够支持8个字节,但ISO 14229并不仅仅是为了CAN总线设计的,最大容量达到4095个字节。比如VIN码是17个字节,CAN总线必然需要传递3帧才能传完VIN码,那么如何科学、快捷、安全地将多个字节通过经典CAN来进行传输,就成了一个需要解决的问题,ISO 15765-2 协议由此诞生。
    基于CAN的UDS诊断服务,通过network protocol data unit,即N_PDU来实现区别的数据传输(The communication between the peer protocol entities of the network layer in different nodes is done by means of exchanging N_PDUs)。两个网络实体之间的通信都必须遵循N_PDU的格式和定义。N_PDU的格式由3个部分组成,N_AI,N_PCI,N_Data ;N_PDU有四种SF N_PDU, FF N_PDU, CF N_PDU, FC N_PDU。
在这里插入图片描述
在这里插入图片描述
    N_AI,网络地址信息,顾名思义就是代表了某个网络实体,使用物理寻址的方式区别,即CAN ID;
    N_PCI,网络协议控制信息,规定了N_PDU携带的数据信息的组织形式;
    N_DATA,网络数据,即N_PDU所携带的数据内容;

    下面详细介绍SF,FF,CF,FC这四种帧类型
    其中SF用于长度不超过7个字节的诊断命令或响应。FF,CF,FC用于传输长度大于7个字节的诊断命令或响应。每个诊断帧的第一个字节的高4bit用于描述该帧的类型。
在这里插入图片描述
在这里插入图片描述
    当诊断报文长度小于等于7时,再加上一个字节的PCI控制信息就是小于等于8,可以在一帧CAN报文上传输,所以不需要进行分包。此时数据域的第一个字节高4bit值为0000,标识这是一个SF帧,低4bit是SF_DL,即DataLength,描述后面有几个字节。如果有没有使用的字节,通常要用0x55或0xAA来填充,因为这两个值的二进制表述其实就是01010101和10101010,这样在CAN总线上可以让信号跳变得更频繁一些,不会出现长时间电平不变的情况,SF的应用场景如下,
在这里插入图片描述

    如果一帧CAN报文无法承载一条诊断报文,则需要按照下面的流程进行分包发送:
在这里插入图片描述

    诊断报文的分段发送
    首先,发送端要以一个FF开启通信,告诉接收端还有后续的内容要发,FirstFrame使用前两个字节作为PCI信息,第一个字节高4bit为0001,标识这是一个FF,低4bit加上第二个字节用于描述总共发送的数据长度是多少(包括在FF中和在CF中的所有字节数)。
    之后接收端发送FC,告诉发送端能以什么样的速度来发送数据,FC第一字节的高4bit为0011,低4bit为FS,即FlowStatus,第二个字节为BS(BlockSize),第三个字节为STmin(SeperateTime)。FlowControl有0,1,2三种状态,分别命名为ContinueToSend (CTS),Wait (WT),Overflow (OVFLW)。如果允许发送端继续发送ConsecutiveFrame,则FlowStatus=0;若要求发送端等一会再发送ConsecutiveFrame,则FlowStatus=1,再下次允许sender发送ConsecutiveFrame时,receiver再发一个FlowStatus=0的FlowControl。如果receiver因为资源问题无法接收sender发送的数据,则发送一个FlowStatus=2的FlowControl。
对于FS,BS,Stmin官方描述如下:
Stmin:在这里插入图片描述
这里注意STmin的定义,是在一个连续帧发送完开始到请求下一个连续帧时的间隔时长。

BS:
在这里插入图片描述

FS:
在这里插入图片描述
    BS指示sender一次可以发送多少个CF,当发送CF数量达到BS时,需要receiver再次以一个FC开启下一波的CF发送。receiver根据自身的接收和处理能力使用STmin指示sender在发送CF时最小的时间间隔是多少,从而实现流控制。CF就是承载FF无法完全承载的剩余数据了,它使用第一个字节用作PCI,高4bit为0010,低4bit用于标识CF的序列号,从1开始,每发送一次CF增加1。
不分段传输的诊断服务举例:

request 02 10 03 55 55 55 55 55

response 06 50 03 00 32 01 F4 AA

    这是一个请求进入extended session的最简单的诊断服务,请求和应答都是SF,加粗的0标识了SF,后面的2和6表示了这条诊断报文拥有几个字节的数据。

    分段传输的诊断服务举例

    这是一个读取DTC的命令和应答。

    03 19 02 08 55 55 55 55 (诊断仪发送的SingleFrame的request)

    10 33 59 02 19 01 00 07 (ECU以FirstFrame开始传输的response)

    30 00 00 55 55 55 55 55 (诊断仪发送的FC)

    21 09 03 05 02 09 05 04 (ECU发送的CF)

    22 07 09 05 06 06 09 05 (ECU发送的CF)

    23 08 03 08 07 01 05 08 (ECU发送的CF)

    24 07 01 06 08 07 01 0C (ECU发送的CF)

    25 08 07 01 0D 08 07 03 (ECU发送的CF)

    26 07 09 08 01 01 09 09 (ECU发送的CF)

    27 01 07 09 AA AA AA AA (ECU发送的CF,此时传输结束)

    BS和STmin等于0时,表示接收端可以以最快的速度来接收数据,发送端可以一次发送的CF数量不受限制。

Network layer timing—网络层定时参数

这一部分还要结合15765-3中的内容来看,描述的是会话层时间设置的内容。
在这里插入图片描述

在这里插入图片描述

  1. N_USData.request: This service is used to request the transfer of data. If necessary, the network
    layer segments the data.
  2. N_USData_FF.indication: This service is used to signal the beginning of a segmented message
    reception to the upper layer.
  3. N_USData.indication: This service is used to provide received data to the higher layers.
  4. N_USData.confirm: This service confirms to the higher layers that the requested service has
    been carried out (successfully or not).

在这里插入图片描述
在这里插入图片描述

P2Can_server : ECU在接收到请求信息后到开始响应的时间要求,一般不超过50ms;
P2*Can_server: ECU在发送否定响应码为0x78的否定响应后开始响应的时间要求,一般不超过5000ms;
S3server: ECU没有收到任何诊断请求信息而保存非默认会话激活状态的时间,一般设置5000ms;
S3client: 诊断设备采用功能地址发出诊断设备在线(3E)请求后保存多个ECU在非默认会话的间隔时间或采用物理寻址发出请求消息保存一个ECU在非默认会话的最大间隔时间,一般不超过5000ms;

错误的N_PDU处理—待续

  • 18
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ISO15765-2是一项标准,主要涉及传输层和网络层的服务。它的存在是为了解决经典CAN数据链路层与ISO14229协议中定义的应用层之间数据长度不统一的问题。经典CAN数据链路层最大支持8个字节,而ISO14229协议的最大容量达到4095个字节。ISO15765-2协议通过network protocol data unit(N_PDU)来实现不同节点之间的通信。N_PDU由N_AI(网络地址信息)、N_PCI(网络协议控制信息)和N_Data(网络数据)三个部分组成。N_PDU有四种类型:SF N_PDU、FF N_PDU、CF N_PDU和FC N_PDU。ISO15765-2标准还定义了网络层的功能,即接收应用层发送的消息流后,根据定义中的分包、位填充和时间控制等步骤,对消息流进行控制传输。流控制传输有单帧传输和多帧传输两种类型,根据传输数据的长度选择不同的帧传输方式。\[1\]\[2\] #### 引用[.reference_title] - *1* [ISO15765-2 规范解读](https://blog.csdn.net/shnsxz/article/details/107642294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [CAN总线之ISO15765协议(内含协议解析伪代码)](https://blog.csdn.net/dop102/article/details/80318141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值