汽车总线协议15765-2(2005)CANFD协议研究
目录
协议框架
传输协议和网络层服务
术语、定义和缩写术语
文档概述
ISO 11898-1 CAN数据链路层扩展
网络层的概述
网络层内部运行
网络层业务
网络层服务原语的规范
传输层协议
传输层协议数据单元
协议数据单元字段描述
传输数据链路层数据长度(TX_DL)配置
网络层的状态机
网络层定时参数-分段消息
网络层超时错误处理
数据链路层用法
CAN帧数据
协议框架
ISO 15765的这一部分是为了定义在控制器区域网络(CAN)通信链路上实施的车辆诊断系统的通用要求,如ISO 11898 -1所规定的。虽然它主要用于诊断系统,但它也满足其他基于can的系统对网络层协议的需求。为了实现这一目标,它基于ISO/IEC 7498-1和ISO/IEC 10731的开放系统互连基本参考模型(Open Systems Interconnection Basic Reference Model, OSI),将通信系统划分为7个层次,如表1所示。
传输协议和网络层服务
ISO 11898-1指定可变长度的CAN帧,其最大有效载荷大小取决于所使用的协议设备。标准CAN协议设备可以发送/接收每帧有效载荷大小从0字节到8字节不等的帧。CAN FD (flexible data rate,灵活数据速率)协议设备可以收发0 ~ 64字节的帧。CAN FD协议设备也能够发送/接收标准CAN帧。
ISO 15765的这一部分提供了传输协议和网络层服务,以支持不同的应用层实现,如
增强的车辆诊断(立法功能之外的与排放相关的系统诊断,非排放相关的系统诊断),
ISO 15031中规定的与排放相关的车载诊断(OBD),
ISO 27145中规定的全球协同车载诊断(WWH-OBD),
船上烟火装置的寿命结束激活(ISO 26021)。
传输协议指定了一个未经确认的通信。
注:ISO 15765的这一部分并不能决定标准CAN、CAN FD或两者是否被其他引用ISO 15765这一部分的标准推荐或要求实施。
术语、定义和缩写术语
BRS |
Bit rate Switch |
比特率切换 |
BS |
Blocksize |
块大小 |
CAN |
Controller area network |
CAN总线 |
CAN_DL |
CAN frame datalink layer data length in bytes |
数据链路层的CAN帧数据长度 |
CANFD |
11898-1中定义的具有灵活数据速率和更大有效载荷的控制器区域网络ISO |
|
CLASSICAL CAN |
标准帧 |
|
CF |
连续帧 |
后续帧、连续帧 |
CTS |
Continue to send |
继续发送 |
DLC |
CAN frame data link layer data length code |
数据长度编码 |
DOCAN |
Diagnostic communication over CAN |
基于CAN的诊断通信 |
ECU |
电子控制单元 |
|
FC |
流控帧 |
流控帧 |
FF |
首帧 |
首帧 |
FF_DL |
首帧长度 |
|
FMI |
Failure mode indicator |
失效模式指示 |
FS |
FlowStatus |
流控帧状态 |
Mtype |
MessageType |
信息类型 |
N/A |
Not applicable |
没有应用 |
N_AE |
Network address extension |
网络层扩展地址 |
N_AI |
Network address information |
网络层地址信息 |
N_Ar |
网络层定时参数Ar |
|
N_As |
网络层定时参数As |
|
N_BSr |
网络层定时参数Br |
|
N_BSs |
网络层定时参数Bs |
|
N_ChangeParameter |
网络层服务名称 |
|
N_Cr |
网络层定时参数Cr |
|
N_Cs |
网络层定时参数Cs |
|
N_Data |
网络层数据 |
|
N_PCI |
Network protocol control information |
网络层协议控制信息 |
N_PCItype |
网络层协议控制信息类型 |
|
N_PDU |
Network protocol data unit |
网络层协议数据单元 |
N_SA |
Network source address |
网络层源地址 |
N_SDU |
网络层服务数据单元 |
|
N_TA |
Network target address |
网络层目标地址 |
N_TAtype |
网络层目标地址类型 |
|
N_USData |
网络层未确认分段数据传输服务名称 |
|
NW |
网络层 |
|
NWL |
网络层 |
|
OBD |
车载诊断系统 |
|
OSI |
开放系统互联 |
|
PCI |
协议控制单元 |
|
RX_DL |
接收帧数据长度 |
|
SF |
SingleFrame |
单帧 |
SF_DL |
单帧数据长度 |
|
SN |
SequenceNumber |
序号 |
SPN |
可疑参数序号 |
|
STmin |
最小间隔时间 |
|
TX_DL |
发送帧数据长度 |
|
UDS |
统一诊断服务 |
|
WWH_OBD |
全球统一的重型发动机的车载诊断系统 |
文档概述
ISO 11898-1 CAN数据链路层扩展
标准CAN和CAN FD帧特征比较
ISO 11898-1 标准 CAN帧支持最大8字节的有效载荷长度。ISO 11898-1 CAN FD帧支持最大64字节的有效载荷长度。因此,使用首帧 (FF)、流控帧 (FC)和连续帧 (CF)类型帧的分段数据传输需要在不改变原始协议概念的情况下,通过可变的可配置有效载荷长度来实现。SF帧类型也适应于支持CAN FD帧允许的增加的有效载荷长度。
CAN帧特征比较
特征 |
标准CAN |
CAN FD |
有效载荷长度0 . .8个字节数据长度代码(DLC) 0 . .8 |
Yes |
Yes |
有效载荷长度0 . .8个字节数据长度代码(DLC) 9 . .15 |
Yes |
No |
有效载荷长度12 . .64个字节数据长度代码(DLC) 9 . .15 |
No |
Yes |
CAN帧的仲裁和数据阶段支持不同的比特率 |
No |
Yes |
远程传输请求(RTR) |
Yes |
No |
对于标准 CAN, DLC值为9..15自动减少到8的值,这导致了标准CAN的最大的可能CAN_DL。
CAN FD不支持8字节到64字节之间的所有有效载荷长度(例如,一个CAN FD帧有10个有效数据却要求长度为12 字节的有效荷载长度)。
传输协议和网络层服务的CAN参数说明
下图显示了CAN参数到网络/传输层寻址信息N_AI的映射。说明了网络/传输层参数的有效性和适用性,以及由此产生的对标准CAN与CAN FD数据链路层的支持。图描述了使用普通或普通固定寻址的示例。对于扩展寻址和混合寻址,这个概念通常也适用,但N_AI参数到CAN帧的映射是不同的。
DLC值是CAN_DL值(n)的反馈,其表示了一个CAN帧数据/有效载荷的物理长度;在接收端,CAN_DL用来确定发送端TX_DL的值。
比特率开关(BRS)定义了数据阶段的传输速度。
标准CAN/CAN FD数据长度比较表
对于标准 CAN, DLC值为9..15会自动减少到8的值,从而导致标准 CAN的最大CAN DL为8.
CAN FD的附加要求
如果使用CAN FD协议设备,ISO 15765的这一部分可以配置为创建标准CAN或CAN FD类型帧。当在数据链路层启用CAN FD类型帧时,需要支持以下两个新选项。
a) BRS比特率切换标志,是CAN FD帧的一部分,用于确定数据阶段是否要以不同于仲裁阶段的比特率传输。数据阶段的比特率被定义为等于或高于仲裁比特率。比特率交换不会影响传输协议本身。
b)最大允许有效载荷长度[CAN_DL, 8 ..64个字节);
网络层的概述
定义了两种类型的服务:
通讯服务:
这些服务(其中定义了以下内容)支持最多4 294 967 295字节的数据传输。
1) N_USData.request:该服务用于请求数据传输。如果有必要,网络层会对数据进行分段。
2) N_USData_FF.indication:该服务用于向上层发出分段消息接收开始的信号。
3) N_USData.indication:该服务用于向上层提供接收到的数据。
4) N_USData.confirm:该服务向高层确认请求的服务已经被执行(成功与否)。
协议参数设置服务:
这些服务(定义如下)允许动态设置协议参数。
1) N_ChangeParameter.request:该服务用于请求特定内部参数的动态设置。
2) N_ChangeParameter.confirm:该服务向上层确认更改特定协议的请求已经完成(成功或失败)。
网络层内部运行
网络层的内部操作提供了分割、使用流控帧传输和重组的方法。网络层的主要目的是传输可能适合或不适合单个CAN帧的消息。不能装入单个CAN帧的消息被分割成多个部分,每个部分都可以在一个CAN帧中传输。
单帧传输
多帧分段传输
流控帧用来调整发送端到接收端网络层的能力。这种流量控制方案允许使用诊断网关和子网。
网络层业务
所有网络层服务具有相同的总体结构。要定义服务,需要指定以下三种类型的服务原语:
一种服务请求原语,由更高的通信层或应用程序使用,以传递需要传输到网络层的控制信息和数据;
一种服务指示原语,由网络层用于将状态信息和接收的数据传递给上层通信层或应用程序;
一种服务确认原语,由网络层用来将状态信息传递给更高的通信层或应用程序。
该服务规范没有指定应用程序编程接口,而是只指定一组独立于任何实现的服务原语。
所有网络层服务都具有相同的通用格式。服务原语是这样写的:
其中“service_name”是服务的名称,例如N_USData,
“type”表示服务原语的类型,
“参数A,参数B,[参数C…]是N_SDU作为由服务原语传递的值列表。
方括号表示参数列表的这一部分可以为空。
ISO 15765的本部分指定了以下服务原语:request、indication和confirm。
使用服务原语请求(service_name.request),服务用户向服务提供者请求服务。
使用服务原语指示(service_name.indication),服务提供者将网络层的内部事件或对等协议层实体服务用户的服务请求通知服务用户。
使用服务确认原语 (service_name.confirm),服务提供者将服务用户的前一个服务请求的结果通知给服务用户。
网络层服务原语的规范
N_USData. Request
确认服务由网络层发出。服务原语确认N_USData的完成。由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识的请求服务。
N_USData. Confirm
确认服务由网络层发出。是对服务原语确认N_USData. Request的完成。由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识的请求服务。参数<N_Result>提供了服务请求的状态。
N_USData_FF.indication
N_USData_FF.indication表示服务是由网络层发出的。服务原语向相邻的上层表明从对等协议实体接收到的分段消息的首帧 (FF)到达,由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识(参数定义见8.3)。该指示应在收到分段报文的FF时发生。
N_USData. Indication
N_USData. Indication表示服务是由网络层发出的。服务原语表示<N Result>事件,并将从N_SA、N_TA、N_TAtype[和N_AE]中的地址信息识别的对等协议实体接收到的<MessageData>和<Length>字节下发到相邻上层。只有当<N_Result> = N_OK时,<MessageData>和<Length>参数才有效。
N_USData. Indication指示服务调用在接收到单帧(SF)消息后发出,或作为分段消息接收完成(或失败)的指示。
如果网络层在SF中检测到任何类型的错误,则该消息将被网络层忽略,并且没有N_USData. Indication应向相邻的上层发出指示。
服务数据单元规范
Mtype的取值范围:诊断、远程诊断。
如果Mtype = 诊断,则地址信息N_AI由参数N_SA、N_TA和N_TAtype组成。
如果Mtype = 远程诊断,则地址信息N_AI由参数N_SA、N_TA、N_TAtype和N_AE组成。
N_AI,地址信息
N_AI参数用于标识消息发送者和接收者的源地址(N_SA)、目标地址(N_TA),以及消息的通信模型(N_TAtype)和可选的地址扩展(N_AE)。
允许的N_TAtype通信模型组合
物理寻址(1对1通信)应支持所有类型的网络层消息。
功能寻址(1到n通信)应只支持单帧传输。
一个增强诊断工具标准 CAN请求正常的示例寻址(N_TAtype #2)
一个增强的诊断工具CAN FD请求正常寻址
< 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_BSUFFER_OVFLW,N_ERROR
描述:该参数包含与服务执行结果相关的状态。如果同时发现两个或两个以上的错误,则网络层实体在向较高层指示错误时,应使用该列表中最先发现的参数值。
N_OK、
这个值表示服务执行已经成功完成;它可以同时发送给发送方和接收方的服务用户。
N_TIMEOUT_A、
当定时器N_Ar/N_As已经传递了它的超时值N_Asmax/N_Armax时,这个值被发送给协议用户;它可以发送给发送方和接收方的服务用户。
N_TIMEOUT_Bs、
当定时器N_BSs已经传递了它的超时值N_BSsmaxi时,该值将被发送给业务用户,它只能被发送方的业务用户发送。
N_TIMEOUT_Cr、
当计时器N_Cr已经传递了它的超时值N_Crmax时,这个值将被发送给业务用户,它只能在接收端发送给业务用户。
N_WRONG_SN、
该值在收到意外的SequenceNumber (PCI.SN)值时被发送给服务用户;它只能发送给接收方的业务用户。
N_INVALID_FS、
当一个无效的或未知的FlowStatus值在一个FC (流控帧) N_PDU中被接收时,这个值被发送给业务用户;它只能发送方的服务用户。
N_UNEXP_PDU,
该值在接收到意外协议数据单元时被发送给服务用户;它只能发送给接收方的业务用户。
N_WFT_OVRN,
当接收端连续发送了N_WFTmax 流控帧 N_PDU且FlowStatus = WAIT时,不能满足发送FlowStatus = ClearToSend的流控帧 N_PDU的性能要求时,发送给业务用户。它只能发送给接收方的业务用户。
N_BSUFFER_OVFLW,
该值在收到FlowStatus = OVFLW的FC (流控帧) N_PDU时发送给业务用户。它表明分段消息传输的接收端缓冲区不能存储首帧 DataLength (FF_DL)参数指定的字节数,因此分段消息的传输被中止。它只能发送方的服务用户。
N_ERROR
这是一般的错误。当网络层检测到错误,且没有其他参数值可以更好地描述错误时,发送给业务用户。它可以同时发送给发送方和接收方的服务用户。
传输层协议
传输层协议应执行以下功能:
传输/接收多达4 294 967 295数据字节的消息;发送/接收完成(或失败)的报告。
单帧传输
TX_DL = 8的单帧传输
通过传输一个唯一的N_PDU,称为SF(参见图7),可以传输多达6个(TX_DL - 2,在扩展或混合寻址的情况下)或7个(TX_DL - 1,在普通寻址的情况下)数据字节的消息。
接收最多6或7个字节数据的消息是通过接收唯一的N_PDU来完成的。
TX_DL>8的单帧传输
传输TX_DL - 3(在扩展或混合寻址的情况下)或TX DL - 2(在普通寻址的情况下)数据字节的消息通过传输一个唯一的N_PDU,称为SF来执行。
通过接收唯一的N_PDU来接收TX_DL - 3或TX_DL - 2数据字节的消息。
多帧传输
长消息的传输是通过将消息分段并发送多个N_PDU来完成的。接收较长的消息是通过接收多个N_PDU并重组接收到的数据字节(连接)来完成的。这多个N_PDU分别被称为首帧(用于消息的第一个N_PDU)和连续帧(用于后续的所有N_PDU)。
通过使用流控帧协议数据单元(FC N_PDU),多个N_PDU消息的接收者可以通过流控帧机制调整传输吞吐量以适应其能力。
大于所使用TX_DL所允许的最大SF_DL的消息将被分割;
一个首帧协议数据单元(FF N_PDU),包含第一组数据字节,和一个或多个连续帧协议数据单元(CF N_PDU),每个单元包含连续的数据字节集。最后一个(或唯一的)CF N_PDU包含最后一组数据字节。
消息长度在FF N_PDU中传输。所有CF N_PDU都由发送端编号,以便接收端按照相同的顺序重新组装。
流控帧机制允许接收方通知发送方接收方的能力,发送方应该遵守这些能力。
BlockSize (BS):接收方允许发送方在等待授权之前发送的N_PDU的最大数量,以继续发送以下N_PDU。当接收方将BS设置为零时,发送方无需等待授权即可继续发送。
SeparationTime minimum (STmin):发送端在发送两个CF N_PDU之间等待的最小时间。
由于BS和STmin的值是由每一个接收到的流控帧帧提供的,所以对于一个分段消息的接收者来说,采用这些值有两种不同的方式:
dynamic:此消息后续的PDU通信更新BS和STmin;
static:固定的BS和STmin值用于此消息的通信。
所有的block,除了最后一个,将由BS 个N_PDU组成。最后一个将包含剩余的N_PDU(从1到BS)。
每次发送/接收端等待接收/发送端发送的N_PDU时,一个超时机制允许检测传输失败。
通过FC N_PDUs,接收方授权的可能性传播以下CF N_PDUs延迟传播授权或拒绝接待一个分段的信息在传输的字节数超过的字节数,可以存储在接收缓冲区:
FC.CTS:继续发送,授权继续;
FC.WAIT:请求继续等待;
FC.OVFLW:缓冲区溢出,表示分段消息的首帧中指定的字节数超过了接收实体缓冲区中可以存储的字节数。
FC数量有上限。等待接收端允许发送一行,称为N_ WFTmax。该参数为系统设计常量,不在FC N_PDU中传输。
传输层协议数据单元
ISO 15765的这一部分规定了四种不同类型的传输层协议数据单元,单帧(SF N_PDU),首帧(FF N_PDU),连续帧(CF N_PDU)和流控制(FC N_PDU),它们用于在对等网络层实体之间建立通信路径,交换通信参数,传送用户数据,释放通信资源。
SF N_PDU
SF N_PDU由单帧协议控制信息(SF N_PCI)标识。SF N PDU由发送网络实体发送,可以被一个或多个接收网络实体接收。它的发送是为了传输一个业务数据单元,该业务数据单元可以通过单个服务请求传输到数据链路层,以及传输未分段的消息。
FF N_PDU
FF N_PDU由FF N_PCI (首帧 protocol control information)协议控制信息标识。FF N_PDU应由发送网络实体发送,并在分段消息传输期间由唯一的接收网络实体接收。它标识由网络发送实体发送的分段消息的第一个N_PDU。接收网络层实体应在收到一个FF N_PDU后开始组装分段消息。
CF N_PDU
CF N_PDU由连续帧协议控制信息(CF N_PCI)标识。CF N_PDU传输业务数据单元消息数据(<MessageData>)的段(N_Data)。发送实体在FF N_PDU之后发送的所有N_PDU都要编码为CF N_PDU。接收实体在收到最后一个CF N_PDU后,将组装好的消息传递给网络接收实体的业务用户。CF N_PDU应由发送网络实体发送,并在分段消息传输期间由唯一的接收网络实体接收。
FC N_PDU
FC N_PDU由流控帧协议控制信息(FC N_PCI)标识。FC N_PDU用来指示正在发送的网络实体启动、停止或恢复CF N_PDU的传输。它应由接收网络层实体发送给发送网络层实体,当准备接收更多数据时,经过正确的接收FF N_PDU,或如果还需要发送连续帧s,则为一个连续帧块的最后一个CF N_PDU。
FC N_PDU也可以通知发送网络实体暂停传输CF N_PDUs分段消息传输或中止期间一个分段的信息如果长度信息的传播(FF_DL) FF N_PDU通过发送接收实体的实体超过缓冲区的大小。
协议数据单元字段描述
N_PDU格式
地址信息(N_AI)
N_AI用于识别网络层通信的对等实体。N_SDU (N_SA, N_TA, N_TAtype[和N_AE])接收到的N_AI信息应被复制并包含在N_PDU中。如果N_SDU接收到的消息数据(<MessageData>和<Length>)需要对网络层进行分段,以便传输完整的消息,则需要将N_AI复制(重复)到每一个传输的N_PDU中。
此字段包含地址信息,用于标识交换的消息的类型以及发生数据交换的接收者和发送者。
协议控制信息(N_PCI)
该字段标识交换的N_PDU的类型。它还用于在通信网络层实体之间交换其他控制参数。
N_PCI
0 |
SF: 单帧,对于使用CAN_DLS 8的未分段消息,消息长度嵌入在唯一的PCI字节(字节#1)的低字节。对于使用CAN_DL > 8的未分段消息,使用SingleFrame转义序列应使用,其中第一个PCI字节(字节#1)的下一点设置为00002,消息长度嵌入到第二个PCI字节(字节#2)中。SingleFrame (SF)应使用支持在单个can帧中传输的消息。 |
1 |
FF: 首帧 (FF)只能用于支持不能装入单个CAN帧的消息的传输,即分段消息。在收到首帧(FF)时,接收网络层实体应开始组装分段消息。 对于消息长度<= 4 095的分段消息,第一个PCI字节(字节#1)和第二个PCI字节(字节#2)的下端包含消息长度。 对于消息长度为> 4 095的分段消息,首帧转义序列应使用,其中第一个PCI字节(字节#1)的低字节设置为0,第二个PCI字节(字节#2)设置为0。消息长度被嵌入到下面四个中PCI字节(Byte #3 ..)字节#6,MSB)。 |
2 |
CF: 在发送分段数据时,所有跟随FF的连续帧都被编码为CF (连续帧)。在接收连续帧(CF)时,接收网络层实体应组装接收到的数据字节,直到接收到整个消息。接收实体在无错误接收到报文的最后一帧后,将组装好的报文传递给相邻的上层协议层。 |
3 |
FC:流量控制(FC)的目的是调节CF N_PDU发送到接收者的速率。指定了三种不同类型的流控制(FC)协议控制信息来支持该功能。 |
4-F |
保留 |
N_PCI字节的摘要
带有CAN_DL> 8的消息应该使用转义序列,其中字节#1的下一段被设置为0(无效长度)。这对网络层表示SF_DL的值是根据帧中的下一个字节(字节#2)确定的。因为CAN_DL被定义为大于8,所以这个定义只对CAN FD类型的帧有效。
大于4 095字节的消息应使用转义序列,其中字节#1的下一低字节和字节#2中的所有位被设置为0(无效长度)。这对网络层表示FF_DL的值是根据帧中接下来的32位来确定的。
数据
字段(N_Data)
N_PDU中的N_Data用于传输N_USData中<MessageData>参数接收到的业务用户数据。服务调用请求。如果需要,将<MessageData>分割为更小的部分,每个部分在通过网络传输之前都适合N_PDU数据字段。N_Data的大小取决于N_PDU类型、选择的地址格式和TX_DL的值。
传输数据链路层数据长度(TX_DL)配置
传输数据链路层数据长度(TX_DL)为实现网络层的应用程序配置数据链路层的最大可用有效载荷长度,如ISO 15765的这一部分中定义的那样。TX_DL值被定义为以字节为单位的实际有效载荷长度。
有效的TX_DL值是从8到15之间的数据长度代码(DLC)值的有效载荷长度派生而来的(参见ISO 11898-1:2015, DLC表)。
处理入站CAN帧的完整状态流程图
网络层的状态机
超时值被定义为高于性能要求的值,以确保系统正常工作,并克服性能要求绝对无法满足的通信条件(例如高总线有效载荷)。指定的超时值应被视为任何给定实现的下限。真正的超时不应晚于指定的超时值+ 50%。
一个未分段消息的网络层计时参数
1
发送方N_USData.req:会话层向传输/网络层发送一个未分段的消息
发送方L_Data.req:传输/网络层将SingleFrame传输给数据链路层,并启动N_As计时器。
接收器L_Data.ind:数据链路层向传输/网络层发送接收CAN帧Receiver N_USData。传输/网络层向会话层发送未分段消息的完成。
2
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器
发送方N_USData.con:传输/网络层向会话层提出未分段消息的完成。
一个分段消息的网络层定时参数
1
发送方N_USData.req:会话层向传输/网络层发送分段消息
发送方L_Data.req:传输/网络层向数据链路层传输首帧,并启动N_As计时器
2
接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;
接收端启动N_Br定时器
接收端N_USDataFF.ind:传输/网络层向会话层发送接收分段消息的首帧
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,启动N_Bs定时器
3
接收器L_Data.req:传输/网络层向数据链路层发送流控帧 (ContinueToSend and BlockSize value = 2),并启动N_Ar定时器;
4
发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送端停止N_Bs定时器,启动N_Cs定时器
接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Cr定时器;
5
发送方L_Data.req:传输/网络层发送第一个连续帧到数据链路层,并启动N_As定时器
6
接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端重新启动N Cr定时器
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,并根据前一个流控帧的分离时间值(STmin)启动N_Cs定时器
7
发送方L_Data.req:当N_Cs定时器经过(STmin)时,传输/网络层向数据链路层发送下一个连续帧,并启动N_As定时器
8
接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端停止N_Cr定时器并启动N_Br定时器
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器并启动N_Bs定时器;发送方正在等待下一个流控帧。
9
接收器L_Data.req:传输/网络层向数据链路层传输(流控帧),并启动N_Ar定时器
10
发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送方重启N_Bs定时器
接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Br定时器
11
接收器L_Data.req:传输/网络层向数据链路层发送流控制(ContinueToSend),并启动N_Ar定时器
12
发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送端停止N_Bs定时器,启动N_Cs定时器
接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Cr定时器
13
发送方L_Data.req:传输/网络层向数据链路层传输连续帧并启动N_As定时器
14
接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端重启N_Cr定时器
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,并根据前一个流控帧的分离时间值(STmin)启动N_Cs定时器
15
发送方L_Data.req:当N_Cs定时器经过(STmin)时,传输/网络层向数据链路层发送最后一个连续帧,并启动N_As定时器
16
接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收器停止N_Cr定时器
接收器N_USData.ind传输/网络层向会话层发送分段消息的完成。
发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器
发送方N_USData.con:传输/网络层向会话层提出分段消息的完成。
网络层定时参数-分段消息
网络层超时错误处理
定时参数 |
原因 |
处理 |
N_As |
发送端未及时发送的N_PDU |
中止消息传输并发出N_USData.confirm <N_Result> = N_TIMEOUT_A |
N_Ar |
接收端未及时发送的N_PDU |
中止消息接收并发出N_ USData.indication <N_Result> = N_TIMEOUT_A |
N_BSs |
发送端未收到流控帧的N_PDU(丢失,覆盖)或接收端未收到(丢失,覆盖)前一个首帧N_PDU或连续帧N_PDU |
中止消息传输并发出N_USData.confirm <N_Result> = N_TIMEOUT_Bs |
N_Cr |
接收端未收到接收帧的N_PDU(丢失或者覆盖)或发送端未收到前一个流控帧N_PDU(丢失或覆盖) |
中止消息接收并发出N_ USData.indication <N_Result> = N_TIMEOUT_Cr |
数据链路层用法
数据链路层服务参数
<Data>: CAN帧数据;
<DLC>:数据长度代码;
<Identifier>:CAN标识符;
<Transfer_Status>:传输状态;
<Format>:帧格式(CAN, CAN FD, base: 11-bit, extended: 29-bit)
数据链路层接口
L_Data. Request
服务原语请求传输<Data>,将其映射到通过<Identifier>选择的数据链路协议数据单元的特定属性中。
L_Data. Confirm
L_Data. Indication
服务原语表示一个数据链路层事件到相邻的上层传递由<Identifier>标识的< data >:
普通寻址
定义了N_PDU参数到CAN帧的映射,其中寻址格式为normal, N_TAtype表示消息是物理的。
N_PDU参数到CAN帧的映射TAtype = 1、3、5和7
N_PDU参数到CAN帧的映射,其中寻址格式为normal, N_TAtype表示消息是功能性的
N_PDU参数到CAN帧的映射N_TAtype = #2、#4、#6和#8
普通固定寻址
普通固定寻址是普通寻址的一个子格式,它进一步定义了地址信息到CAN标识符的映射。在普通寻址的一般情况下,如上所述,N_AI和CAN标识符之间的通信是开放的。
对于普通的固定寻址,只允许29位的CAN标识符。根据目标地址类型(N_TAtype)定义了地址信息(N_AI)到CAN标识符的映射关系。N_PCI和N_Data被放在CAN帧数据字段中。
正常固定寻址,N_TAtype = #5和# 7
普通固定寻址,其中N_TAtype表示消息是功能性的
扩展寻址
N_PDU参数到CAN帧的映射,其中地址格式被扩展,N_TAtype表示消息是物理的。
N_PDU参数到CAN帧的映射TAtype = 1、3、5和7
N_PDU参数到CAN帧的映射,其中地址格式被扩展,N_TAtype表示消息是功能性的。
N_PDU参数到CAN帧的映射TAtype = 2 4 6 8
混合寻址
当“Mtype”设置为“远程诊断”时,采用“混合寻址”的寻址格式。
据目标地址类型(N_TAtype)定义了地址信息(N_AI)到29位CAN标识符方案和第一个CAN帧数据字节的映射。N_PCI和N_Data被放在CAN帧数据字段的剩余字节中。
29位CAN标识符的混合寻址,N_TAtype = #5和# 7
29位CAN标识符的混合寻址,N ttype = #6和8
11位CAN标识符,当“Mtype”设置为“远程诊断”时,采用“混合寻址”的寻址格式。
定义了地址信息(N_AI)与11位CAN标识符方案的映射关系。对于N_SA、N_TA和N_TAtype的每一个组合,都可以使用相同的CAN标识符。N_AE被放在CAN帧数据字段的第一个数据字节中。N_PCI和N_Data被放在CAN帧数据字段的剩余字节中。
11位CAN标识符的混合寻址,N_TAtype = #1和# 3
11位CAN标识符的混合寻址,N_TAtype = #2和# 4
CAN帧数据
CAN帧数据填充(TX_DL = 8)
如果采用这种解决方案,即使要传输的N_PDU小于8字节,也总是将DLC设置为8。发送方必须填充帧中任何未使用的字节,如表所示。特别是对于SF、FC帧或分段消息的最后一个CF。如果没有指定不同的值,默认值CC(hex)应该用于帧填充,以最小化填充位插入和线上的位改变。
CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。
数据填充示例(TX_DL = 8),普通寻址,N_PDU大小6字节,DLC = 8
CAN帧数据优化(TX_DL = 8)
如果使用这个解决方案,DLC并不总是需要是8。如果要发送的N_PDU小于8字节,则发送方可以优化CAN总线负载,将CAN帧数据缩短为只包含N_PDU占用的字节数(不填充未使用的数据字节)。CAN帧数据优化只能用于SF、FC帧或分段消息的最后一个CF。
CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。
数据优化的例子(TX_DL = 8),普通寻址,N_PDU大小6字节,DLC = 6
CAN FD帧强制填充(TX_DL > 8)
根据ISO 11898-1,从0到8的数据长度码(data length code, DLC)指定了CAN帧的有效载荷长度(byte)(1:1映射)。对于N_PDU长度,值最多为8字节,可以是数据填充或DLC数据优化。
ISO 11898-1的DLC值从9到15被分配到非线性离散值的CAN帧负载长度高达64字节。为了防止传输未初始化的数据,当要传输的N_PDU大小的长度大于8,且不等于ISO 11898-1:2015 DLC表中定义的离散长度值之一时,必须使用CAN帧数据填充。表36给出了一个例子。对于从9到15的DLC值,只有强制填充应使用。如果没有指定不同的值,默认情况下应该将值CC(hex)用于填充,以最小化填充位插入和导线上的位改变。
CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。
数据填充示例(TX_DL > 8),普通寻址,N_PDU大小11字节,DLC = 9
注意 ISO 11898-1:2015, DLC表值9导致CAN FD帧有效长度为12字节。
汽车总线协议15765-2(2005)CANFD协议研究相关推荐
- 一文看懂四大汽车总线:LIN、CAN、FlexRay、MOST
前言 随着汽车工业的发展,汽车各系统的控制逐步向自动化和智能化转变,汽车电气系统变得日益复杂.传统的电气系统大多采用点对点的单一通信方式,相互之间少有联系,这样必然会形成庞大的布线系统. 据统计,一辆 ...
- pci总线定时协议_汽车总线测试的“解忧杂货店”
"我的回答之所以发挥了作用,原因不是别的,是因为大家自己很努力." -- 东野圭吾<解忧杂货店> 相信很多读者都看过东野圭吾的书<解忧杂货店>或者同名电影, ...
- SAE J1850 汽车总线协议 VPW 物理层驱动程序在STM32芯片上的实现
原文地址::https://blog.csdn.net/lrmlrm/article/details/51499421 相关文章 1.VPW协议解析----https://www.cnblogs.co ...
- 空调控制协议盒_睿志诚汽车总线协议盒 后装车机也能控制车辆
车内加装了导航车机后,我们会发现通过车机也能控制车辆空调.车灯.门窗等信息,那么到底车机是通过什么实现的呢?据悉,只需要在车机内接入睿志诚Can-Bus汽车总线协议盒,这些功能就能"信手拈来 ...
- 全网唯一OpenCyphal/UAVCAN教程(10)canfd协议详解
OpenCyphal除了支持can 2.0 B,还支持canfd扩展协议.所以先学习下canfd协议. 文章目录 1.CAN-FD协议特性 2.CAN-FD帧结构分析 1.CAN-FD协议特性 随着电 ...
- CAN总线(三)——CAN FD协议及其与CAN2.0的异同
目录 1. CANFD的来历 2. CANFD与CAN的协议异同 3. CANFD帧结构解析 3.1 帧起始 3.2.仲裁域 3.3 控制域 3.4 数据域 3.5 CRC 3.6 ACK 3.7 ...
- Linux ARM平台开发系列讲解(CAN) 2.14.3 CANFD协议介绍
1. 概述 前面章节介绍了CAN2.0协议,CAN现在主要是用在汽车领域,随着CAN的发展, 又衍生除了CANFD协议,该协议是在CAN的基础之上进行了升级,CAN2.0的最高速率是1Mbps,有限的 ...
- 几种常见的传统汽车总线传输通信技术
当前主流的汽车混合网络主要由 CAN.LIN.Flex Ray.MOST.LVDS 等车载网络总线构成.这些网络标准都是由汽车行业制定,属于较封闭的标准,很难与外部设备及网络服务连接,有浓重的汽车行业 ...
- 汽车总线系统网络学习之CAN总线入门
汽车总线系统网络学习之CAN总线入门 第一课 CAN总线入门 第一课 一.CAN总线介绍 CAN总线全称:Controller Area Network (车载网络局域网) 汽车CAN协议,建立在IS ...
- LIN总线增强型校验_雷洪钧:汽车总线及车载网技术概述
点击蓝字,一键关注 走进<公共交通资讯>,及时掌握公交领域的行业政策.管理理论.科技信息.专家观点和先进经验... ... 张晓亮:我国城市公共交通智能化发展情况分析 王竹:浅谈公交驾驶员 ...
最新文章
- spring 两次进入拦截器_4.SpringBoot 拦截器Fliter,Interceptor,Controller……
- 机器学习的核心要素是什么?它们分别作了什么工作?
- 挑战唯物论?诺奖得主彭罗斯:意识产生可能是大脑内的「量子叠加」的结果...
- 推荐一个SAM文件中flag含义解释工具--转载
- Magicodes.IE基础教程之导出Pdf
- 华为Mate30系列5G版正式开售:有了5G套餐 入手正当时
- java内存模型作用是什么_什么是JVM内存模型?
- MySQL实现类似Oracle的序列
- matlab在图像处理中的应用论文,MATLAB在数字图像处理中的应用
- 12.结账流程(Checkout Process)
- 2017年我国大数据趋势分析
- 用计算机如何打对数,怎样使用科学计算器计算对数?
- Redux:优点和缺点
- 详解MPO/MTP主干光纤跳线规格参数、MPO连接说明、MPO极性分类
- 代码批量删除QQ日志和说说
- mysql show processlist整理
- android业余手机开发,赚钱心得
- 社区宽带繁忙是什么意思_十年宽带维修工程师给你解读,为什么宽带越用越慢!...
- Unity学习 — 23种设计模式
- 使用go语言进行交叉编译的时候遇到的一些问题
热门文章
- 疯狂语音红包 5.2.0 微信红包引流吸粉
- 教你如何使用数字组件,制作有灵魂的数据可视化大屏
- WebEx Recorder 录屏软件
- arma找不到合适的模型_ARMA模型建模过程中存在的问题分析.htm
- 官方AWZ爱伪装 一键新机 全息备份 虚拟定位 非NZT 暗王者 IG V8 V3 IOSAPP一键新机 全息备份
- spring中cglib动态代理
- h5可以获取本机手机号码么_h5页面模板免费制作丨动态h5页面模板挑选
- 个人博客系统需求文档
- 计算机硬盘的常用分区工具,磁盘分区工具,详细教您硬盘分区工具diskgenius怎么使用...
- 如何防止editor中出现遮行的现象